Metodologija Active Directory-a
Reading time: 35 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.
Osnovni pregled
Active Directory predstavlja osnovnu tehnologiju koja omogućava network administrators da efikasno kreiraju i upravljaju domains, users, i objects unutar mreže. Dizajniran je za skaliranje, olakšavajući organizovanje velikog broja korisnika u upravljive groups i subgroups, dok kontroliše access rights na različitim nivoima.
Struktura Active Directory se sastoji iz tri primarna sloja: domains, trees, i forests. Domain obuhvata kolekciju objekata, kao što su users ili devices, koji dele zajedničku bazu podataka. Trees su grupe tih domena povezane zajedničkom strukturom, a forest predstavlja kolekciju više trees, međusobno povezane kroz trust relationships, čineći najviši nivo organizacione strukture. Specifična access i communication rights mogu biti dodeljena na svakom od tih nivoa.
Ključni koncepti unutar Active Directory uključuju:
- Directory – Sadrži sve informacije vezane za Active Directory objekate.
- Object – Označava entitete unutar direktorijuma, uključujući users, groups, ili shared folders.
- Domain – Služi kao kontejner za directory objekte, pri čemu više domena može koegzistirati unutar forest, svaki zadržavajući svoju kolekciju objekata.
- Tree – Grupisanje domena koji dele zajednički root domain.
- Forest – Najviši stepen organizacione strukture u Active Directory, sastavljen od više trees sa trust relationships između njih.
Active Directory Domain Services (AD DS) obuhvata niz servisa kritičnih za centralizovano upravljanje i komunikaciju unutar mreže. Ovi servisi obuhvataju:
- Domain Services – Centralizuje skladištenje podataka i upravlja interakcijama između users i domains, uključujući authentication i search funkcionalnosti.
- Certificate Services – Nadgleda kreiranje, distribuciju i upravljanje sigurnim digital certificates.
- Lightweight Directory Services – Podržava directory-enabled aplikacije kroz LDAP protocol.
- Directory Federation Services – Pruža single-sign-on mogućnosti za autentifikaciju korisnika preko više web aplikacija u jednoj sesiji.
- Rights Management – Pomaže u zaštiti copyright materijala regulisanjem njegove neovlašćene distribucije i upotrebe.
- DNS Service – Presudna za razrešavanje domain names.
Za detaljnije objašnjenje pogledajte: TechTerms - Active Directory Definition
Kerberos autentifikacija
Da biste naučili kako da attack an AD potrebno je vrlo dobro da razumete proces Kerberos authentication.
Read this page if you still don't know how it works.
Brzi pregled
Možete posetiti https://wadcoms.github.io/ za brz pregled koje komande možete pokrenuti za enumeraciju/eksploataciju AD.
warning
Kerberos communication requires a full qualifid name (FQDN) for performing actions. If you try to access a machine by the IP address, it'll use NTLM and not kerberos.
Recon Active Directory (bez kredencijala/sesija)
Ako imate pristup AD okruženju ali nemate nikakve kredencijale/sesije, možete:
- Pentest the network:
- Skenirajte mrežu, pronađite mašine i otvorene portove i pokušajte da exploit vulnerabilities ili extract credentials iz njih (na primer, printers could be very interesting targets).
- Enumeracija DNS-a može dati informacije o ključnim serverima u domenu kao što su web, printers, shares, vpn, media, itd.
gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
- Pogledajte generalnu Pentesting Methodology za više informacija o tome kako ovo raditi.
- Check for null and Guest access on smb services (ovo neće raditi na modernim Windows verzijama):
enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>
smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>
smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //
- Detaljniji vodič o tome kako enumerisati SMB server možete pronaći ovde:
- Enumerate Ldap
nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
- Detaljniji vodič o tome kako enumerisati LDAP možete pronaći ovde (posvetite posebnu pažnju anonimnom pristupu):
389, 636, 3268, 3269 - Pentesting LDAP
- Poison the network
- Sakupite kredencijale impersonating services with Responder
- Pristupite hostu abusing the relay attack
- Sakupite kredencijale exposing fake UPnP services with evil-SSDP
- OSINT:
- Ekstrahujte usernames/imena iz internih dokumenata, social media, servisa (pre svega web) unutar domen okruženja kao i iz javno dostupnih izvora.
- Ako pronađete kompletna imena zaposlenih u kompaniji, možete pokušati različite AD username conventions (read this). Najčešće konvencije su: NameSurname, Name.Surname, NamSur (3 slova od svakog), Nam.Sur, NSurname, N.Surname, SurnameName, Surname.Name, SurnameN, Surname.N, 3 random letters and 3 random numbers (abc123).
- Alati:
- w0Tx/generate-ad-username
- urbanadventurer/username-anarchy
Enumeracija korisnika
- Anonymous SMB/LDAP enum: Pogledajte stranice za pentesting SMB i pentesting LDAP.
- Kerbrute enum: Kada se zatraži invalid username server će odgovoriti koristeći Kerberos error kod KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN, što nam omogućava da utvrdimo da je username nevažeći. Valid usernames će izazvati ili TGT in a AS-REP odgovor ili error KRB5KDC_ERR_PREAUTH_REQUIRED, što ukazuje da je korisniku potrebna pre-authentication.
- No Authentication against MS-NRPC: Korišćenjem auth-level = 1 (No authentication) protiv MS-NRPC (Netlogon) interfejsa na domain controller-ima. Metod poziva funkciju
DsrGetDcNameEx2
nakon bindovanja MS-NRPC interfejsa da proveri da li korisnik ili računar postoji bez ikakvih kredencijala. Alat NauthNRPC implementira ovu vrstu enumeracije. Istraživanje možete pronaći ovde
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='DOMAIN'" <IP>
Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain>',userdb=/root/Desktop/usernames.txt <IP>
msf> use auxiliary/gather/kerberos_enumusers
crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq
python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC
- OWA (Outlook Web Access) Server
Ako pronađete jedan od ovih servera u mreži, možete takođe izvršiti user enumeration against it. Na пример, možete koristiti alat MailSniper:
ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
Invoke-DomainHarvestOWA -ExchHostname [ip]
# Enumerate valid users from a list of potential usernames
Invoke-UsernameHarvestOWA -ExchHostname [ip] -Domain [domain] -UserList .\possible-usernames.txt -OutFile valid.txt
# Password spraying
Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summer2021
# Get addresses list from the compromised mail
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
warning
Možete pronaći liste korisničkih imena u this github repo i u ovoj (statistically-likely-usernames).
Ipak, trebalo bi da imate imena ljudi koji rade u firmi iz recon faze koju ste trebali da izvedete pre ovoga. Sa imenom i prezimenom možete koristiti skriptu namemash.py da generišete potencijalna validna korisnička imena.
Knowing one or several usernames
Ok, dakle već imate važeće korisničko ime ali nemate lozinku... Onda pokušajte:
- ASREPRoast: Ako korisnik nema atribut DONT_REQ_PREAUTH možete zatražiti AS_REP poruku za tog korisnika koja će sadržati podatke enkriptovane derivatom korisničke lozinke.
- Password Spraying: Pokušajte najčešće lozinke sa svakim otkrivenim korisnikom, možda neki korisnik koristi lošu lozinku (imajte na umu password policy!).
- Imajte u vidu da takođe možete spray-ovati OWA servers da pokušate dobiti pristup korisničkim mail serverima.
Password Spraying / Brute Force
LLMNR/NBT-NS Poisoning
Možda ćete moći da dohvatite neke challenge hashe za crack-ovanje tako što ćete poison-ovati neke protokole u mreži:
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
NTLM Relay
Ako ste uspeli da enumerišete Active Directory imaćete više email-ova i bolje razumevanje mreže. Možda ćete moći da primorate NTLM relay attacks da dobijete pristup AD okruženju.
Steal NTLM Creds
Ako možete pristupiti drugim PC-jevima ili share-ovima sa null ili guest user-om mogli biste postaviti fajlove (npr. SCF fajl) koji, ako budu otvoreni, će okidač NTLM autentikaciju prema vama tako da možete ukrasti NTLM challenge i crack-ovati ga:
Enumerating Active Directory WITH credentials/session
Za ovu fazu morate imati kompromitovane kredencijale ili sesiju validnog domain naloga. Ako imate neke validne kredencijale ili shell kao domain user, treba da zapamtite da su opcije navedene ranije i dalje validne za kompromitovanje drugih korisnika.
Pre nego što počnete sa autentifikovanom enumeracijom trebalo bi da znate šta je Kerberos double hop problem.
Enumeration
Kompromitovanje naloga je velik korak ka kompromitovanju celog domena, zato što ćete moći da započnete Active Directory Enumeration:
Što se tiče ASREPRoast sada možete pronaći sve moguće vulnerable korisnike, a što se tiče Password Spraying možete dobiti listu svih korisničkih imena i pokušati lozinku kompromitovanog naloga, prazne lozinke ili nove potencijalne lozinke.
- Možete koristiti CMD to perform a basic recon
- Takođe možete koristiti powershell for recon što će biti stealthier
- Možete takođe use powerview da izvučete detaljnije informacije
- Još jedan odličan alat za recon u Active Directory je BloodHound. Nije vrlo stealthy (zavisno od metoda kolekcije koje koristite), ali ako vas to ne zanima, obavezno ga isprobajte. Pronađite gde korisnici mogu RDP-ovati, pronađite puteve do drugih grupa, itd.
- Ostali automatizovani alati za AD enumeraciju su: AD Explorer, ADRecon, Group3r, PingCastle.
- DNS records of the AD jer mogu sadržati interesantne informacije.
- Alat sa GUI koji možete koristiti za enumeraciju directory-ja je AdExplorer.exe iz SysInternal suite-a.
- Možete pretraživati LDAP bazu sa ldapsearch tražeći kredencijale u poljima userPassword & unixUserPassword, ili čak u Description. cf. Password in AD User comment on PayloadsAllTheThings za druge metode.
- Ako koristite Linux, možete takođe enumerisati domen koristeći pywerview.
- Možete takođe pokušati automatizovane alate kao što su:
- tomcarver16/ADSearch
- 61106960/adPEAS
- Ekstrakcija svih domain korisnika
Veoma je lako dobiti sva korisnička imena domena iz Windows-a (net user /domain
,Get-DomainUser
ili wmic useraccount get name,sid
). U Linux-u možete koristiti: GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username
ili enum4linux -a -u "user" -p "password" <DC IP>
Čak i ako ovaj deo Enumeration izgleda kratak, ovo je najvažniji deo od svega. Posetite linkove (pre svega one za cmd, powershell, powerview i BloodHound), naučite kako da enumerišete domen i vežbajte dok se ne osećate komforno. Tokom assesment-a, ovo će biti ključni trenutak da nađete put do DA ili da odlučite da se ništa ne može uraditi.
Kerberoast
Kerberoasting uključuje dobijanje TGS tiketa koje koriste servisi vezani za korisničke naloge i crack-ovanje njihove enkripcije — koja se bazira na korisničkim lozinkama — offline.
Više o tome u:
Remote connexion (RDP, SSH, FTP, Win-RM, etc)
Kada dobijete neke kredencijale možete proveriti da li imate pristup nekom mašini. U tu svrhu možete koristiti CrackMapExec da pokušate konekciju na više servera preko različitih protokola, u skladu sa vašim port skenovima.
Local Privilege Escalation
Ako ste kompromitovali kredencijale ili sesiju kao običan domain user i imate pristup tom korisniku na nekoj mašini u domenu trebalo bi da pokušate da pronađete način za lokalno eskaliranje privilegija i loot-ovanje kredencijala. Samo sa lokalnim administratorskim privilegijama moći ćete dump-ovati hashe drugih korisnika u memoriji (LSASS) i lokalno (SAM).
Postoji kompletna stranica u ovoj knjizi o local privilege escalation in Windows i i checklist. Takođe, ne zaboravite da koristite WinPEAS.
Current Session Tickets
Veoma je neverovatno da ćete naći tiket-e u trenutnom korisniku koji vam daju dozvolu za pristup neočekivanim resursima, ali možete proveriti:
## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
## Dump the interesting one by luid
.\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
[IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("<BASE64_TICKET>"))
NTLM Relay
Ako ste uspeli da enumerišete Active Directory imaćete više emailova i bolje razumevanje mreže. Možda ćete moći da forsirate NTLM relay attacks.
Pretraživanje Creds u Computer Shares | SMB Shares
Sada kada imate neke osnovne kredencijale treba da proverite da li možete naći neke interesantne fajlove koji se dele unutar AD. To možete raditi ručno, ali je veoma dosadan i repetitivan zadatak (još gore ako nađete stotine dokumenata koje treba proveriti).
Pratite ovaj link da saznate o alatima koje možete koristiti.
Ukrasti NTLM Creds
Ako možete pristupiti drugim PC-jevima ili share-ovima možete postaviti fajlove (npr. SCF file) koji, ako se na neki način pristupi njima, će pokrenuti NTLM autentifikaciju prema vama, tako da možete ukrasti NTLM challenge da ga razbijete:
CVE-2021-1675/CVE-2021-34527 PrintNightmare
Ova ranjivost je omogućavala bilo kom autentifikovanom korisniku da kompromituje domain controller.
Eskalacija privilegija na Active Directory SA privilegovanim kredencijalima/sesijom
Za sledeće tehnike običan domain korisnik nije dovoljan — potrebne su posebne privilegije/kredencijali da biste izveli ove napade.
Hash extraction
Nadamo se da ste uspeli da kompromitujete neki lokalni admin nalog koristeći AsRepRoast, Password Spraying, Kerberoast, Responder including relaying, EvilSSDP, escalating privileges locally.
Zatim je vreme da izvucite sve hashe iz memorije i lokalno.
Pročitajte ovu stranicu o različitim načinima dobijanja hash-eva.
Pass the Hash
Kada imate hash korisnika, možete ga koristiti da se lažno predstavite kao on.
Morate koristiti neki alat koji će izvesti NTLM autentifikaciju koristeći taj hash, ili možete kreirati novi sessionlogon i inject-ovati taj hash u LSASS, tako da kada se izvrši bilo koja NTLM autentifikacija, taj hash će biti upotrebljen. Poslednja opcija je ono što radi mimikatz.
Pročitajte ovu stranicu za više informacija.
Over Pass the Hash/Pass the Key
Ovaj napad ima za cilj da iskoristi korisnikov NTLM hash za zahtev Kerberos tiketa, kao alternativu uobičajenom Pass The Hash preko NTLM protokola. Dakle, ovo može biti posebno korisno u mrežama gde je NTLM protokol onemogućen i gde je dozvoljen samo Kerberos kao protokol za autentifikaciju.
Over Pass the Hash/Pass the Key
Pass the Ticket
U metodi napada Pass The Ticket (PTT), napadači ukradu korisnikov autentifikacioni tiket umesto njegove lozinke ili hash vrednosti. Ovaj ukradeni tiket se potom koristi za lažno predstavljanje korisnika, čime se dobija neovlašćen pristup resursima i servisima u mreži.
Ponovna upotreba kredencijala
Ako imate hash ili password lokalnog administratora, trebalo bi da pokušate da se lokalno ulogujete na druge PC-e pomoću njega.
# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
warning
Imajte na umu da je ovo prilično bučno i da bi LAPS to ublažio.
MSSQL zloupotreba i pouzdani linkovi
Ako korisnik ima privilegije da pristupi MSSQL instancama, mogao bi ih iskoristiti da izvršava komande na MSSQL hostu (ako se proces izvršava kao SA), ukrade NetNTLM hash ili čak sprovede relay attack.
Takođe, ako je MSSQL instanca pouzdana (database link) od strane druge MSSQL instance, i korisnik ima privilegije nad tom poverenom bazom, moći će da iskoristi odnos poverenja da izvršava upite i na drugoj instanci. Ovi trustovi se mogu povezivati i u nekom trenutku korisnik može pronaći pogrešno konfigurisanu bazu gde može izvršavati komande.
Linkovi između baza rade čak i preko forest trustova.
Zloupotreba IT asset/deployment platformi
Third-party inventory i deployment suite često izlažu moćne puteve do kredencijala i izvršavanja koda. Pogledajte:
Sccm Management Point Relay Sql Policy Secrets
Unconstrained Delegation
Ako pronađete bilo koji Computer object sa atributom ADS_UF_TRUSTED_FOR_DELEGATION i imate domen privilegije na tom računaru, moći ćete da dump-ujete TGTs iz memorije svakog korisnika koji se prijavi na taj računar.
Dakle, ako se Domain Admin prijavi na taj računar, moći ćete da dump-ujete njegov TGT i da ga impersonirate koristeći Pass the Ticket.
Zahvaljujući constrained delegation mogli biste čak automatski kompromitovati Print Server (nadamo se da će to biti DC).
Constrained Delegation
Ako je korisniku ili računaru dozvoljeno "Constrained Delegation", moći će da impersonira bilo kog korisnika da pristupi nekim servisima na računaru.
Zatim, ako kompromitujete hash tog korisnika/računara, moći ćete da impersonirate bilo kog korisnika (čak i domain admins) da pristupite određenim servisima.
Resourced-based Constrain Delegation
Imati WRITE privilegiju na Active Directory objektu udaljenog računara omogućava postizanje izvršenja koda sa povišenim privilegijama:
Resource-based Constrained Delegation
Zloupotreba Permissions/ACLs
Kompromitovani korisnik može imati neke interesantne privilegije nad domen objektima koje bi vam omogućile da kasnije lateralno se pomerate ili escalate privilegije.
Abusing Active Directory ACLs/ACEs
Zloupotreba Printer Spooler servisa
Otkrivanje Spool servisa koji osluškuje unutar domena može se zloupotrebiti za pribavljanje novih kredencijala i eskalaciju privilegija.
Force NTLM Privileged Authentication
Zloupotreba sesija trećih lica
Ako drugi korisnici pristupaju kompromitovanom računaru, moguće je sakupljati kredencijale iz memorije i čak inject-ovati beacone u njihove procese kako biste ih impersonirali.
Obično korisnici pristupaju sistemu preko RDP-a, tako da ovde imate nekoliko napada nad RDP sesijama trećih lica:
LAPS
LAPS obezbeđuje sistem za upravljanje lokalnim Administrator password-om na računarima priključenim na domen, osiguravajući da je on nasumičan, jedinstven i često menjan. Ovi passwordi su sačuvani u Active Directory i pristup im je kontrolisan kroz ACL-e samo za autorizovane korisnike. Sa dovoljnim permisijama za pristup ovim lozinkama, pivotovanje na druge računare postaje moguće.
Krađa sertifikata
Prikupljanje sertifikata sa kompromitovanog mašine može biti način za eskalaciju privilegija unutar okruženja:
Zloupotreba Certificate Templates
Ako su konfigurisanе ranjive templates, moguće ih je zloupotrebiti za eskalaciju privilegija:
Post-exploitation sa nalogom visokih privilegija
Dump-ovanje domen kredencijala
Kada dobijete Domain Admin ili još bolje Enterprise Admin privilegije, možete dump-ovati domen bazu: ntds.dit.
Više informacija o DCSync attack se nalazi ovde.
Više informacija o tome kako ukrasti NTDS.dit možete naći ovde
Privesc kao persistentna metoda
Neke od tehnika ranije pomenutih mogu se koristiti za persistenciju.
Na primer, možete:
- Učiniti korisnike ranjivim na Kerberoast
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
- Učiniti korisnike ranjivim na ASREPRoast
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
- Dodeliti DCSync privilegije korisniku
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
Silver Ticket
Silver Ticket attack kreira legitimni Ticket Granting Service (TGS) ticket za određeni servis koristeći NTLM hash (na primer, hash PC account-a). Ova metoda se koristi za pristup privilegijama servisa.
Golden Ticket
Golden Ticket attack uključuje napadača koji dobija pristup NTLM hash-u krbtgt account-a u Active Directory (AD) okruženju. Ovaj nalog je specijalan zato što se koristi za potpisivanje svih Ticket Granting Tickets (TGTs), koji su bitni za autentikaciju u AD mreži.
Kada napadač dobije ovaj hash, može kreirati TGTs za bilo koji nalog koji poželi (Silver ticket attack).
Diamond Ticket
Ovo su kao golden tickets, ali izforgeovani na način koji zaobilazi uobičajene mehanizme detekcije za golden tickets.
Certificates Account Persistence
Posedovanje sertifikata naloga ili mogućnost njihovog zahteva predstavlja vrlo dobar način da se održi persistencija na korisničkom nalogu (čak i ako korisnik promeni lozinku):
Certificates Domain Persistence
Korišćenjem sertifikata takođe je moguće održati persistenciju sa visokim privilegijama unutar domena:
AdminSDHolder Group
AdminSDHolder objekat u Active Directory osigurava bezbednost privilegovanih grupa (kao Domain Admins i Enterprise Admins) primenom standardnog Access Control List (ACL) preko ovih grupa da bi se sprečile neautorizovane izmene. Međutim, ova funkcionalnost može se zloupotrebiti; ako napadač izmeni ACL AdminSDHolder-a i da pun pristup običnom korisniku, taj korisnik dobija širok spektar kontrole nad svim privilegovanim grupama. Ova mera, koja je zamišljena da štiti, može se pretvoriti u propust ukoliko se ne prati pažljivo.
Više informacija o AdminSDHolder Group ovde.
DSRM kredencijali
Unutar svakog Domain Controller (DC) postoji lokalni administrator nalog. Dobijanjem admin prava na takvoj mašini, lokalni Administrator hash se može izvući koristeći mimikatz. Nakon toga je potrebna izmena registra da bi se omogućila upotreba te lozinke, što omogućava udaljeni pristup lokalnom Administrator nalogu.
ACL Persistence
Možete dodeliti neke specijalne permisije korisniku nad određenim domen objektima koje će tom korisniku omogućiti da eskalira privilegije u budućnosti.
Abusing Active Directory ACLs/ACEs
Security Descriptors
Security descriptors se koriste za čuvanje permisija koje objekat ima nad nekim resursom. Ako možete napraviti čak i malu izmenu u security descriptor-u objekta, možete dobiti veoma interesantne privilegije nad tim objektom bez potrebe da budete član neke privilegovane grupe.
Skeleton Key
Izmenite LSASS u memoriji da uspostavite univerzalnu lozinku, čime dobijate pristup svim domen nalozima.
Custom SSP
Learn what is a SSP (Security Support Provider) here.
Možete kreirati svoj SSP da biste uhvatili u clear text kredencijale koje se koriste za pristup mašini.
DCShadow
Registruje novi Domain Controller u AD i koristi ga da push-uje atribute (SIDHistory, SPNs...) na specificirane objekte bez ostavljanja logova o izmenama. Potrebne su DA privilegije i biti unutar root domain-a.
Napomena: ako koristite pogrešne podatke, pojaviće se prilično ružni logovi.
LAPS Persistence
Ranije smo diskutovali kako eskalirati privilegije ako imate dovoljne permisije da čitate LAPS lozinke. Međutim, ove lozinke takođe mogu biti korišćene za održavanje persistencije.
Pogledajte:
Eskalacija privilegija između šuma - Domain Trusts
Microsoft smatra Forest kao bezbednosnu granicu. To implicira da kompromitovanje jednog domena može potencijalno dovesti do kompromitovanja celog Foresta.
Osnovne informacije
domain trust je bezbednosni mehanizam koji omogućava korisniku iz jednog domena da pristupi resursima u drugom domenu. On zapravo povezuje autentikacione sisteme ta dva domena, omogućavajući da zahtevi za autentikaciju teku neprimetno. Kada domeni uspostave trust, oni razmenjuju i čuvaju specifične ključeve unutar svojih Domain Controller-a (DCs) koji su ključni za integritet tog trust-a.
U tipičnom scenariju, ako korisnik želi da pristupi servisu u trusted domain-u, prvo mora zatražiti specijalan tiket poznat kao inter-realm TGT od DC-a svog domena. Ovaj TGT je enkriptovan sa zajedničkim kljuèem koji su oba domena dogovorila. Korisnik zatim predaje taj inter-realm TGT DC-u trusted domain-a da bi dobio service ticket (TGS). Nakon uspešne verifikacije inter-realm TGT-a od strane DC-a trusted domain-a, on izdaje TGS koji korisniku omogućava pristup servisu.
Koraci:
- Klijent računar u Domain 1 započinje proces koristeći svoj NTLM hash da zatraži Ticket Granting Ticket (TGT) od svog Domain Controller (DC1).
- DC1 izdaje novi TGT ako je klijent uspešno autentifikovan.
- Klijent zatim zahteva inter-realm TGT od DC1, koji je potreban za pristup resursima u Domain 2.
- Inter-realm TGT je enkriptovan sa trust key koji su DC1 i DC2 podelili kao deo dvosmernog domain trusta.
- Klijent nosi inter-realm TGT DC-u Domain 2 (DC2).
- DC2 verifikuje inter-realm TGT koristeći svoj shared trust key i, ako je validan, izdaje Ticket Granting Service (TGS) za server u Domain 2 kojem klijent želi pristupiti.
- Konačno, klijent predaje ovaj TGS serveru, koji je enkriptovan sa hash-om serverovog naloga, da bi dobio pristup servisu u Domain 2.
Različiti trustovi
Važno je napomenuti da trust može biti jednosmeran ili dvosmeran. U dvosmernom režimu, oba domena veruju jedan drugom, ali u jednosmernoj trust relaciji jedan od domena će biti trusted, a drugi trusting domen. U tom poslednjem slučaju, moći ćete pristupiti resursima samo unutar trusting domena iz trusted domena.
Ako Domain A trust-uje Domain B, A je trusting domen, a B je trusted. Nadalje, u Domain A, ovo bi bio Outbound trust; a u Domain B, ovo bi bio Inbound trust.
Različiti tipovi odnosа poverenja
- Parent-Child Trusts: Uobičajena postavka unutar istog foresta, gde child domen automatski ima dvosmerni tranzitivni trust sa svojim parent domenom. Ovo znači da zahtevi za autentikaciju mogu teći neometano između parent-a i child-a.
- Cross-link Trusts: Poznati i kao "shortcut trusts", uspostavljaju se između child domena da ubrzaju referral procese. U složenim forest-ovima, autentikacioni referali obično moraju ići do root-a foresta pa zatim nadole do ciljnog domena. Cross-links skraćuju taj put, što je posebno korisno u geografski rasprostranjenim okruženjima.
- External Trusts: Postavljaju se između različitih, nepovezanih domena i po prirodi su non-transitive. Prema Microsoft-ovoj dokumentaciji, external trusts su korisni za pristup resursima u domenu izvan trenutnog foresta koji nije povezan forest trust-om. Bezbednost se pojačava kroz SID filtering sa external trusts.
- Tree-root Trusts: Ovi trustovi se automatski uspostavljaju između forest root domena i novo dodatog tree root-a. Iako se ne sreću često, tree-root trust-ovi su važni pri dodavanju novih tree root-ova u forest, omogućavajući im da zadrže jedinstveno ime domena i osiguravajući dvosmernu transfinitivnost. Više informacija možete naći u Microsoft-ovom vodiču.
- Forest Trusts: Ovo je dvosmerni tranzitivni trust između dva forest root domena, takođe primenjujući SID filtering radi poboljšanja sigurnosti.
- MIT Trusts: Ovi trustovi se uspostavljaju sa non-Windows, RFC4120-compliant Kerberos domenima. MIT trusts su specijalizovaniji i služe za integraciju sa Kerberos-based sistemima izvan Windows ekosistema.
Druge razlike u trust odnosima
- Trust relacija može biti i transitivna (A trust-uje B, B trust-uje C, onda A trust-uje C) ili non-transitivna.
- Trust relacija može biti bidirekcionalna (oba se međusobno trust-uju) ili jednosmerna (samo jedan trust-uje drugog).
Put napada
- Enumerišite trust relacije
- Proverite da li bilo koji security principal (user/group/computer) ima pristup resursima drugog domena, možda kroz ACE unose ili članstvom u grupama drugog domena. Tražite odnose preko domena (trust je verovatno kreiran upravo zbog ovoga).
- kerberoast u ovom slučaju može biti još jedna opcija.
- Kompromitujte naloge koji mogu pivot-ovati kroz domene.
Napadači mogu dobiti pristup resursima u drugom domenu kroz tri primarna mehanizma:
- Local Group Membership: Principali mogu biti dodati u lokalne grupe na mašinama, kao što je “Administrators” grupa na serveru, čime im se daje značajna kontrola nad tom mašinom.
- Foreign Domain Group Membership: Principali takođe mogu biti članovi grupa unutar stranog domena. Međutim, efikasnost ove metode zavisi od prirode trust-a i opsega grupe.
- Access Control Lists (ACLs): Principali mogu biti specificirani u ACL-u, posebno kao entiteti u ACE-ovima unutar DACL-a, što im pruža pristup specifičnim resursima. Za one koji žele dublje da razumeju mehaniku ACL-ova, DACL-ova i ACE-ova, whitepaper “An ACE Up The Sleeve” je neprocenjiv resurs.
Pronađite eksterne korisnike/grupe sa permisijama
Možete proveriti CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com
da biste pronašli foreign security principals u domenu. Ovo će biti korisnici/grupe iz eksternog domena/foresta.
Možete ovo proveriti u Bloodhound ili koristeći powerview:
# Get users that are i groups outside of the current domain
Get-DomainForeignUser
# Get groups inside a domain with users our
Get-DomainForeignGroupMember
Child-to-Parent forest privilege escalation
# Fro powerview
Get-DomainTrust
SourceName : sub.domain.local --> current domain
TargetName : domain.local --> foreign domain
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST --> WITHIN_FOREST: Both in the same forest
TrustDirection : Bidirectional --> Trust direction (2ways in this case)
WhenCreated : 2/19/2021 1:28:00 PM
WhenChanged : 2/19/2021 1:28:00 PM
Drugi načini za enumerisanje poverenja domena:
# Get DCs
nltest /dsgetdc:<DOMAIN>
# Get all domain trusts
nltest /domain_trusts /all_trusts /v
# Get all trust of a domain
nltest /dclist:sub.domain.local
nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
warning
Postoje 2 pouzdana ključa, jedan za Child --> Parent i drugi za Parent --> Child.
Možete proveriti koji ključ koristi trenutni domen pomoću:
Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'
SID-History Injection
Escalate as Enterprise admin to the child/parent domain abusing the trust with SID-History injection:
Exploit writeable Configuration NC
Razumevanje kako se Configuration Naming Context (NC) može iskoristiti je ključno. Configuration NC služi kao centralni repozitorij konfiguracionih podataka kroz forest u Active Directory (AD) okruženjima. Ovi podaci se replikuju na svaki Domain Controller (DC) unutar forest-a, pri čemu writable DCs održavaju zapisivu kopiju Configuration NC. Za iskorišćavanje ovoga, potrebno je imati SYSTEM privilegije na DC-u, poželjno na child DC-u.
Link GPO to root DC site
Kontejner Sites u Configuration NC sadrži informacije o site-ovima svih računara pridruženih domenu unutar AD forest-a. Radeći sa SYSTEM privilegijama na bilo kom DC-u, napadači mogu link-ovati GPO-e ka root DC site-ovima. Ova akcija potencijalno kompromituje root domain manipulišući politikama primenjenim na te sajtove.
For in-depth information, one might explore research on Bypassing SID Filtering.
Compromise any gMSA in the forest
Jedan vektor napada uključuje ciljanje privilegovanih gMSA unutar domena. KDS Root key, neophodan za izračunavanje lozinki gMSA-ova, je uskladišten u Configuration NC. Sa SYSTEM privilegijama na bilo kom DC-u, moguće je pristupiti KDS Root key-u i izračunati lozinke za bilo koji gMSA kroz ceo forest.
Detailed analysis and step-by-step guidance can be found in:
Complementary delegated MSA attack (BadSuccessor – abusing migration attributes):
Badsuccessor Dmsa Migration Abuse
Additional external research: Golden gMSA Trust Attacks.
Schema change attack
Ova metoda zahteva strpljenje — čekanje na kreiranje novih privilegovanih AD objekata. Sa SYSTEM privilegijama, napadač može izmeniti AD Schema da dodeli bilo kom korisniku potpunu kontrolu nad svim klasama. To može dovesti do neovlašćenog pristupa i kontrole nad novokreiranim AD objektima.
Further reading is available on Schema Change Trust Attacks.
From DA to EA with ADCS ESC5
Ranljivost ADCS ESC5 cilja kontrolu nad Public Key Infrastructure (PKI) objektima kako bi se kreirao certificate template koji omogućava autentifikaciju kao bilo koji korisnik unutar forest-a. Pošto PKI objekti stanuju u Configuration NC, kompromitovanje writable child DC-a omogućava izvršenje ESC5 napada.
More details on this can be read in From DA to EA with ESC5. In scenarios lacking ADCS, the attacker has the capability to set up the necessary components, as discussed in Escalating from Child Domain Admins to Enterprise Admins.
External Forest Domain - One-Way (Inbound) or bidirectional
Get-DomainTrust
SourceName : a.domain.local --> Current domain
TargetName : domain.external --> Destination domain
TrustType : WINDOWS-ACTIVE_DIRECTORY
TrustAttributes :
TrustDirection : Inbound --> Inboud trust
WhenCreated : 2/19/2021 10:50:56 PM
WhenChanged : 2/19/2021 10:50:56 PM
U ovom scenariju eksterni domen je postavio trust prema vašem domenu, dajući vam neodređena ovlašćenja nad njim. Treba da pronađete koji entiteti vašeg domena imaju koji pristup nad eksternim domenom i potom pokušate da to iskoristite:
External Forest Domain - OneWay (Inbound) or bidirectional
Eksterni domen šume - jednosmerni (izlazni)
Get-DomainTrust -Domain current.local
SourceName : current.local --> Current domain
TargetName : external.local --> Destination domain
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection : Outbound --> Outbound trust
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
U ovom scenariju vaš domen poverava neke privilegije principal-u iz drugog domena.
Međutim, kada je domain is trusted od strane trust-ujućeg domena, trusted domain kreira user-a sa predvidivim imenom koji koristi kao password the trusted password. Što znači da je moguće pristupiti user-u iz trusting domain-a da se uđe u trusted domen kako bi se izvršila enumeracija i pokušalo eskaliranje privilegija:
External Forest Domain - One-Way (Outbound)
Drugi način da se kompromituje trusted domain je pronalaženje SQL trusted link kreiranog u suprotnoj smeru od domain trust-a (što nije često).
Drugi način da se kompromituje trusted domain je čekanje na mašini na kojoj user iz trusted domain-a može pristupiti i prijaviti se preko RDP. Napadač tada može injektovati kod u proces RDP sesije i pristupiti origin domain-u žrtve odatle.
Štaviše, ako je žrtva mount-ovala svoj hard drive, iz procesa RDP session napadač može postaviti backdoors u startup folder hard drive-a. Ova tehnika se zove RDPInception.
Domain trust abuse mitigation
SID Filtering:
- Rizik od napada koji koriste SID history atribut preko forest trust-ova se ublažava korišćenjem SID Filtering-a, koji je aktiviran po default-u na svim inter-forest trust-ovima. Ovo počiva na pretpostavci da su intra-forest trust-ovi sigurni, tretirajući forest, a ne domen, kao sigurnosnu granicu prema Microsoft-ovom stavu.
- Međutim, postoji problem: SID filtering može poremetiti aplikacije i pristup korisnika, što vodi ka njegovom povremenom deaktiviranju.
Selective Authentication:
- Za inter-forest trust-ove, korišćenje Selective Authentication osigurava da korisnici iz dve šume nisu automatski autentifikovani. Umesto toga, potrebna su eksplicitna dopuštenja da bi korisnici pristupili domenima i serverima unutar trusting domena ili šume.
- Važno je napomenuti da ove mere ne štite od iskorišćavanja writable Configuration Naming Context (NC) ili napada na trust account.
More information about domain trusts in ired.team.
AD -> Azure & Azure -> AD
Page not found - HackTricks Cloud
Some General Defenses
Learn more about how to protect credentials here.
Defensive Measures for Credential Protection
- Domain Admins Restrictions: Preporučuje se da Domain Admins smeju da se prijavljuju samo na Domain Controllers, izbegavajući njihovu upotrebu na drugim hostovima.
- Service Account Privileges: Servisi ne bi trebalo da se pokreću sa Domain Admin (DA) privilegijama radi bezbednosti.
- Temporal Privilege Limitation: Za zadatke koji zahtevaju DA privilegije, treba ograničiti njihovo trajanje. Ovo se može postići komandom:
Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)
Implementing Deception Techniques
- Implementacija deception uključuje postavljanje zamki, kao što su decoy users ili computers, sa karakteristikama kao što su lozinke koje ne ističu ili su označeni kao Trusted for Delegation. Detaljan pristup uključuje kreiranje user-a sa specifičnim pravima ili dodavanje u visoko-privilegovane grupe.
- Praktičan primer uključuje korišćenje alata kao što su:
Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose
- Više o deploy-ovanju deception tehnika može se naći na Deploy-Deception on GitHub.
Identifying Deception
- For User Objects: Sumnjivi indikatori uključuju netipičan ObjectSID, retke logone, datume kreiranja i nizak broj bad password pokušaja.
- General Indicators: Poređenje atributa potencijalnih decoy objekata sa pravim objektima može otkriti nedoslednosti. Alati kao što je HoneypotBuster mogu pomoći u identifikaciji takvih deceptions.
Bypassing Detection Systems
- Microsoft ATA Detection Bypass:
- User Enumeration: Izbegavanje session enumeration na Domain Controllers da bi se sprečilo ATA detektovanje.
- Ticket Impersonation: Korišćenje aes ključeva za kreiranje ticket-a pomaže u izbegavanju detekcije tako što se ne degradira na NTLM.
- DCSync Attacks: Izvršavanje sa mašine koja nije Domain Controller kako bi se izbegla ATA detekcija se preporučuje, jer direktno izvršavanje sa Domain Controller-a pokreće alert-e.
References
- http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/
- https://www.labofapenetrationtester.com/2018/10/deploy-deception.html
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain
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.