NTLMとKerberosの知識マップ(知識グラフ)
NTLM
パスワードの一方向ハッシュを使ったチャレンジ/レスポンス方式の認証プロトコル群(LANMAN・NTLMv1・NTLMv2を含む)。相互認証を持たず、サーバーが本物であると仮定できる環境向けに設計されている。
NTLM認証
Kerberos
チケットによる一度だけの本人確認と相互認証を提供する認証プロトコル。Windows ServerはKerberos version 5と、公開鍵認証・認可データの転送・委任のための拡張を実装する。
Kerberos認証
Negotiate
KerberosとNTLMのどちらかを選択するセキュリティパッケージ。認証に関わるシステムのいずれかがKerberosを使えない場合を除き、Kerberosを選択する。
Negotiateセキュリティパッケージ
SPN
KDCが接続先のサービスアカウントを特定するために使う名前。登録されていなければ、KDCはそのサービスのサービスチケットを発行できない。
サービスプリンシパル名
KDC
ドメインコントローラー上で動作し、Active Directory Domain Servicesのデータベースをセキュリティアカウントデータベースとして使う、Kerberosのチケット発行サービス。
鍵配布センター
Active Directory(AD DS)
オンプレミスのWindowsドメインを構成するディレクトリサービス。
オンプレAD
TGT(チケット許可チケット)
AS交換でKDCが発行する、krbtgtアカウントの長期鍵で暗号化されたチケット。クライアントは中身を読めず、TGS交換でサービスチケットを要求する際に提示する。
Kerberosサービスチケット
TGS交換でKDCが発行する、接続先サービスの長期鍵で暗号化されたチケット。宛先サービスの長期鍵でしか復号できないため、別のサービスへ持ち込んでも使えない。
サービスチケット
相互認証
接続の両端が、相手が名乗るとおりの相手であることを検証し合う仕組み。Kerberosは提供するが、NTLMは提供しない。
NTLMリレー攻撃
攻撃者が被害者とサーバーの間でNTLMのチャレンジ/レスポンスをそのまま中継し、被害者になりすます攻撃。応答が宛先を縛らないNTLMの弱点を突く。
SMBリレー攻撃
Pass-the-Hash
盗んだパスワードのハッシュ(NTハッシュ)を使って、平文パスワードを知らないままNTLM認証を通過する攻撃。
Pass-the-Hash攻撃
SMB署名
SMBの全メッセージにセッション鍵由来の署名(メッセージ全体のハッシュと送信者・受信者の識別情報を含む)を付け、改ざんとリレー攻撃を検知する仕組み。Windows 11 24H2/Windows Server 2025で既定値が強化された。
ワークグループ構成
Active Directoryドメインに参加しない、Kerberosの土俵にないWindowsのネットワーク構成。この構成のシステムのWindows認証には依然としてNTLMが使われ、使われなければならない。
ドメインコントローラー
Active Directoryのディレクトリサービスを提供し、KDCの機能やNTLMのパススルー認証の相手を担うサーバー。
Kerberosの時刻同期要件
Kerberosの事前認証が要求する、クライアントとKDCの時刻差の許容範囲(既定5分)。範囲を超えると事前認証が通らず、NTLMへの切り替えではなくKerberosのエラーとして認証が失敗する。
NTLMv2
NTLMプロトコル群の第2版。応答鍵をHMAC-MD5でNTハッシュから導出し、HMACで応答(NTProofStr)を計算する。非推奨だが現在も動作する。
NTLM バージョン2
NTLMv1
NTLMプロトコル群の第1版。Windows 11 バージョン24H2およびWindows Server 2025で削除された。
NTLM バージョン1
NTハッシュ
MD4(UNICODE(パスワード))として計算される、パスワードの一方向ハッシュ。NTLM認証の資格情報の出発点で、NTLMv2の応答鍵もここから導出される。
MD4ハッシュ
SMBクライアント側のNTLMブロック
SMBクライアントがリモートへの送信接続でNTLM認証をブロックする、Windows Server 2025/Windows 11 バージョン24H2以降の機能。接続先のSMBサーバーがKerberosまたはPKU2Uを使えることが前提。
Kerberosの委任
サービスがクライアントの代理として別のサービスへ接続する仕組み。無制約の委任・制約付き委任・リソースベースの制約付き委任(RBCD)がある。NTLMが提供するのはローカルでの偽装に必要な認可情報まで。
制約付き委任
リソースベースの制約付き委任
「NTLMを制限する」ポリシー群
送信NTLMトラフィック・受信NTLMトラフィック・ドメイン内NTLM認証を、監査から拒否まで段階的に制御できるセキュリティポリシー群。
ネットワークセキュリティ: NTLMを制限する
NTLM/Operationalログ
NTLM監査の記録先ログ。ドメインコントローラーのイベント8004、メンバーサーバーの8003、クライアントの8001などが記録され、対応するセキュリティ監査イベントポリシーは存在しない。
IAKerb
ドメインコントローラーへの到達性の問題を解くためのプロキシ対応Kerberos拡張。NTLM廃止フェーズ2(2026年後半予定)で提供される機能。
ローカルKDC
ローカルアカウント認証にもKerberosを使えるようにする機能。NTLM廃止フェーズ2(2026年後半予定)で提供される機能で、対応するWindows同士でのみ効く。
TryIPSPN
SPNのホスト名としてIPアドレスを使えるようにするクライアント側のレジストリ設定(TryIPSPN)。DNS名に変更できない場合の最後の手段として、IPアドレスのSPNを手動登録する。
Negotiateは、認証に関わるシステムのいずれかがKerberosを使えない場合を除き、Kerberosを選択する
認証に関わるシステムのいずれかがKerberosを使えない場合、NegotiateはNTLMにフォールバックする
TGS交換では接続先のSPNをKDCに提示してサービスチケットを要求するため、SPNが引けなければ成立しない
認証・チケット発行のすべてがKDC(鍵配布センター)とのAS/TGS/AP交換の上に成り立つ
KDCはドメインコントローラー上で動作し、Active Directory Domain Servicesのデータベースをセキュリティアカウントデータベースとして使う
AS交換で本人確認をしたクライアントに、krbtgtアカウントの長期鍵で暗号化されたTGTを発行する
TGS交換で、接続先サービスの長期鍵で暗号化されたサービスチケットを発行する
KDCはSPNに対応するサービスアカウントを探し、そのアカウントの長期鍵でチケットを暗号化するため、SPNが未登録だとチケットを発行できない
Kerberosでは接続の両端が相手が名乗るとおりの相手であることを検証できる。NTLMはこれを提供せず、サーバーが本物であると仮定できる環境向けに設計されている
NTLMのレスポンスには「誰に対して認証しているか」を縛る仕組みがなく、クライアントは応答が本物のサーバー宛かを確かめられない
NTLMの資格情報はパスワードの一方向ハッシュそのものであり、認証に必要なのはこのハッシュであって平文パスワードではない
SMB署名はメッセージ全体のハッシュと送信者・受信者の身元を含む署名を付けるため、署名を要求する相手にはリレーが成立しない
サービスチケットは宛先サービスの長期鍵で暗号化されているため、別のサービスへ持ち込んでも復号できず中継が成立しない
ワークグループ構成やドメインコントローラー以外でのローカルログオンは、そもそもActive Directoryの外にありKDCが存在しないため、Kerberosは成立しない
ワークグループのメンバーとして構成されたシステムの認証と、ドメインコントローラー以外でのローカルログオン認証には、依然としてNTLMが使われ使われなければならない
ドメインアカウントでの認証では、リソースサーバーは自分でハッシュを持たないため、認証のたびにドメインコントローラーへ問い合わせる(パススルー認証)が必要になる。ローカルアカウントならこの依存はない
更新可能なセッションチケットがNTLMの毎回のパススルー認証を置き換え、サーバーはPACの検証が必要な場合を除きドメインコントローラーへ行く必要がなくなる
事前認証のタイムスタンプが既定5分の許容差を超えると、Kerberosはエラーとして失敗する(NTLMへの静かな切り替えとは別の現象)
NTLMv2は応答鍵をHMAC-MD5でNTハッシュから導出しHMACで応答を計算する後継バージョンだが、NTLMv1・v2ともに非推奨対象に含まれる
NTLMはLANMAN・NTLMv1・NTLMv2を含む認証プロトコルの一群であり、NTLMv1はその1つ
いまのWindowsが実際に使うのは、NTLMプロトコル群のうちNTLMv2
応答鍵NTOWFv2は、HMAC_MD5(MD4(UNICODE(パスワード)), 大文字化したユーザー名+ドメイン名)としてNTハッシュから導出される
計算がHMACベースで複雑になっても出発点はNTハッシュのままなので、NTLMv2に対してもPass-the-Hashは成立する
SMBクライアント側のNTLMブロックは、悪意あるサーバーへNTLM要求を送らせる手口を防ぎ、総当たり・クラッキング・Pass-the-Hash攻撃に対抗する
Kerberosは、フロントエンドサービスがクライアントの代理としてバックエンドサービスへ接続する委任をサポートする
NTLMの利用は「ネットワークセキュリティ: NTLMを制限する」系のポリシー(監査・拒否・例外リスト)で構成する
Restrict NTLMの監査・拒否イベントはNTLM/Operationalログ(イベント8001・8003・8004)に記録される
中継されたやり取りが使えるセッションになるのは、宛先が署名もチャネルバインディングも要求せずNTLMを受け付ける場合に限られる
Pass-the-Hashが成立するために攻撃者が必要とするのは盗んだNTハッシュだけで、平文パスワードは不要
Windows ServerのKerberos実装はActive Directoryドメインを前提とする
フェーズ2で提供予定のIAKerbは、ドメインコントローラーへ到達できない経路が原因のNTLM依存を減らすことを狙う
フェーズ2で提供予定のローカルKDCは、ローカルアカウント認証でのNTLM依存を減らすことを狙うが、対応するWindows同士でしか効かない
SMB署名のセッション鍵はパスワード由来のため、NTLMv2ではなくKerberosを使うことで鍵が強い状態で始まる
ドメインコントローラーは既定でSYSVOL・NETLOGONへ接続してくるすべての相手にSMB署名を要求する
TryIPSPNを有効にしたクライアントは、IPアドレスをホスト名としたSPNをSetspnで手動登録することでIPアドレス宛のKerberosを成立させる