SMB署名
SMBの全メッセージにセッション鍵由来の署名(メッセージ全体のハッシュと送信者・受信者の識別情報を含む)を付け、改ざんとリレー攻撃を検知する仕組み。Windows 11 24H2/Windows Server 2025で既定値が強化された。
LDAP署名
ドメインコントローラーが、署名(整合性検証)を要求しないSASLバインドと、平文接続の単純バインドを拒否できるようにする仕組み。
LDAPチャネルバインディング
LDAPS上のWindows認証(SASLバインド)をTLSチャネルに結びつけ、認証情報だけを別のTLS接続へ中継する攻撃を防ぐ仕組み。レジストリ値LdapEnforceChannelBindingやグループポリシーで制御する。
NTLMリレー攻撃
攻撃者が被害者とサーバーの間でNTLMのチャレンジ/レスポンスをそのまま中継し、被害者になりすます攻撃。応答が宛先を縛らないNTLMの弱点を突く。
SMBリレー攻撃
Windows 11 バージョン24H2 / Windows Server 2025
NTLMv1の削除、SMB署名の既定必須化、SMBクライアント側のNTLMブロック追加など、複数のセキュリティ既定値が変わった2024年後半以降のWindowsリリース世代。
SMB署名必須化による接続エラー
署名に対応しない相手にSMB署名を必須で要求すると発生する接続エラー(0xc000a000、STATUS_INVALID_SIGNATURE)。
SMBゲストアクセスの無効化
SMB署名の必須化に伴って有効になる、認証なし(ゲスト)でのSMB接続を拒否する設定。
SMBゲストアクセスブロックのエラー
署名必須化に伴うゲストアクセス無効化により、ゲスト運用のNASなどで発生する「組織のセキュリティポリシーによって認証されていないゲストアクセスがブロックされている」エラー。
SASLバインド
SASL(Simple Authentication and Security Layer)というWindows認証(Negotiate、Kerberos、NTLM、Digest)の枠組みを使ったLDAPバインド。署名(整合性検証)を要求できる。
LDAP単純バインド
ユーザーIDとパスワードをLDAP要求に直接載せて送るバインド。署名の枠組みを持たず、平文接続ではパスワードがそのまま流れる。CBTを持たずチャネルバインディング検証の対象外。
チャネルバインディングトークン(CBT)
LDAPチャネルバインディングが、認証とTLSチャネルを結びつけるために使う値。CBTを持たない単純バインドはチャネルバインディング検証の対象外。
LDAPS
LDAP接続全体をSSL/TLSで暗号化する仕組み。389番ではなく636番ポートを使う。通信は暗号化するが、別チャネルへの認証情報の中継まではLDAPSだけでは防げない。
Negotiate
KerberosとNTLMのどちらかを選択するセキュリティパッケージ。認証に関わるシステムのいずれかがKerberosを使えない場合を除き、Kerberosを選択する。
Negotiateセキュリティパッケージ
LDAP署名・チャネルバインディングの監査イベント
ドメインコントローラーのDirectory Serviceログに記録される、未署名バインドの件数(2887)・接続元(2889)、チャネルバインディング検証失敗(3039)・未保護バインドの件数(3040)・CBT非対応クライアントの監査(3074・3075)などのイベント群。
イベント2887
イベント2889
イベント3039
イベント3040
イベント3074
イベント3075
グループポリシー
Active Directoryドメイン環境でWindowsの設定を集中構成する仕組み。
Kerberos
チケットによる一度だけの本人確認と相互認証を提供する認証プロトコル。Windows ServerはKerberos version 5と、公開鍵認証・認可データの転送・委任のための拡張を実装する。
Kerberos認証
ドメインコントローラー
Active Directoryのディレクトリサービスを提供し、KDCの機能やNTLMのパススルー認証の相手を担うサーバー。
SMB署名非対応検出監査
Windows 11 バージョン24H2以降で使える、署名や暗号化に対応しないサードパーティのSMBクライアント・サーバーを検出する監査機能。イベントID 31998・31999(クライアント)、3021・3022(サーバー)に記録される。
NTLM
パスワードの一方向ハッシュを使ったチャレンジ/レスポンス方式の認証プロトコル群(LANMAN・NTLMv1・NTLMv2を含む)。相互認証を持たず、サーバーが本物であると仮定できる環境向けに設計されている。
NTLM認証
署名にはメッセージ全体のハッシュに加えて元の送信者と意図した受信者の識別情報が含まれ、転送中に改ざん・中継されると署名が一致しなくなる(クライアント・サーバーの少なくとも一方が署名を必須にしている場合に限る。両方とも必須にしていなければ署名されず、この防御は効かない)
Windows 11 24H2のEnterprise・Pro・Educationは送信・受信の両方でSMB署名が既定必須、Windows Server 2025は送信のみ既定必須(Homeはどちらも対象外)
署名に対応しない・無効にしているサードパーティ機器へ接続すると0xc000a000(STATUS_INVALID_SIGNATURE)で失敗する
24H2への更新でクライアント側のSMB署名が既定必須になり、署名に対応しないNASなどとの接続で事故が顕在化する
Windows 11 24H2(Enterprise・Pro・Education)とWindows Server 2025の既定変更では、SMB署名の必須化はゲストアクセスの無効化とセットで導入される。
認証なし(ゲスト)でアクセスさせる設定の機器は、署名必須化に伴うゲストアクセス無効化によって接続エラーになる
LDAP署名の強制とは、署名(整合性検証)を要求しないSASLバインドをディレクトリサーバーに拒否させること
LDAP署名の強制は、平文(非SSL/TLS)接続で行われる単純バインドを拒否させる。単純バインドをLDAPS(SSL/TLS)経由に切り替えれば拒否されないため、この非互換は平文接続の場合に限られる
単純バインドはCBTを持たないため、チャネルバインディング検証の対象外になる。単純バインドを守るのはTLS暗号化そのもの
チャネルバインディングは、認証をTLSチャネル自体に結びつけるためにCBTを使う
チャネルバインディングの対象は、LDAPS上でNTLMやKerberosなどのWindows認証(SASLバインド)を行う接続
LDAPSは通信を暗号化するが、それだけでは認証情報だけを別のTLS接続に中継する形のリレーを防ぎきれない
認証をTLSチャネルへ結びつけることで、別チャネルへ認証情報だけを中継する攻撃を検出可能にし、LDAPSの穴を塞ぐ
SASLバインドはNegotiate、Kerberos、NTLM、DigestといったWindows認証の枠組みを使う
イベント2887(24時間ごとの未署名バインド件数集計)と2889(接続元IPアドレスと認証ID。診断設定を2にすると記録)で接続元を特定できる
イベント3039(CBT検証失敗)・3040(保護されていないLDAPSバインドの件数集計)・3074/3075(CBT非対応クライアントの監査)で接続元を特定できる
「ドメイン コントローラー: LDAP サーバー チャネル バインド トークンの要件」またはレジストリ値LdapEnforceChannelBinding(0/1/2)で制御する
「ドメイン コントローラー: LDAP サーバー署名必須」と「ネットワーク セキュリティ: LDAP クライアント署名の要件」で強制する
「Microsoft ネットワーク クライアント/サーバー: 常に通信にデジタル署名を行う」で必須(Require)にする
SMB署名のセッション鍵はパスワードに由来するため、NTLMv2ではなくKerberosを使うことでセッション鍵が強い状態で始まる
ドメインコントローラーは以前からSYSVOL・NETLOGONへ接続する相手にSMB署名を要求している(この既定はSYSVOL・NETLOGON共有への接続に限られ、ドメインコントローラーの通信全般に及ぶものではない)
必須化の前に、署名や暗号化に対応しないサードパーティのクライアント・サーバーを検出する監査(Set-SmbServerConfiguration -AuditClientDoesNotSupportSigning等)で洗い出せる
署名を必須にする前に、まず監査で署名できない相手を業務一巡分洗い出すのが定石
イベント2887・2889で未署名バインドの件数と接続元を確認し、機器・アプリを直してから、LDAP署名を強制する
イベント3039・3040・3074・3075で問題のあるクライアントを特定し提供元に確認してから、チャネルバインディングをAlwaysに切り替える
単純バインドを使うなら平文389番ではなく必ずLDAPS(636番)にする、というのが本記事の推奨
NTLMのレスポンスが宛先を縛らないことが、SMB署名・LDAP署名・チャネルバインディングという3つの防御が必要になる根本原因
自作の.NET LDAPクライアントもAuthType.NegotiateとSigning/Sealingの要求を組み合わせることで、SPNと名前解決が揃えばKerberosが選ばれる