.. | ||
acl-persistence-abuse | ||
ad-certificates | ||
abusing-ad-mssql.md | ||
ad-certificates.md | ||
ad-dns-records.md | ||
ad-information-in-printers.md | ||
asreproast.md | ||
bloodhound.md | ||
constrained-delegation.md | ||
custom-ssp.md | ||
dcshadow.md | ||
dcsync.md | ||
diamond-ticket.md | ||
dsrm-credentials.md | ||
external-forest-domain-one-way-outbound.md | ||
external-forest-domain-oneway-inbound.md | ||
golden-ticket.md | ||
kerberoast.md | ||
kerberos-authentication.md | ||
kerberos-double-hop-problem.md | ||
laps.md | ||
over-pass-the-hash-pass-the-key.md | ||
pass-the-ticket.md | ||
password-spraying.md | ||
printers-spooler-service-abuse.md | ||
printnightmare.md | ||
privileged-groups-and-token-privileges.md | ||
rdp-sessions-abuse.md | ||
README.md | ||
resource-based-constrained-delegation.md | ||
security-descriptors.md | ||
sid-history-injection.md | ||
silver-ticket.md | ||
skeleton-key.md | ||
unconstrained-delegation.md |
Metodologija Active Directory
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili da preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJATELJE!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovni pregled
Active Directory služi kao osnovna tehnologija, omogućavajući mrežnim administratorima efikasno kreiranje i upravljanje domenima, korisnicima i objektima unutar mreže. Projektovan je da se skalira, olakšavajući organizaciju velikog broja korisnika u upravljive grupe i podgrupe, dok kontroliše prava pristupa na različitim nivoima.
Struktura Active Directory-ja se sastoji od tri osnovna sloja: domeni, stablo i šume. Domen obuhvata kolekciju objekata, kao što su korisnici ili uređaji, koji dele zajedničku bazu podataka. Stabla su grupe ovih domena povezanih zajedničkom strukturom, a šuma predstavlja kolekciju više stabala, povezanih putem poverenja, formirajući najviši sloj organizacione strukture. Specifična prava pristupa i komunikacije mogu biti određena na svakom od ovih nivoa.
Ključni koncepti unutar Active Directory-ja uključuju:
- Direktorijum – Sadrži sve informacije koje se odnose na objekte Active Directory-ja.
- Objekat – Označava entitete unutar direktorijuma, uključujući korisnike, grupe ili deljene fascikle.
- Domen – Služi kao kontejner za direktorijumske objekte, sa mogućnošću da više domena koegzistira unutar šume, svaki održavajući svoju kolekciju objekata.
- Stablo – Grupisanje domena koji dele zajednički korenski domen.
- Šuma – Vrhunac organizacione strukture u Active Directory-ju, sastavljena od nekoliko stabala sa poverenjima među njima.
Active Directory Domain Services (AD DS) obuhvataju niz usluga ključnih za centralizovano upravljanje i komunikaciju unutar mreže. Ove usluge obuhvataju:
- Domen usluge – Centralizuje skladištenje podataka i upravlja interakcijama između korisnika i domena, uključujući autentifikaciju i pretragu.
- Usluge sertifikata – Nadgleda kreiranje, distribuciju i upravljanje sigurnim digitalnim sertifikatima.
- Usluge lakog direktorijuma – Podržava aplikacije sa omogućenim direktorijumom putem LDAP protokola.
- Usluge federacije direktorijuma – Pruža mogućnosti jednokratne prijave za autentifikaciju korisnika preko više veb aplikacija u jednoj sesiji.
- Upravljanje pravima – Pomaže u zaštiti autorskih materijala regulišući njihovu neovlaštenu distribuciju i upotrebu.
- DNS usluga – Ključna za razrešenje imenâ domena.
Za detaljnije objašnjenje pogledajte: TechTerms - Definicija Active Directory-ja
Kerberos Autentikacija
Da biste naučili kako napasti AD morate dobro da razumete proces Kerberos autentikacije.
Pročitajte ovu stranicu ako još uvek ne znate kako funkcioniše.
Cheat Sheet
Možete posetiti https://wadcoms.github.io/ da biste brzo videli koje komande možete pokrenuti za enumeraciju/eksploataciju AD-a.
Rekon Active Directory (Bez kredencijala/sesija)
Ako imate pristup okruženju AD-a, ali nemate nikakve kredencijale/sesije, možete:
- Pentestirati mrežu:
- Skenirajte mrežu, pronađite mašine i otvorene portove i pokušajte eksploatisati ranjivosti ili izvući kredencijale sa njih (na primer, štampači mogu biti veoma interesantni ciljevi.
- Enumeracija DNS-a može pružiti informacije o ključnim serverima u domenu kao što su veb, štampači, deljenja, VPN, mediji, itd.
gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt
- Pogledajte opštu Metodologiju Pentestiranja da biste saznali više o tome kako to uraditi.
- Proverite null i Guest pristup na smb servisima (ovo neće raditi na modernim verzijama Windows-a):
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:
{% content-ref url="../../network-services-pentesting/pentesting-smb/" %} pentesting-smb {% endcontent-ref %}
- Enumeracija Ldap-a
nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>
- Detaljniji vodič o tome kako enumerisati LDAP možete pronaći ovde (posebno obratite pažnju na anoniman pristup):
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} pentesting-ldap.md {% endcontent-ref %}
- Trovanje mreže
- Prikupite kredencijale impersonirajući servise sa Responder-om
- Pristupite hostu zloupotrebom relay napada
- Prikupite kredencijale izlažući lažne UPnP servise sa evil-SSDP
- OSINT:
- Izvucite korisnička imena/ime sa internih dokumenata, društvenih medija, servisa (uglavnom veb) unutar okruženja domena i takođe iz javno dostupnih.
- Ako pronađete kompletne nazive radnika kompanije, možete probati različite AD konvencije korisničkog imena (pročitajte ovo). Najčešće konvencije su: ImePrezime, Ime.Prezime, ImePre (3 slova svako), Ime.Prez, IPrezime, I.Prezime, PrezimeIme, Prezime.Ime, PrezimeI, Prezime.I, 3 slučajna slova i 3 slučajna broja (abc123).
- Alati:
- w0Tx/generate-ad-username
- urbanadventurer/username-anarchy
Enumeracija korisnika
- Anonimno SMB/LDAP nabrajanje: Proverite pentesting SMB i pentesting LDAP stranice.
- Kerbrute nabrajanje: Kada se zatraži neispravno korisničko ime, server će odgovoriti koristeći Kerberos grešku kod KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN, što nam omogućava da utvrdimo da je korisničko ime neispravno. Ispravna korisnička imena će izazvati ili TGT u AS-REP odgovoru ili grešku KRB5KDC_ERR_PREAUTH_REQUIRED, što ukazuje da je korisniku potrebno izvršiti preautentikaciju.
./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
- OWA (Outlook Web Access) Server
Ako pronađete jedan od ovih servera u mreži, takođe možete izvršiti enumeraciju korisnika protiv njega. Na primer, 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
{% hint style="warning" %} Možete pronaći liste korisničkih imena na ovom github repozitorijumu i ovom (statistically-likely-usernames).
Međutim, trebalo bi da imate ime osoba koje rade u kompaniji iz koraka istraživanja koje biste trebali da obavite pre ovoga. Sa imenom i prezimenom možete koristiti skriptu namemash.py da generišete potencijalno validna korisnička imena. {% endhint %}
Poznavanje jednog ili više korisničkih imena
Dakle, znate da već imate validno korisničko ime ali ne i lozinke... Zatim pokušajte:
- ASREPRoast: Ako korisnik nema atribut DONT_REQ_PREAUTH, možete zahtevati AS_REP poruku za tog korisnika koja će sadržati neke podatke enkriptovane derivatom lozinke korisnika.
- Password Spraying: Pokušajte sa najčešćim lozinkama sa svakim otkrivenim korisnikom, možda neki korisnik koristi lošu lozinku (imajte na umu politiku lozinke!).
- Imajte na umu da takođe možete prskati OWA servere da biste pokušali da pristupite poštanskim serverima korisnika.
{% content-ref url="password-spraying.md" %} password-spraying.md {% endcontent-ref %}
LLMNR/NBT-NS Trovanje
Možda ćete moći dobiti neke izazovne hešove za pucanje trovanjem nekih protokola mreže:
{% content-ref url="../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %} spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md {% endcontent-ref %}
NTML Prenos
Ako ste uspeli da nabrojite aktivni direktorijum, imaćete više emailova i bolje razumevanje mreže. Možda ćete moći da izvedete NTML prenosne napade da biste pristupili AD okruženju.
Ukradi NTLM podatke
Ako možete pristupiti drugim računarima ili deljenim resursima sa null ili gost korisnikom, možete postaviti datoteke (poput SCF datoteke) koje će, ako se na neki način pristupe, pokrenuti NTML autentikaciju prema vama tako da možete ukrasti NTLM izazov da ga puknete:
{% content-ref url="../ntlm/places-to-steal-ntlm-creds.md" %} places-to-steal-ntlm-creds.md {% endcontent-ref %}
Nabrojavanje aktivnog direktorijuma SA akreditacijama/sesijom
Za ovu fazu morate kompromitovati akreditacije ili sesiju validnog domenskog naloga. Ako imate neke validne akreditacije ili shell kao domenski korisnik, trebalo bi da zapamtite da su opcije date ranije i dalje opcije za kompromitovanje drugih korisnika.
Pre početka autentifikovanog nabrojavanja trebalo bi da znate šta je Kerberos problem dvostrukog skoka.
{% content-ref url="kerberos-double-hop-problem.md" %} kerberos-double-hop-problem.md {% endcontent-ref %}
Nabrojavanje
Imati kompromitovan nalog je veliki korak za početak kompromitovanja celog domena, jer ćete moći da započnete Nabrojavanje aktivnog direktorijuma:
Što se tiče ASREPRoast sada možete pronaći svakog mogućeg ranjivog korisnika, a što se tiče Password Spraying možete dobiti listu svih korisničkih imena i probati lozinku kompromitovanog naloga, prazne lozinke i nove obećavajuće lozinke.
- Možete koristiti CMD za obavljanje osnovnog istraživanja
- Možete takođe koristiti powershell za istraživanje što će biti prikrivenije
- Možete takođe koristiti powerview da izvučete detaljnije informacije
- Još jedan neverovatan alat za istraživanje u aktivnom direktorijumu je BloodHound. Nije baš prikriven (zavisno o metodama prikupljanja koje koristite), ali ako vam to nije važno, svakako ga isprobajte. Pronađite gde korisnici mogu da RDP-uju, pronađite put do drugih grupa, itd.
- Drugi automatizovani alati za nabrojavanje AD-a su: AD Explorer, ADRecon, Group3r, PingCastle.
- DNS zapisi AD-a jer mogu sadržati zanimljive informacije.
- Alat sa GUI-em koji možete koristiti za nabrojavanje direktorijuma je AdExplorer.exe iz SysInternal Suite-a.
- Takođe možete pretraživati LDAP bazu podataka sa ldapsearch da biste tražili akreditacije u poljima userPassword & unixUserPassword, ili čak u Description. cf. Lozinka u komentaru AD korisnika na PayloadsAllTheThings za druge metode.
- Ako koristite Linux, takođe možete nabrojati domen koristeći pywerview.
- Takođe možete probati automatizovane alate kao:
- tomcarver16/ADSearch
- 61106960/adPEAS
- Izdvajanje svih korisnika domena
Veoma je lako dobiti sva korisnička imena domena sa Windows-om (net user /domain
, Get-DomainUser
ili wmic useraccount get name,sid
). Na 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>
Iako odeljak o Nabrojavanju izgleda mali, to je najvažniji deo svega. Pristupite linkovima (pre svega onom za cmd, powershell, powerview i BloodHound), naučite kako da nabrojite domen i vežbajte dok se ne osećate sigurno. Tokom procene, ovo će biti ključni trenutak za pronalaženje puta do DA ili odlučivanje da se ništa ne može uraditi.
Kerberoast
Kerberoasting uključuje dobijanje TGS karata koje koriste usluge povezane sa korisničkim nalozima i pucanje njihove enkripcije—koja se zasniva na korisničkim lozinkama—offline.
Više o tome u:
{% content-ref url="kerberoast.md" %} kerberoast.md {% endcontent-ref %}
Udaljena veza (RDP, SSH, FTP, Win-RM, itd)
Kada ste dobili određene akreditive, možete proveriti da li imate pristup bilo kojoj mašini. Za tu svrhu, možete koristiti CrackMapExec da biste pokušali povezivanje na nekoliko servera sa različitim protokolima, u skladu sa skeniranjem portova.
Eskalacija lokalnih privilegija
Ako ste kompromitovali akreditive ili sesiju kao običan korisnik domena i imate pristup sa ovim korisnikom na bilo kojoj mašini u domenu, trebalo bi da pokušate da pronađete način da eskališete privilegije lokalno i pretražujete akreditive. To je zato što ćete samo sa lokalnim administratorskim privilegijama moći da izvučete heševe drugih korisnika iz memorije (LSASS) i lokalno (SAM).
Postoji kompletan odeljak u ovoj knjizi o eskalciji lokalnih privilegija u Windows-u i checklista. Takođe, ne zaboravite da koristite WinPEAS.
Trenutne sesijske ulaznice
Vrlo je maloverovatno da ćete pronaći ulaznice u trenutnom korisniku koje 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>"))
NTML Prenos
Ako ste uspeli da nabrojite aktivni direktorijum, imaćete više mejlova i bolje razumevanje mreže. Možda ćete moći da izvršite NTML prenos napada.
Traženje Kredencijala u Deljenim Računarima
Sada kada imate neke osnovne kredencijale, trebalo bi da proverite da li možete pronaći bilo koje zanimljive datoteke koje se dele unutar AD. To biste mogli uraditi ručno, ali je veoma dosadan ponavljajući zadatak (posebno ako pronađete stotine dokumenata koje treba proveriti).
Pratite ovaj link da saznate o alatima koje možete koristiti.
Ukradi NTLM Kredencijale
Ako možete pristupiti drugim računarima ili deljenim resursima, možete postaviti datoteke (poput SCF datoteke) koje će, ako se na neki način pristupi, pokrenuti NTML autentikaciju prema vama kako biste mogli ukrasti NTLM izazov i probiti ga:
{% content-ref url="../ntlm/places-to-steal-ntlm-creds.md" %} places-to-steal-ntlm-creds.md {% endcontent-ref %}
CVE-2021-1675/CVE-2021-34527 PrintNightmare
Ova ranjivost je omogućila bilo kom autentifikovanom korisniku da ugrozi kontroler domena.
{% content-ref url="printnightmare.md" %} printnightmare.md {% endcontent-ref %}
Eskalacija privilegija na Active Directory SA privilegovanim kredencijalima/sesijom
Za sledeće tehnike, običan korisnik domena nije dovoljan, potrebne su vam posebne privilegije/kredencijali da biste izvršili ove napade.
Ekstrakcija heša
Nadamo se da ste uspeli da ugrozite neki lokalni admin nalog koristeći AsRepRoast, Password Spraying, Kerberoast, Responder uključujući preusmeravanje, EvilSSDP, eskalaranje privilegija lokalno.
Zatim, vreme je da izvučete sve heševe iz memorije i lokalno.
Pročitajte ovu stranicu o različitim načinima dobijanja heševa.
Pass the Hash
Kada imate heš korisnika, možete ga koristiti da ga impersonirate.
Morate koristiti neki alat koji će izvršiti NTLM autentikaciju koristeći taj heš, ili možete kreirati novu sesiju za prijavljivanje i ubaciti taj heš unutar LSASS, tako da kada se izvrši bilo koja NTLM autentikacija, taj heš će biti korišćen. 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 korišćenje NTLM heša korisnika za zahtevanje Kerberos karata, kao alternativu uobičajenom Pass The Hash preko NTLM protokola. Stoga, ovo bi moglo biti posebno korisno u mrežama gde je NTLM protokol onemogućen i dozvoljen je samo Kerberos kao protokol autentifikacije.
{% content-ref url="over-pass-the-hash-pass-the-key.md" %} over-pass-the-hash-pass-the-key.md {% endcontent-ref %}
Pass the Ticket
U metodi napada Pass The Ticket (PTT), napadači kradu autentifikacionu kartu korisnika umesto njihove lozinke ili heš vrednosti. Ova ukradena karta se zatim koristi da se impersonira korisnik, stičući neovlašćen pristup resursima i uslugama unutar mreže.
{% content-ref url="pass-the-ticket.md" %} pass-the-ticket.md {% endcontent-ref %}
Ponovna upotreba kredencijala
Ako imate heš ili lozinku lokalnog administratora, trebalo bi da pokušate da se prijavite lokalno na druge računare sa njom.
# 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 +
{% hint style="warning" %} Imajte na umu da je ovo prilično buka i LAPS bi to umirio. {% endhint %}
Zloupotreba MSSQL-a i poverljivih veza
Ako korisnik ima privilegije da pristupi MSSQL instancama, može koristiti to da izvršava komande na MSSQL hostu (ako se izvršava kao SA), ukrade NetNTLM hash ili čak izvede preusmeravanje napada.
Takođe, ako je MSSQL instanca poverljiva (veza sa bazom podataka) sa drugom MSSQL instancom. Ako korisnik ima privilegije nad poverljivom bazom podataka, moći će iskoristiti poverenje da izvršava upite i na drugoj instanci. Ova poverenja mogu biti povezana i u nekom trenutku korisnik može pronaći nekonfigurisanu bazu podataka gde može izvršavati komande.
Veze između baza podataka funkcionišu čak i preko poverenja šuma.
{% content-ref url="abusing-ad-mssql.md" %} abusing-ad-mssql.md {% endcontent-ref %}
Neograničeno preusmeravanje
Ako pronađete bilo koji računarski objekat sa atributom ADS_UF_TRUSTED_FOR_DELEGATION i imate privilegije domena na računaru, moći ćete da izvučete TGT-ove iz memorije svih korisnika koji se prijavljuju na računar.
Dakle, ako se Administrator domena prijavi na računar, moći ćete da izvučete njegov TGT i da ga personifikujete koristeći Pass the Ticket.
Zahvaljujući ograničenom preusmeravanju, čak biste mogli automatski kompromitovati Print Server (nadamo se da će to biti DC).
{% content-ref url="unconstrained-delegation.md" %} unconstrained-delegation.md {% endcontent-ref %}
Ograničeno preusmeravanje
Ako je korisniku ili računaru dozvoljeno "Ograničeno preusmeravanje", moći će da personifikuje bilo kog korisnika da pristupi nekim uslugama na računaru.
Zatim, ako kompromitujete hash ovog korisnika/računara, moći ćete da personifikujete bilo kog korisnika (čak i administratorskih domena) da pristupi nekim uslugama.
{% content-ref url="constrained-delegation.md" %} constrained-delegation.md {% endcontent-ref %}
Ograničeno preusmeravanje zasnovano na resursima
Imati WRITE privilegiju na objektu Active Directory-a udaljenog računara omogućava postizanje izvršenja koda sa povišenim privilegijama:
{% content-ref url="resource-based-constrained-delegation.md" %} resource-based-constrained-delegation.md {% endcontent-ref %}
Zloupotreba ACL-ova
Kompromitovani korisnik može imati neke interesantne privilegije nad nekim objektima domena koje bi vam mogle omogućiti da se lateralno krećete/povišite privilegije.
{% content-ref url="acl-persistence-abuse/" %} acl-persistence-abuse {% endcontent-ref %}
Zloupotreba servisa štampača
Otkrivanje Spool servisa koji osluškuje unutar domena može biti zloupotrebljeno za dobijanje novih akreditacija i povišenje privilegija.
{% content-ref url="acl-persistence-abuse/" %} acl-persistence-abuse {% endcontent-ref %}
Zloupotreba sesija trećih strana
Ako drugi korisnici pristupe kompromitovanom računaru, moguće je prikupiti akreditacije iz memorije i čak ubaciti bekon u njihove procese da ih personifikujete.
Obično će korisnici pristupiti sistemu putem RDP-a, pa evo kako izvesti nekoliko napada preko sesija trećih strana RDP-a:
{% content-ref url="rdp-sessions-abuse.md" %} rdp-sessions-abuse.md {% endcontent-ref %}
LAPS
LAPS pruža sistem za upravljanje lozinkom lokalnog administratora na računarima pridruženim domenu, osiguravajući da je slučajna, jedinstvena i često menjana. Ove lozinke se čuvaju u Active Directory-u i pristup se kontroliše putem ACL-ova samo ovlašćenim korisnicima. Sa dovoljnim dozvolama za pristup ovim lozinkama, postaje moguće preći na druge računare.
{% content-ref url="laps.md" %} laps.md {% endcontent-ref %}
Krađa sertifikata
Sakupljanje sertifikata sa kompromitovanog računara može biti način za povišenje privilegija unutar okruženja:
{% content-ref url="ad-certificates/certificate-theft.md" %} certificate-theft.md {% endcontent-ref %}
Zloupotreba šablona sertifikata
Ako su konfigurisani ranjivi šabloni, moguće ih je zloupotrebiti za povišenje privilegija:
{% content-ref url="ad-certificates/domain-escalation.md" %} domain-escalation.md {% endcontent-ref %}
Post-eksploatacija sa nalogom visokih privilegija
Izvlačenje kredencijala domena
Kada dobijete Administratora domena ili čak bolje Enterprise Admin privilegije, možete izvući bazu podataka domena: ntds.dit.
Više informacija o DCSync napadu možete pronaći ovde.
Više informacija o tome kako ukrasti NTDS.dit možete pronaći ovde
Povišenje privilegija kao postojanost
Neke od tehnika koje su diskutovane ranije mogu se koristiti za postojanost.
Na primer, možete:
- Učiniti korisnike ranjivim na Kerberoast
Set-DomainObject -Identity <korisničko_ime> -Set @{serviceprincipalname="lažni/NISTA"}r
- Učiniti korisnike ranjivim na ASREPRoast
Set-DomainObject -Identity <korisničko_ime> -XOR @{UserAccountControl=4194304}
- Dodeliti privilegije DCSync korisniku
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
Srebrna karta
Napad Srebrna karta stvara legitimnu kartu za uslugu dodeljivanja karata (TGS) za određenu uslugu koristeći NTLM hash (na primer, hash računa PC-a). Ovaj metod se koristi za pristup privilegijama usluge.
{% content-ref url="silver-ticket.md" %} silver-ticket.md {% endcontent-ref %}
Zlatna karta
Napad Zlatna karta uključuje napadača koji dobija pristup NTLM hash-u krbtgt naloga u okruženju Active Directory (AD). Ovaj nalog je poseban jer se koristi za potpisivanje svih karata za dodeljivanje karata (TGT), koje su ključne za autentifikaciju unutar AD mreže.
Kada napadač dobije ovaj hash, može kreirati TGT za bilo koji nalog koji odabere (napad srebrne karte).
{% content-ref url="golden-ticket.md" %} golden-ticket.md {% endcontent-ref %}
Dijamantska karta
Ove su kao zlatne karte izrađene na način koji zaobilazi uobičajene mehanizme detekcije zlatnih karata.
{% content-ref url="diamond-ticket.md" %} diamond-ticket.md {% endcontent-ref %}
Postojana Persistencija Naloga Sertifikata
Imati sertifikate naloga ili biti u mogućnosti da ih zatražite je veoma dobar način da ostanete prisutni u korisničkom nalogu (čak i ako promeni lozinku):
{% content-ref url="ad-certificates/account-persistence.md" %} account-persistence.md {% endcontent-ref %}
Persistencija Domena Sertifikata
Korišćenjem sertifikata takođe je moguće trajno ostati sa visokim privilegijama unutar domena:
{% content-ref url="ad-certificates/domain-persistence.md" %} domain-persistence.md {% endcontent-ref %}
Grupa AdminSDHolder
Objekat AdminSDHolder u Active Directory-u obezbeđuje sigurnost privilegovanih grupa (kao što su Domain Admins i Enterprise Admins) primenom standardne Access Control List (ACL) preko ovih grupa kako bi se sprečile neovlašćene promene. Međutim, ova funkcija može biti zloupotrebljena; ako napadač izmeni ACL AdminSDHolder-a kako bi dao pun pristup običnom korisniku, taj korisnik dobija obimnu kontrolu nad svim privilegovanim grupama. Ova sigurnosna mera, namenjena zaštiti, može se obrnuti, omogućavajući neovlašćen pristup ako se ne prati pažljivo.
Više informacija o grupi AdminDSHolder ovde.
DSRM Kredencijali
Unutar svakog Domain Controller-a (DC) postoji lokalni administratorski nalog. Dobijanjem administratorskih prava na takvoj mašini, lokalni Administrator hash može biti izvučen korišćenjem mimikatz-a. Nakon toga, potrebna je modifikacija registra da bi se omogućila upotreba ove lozinke, omogućavajući daljinski pristup lokalnom administratorskom nalogu.
{% content-ref url="dsrm-credentials.md" %} dsrm-credentials.md {% endcontent-ref %}
Persistencija ACL-a
Možete dodeliti neka specijalna ovlašćenja korisniku nad određenim domenskim objektima koji će omogućiti korisniku eskalciju privilegija u budućnosti.
{% content-ref url="acl-persistence-abuse/" %} acl-persistence-abuse {% endcontent-ref %}
Sigurnosni Deskriptori
Sigurnosni deskriptori se koriste za čuvanje dozvola koje objekat ima nad objektom. Ako možete napraviti mali izmenu u sigurnosnom deskriptoru objekta, možete dobiti veoma zanimljive privilegije nad tim objektom bez potrebe da budete član privilegovane grupe.
{% content-ref url="security-descriptors.md" %} security-descriptors.md {% endcontent-ref %}
Skeleton Ključ
Izmenite LSASS u memoriji da biste uspostavili univerzalnu lozinku, omogućavajući pristup svim domenskim nalozima.
{% content-ref url="skeleton-key.md" %} skeleton-key.md {% endcontent-ref %}
Prilagođeni SSP
Saznajte šta je SSP (Security Support Provider) ovde.
Možete kreirati svoj SSP da uhvatite u čistom tekstu kredencijale korišćene za pristup mašini.\
{% content-ref url="custom-ssp.md" %} custom-ssp.md {% endcontent-ref %}
DCShadow
Registrovanje novog Domain Controller-a u AD i korišćenje istog za dodavanje atributa (SIDHistory, SPN...) na određene objekte bez ostavljanja bilo kakvih logova u vezi sa modifikacijama. Potrebne su DA privilegije i biti unutar root domena.
Imajte na umu da ako koristite pogrešne podatke, pojaviće se prilično ružni logovi.
{% content-ref url="dcshadow.md" %} dcshadow.md {% endcontent-ref %}
LAPS Persistencija
Ranije smo razgovarali o tome kako eskalirati privilegije ako imate dovoljno dozvola za čitanje LAPS lozinki. Međutim, ove lozinke takođe mogu biti korišćene za održavanje persistencije.
Proverite:
{% content-ref url="laps.md" %} laps.md {% endcontent-ref %}
Eskalacija Privilegija u Šumi - Poverenja Domena
Microsoft posmatra Šumu kao granicu sigurnosti. To implicira da kompromitovanje jednog domena potencijalno može dovesti do kompromitovanja cele Šume.
Osnovne Informacije
Poverenje domena je sigurnosni mehanizam koji omogućava korisniku iz jednog domena pristup resursima u drugom domenu. Suštinski, stvara vezu između sistema za autentifikaciju dva domena, omogućavajući da se provere autentifikacije teku bez problema. Kada domeni uspostave poverenje, razmenjuju i zadržavaju specifične ključeve unutar svojih Domain Controller-a (DC), koji su ključni za integritet poverenja.
U tipičnom scenariju, ako korisnik namerava da pristupi usluzi u poverenom domenu, prvo mora zatražiti posebnu karticu poznatu kao inter-realm TGT od svog sopstvenog domenskog DC-a. Ova TGT je enkriptovana sa deljenim ključem na koji su se oba domena složila. Korisnik zatim predstavlja ovu TGT DC-u poverenog domena da bi dobio uslužnu karticu (TGS). Nakon uspešne validacije inter-realm TGT-a od strane DC-a poverenog domena, izdaje TGS, dajući korisniku pristup usluzi.
Koraci:
- Klijentski računar u Domen 1 započinje proces koristeći svoj NTLM hash da zatraži Ticket Granting Ticket (TGT) od svog Domain Controller-a (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 Domen 2.
- Inter-realm TGT je enkriptovan sa ključem poverenja koji dele DC1 i DC2 kao deo dvosmernog poverenja domena.
- Klijent odnosi inter-realm TGT DC-u Domena 2 (DC2).
- DC2 proverava inter-realm TGT koristeći svoj deljeni ključ poverenja i, ako je validan, izdaje Ticket Granting Service (TGS) za server u Domen 2 kojem klijent želi da pristupi.
- Na kraju, klijent predstavlja ovaj TGS serveru, koji je enkriptovan sa hash-om naloga servera, da bi dobio pristup usluzi u Domen 2.
Različita poverenja
Važno je primetiti da poverenje može biti jednosmerno ili dvosmerno. U opcijama sa dvosmernim poverenjem, oba domena će verovati jedan drugom, ali u jednosmernom odnosu poverenja jedan od domena će biti poverljiv a drugi poverljivi domen. U poslednjem slučaju, samo ćete moći pristupiti resursima unutar poverljivog domena iz poverenog.
Ako Domen A veruje Domen B, A je poverljivi domen a B je povereni. Nadalje, u Domen A, ovo bi bilo Izlazno poverenje; a u Domen B, ovo bi bilo Ulazno poverenje.
Različiti odnosi poverenja
- Poverenja Roditelj-Dete: Ovo je uobičajena postavka unutar iste šume, gde dete domena automatski ima dvosmerno tranzitivno poverenje sa svojim roditeljskim domenom. Suštinski, to znači da zahtevi za autentifikaciju mogu teći bez problema između roditelja i deteta.
- Poverenja Prečice: Poznata kao "poverenja prečice", ova se uspostavljaju između dečjih domena radi ubrzanja procesa upućivanja. U složenim šumama, upućivanja autentifikacije obično moraju putovati do korena šume pa zatim do ciljnog domena. Stvaranjem prečica, putovanje se skraćuje, što je posebno korisno u geografski razuđenim okruženjima.
- Spoljna Poverenja: Ova se uspostavljaju između različitih, nepovezanih domena i nisu tranzitivna prirodom. Prema Microsoft-ovoj dokumentaciji, spoljna poverenja su korisna za pristup resursima u domenu van trenutne šume koji nije povezan poverenjem šume. Bezbednost se pojačava kroz filtriranje SID-ova sa spoljnim poverenjima.
- Poverenja Koren-Stabla: Ova poverenja se automatski uspostavljaju između korena šume i novog dodatog korena stabla. Iako se retko susreću, poverenja korena stabla su važna za dodavanje novih domenskih stabala u šumu, omogućavajući im da zadrže jedinstveno ime domena i osiguravajući dvosmernu tranzitivnost. Više informacija može se naći u Microsoft-ovom vodiču.
- Poverenja Šume: Ovaj tip poverenja je dvosmerno tranzitivno poverenje između dva korena šuma, takođe primenjujući filtriranje SID-ova radi poboljšanja sigurnosnih mera.
- MIT Poverenja: Ova poverenja se uspostavljaju sa ne-Windows, RFC4120-kompatibilnim Kerberos domenima. MIT poverenja su malo specijalizovana i prilagođena okruženjima koja zahtevaju integraciju sa sistemima zasnovanim na Kerberosu izvan Windows ekosistema.
Ostale razlike u poverljivim odnosima
- Poverljiv odnos može biti tranzitivan (A veruje B, B veruje C, onda A veruje C) ili netranzitivan.
- Poverljiv odnos može biti postavljen kao dvosmerna veza poverenja (oboje veruju jedno drugome) ili kao jednosmerna veza poverenja (samo jedan od njih veruje drugome).
Put napada
- Nabrajanje poverljivih odnosa
- Provera da li bilo koji bezbednosni princip (korisnik/grupa/računar) ima pristup resursima druge domene, možda putem unosa ACE ili putem pripadnosti grupama druge domene. Potražite odnose između domena (verovatno je veza stvorena zbog toga).
- U ovom slučaju, kerberoast bi mogao biti još jedna opcija.
- Kompromitovanje računa koji mogu preći preko domena.
Napadači mogu pristupiti resursima u drugoj domeni putem tri osnovna mehanizma:
- Članstvo u lokalnoj grupi: Principali mogu biti dodati u lokalne grupe na mašinama, poput grupe "Administratori" na serveru, dajući im značajnu kontrolu nad tom mašinom.
- Članstvo u stranoj domeni grupi: Principali takođe mogu biti članovi grupa unutar strane domene. Međutim, efikasnost ovog metoda zavisi od prirode poverenja i opsega grupe.
- Kontrole pristupa (ACL): Principali mogu biti navedeni u ACL, posebno kao entiteti u ACE unutar DACL, pružajući im pristup određenim resursima. Za one koji žele dublje istražiti mehaniku ACL, DACL i ACE, bela knjiga pod nazivom "An ACE Up The Sleeve" je neprocenjiv resurs.
Eskalacija privilegija od deteta do roditelja u šumi
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
{% hint style="warning" %}
Postoje 2 pouzdana ključa, jedan za Dete --> Roditelj i drugi za Roditelj --> Dete.
Možete proveriti onaj koji se koristi za trenutni domen pomoću:
Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'
{% endhint %}
SID-History Injection
Eskalirajte kao Enterprise admin u dete/roditeljski domen zloupotrebom poverenja sa SID-History ubrizgavanjem:
{% content-ref url="sid-history-injection.md" %} sid-history-injection.md {% endcontent-ref %}
Iskoristite konfiguracioni NC koji se može pisati
Razumevanje kako se konfiguracioni Naming Context (NC) može iskoristiti je ključno. Konfiguracioni NC služi kao centralni repozitorijum za konfiguracione podatke širom šume u Active Directory (AD) okruženjima. Ovi podaci se replikuju na svaki Domain Controller (DC) unutar šume, pri čemu pisani DC-ovi održavaju pisani primerak Konfiguracionog NC. Da biste iskoristili ovo, morate imati SYSTEM privilegije na DC-u, po mogućstvu na DC-u deteta.
Povežite GPO sa korenskim DC sajtom
Kontejner Sajtova Konfiguracionog NC-a uključuje informacije o svim sajtovima računara pridruženih domenu unutar AD šume. Radeći sa SYSTEM privilegijama na bilo kom DC-u, napadači mogu povezati GPO-ove sa sajtovima korenskog DC-a. Ova akcija potencijalno kompromituje korenski domen manipulacijom politika koje se primenjuju na ove sajtove.
Za detaljnije informacije, možete istražiti istraživanje o Bypassing SID Filtering.
Kompromitujte bilo koji gMSA u šumi
Vektor napada uključuje ciljanje privilegovanih gMSA unutar domena. KDS Root ključ, bitan za izračunavanje lozinki gMSA, čuva se unutar Konfiguracionog NC-a. Sa SYSTEM privilegijama na bilo kom DC-u, moguće je pristupiti KDS Root ključu i izračunati lozinke za bilo koji gMSA širom šume.
Detaljna analiza može se pronaći u diskusiji o Golden gMSA Trust Attacks.
Napad na promenu šeme
Ova metoda zahteva strpljenje, čekajući stvaranje novih privilegovanih AD objekata. Sa SYSTEM privilegijama, napadač može izmeniti AD šemu kako bi dao bilo kom korisniku potpunu kontrolu nad svim klasama. Ovo bi moglo dovesti do neovlašćenog pristupa i kontrole nad novostvorenim AD objektima.
Više informacija možete pronaći u Schema Change Trust Attacks.
Od DA do EA sa ADCS ESC5
Ranjivost ADCS ESC5 cilja kontrolu nad objektima Javnog Ključne Infrastrukture (PKI) kako bi se kreirala šablona sertifikata koja omogućava autentifikaciju kao bilo koji korisnik unutar šume. Pošto PKI objekti borave u Konfiguracionom NC-u, kompromitovanje pisanih DC-ova deteta omogućava izvođenje ESC5 napada.
Više detalja o ovome možete pročitati u From DA to EA with ESC5. U scenarijima bez ADCS-a, napadač ima mogućnost da postavi neophodne komponente, kako je diskutovano u Escalating from Child Domain Admins to Enterprise Admins.
Spoljni šumski domen - Jednosmerna (ulazna) ili dvosmerna
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 vaš domen je poveren od strane spoljnog, dajući vam nepoznate dozvole nad njim. Morate pronaći koji principali vašeg domena imaju koje pristupe nad spoljnim domenom i zatim pokušati da ga iskoristite:
{% content-ref url="external-forest-domain-oneway-inbound.md" %} external-forest-domain-oneway-inbound.md {% endcontent-ref %}
Spoljni šumski domen - Jednosmerno (izlazno)
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 određene privilegije principu iz različitih domena.
Međutim, kada se domen poverava poverenjem domena, povereni domen kreira korisnika sa predvidljivim imenom koji koristi kao šifru poverenu šifru. Što znači da je moguće pristupiti korisniku iz poverenog domena da bi se ušlo u povereni i enumerisalo ga i pokušalo eskalirati više privilegija:
{% content-ref url="external-forest-domain-one-way-outbound.md" %} external-forest-domain-one-way-outbound.md {% endcontent-ref %}
Još jedan način da se ugrozi povereni domen je pronalaženje SQL poverenog linka kreiranog u suprotnom smeru od poverenja domena (što nije vrlo često).
Još jedan način da se ugrozi povereni domen je čekanje na mašini gde korisnik iz poverenog domena može pristupiti da se prijavi putem RDP. Zatim, napadač bi mogao ubaciti kod u proces RDP sesije i pristupiti domenu žrtve odatle.
Štaviše, ako je žrtva montirala svoj hard disk, iz procesa RDP sesije napadač bi mogao sačuvati zadnja vrata u folder za pokretanje hard diska. Ova tehnika se naziva RDPInception.
{% content-ref url="rdp-sessions-abuse.md" %} rdp-sessions-abuse.md {% endcontent-ref %}
Zaštita od zloupotrebe poverenja domena
SID Filtriranje:
- Rizik od napada koji iskorišćavaju atribut istorije SID-a preko šuma poverenja je umanjen SID Filtriranjem, koje je podrazumevano aktivirano na svim među-šumskim poverenjima. Ovo se zasniva na pretpostavci da su unutar-šumska poverenja sigurna, uzimajući u obzir šum, umesto domena, kao granicu sigurnosti prema stavu Microsoft-a.
- Međutim, postoji kvaka: SID filtriranje može poremetiti aplikacije i pristup korisnika, što dovodi do njegovog povremenog deaktiviranja.
Selektivna Autentifikacija:
- Za među-šumska poverenja, korišćenje Selektivne Autentifikacije osigurava da se korisnici iz dva šuma ne autentifikuju automatski. Umesto toga, potrebne su eksplicitne dozvole korisnicima da pristupe domenima i serverima unutar poverenog domena ili šuma.
- Važno je napomenuti da ove mere ne štite od iskorišćavanja pisivog Konfiguracionog Imenskog Konteksta (NC) ili napada na nalog za poverenje.
Više informacija o poverenju domena na ired.team.
AD -> Azure & Azure -> AD
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity" %}
Neke Opšte Odbrane
Saznajte više o tome kako zaštititi akreditive ovde.\
Odbrambene Mere za Zaštitu Akreditiva
- Ograničenja Administratora Domena: Preporučuje se da Administratori Domena treba da imaju dozvolu samo za prijavljivanje na Kontrolere Domena, izbegavajući njihovo korišćenje na drugim hostovima.
- Privilegije Servisnih Naloga: Servisi ne bi trebalo da se pokreću sa privilegijama Administratora Domena (DA) radi očuvanja sigurnosti.
- Privremeno Ograničenje Privilegija: Za zadatke koji zahtevaju privilegije Administratora Domena, njihovo trajanje bi trebalo da bude ograničeno. Ovo se može postići sa:
Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)
Implementiranje Tehnika Obmane
- Implementiranje obmane uključuje postavljanje zamki, poput lažnih korisnika ili računara, sa funkcijama kao što su šifre koje ne ističu ili su označene kao Poverene za Delegaciju. Detaljan pristup uključuje kreiranje korisnika sa specifičnim pravima ili dodavanje u grupe visokih privilegija.
- Praktičan primer uključuje korišćenje alatki 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 implementiranju tehnika obmane može se pronaći na Deploy-Deception na GitHub-u.
Identifikacija Obmane
- Za Korisničke Objekte: Sumnjivi indikatori uključuju atipičan ObjectSID, retke prijave, datume kreiranja i nizak broj loših šifri.
- Opšti Indikatori: Upoređivanje atributa potencijalnih lažnih objekata sa onima pravih može otkriti neusaglašenosti. Alatke poput HoneypotBuster mogu pomoći u identifikaciji takvih obmana.
Obilaženje Sistema Detekcije
- Obilaženje Detekcije Microsoft ATA:
- Enumeracija Korisnika: Izbegavanje enumeracije sesija na Kontrolerima Domena kako bi se sprečila detekcija ATA.
- Impersonacija Tiketa: Korišćenje aes ključeva za kreiranje tiketa pomaže u izbegavanju detekcije ne spuštanjem na NTLM.
- DCSync Napadi: Izvršavanje sa ne-Kontrolera Domena kako bi se izbegla detekcija ATA se savetuje, jer direktno izvršavanje sa Kontrolera Domena će izazvati upozorenja.
Reference
- 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
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu Proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.