Resource-based Constrained Delegation
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ovo je slično osnovnoj Constrained Delegation ali umesto davanja dozvola objektu da imituje bilo kog korisnika prema servisu. Resource-based Constrained Delegation postavlja u objektu ko može da imituje bilo kog korisnika prema njemu.
U ovom slučaju, ograničeni objekat će imati atribut pod nazivom msDS-AllowedToActOnBehalfOfOtherIdentity sa imenom korisnika koji može da imituje bilo kog drugog korisnika prema njemu.
Još jedna važna razlika između ovog Constrained Delegation i drugih delegacija je da bilo koji korisnik sa dozvolama za pisanje nad računom mašine (_GenericAll/GenericWrite/WriteDacl/WriteProperty/etc) može postaviti msDS-AllowedToActOnBehalfOfOtherIdentity (U drugim oblicima Delegacije potrebne su privilegije domen administratora).
U Constrained Delegation je rečeno da je TrustedToAuthForDelegation
oznaka unutar userAccountControl vrednosti korisnika potrebna za izvođenje S4U2Self. Ali to nije potpuno tačno.
Stvarnost je da čak i bez te vrednosti, možete izvesti S4U2Self protiv bilo kog korisnika ako ste servis (imate SPN) ali, ako imate TrustedToAuthForDelegation
vraćeni TGS će biti Forwardable i ako nemate tu oznaku vraćeni TGS neće biti Forwardable.
Međutim, ako je TGS korišćen u S4U2Proxy NISU Forwardable pokušaj zloupotrebe osnovne Constrain Delegation neće uspeti. Ali ako pokušavate da iskoristite Resource-Based constrain delegation, to će uspeti (ovo nije ranjivost, to je funkcija, očigledno).
Ako imate dozvole za pisanje ekvivalentne privilegijama nad računom računara možete dobiti privilegovan pristup na toj mašini.
Pretpostavimo da je napadač već dobio dozvole za pisanje ekvivalentne privilegijama nad računarom žrtve.
Napadač kompromituje nalog koji ima SPN ili kreira jedan (“Servis A”). Imajte na umu da bilo koji Admin User bez bilo kojih drugih posebnih privilegija može kreirati do 10 računarskih objekata (MachineAccountQuota) i postaviti im SPN. Tako da napadač može jednostavno kreirati računar i postaviti SPN.
Napadač zloupotrebljava svoje DOZVOLE ZA PISANJE nad računarom žrtve (ServisB) da konfiguriše resource-based constrained delegation da omogući Servisu A da imituje bilo kog korisnika prema tom računaru žrtve (ServisB).
Napadač koristi Rubeus da izvede potpun S4U napad (S4U2Self i S4U2Proxy) od Servisa A do Servisa B za korisnika sa privilegovanim pristupom Servisu B.
S4U2Self (iz SPN kompromitovanog/kreativnog naloga): Zatraži TGS od Administratora za mene (Nije Forwardable).
S4U2Proxy: Koristi ne Forwardable TGS iz prethodnog koraka da zatraži TGS od Administratora za računar žrtve.
Čak i ako koristite ne Forwardable TGS, pošto zloupotrebljavate Resource-based constrained delegation, to će uspeti.
Napadač može proći kroz tiket i imitirati korisnika da dobije pristup žrtvi Servisu B.
Da biste proverili MachineAccountQuota domena možete koristiti:
Možete kreirati objekat računara unutar domena koristeći powermad:
Korišćenje activedirectory PowerShell modula
Korišćenje powerview
Прво, креирали смо нови објекат Рачунар са лозинком 123456
, тако да нам је потребан хеш те лозинке:
Ovo će odštampati RC4 i AES heš vrednosti za taj nalog. Sada se napad može izvršiti:
Možete generisati više karata jednostavno tražeći jednom koristeći /altservice
parametar Rubeus:
Napomena da korisnici imaju atribut pod nazivom "Ne može biti delegiran". Ako korisnik ima ovaj atribut postavljen na True, nećete moći da se pretvarate da je on. Ova svojstvo se može videti unutar bloodhound.
Poslednja komanda će izvršiti potpun S4U napad i injektovaće TGS od Administratora na žrtvovanu mašinu u memoriji. U ovom primeru je zatražen TGS za CIFS servis od Administratora, tako da ćete moći da pristupite C$:
Saznajte više o dostupnim servisnim kartama ovde.
KDC_ERR_ETYPE_NOTSUPP
: Ovo znači da je kerberos konfigurisan da ne koristi DES ili RC4 i da pružate samo RC4 hash. Pružite Rubeusu barem AES256 hash (ili jednostavno pružite rc4, aes128 i aes256 hash). Primer: [Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())
KRB_AP_ERR_SKEW
: Ovo znači da je vreme trenutnog računara različito od vremena DC-a i kerberos ne funkcioniše ispravno.
preauth_failed
: Ovo znači da dati korisničko ime + hash ne funkcionišu za prijavu. Možda ste zaboravili da stavite "$" unutar korisničkog imena prilikom generisanja hash-eva (.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local
)
KDC_ERR_BADOPTION
: Ovo može značiti:
Korisnik kojeg pokušavate da imitira ne može da pristupi željenoj usluzi (jer ne možete da ga imitira ili zato što nema dovoljno privilegija)
Tražena usluga ne postoji (ako tražite kartu za winrm, ali winrm ne radi)
Lažni računar koji je kreiran je izgubio svoje privilegije nad ranjivim serverom i morate ih ponovo dodeliti.
Saznajte i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Saznajte i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)