AD Sertifikati
Reading time: 7 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Uvod
Komponente sertifikata
- The Subject sertifikata označava njegovog vlasnika.
- A Public Key je u paru sa privatnim ključem kako bi povezao sertifikat sa njegovim zakonitim vlasnikom.
- The Validity Period, definisan putem datuma NotBefore i NotAfter, označava važeći period sertifikata.
- Jedinstveni Serial Number, koji obezbeđuje Certificate Authority (CA), identifikuje svaki sertifikat.
- The Issuer označava CA koja je izdala sertifikat.
- SubjectAlternativeName omogućava dodatna imena za subject, povećavajući fleksibilnost identifikacije.
- Basic Constraints identifikuju da li je sertifikat za CA ili krajnji entitet i definišu ograničenja upotrebe.
- Extended Key Usages (EKUs) određuju specifične namene sertifikata, kao što su code signing ili email encryption, pomoću Object Identifiers (OIDs).
- The Signature Algorithm specificira metod za potpisivanje sertifikata.
- The Signature, kreirana privatnim ključem izdavaoca, garantuje autentičnost sertifikata.
Posebne napomene
- Subject Alternative Names (SANs) proširuju primenjivost sertifikata na više identiteta, što je ključno za servere sa više domena. Bezbedni procesi izdavanja su vitalni da bi se izbegli rizici impersonacije ako napadači manipulišu specifikacijom SAN-a.
Certificate Authorities (CAs) u Active Directory (AD)
AD CS prepoznaje CA sertifikate u AD forestu kroz određene kontejnere, od kojih svaki ima jedinstvenu ulogu:
- Certification Authorities kontejner sadrži poverene root CA sertifikate.
- Enrolment Services kontejner sadrži informacije o Enterprise CA i njihovim certificate templates.
- NTAuthCertificates objekat uključuje CA sertifikate ovlašćene za AD autentikaciju.
- AIA (Authority Information Access) kontejner olakšava validaciju lanca sertifikata pomoću posredničkih (intermediate) i cross-CA sertifikata.
Nabavka sertifikata: Tok zahteva klijenta za sertifikat
- Proces započinje kada klijenti pronađu Enterprise CA.
- CSR se kreira i sadrži public key i ostale podatke, nakon generisanja para public-private ključeva.
- CA procenjuje CSR u odnosu na dostupne certificate templates i izdaje sertifikat na osnovu permisija definisanih šablonom.
- Nakon odobrenja, CA potpisuje sertifikat svojim privatnim ključem i vraća ga klijentu.
Certificate Templates
Definisani u AD, ovi šabloni navode podešavanja i dozvole za izdavanje sertifikata, uključujući dozvoljene EKU-ove i prava za enrolovanje ili izmene, što je kritično za upravljanje pristupom servisima za sertifikate.
Enrolovanje sertifikata
Proces enrolovanja sertifikata pokreće administrator koji kreira šablon sertifikata, koji potom objavljuje Enterprise Certificate Authority (CA). Time je šablon dostupan za enrolovanje klijenata, što se postiže dodavanjem imena šablona u polje certificatetemplates
objekta u Active Directory.
Da bi klijent mogao da zatraži sertifikat, moraju mu biti dodeljena prava za enrolovanje. Ta prava su definisana kroz security descriptor-e na šablonu sertifikata i na samom Enterprise CA. Dozvole moraju biti dodeljene na oba mesta da bi zahtev bio uspešan.
Prava za enrolovanje šablona
Ova prava su specificirana kroz Access Control Entries (ACEs), i detalji dozvola uključuju, na primer:
- Certificate-Enrollment i Certificate-AutoEnrollment prava, svako povezano sa specifičnim GUID-ovima.
- ExtendedRights, dozvoljavajući sve extended permisije.
- FullControl/GenericAll, pružajući potpunu kontrolu nad šablonom.
Prava za enrolovanje na Enterprise CA
Prava CA su navedena u njegovom security descriptor-u, dostupnom preko Certificate Authority management konzole. Neka podešavanja čak omogućavaju udaljeni pristup korisnicima sa niskim privilegijama, što može predstavljati sigurnosni rizik.
Dodatne kontrole izdavanja
Mogu važiti određene kontrole, kao što su:
- Manager Approval: Stavlja zahteve u pending stanje dok ih ne odobri menadžer za sertifikate.
- Enrolment Agents and Authorized Signatures: Specifikuju broj potrebnih potpisa na CSR-u i neophodne Application Policy OID-ove.
Metode za zahtevanje sertifikata
Sertifikati se mogu tražiti putem:
- Windows Client Certificate Enrollment Protocol (MS-WCCE), korišćenjem DCOM interfejsa.
- ICertPassage Remote Protocol (MS-ICPR), preko named pipes ili TCP/IP.
- certificate enrollment web interface, uz instaliranu Certificate Authority Web Enrollment ulogu.
- Certificate Enrollment Service (CES), u saradnji sa Certificate Enrollment Policy (CEP) servisom.
- Network Device Enrollment Service (NDES) za mrežne uređaje, koristeći Simple Certificate Enrollment Protocol (SCEP).
Korisnici na Windows-u mogu takođe zahtevati sertifikate preko GUI-ja (certmgr.msc
ili certlm.msc
) ili alata iz komandne linije (certreq.exe
ili PowerShell komande Get-Certificate
).
# Example of requesting a certificate using PowerShell
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
Certificate Authentication
Active Directory (AD) podržava autentifikaciju pomoću sertifikata, prvenstveno koristeći protokole Kerberos i Secure Channel (Schannel).
Kerberos Authentication Process
U Kerberos procesu autentifikacije, zahtev korisnika za Ticket Granting Ticket (TGT) se potpisuje koristeći privatni ključ korisnikovog sertifikata. Ovaj zahtev prolazi kroz nekoliko provera od strane kontrolera domena, uključujući validnost, putanju i status opoziva sertifikata. Provere takođe uključuju verifikaciju da sertifikat potiče iz poverenog izvora i potvrdu prisustva izdavaoca u NTAUTH skladištu sertifikata. Uspešne provere rezultuju izdavanjem TGT-a. Objekat NTAuthCertificates
u AD, koji se nalazi na:
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
je centralno za uspostavljanje poverenja za autentifikaciju sertifikatom.
Secure Channel (Schannel) Authentication
Schannel omogućava sigurne TLS/SSL veze, gde tokom handshake-a klijent predstavlja sertifikat koji, ako je uspešno verifikovan, ovlašćuje pristup. Mapiranje sertifikata na AD nalog može uključivati Kerberosovu funkciju S4U2Self ili Subject Alternative Name (SAN) sertifikata, između ostalih metoda.
AD Certificate Services Enumeration
AD-ove usluge sertifikata mogu se enumerisati kroz LDAP upite, otkrivajući informacije o Enterprise Certificate Authorities (CAs) i njihovim konfiguracijama. Ovo je dostupno svakom korisniku autentifikovanom u domenu bez posebnih privilegija. Alati kao što su Certify i Certipy koriste se za enumeraciju i procenu ranjivosti u AD CS okruženjima.
Komande za korišćenje ovih alata uključuju:
# Enumerate trusted root CA certificates, Enterprise CAs and HTTP enrollment endpoints
# Useful flags: /domain, /path, /hideAdmins, /showAllPermissions, /skipWebServiceChecks
Certify.exe cas [/ca:SERVER\ca-name | /domain:domain.local | /path:CN=Configuration,DC=domain,DC=local] [/hideAdmins] [/showAllPermissions] [/skipWebServiceChecks]
# Identify vulnerable certificate templates and filter for common abuse cases
Certify.exe find
Certify.exe find /vulnerable [/currentuser]
Certify.exe find /enrolleeSuppliesSubject # ESC1 candidates (CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT)
Certify.exe find /clientauth # templates with client-auth EKU
Certify.exe find /showAllPermissions # include template ACLs in output
Certify.exe find /json /outfile:C:\Temp\adcs.json
# Enumerate PKI object ACLs (Enterprise PKI container, templates, OIDs) – useful for ESC4/ESC7 discovery
Certify.exe pkiobjects [/domain:domain.local] [/showAdmins]
# Use Certipy for enumeration and identifying vulnerable templates
certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
# Enumerate Enterprise CAs and certificate templates with certutil
certutil.exe -TCAInfo
certutil -v -dstemplate
Izvori
- https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
- https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html
- GhostPack/Certify
- GhostPack/Rubeus
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.