hacktricks/windows-hardening/active-directory-methodology/ad-certificates.md

145 lines
9.9 KiB
Markdown
Raw Normal View History

2024-02-10 13:11:20 +00:00
# AD Sertifikati
2022-08-31 17:18:31 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-02 18:28:27 +00:00
2024-02-10 13:11:20 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-08-31 17:18:31 +00:00
</details>
2024-02-10 13:11:20 +00:00
## Uvod
2022-08-31 20:58:00 +00:00
2024-02-10 13:11:20 +00:00
### Komponente sertifikata
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
- **Subject** sertifikata označava njegovog vlasnika.
- **Javni ključ** je uparen sa privatnim ključem kako bi se sertifikat povezao sa svojim pravim vlasnikom.
- **Period važenja**, definisan datumima **NotBefore** i **NotAfter**, označava efektivno trajanje sertifikata.
- Jedinstveni **Serijski broj**, koji obezbeđuje Sertifikacioni Autoritet (CA), identifikuje svaki sertifikat.
- **Izdavalac** se odnosi na CA koji je izdao sertifikat.
- **SubjectAlternativeName** omogućava dodatna imena za subjekta, poboljšavajući fleksibilnost identifikacije.
- **Osnovna ograničenja** identifikuju da li je sertifikat za CA ili krajnji entitet i definišu ograničenja upotrebe.
- **Proširene namene ključeva (EKU)** razgraničavaju specifične svrhe sertifikata, poput potpisivanja koda ili enkripcije e-pošte, putem objektnih identifikatora (OID).
- **Algoritam potpisa** specificira metodu za potpisivanje sertifikata.
- **Potpis**, kreiran sa privatnim ključem izdavaoca, garantuje autentičnost sertifikata.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Posebne razmatranja
2022-08-31 20:58:00 +00:00
2024-02-10 13:11:20 +00:00
- **Subject Alternative Names (SANs)** proširuju primenljivost sertifikata na više identiteta, što je ključno za servere sa više domena. Bezbedni procesi izdavanja su od vitalnog značaja kako bi se izbegli rizici od impersonacije od strane napadača koji manipulišu specifikacijom SAN-a.
2022-08-31 20:58:00 +00:00
2024-02-10 13:11:20 +00:00
### Sertifikacioni Autoriteti (CA) u Active Directory (AD)
2022-08-31 20:58:00 +00:00
2024-02-10 13:11:20 +00:00
AD CS priznaje CA sertifikate u AD šumi putem određenih kontejnera, pri čemu svaki ima jedinstvene uloge:
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
- Kontejner **Certification Authorities** sadrži sertifikate poverenih korenskih CA.
- Kontejner **Enrolment Services** detaljiše Enterprise CA i njihove šablone sertifikata.
- Objekat **NTAuthCertificates** uključuje CA sertifikate ovlašćene za AD autentifikaciju.
- Kontejner **AIA (Authority Information Access)** olakšava validaciju lanca sertifikata sa posrednim i prekograničnim CA sertifikatima.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Sticanje sertifikata: Tok zahteva za klijentski sertifikat
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
1. Proces zahteva počinje tako što klijenti pronalaze Enterprise CA.
2. Nakon generisanja para javnog-privatnog ključa, kreira se CSR koji sadrži javni ključ i druge detalje.
3. CA procenjuje CSR u odnosu na dostupne šablone sertifikata, izdajući sertifikat na osnovu dozvola šablona.
4. Nakon odobrenja, CA potpisuje sertifikat svojim privatnim ključem i vraća ga klijentu.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Šabloni sertifikata
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Definisani unutar AD, ovi šabloni opisuju podešavanja i dozvole za izdavanje sertifikata, uključujući dozvoljene EKU i prava za upisivanje ili izmenu, što je ključno za upravljanje pristupom sertifikacionim uslugama.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
## Upisivanje sertifikata
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Proces upisivanja sertifikata pokreće administrator koji **kreira šablon sertifikata**, koji zatim **objavljuje** Enterprise Certificate Authority (CA). To čini šablon dostupnim za upisivanje klijenta, korak koji se postiže dodavanjem imena šablona u polje `certificatetemplates` objekta Active Directory.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Da bi klijent zatražio sertifikat, moraju mu biti dodeljena **prava upisivanja**. Ova prava se definišu putem bezbednosnih deskriptora na šablonu sertifikata i samom Enterprise CA. Dozvole moraju biti dodeljene na oba mesta da bi zahtev bio uspešan.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Prava upisivanja šablona
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Ova prava se specificiraju putem unosa za kontrolu pristupa (ACE), koji detaljišu dozvole poput:
- **Certificate-Enrollment** i **Certificate-AutoEnrollment** prava, svako povezano sa specifičnim GUID-om.
- **ExtendedRights**, omogućavajući sve proširene dozvole.
- **FullControl/GenericAll**, pružajući potpunu kontrolu nad šablonom.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Prava upisivanja Enterprise CA
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Prava CA su definisana u njegovom bezbednosnom deskriptoru, koji je dostupan putem konzole za upravljanje Certificate Authority. Neke postavke čak omogućavaju korisnicima sa niskim privilegijama daljinski pristup, što može predstavljati bezbednosni rizik.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Dodatne kontrole izdavanja
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Mogu se primeniti određene kontrole, kao što su:
- **Odobrenje menadžera**: Stavlja zahteve u stanje čekanja dok ih ne odobri menadžer sertifikata.
- **Enrolment Agents i Authorized Signatures**: Određuju broj potrebnih potpisa na CSR-u i neophodne Application Policy OIDs.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Metode zahteva za sertifikate
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Sertifikati se mogu zahtevati putem:
1. **Windows Client Certificate Enrollment Protocol** (MS-WCCE), koristeći DCOM interfejse.
2. **ICertPassage Remote Protocol** (MS-ICPR), putem imenovanih cevi ili TCP/IP-a.
3. **Veb interfejs za upisivanje sertifikata**, sa instaliranom ulogom Certificate Authority Web Enrollment.
4. **Certificate Enrollment Service** (CES), u kombinaciji sa Certificate Enrollment Policy (CEP) servisom.
5. **Network Device Enrollment Service** (NDES) za mrežne uređaje, koristeći Simple Certificate Enrollment Protocol (SCEP).
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Windows korisnici takođe mogu zahtevati sertifikate putem grafičkog interfejsa (`certmgr.msc` ili `certlm.msc`) ili alata komandne linije (`certreq.exe` ili PowerShell-ov `Get-Certificate` komanda).
2024-02-08 03:08:28 +00:00
```powershell
# Example of requesting a certificate using PowerShell
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
```
2024-02-10 13:11:20 +00:00
## Autentifikacija sertifikatom
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Active Directory (AD) podržava autentifikaciju putem sertifikata, uglavnom koristeći protokole **Kerberos** i **Secure Channel (Schannel)**.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Proces autentifikacije Kerberos
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
U procesu autentifikacije Kerberos, zahtev korisnika za Ticket Granting Ticket (TGT) se potpisuje korišćenjem **privatnog ključa** korisnikovog sertifikata. Ovaj zahtev prolazi kroz nekoliko validacija od strane kontrolera domena, uključujući **validnost**, **putanju** i **status opoziva** sertifikata. Validacije takođe uključuju proveru da li sertifikat potiče od pouzdanog izvora i potvrdu prisustva izdavaoca u **NTAUTH skladištu sertifikata**. Uspesne validacije rezultiraju izdavanjem TGT-a. **`NTAuthCertificates`** objekat u AD-u, koji se nalazi na:
2024-02-08 03:08:28 +00:00
```bash
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
```
2024-02-10 13:11:20 +00:00
je ključno za uspostavljanje poverenja za autentifikaciju sertifikata.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Autentifikacija sigurnog kanala (Schannel)
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Schannel omogućava sigurne TLS/SSL veze, gde tokom rukovanja, klijent predstavlja sertifikat koji, ako se uspešno validira, autorizuje pristup. Mapiranje sertifikata na AD nalog može uključivati funkciju **S4U2Self** Kerberosa ili **Subject Alternative Name (SAN)** sertifikata, među ostalim metodama.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
### Nabrojavanje AD sertifikatnih servisa
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
AD-ovi sertifikatni servisi mogu biti nabrojani putem LDAP upita, otkrivajući informacije o **Enterprise Certificate Authorities (CA)** i njihovim konfiguracijama. Ovo je dostupno svakom korisniku autentifikovanom u domenu bez posebnih privilegija. Alati poput **[Certify](https://github.com/GhostPack/Certify)** i **[Certipy](https://github.com/ly4k/Certipy)** se koriste za nabrojavanje i procenu ranjivosti u AD CS okruženjima.
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Komande za korišćenje ovih alata uključuju:
2022-08-31 17:18:31 +00:00
```bash
2024-02-08 03:08:28 +00:00
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
Certify.exe cas
# Identify vulnerable certificate templates with Certify
Certify.exe find /vulnerable
2022-09-02 13:32:02 +00:00
2024-02-08 03:08:28 +00:00
# Use Certipy for enumeration and identifying vulnerable templates
certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
2022-08-31 17:18:31 +00:00
2024-02-08 03:08:28 +00:00
# Enumerate Enterprise CAs and certificate templates with certutil
certutil.exe -TCAInfo
certutil -v -dstemplate
2022-08-31 17:18:31 +00:00
```
2024-02-10 13:11:20 +00:00
## Reference
2022-08-31 17:18:31 +00:00
* [https://www.specterops.io/assets/resources/Certified\_Pre-Owned.pdf](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](https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html)
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-08-31 17:18:31 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2024-01-02 18:28:27 +00:00
2024-02-10 13:11:20 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu u HackTricks-u** ili **preuzmete HackTricks u PDF formatu** Pogledajte [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-08-31 17:18:31 +00:00
</details>