知識マップ: 図解でわかるNTLMとKerberos ── なぜ認証はNTLMに「落ちる」のか
記事「図解でわかるNTLMとKerberos ── なぜ認証はNTLMに「落ちる」のか」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
NTLMはパスワードのハッシュを持っていることだけをチャレンジ/レスポンスで証明するプロトコルで、相互認証を持たず宛先を縛りません。Kerberosは接続先のSPNを鍵にチケットを発行し、相互認証と宛先の縛りを提供します。NegotiateはKerberosを優先しますが、SPNが引けない・ワークグループ・DCに届かないといった条件でNTLMへ落ち、この設計の隙がリレー攻撃とPass-the-Hashを成立させます。
flowchart LR
accTitle: NTLMとKerberosの知識マップ
accDescr: NTLMとKerberosという2つの認証プロトコルの仕組みの違い(チャレンジ/レスポンスとチケット、相互認証の有無、ドメインコントローラーへの依存、委任)、NegotiateがNTLMへ落ちる条件(SPN・名前解決・ワークグループ・DC到達性)、リレー攻撃とPass-the-Hashが成立する理由とSMB署名による防御、NTLMv1/NTLMv2の非推奨・削除状況の関係を示す図
ntlm["NTLM"]
kerberos["Kerberos"]
negotiate["Negotiate"]
spn["SPN"]
kdc["KDC"]
active_directory["Active Directory(AD DS)"]
tgt["TGT(チケット許可チケット)"]
kerberos_service_ticket["Kerberosサービスチケット"]
mutual_authentication["相互認証"]
ntlm_relay_attack["NTLMリレー攻撃"]
pass_the_hash["Pass-the-Hash"]
smb_signing["SMB署名"]
workgroup["ワークグループ構成"]
domain_controller["ドメインコントローラー"]
kerberos_time_sync["Kerberosの時刻同期要件"]
ntlmv2["NTLMv2"]
ntlmv1["NTLMv1"]
nt_hash["NTハッシュ"]
smb_ntlm_block["SMBクライアント側のNTLMブロック"]
kerberos_delegation["Kerberosの委任"]
restrict_ntlm["「NTLMを制限する」ポリシー群"]
ntlm_operational_log["NTLM/Operationalログ"]
iakerb["IAKerb"]
local_kdc["ローカルKDC"]
tryipspn["TryIPSPN"]
negotiate -->|"利用する"| kerberos
negotiate -->|"利用する"| ntlm
kerberos -->|"前提とする"| spn
kerberos -->|"前提とする"| kdc
kdc -->|"前提とする"| active_directory
kerberos -->|"利用する"| tgt
kerberos -->|"利用する"| kerberos_service_ticket
kerberos_service_ticket -->|"前提とする"| spn
kerberos -->|"実装を担う"| mutual_authentication
ntlm -.->|"原因になり得る"| ntlm_relay_attack
ntlm -->|"原因になり得る"| pass_the_hash
smb_signing -->|"防止する"| ntlm_relay_attack
kerberos -->|"防止する"| ntlm_relay_attack
workgroup -->|"両立しない"| kerberos
workgroup -->|"前提とする"| ntlm
ntlm -.->|"前提とする"| domain_controller
kerberos -->|"の後継"| ntlm
kerberos -->|"前提とする"| kerberos_time_sync
ntlmv2 -->|"の後継"| ntlmv1
ntlm -->|"利用する"| ntlmv1
ntlm -->|"利用する"| ntlmv2
ntlmv2 -->|"利用する"| nt_hash
ntlmv2 -->|"原因になり得る"| pass_the_hash
smb_ntlm_block -->|"防止する"| pass_the_hash
kerberos -->|"実装を担う"| kerberos_delegation
ntlm -->|"で構成できる"| restrict_ntlm
restrict_ntlm -->|"で確認できる"| ntlm_operational_log
ntlm_relay_attack -.->|"前提とする"| ntlm
pass_the_hash -->|"前提とする"| nt_hash
kerberos -->|"前提とする"| active_directory
iakerb -.->|"軽減する"| ntlm
local_kdc -.->|"軽減する"| ntlm
kerberos -->|"推奨される対応"| smb_signing
domain_controller -->|"前提とする"| smb_signing
tryipspn -.->|"前提とする"| spn
概念間の関係(全35件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- NegotiateはKerberosを利用します。
- NegotiateはNTLMを利用します。
- KerberosはSPNを前提とします。
- KerberosはKDCを前提とします。
- KDCはActive Directory(AD DS)を前提とします。
- KerberosはTGT(チケット許可チケット)を利用します。
- KerberosはKerberosサービスチケットを利用します。
- KerberosサービスチケットはSPNを前提とします。
- Kerberosは相互認証の実装を担います。
- NTLMはNTLMリレー攻撃の原因になることがあります。
- NTLMはPass-the-Hashの原因になることがあります。
- SMB署名はNTLMリレー攻撃を防ぎます。
- KerberosはNTLMリレー攻撃を防ぎます。
- ワークグループ構成はKerberosと両立しません。
- ワークグループ構成はNTLMを前提とします。
- NTLMはドメインコントローラーを前提とします。
- KerberosはNTLMの後継に当たります。
- KerberosはKerberosの時刻同期要件を前提とします。
- NTLMv2はNTLMv1の後継に当たります。
- NTLMはNTLMv1を利用します。
- NTLMはNTLMv2を利用します。
- NTLMv2はNTハッシュを利用します。
- NTLMv2はPass-the-Hashの原因になることがあります。
- SMBクライアント側のNTLMブロックはPass-the-Hashを防ぎます。
- KerberosはKerberosの委任の実装を担います。
- NTLMは「NTLMを制限する」ポリシー群で構成できます。
- 「NTLMを制限する」ポリシー群はNTLM/Operationalログで確認できます。
- NTLMリレー攻撃はNTLMを前提とします。
- Pass-the-HashはNTハッシュを前提とします。
- KerberosはActive Directory(AD DS)を前提とします。
- IAKerbはNTLMを軽減します。
- ローカルKDCはNTLMを軽減します。
- KerberosはSMB署名に対する本記事の推奨です。
- ドメインコントローラーはSMB署名を前提とします。
- TryIPSPNはSPNを前提とします。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。