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-c
This commit is contained in:
parent
5c81964a68
commit
b23e8cc730
@ -1,112 +1,122 @@
|
||||
# AD Certificates
|
||||
# AD Sertifikate
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Introduction
|
||||
## Inleiding
|
||||
|
||||
### Components of a Certificate
|
||||
### Komponente van 'n Sertifikaat
|
||||
|
||||
- Die **Onderwerp** van die sertifikaat dui sy eienaar aan.
|
||||
- 'n **Publieke Sleutel** word gekoppel aan 'n privaat besit sleutel om die sertifikaat aan sy regmatige eienaar te verbind.
|
||||
- Die **Geldigheidsperiode**, gedefinieer deur **NotBefore** en **NotAfter** datums, merk die sertifikaat se effektiewe duur.
|
||||
- 'n Unieke **Serienommer**, verskaf deur die Sertifikaatowerheid (CA), identifiseer elke sertifikaat.
|
||||
- Die **Uitgewer** verwys na die CA wat die sertifikaat uitgereik het.
|
||||
- **SubjectAlternativeName** laat vir addisionele name vir die onderwerp, wat identifikasiefleksibiliteit verbeter.
|
||||
- **Basiese Beperkings** identifiseer of die sertifikaat vir 'n CA of 'n eindentiteit is en definieer gebruiksbeperkings.
|
||||
- **Verlengde Sleutelgebruik (EKUs)** delineer die sertifikaat se spesifieke doele, soos kodehandtekening of e-posversleuteling, deur middel van Objektidentifiseerders (OIDs).
|
||||
- Die **Handtekening Algoritme** spesifiseer die metode vir die ondertekening van die sertifikaat.
|
||||
- Die **Handtekening**, geskep met die uitgewer se privaat sleutel, waarborg die sertifikaat se egtheid.
|
||||
- Die **Subject** van die sertifikaat dui die eienaar aan.
|
||||
- 'n **Public Key** word gepaard met 'n privaat sleutel om die sertifikaat aan die regmatige eienaar te koppel.
|
||||
- Die **Validity Period**, gedefinieer deur **NotBefore** en **NotAfter** datums, dui die sertifikaat se geldigheidsduur aan.
|
||||
- 'n unieke **Serial Number**, voorsien deur die Certificate Authority (CA), identifiseer elke sertifikaat.
|
||||
- Die **Issuer** verwys na die CA wat die sertifikaat uitgereik het.
|
||||
- **SubjectAlternativeName** laat addisionele name vir die subject toe, wat identifikasiebuigbaarheid verbeter.
|
||||
- **Basic Constraints** identifiseer of die sertifikaat vir 'n CA of 'n eindentiteit is en definieer gebruiksbeperkings.
|
||||
- **Extended Key Usages (EKUs)** omskryf die sertifikaat se spesifieke doeleindes, soos code signing of e-pos enkripsie, via Object Identifiers (OIDs).
|
||||
- Die **Signature Algorithm** spesifiseer die metode om die sertifikaat te onderteken.
|
||||
- Die **Signature**, geskep met die issuer se privaat sleutel, waarborg die sertifikaat se egtheid.
|
||||
|
||||
### Special Considerations
|
||||
### Spesiale Oorwegings
|
||||
|
||||
- **Subject Alternative Names (SANs)** brei 'n sertifikaat se toepasbaarheid uit na verskeie identiteite, wat noodsaaklik is vir bedieners met verskeie domeine. Veilige uitreikprosesse is noodsaaklik om te verhoed dat aanvallers die SAN-spesifikasie manipuleer en sodoende identiteitsdiefstal risikos skep.
|
||||
- **Subject Alternative Names (SANs)** brei 'n sertifikaat se toepaslikheid uit na meerdere identiteite, wat kritiek is vir servers met verskeie domeine. Veiligheid in die uitreikproses is noodsaaklik om te voorkom dat aanvallers die SAN-spesifikasie manipuleer en sodoende tot identiteitsmisleiding lei.
|
||||
|
||||
### Certificate Authorities (CAs) in Active Directory (AD)
|
||||
|
||||
AD CS erken CA-sertifikate in 'n AD-woud deur middel van aangewese houers, elk wat unieke rolle dien:
|
||||
AD CS erken CA-sertifikate in 'n AD-forest deur aangewese houers, elk met 'n unieke rol:
|
||||
|
||||
- Die **Sertifikaatowerhede** houer bevat vertroude wortel CA-sertifikate.
|
||||
- Die **Inskrywingsdienste** houer detail Enterprise CA's en hul sertifikaat sjablone.
|
||||
- Die **NTAuthCertificates** objek sluit CA-sertifikate in wat gemagtig is vir AD-outehentisering.
|
||||
- Die **AIA (Authority Information Access)** houer fasiliteer sertifikaatkettingvalidasie met tussenliggende en kruis CA-sertifikate.
|
||||
- Die **Certification Authorities** kontainer hou vertroude root CA-sertifikate.
|
||||
- Die **Enrolment Services** kontainer bevat besonderhede van Enterprise CAs en hul sertifikaattemplates.
|
||||
- Die **NTAuthCertificates** objek sluit CA-sertifikate in wat gemagtig is vir AD-verifikasie.
|
||||
- Die **AIA (Authority Information Access)** kontainer fasiliteer sertifikaatkettingvalidasie met intermediêre en cross-CA sertifikate.
|
||||
|
||||
### Certificate Acquisition: Client Certificate Request Flow
|
||||
### Sertifikaatverkryging: Kliënt Sertifikaataanvraag-vloei
|
||||
|
||||
1. Die versoekproses begin met kliënte wat 'n Enterprise CA vind.
|
||||
2. 'n CSR word geskep, wat 'n publieke sleutel en ander besonderhede bevat, na die generering van 'n publieke-privaat sleutel paar.
|
||||
3. Die CA evalueer die CSR teenoor beskikbare sertifikaat sjablone, en stel die sertifikaat uit op grond van die sjabloon se toestemmings.
|
||||
4. Na goedkeuring, onderteken die CA die sertifikaat met sy privaat sleutel en keer dit terug na die kliënt.
|
||||
1. Die aanvraagproses begin daarmee dat kliënte 'n Enterprise CA vind.
|
||||
2. 'n CSR word geskep en bevat 'n public key en ander besonderhede, nadat 'n publieke-privaat sleutelpaartjie gegenereer is.
|
||||
3. Die CA evalueer die CSR teen beskikbare sertifikaattemplates en gee die sertifikaat uit gebaseer op die template se regte.
|
||||
4. Na goedkeuring teken die CA die sertifikaat met sy privaat sleutel en stuur dit terug na die kliënt.
|
||||
|
||||
### Certificate Templates
|
||||
### Sertifikaattemplates
|
||||
|
||||
Gedefinieer binne AD, skets hierdie sjablone die instellings en toestemmings vir die uitreiking van sertifikate, insluitend toegelate EKUs en inskrywings- of wysigingsregte, wat krities is vir die bestuur van toegang tot sertifikaatdienste.
|
||||
Binne AD gedefinieer, beskryf hierdie templates die instellings en regte vir die uitreiking van sertifikate, insluitend toegelate EKUs en registrasie- of wysigingsregte, wat kritiek is vir die bestuur van toegang tot sertifikaatdienste.
|
||||
|
||||
## Certificate Enrollment
|
||||
## Sertifikaatinskrywing
|
||||
|
||||
Die inskrywingsproses vir sertifikate word geinitieer deur 'n administrateur wat **'n sertifikaat sjabloon skep**, wat dan **gepubliseer** word deur 'n Enterprise Sertifikaatowerheid (CA). Dit maak die sjabloon beskikbaar vir kliëntinskrywing, 'n stap wat bereik word deur die sjabloon se naam by die `certificatetemplates` veld van 'n Active Directory objek te voeg.
|
||||
Die inskrywingsproses vir sertifikate word geïnisieer deur 'n administrateur wat **'n sertifikaattemplate skep**, wat dan deur 'n Enterprise Certificate Authority (CA) **gepubliseer** word. Dit maak die template beskikbaar vir kliëntinskrywing, 'n stap wat bereik word deur die template se naam by die `certificatetemplates` veld van 'n Active Directory-objek te voeg.
|
||||
|
||||
Vir 'n kliënt om 'n sertifikaat aan te vra, moet **inskrywingsregte** toegeken word. Hierdie regte word gedefinieer deur sekuriteitsbeskrywings op die sertifikaat sjabloon en die Enterprise CA self. Toestemmings moet in beide plekke toegeken word vir 'n versoek om suksesvol te wees.
|
||||
Om 'n sertifikaat te versoek, moet **enrollment rights** toegeken word. Hierdie regte word gedefinieer deur security descriptors op die sertifikaattemplate en op die Enterprise CA self. Permissies moet in beide plekke toegeken word vir 'n suksesvolle aanvraag.
|
||||
|
||||
### Template Enrollment Rights
|
||||
### Template Inskrywingsregte
|
||||
|
||||
Hierdie regte word gespesifiseer deur middel van Toegang Beheer Inskrywings (ACEs), wat toestemmings soos:
|
||||
Hierdie regte word gespesifiseer deur Access Control Entries (ACEs), en beskryf permissies soos:
|
||||
|
||||
- **Sertifikaat-Inskrywing** en **Sertifikaat-AutoInskrywing** regte, elk geassosieer met spesifieke GUIDs.
|
||||
- **VerlengdeRegte**, wat alle verlengde toestemmings toelaat.
|
||||
- **VolleBeheer/GenerieseAlles**, wat volledige beheer oor die sjabloon bied.
|
||||
- **Certificate-Enrollment** en **Certificate-AutoEnrollment** regte, elk geassosieer met spesifieke GUIDs.
|
||||
- **ExtendedRights**, wat alle uitgebreide permissies toelaat.
|
||||
- **FullControl/GenericAll**, wat volle beheer oor die template bied.
|
||||
|
||||
### Enterprise CA Enrollment Rights
|
||||
### Enterprise CA Inskrywingsregte
|
||||
|
||||
Die CA se regte word uiteengesit in sy sekuriteitsbeskrywing, toeganklik via die Sertifikaatowerheid bestuurconsole. Sommige instellings laat selfs laag-geprivilegieerde gebruikers toe om afstandstoegang te hê, wat 'n sekuriteitskwessie kan wees.
|
||||
Die CA se regte word uiteengesit in sy security descriptor, toeganklik via die Certificate Authority bestuurkonsole. Sommige instellings laat selfs lae-bevoorregte gebruikers afgeleë toegang toe, wat 'n sekuriteitsrisiko kan wees.
|
||||
|
||||
### Additional Issuance Controls
|
||||
### Addisionele Uitreikbeheer
|
||||
|
||||
Sekere kontroles mag van toepassing wees, soos:
|
||||
Sekere kontroles kan van toepassing wees, soos:
|
||||
|
||||
- **Bestuurder Goedkeuring**: Plaas versoeke in 'n hangende toestand totdat dit deur 'n sertifikaatbestuurder goedgekeur word.
|
||||
- **Inskrywingsagente en Gemagtigde Handtekeninge**: Spesifiseer die aantal vereiste handtekeninge op 'n CSR en die nodige Aansoekbeleid OIDs.
|
||||
- **Manager Approval**: Plaas versoeke in 'n hangende toestand totdat goedgekeur deur 'n sertifikaatbestuurder.
|
||||
- **Enrolment Agents and Authorized Signatures**: Spesifiseer die aantal vereiste handtekeninge op 'n CSR en die nodige Application Policy OIDs.
|
||||
|
||||
### Methods to Request Certificates
|
||||
### Metodes om Sertifikate te Versoek
|
||||
|
||||
Sertifikate kan aangevra word deur:
|
||||
Sertifikate kan versoek word deur:
|
||||
|
||||
1. **Windows Kliënt Sertifikaat Inskrywing Protokol** (MS-WCCE), met DCOM interfaces.
|
||||
2. **ICertPassage Afstand Protokol** (MS-ICPR), deur middel van benoemde pype of TCP/IP.
|
||||
3. Die **sertifikaat inskrywing web koppelvlak**, met die Sertifikaatowerheid Web Inskrywing rol geïnstalleer.
|
||||
4. Die **Sertifikaat Inskrywing Diens** (CES), in samewerking met die Sertifikaat Inskrywing Beleid (CEP) diens.
|
||||
5. Die **Netwerk Toestel Inskrywing Diens** (NDES) vir netwerktoestelle, met die gebruik van die Simple Certificate Enrollment Protocol (SCEP).
|
||||
1. **Windows Client Certificate Enrollment Protocol** (MS-WCCE), met gebruik van DCOM-intefaces.
|
||||
2. **ICertPassage Remote Protocol** (MS-ICPR), deur named pipes of TCP/IP.
|
||||
3. Die **certificate enrollment web interface**, met die Certificate Authority Web Enrollment-rol geïnstalleer.
|
||||
4. Die **Certificate Enrollment Service** (CES), saam met die Certificate Enrollment Policy (CEP) diens.
|
||||
5. Die **Network Device Enrollment Service** (NDES) vir netwerktoestelle, met gebruik van die Simple Certificate Enrollment Protocol (SCEP).
|
||||
|
||||
Windows gebruikers kan ook sertifikate aan vra via die GUI (`certmgr.msc` of `certlm.msc`) of opdraglyn gereedskap (`certreq.exe` of PowerShell se `Get-Certificate` opdrag).
|
||||
Windows gebruikers kan sertifikate ook versoek via die GUI (`certmgr.msc` of `certlm.msc`) of reëllyninstrumente (`certreq.exe` of PowerShell se `Get-Certificate` opdrag).
|
||||
```bash
|
||||
# Example of requesting a certificate using PowerShell
|
||||
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
|
||||
```
|
||||
## Sertifikaat Verifikasie
|
||||
## Sertifikaatverifikasie
|
||||
|
||||
Active Directory (AD) ondersteun sertifikaat verifikasie, hoofsaaklik deur gebruik te maak van **Kerberos** en **Secure Channel (Schannel)** protokolle.
|
||||
Active Directory (AD) ondersteun sertifikaatverifikasie, hoofsaaklik deur die **Kerberos** en **Secure Channel (Schannel)** protokolle te gebruik.
|
||||
|
||||
### Kerberos Verifikasie Proses
|
||||
### Kerberos-verifikasieproses
|
||||
|
||||
In die Kerberos verifikasie proses, word 'n gebruiker se versoek vir 'n Ticket Granting Ticket (TGT) onderteken met die **privaat sleutel** van die gebruiker se sertifikaat. Hierdie versoek ondergaan verskeie validerings deur die domeinbeheerder, insluitend die sertifikaat se **geldigheid**, **pad**, en **herroepingstatus**. Validerings sluit ook in om te verifieer dat die sertifikaat van 'n vertroude bron kom en om die uitreiker se teenwoordigheid in die **NTAUTH sertifikaat stoor** te bevestig. Suksesvolle validerings lei tot die uitreiking van 'n TGT. Die **`NTAuthCertificates`** objek in AD, gevind by:
|
||||
In die Kerberos-verifikasieproses word 'n gebruiker se versoek vir 'n Ticket Granting Ticket (TGT) geteken met die **privaat sleutel** van die gebruiker se sertifikaat. Hierdie versoek ondergaan verskeie kontrole deur die domeinbeheerder, insluitend die sertifikaat se **geldigheid**, **pad**, en **herroepingsstatus**. Kontroles sluit ook in die verifiëring dat die sertifikaat van 'n betroubare bron afkomstig is en die bevestiging van die uitreiker se teenwoordigheid in die **NTAUTH certificate store**. Suksesvolle kontroles lei tot die uitreiking van 'n TGT. Die **`NTAuthCertificates`**-object in AD, gevind by:
|
||||
```bash
|
||||
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
|
||||
```
|
||||
is sentraal tot die vestiging van vertroue vir sertifikaatverifikasie.
|
||||
is sentraal vir die vestiging van vertroue vir sertifikaatverifikasie.
|
||||
|
||||
### Secure Channel (Schannel) Verifikasie
|
||||
|
||||
Schannel fasiliteer veilige TLS/SSL verbindings, waar tydens 'n handdruk, die kliënt 'n sertifikaat aanbied wat, indien suksesvol geverifieer, toegang magtig. Die toewysing van 'n sertifikaat aan 'n AD-rekening kan die Kerberos se **S4U2Self** funksie of die sertifikaat se **Subject Alternative Name (SAN)** insluit, onder andere metodes.
|
||||
Schannel fasiliteer veilige TLS/SSL-verbindinge, waar tydens 'n handshake die kliënt 'n sertifikaat voorlê wat, indien suksesvol gevalideer, toegang magtig. Die kartysering van 'n sertifikaat na 'n AD-rekening kan Kerberos’s **S4U2Self** funksie of die sertifikaat se **Subject Alternative Name (SAN)** betrek, onder andere metodes.
|
||||
|
||||
### AD Sertifikaat Dienste Enumerasie
|
||||
### AD Sertifikaatdienste-enumerasie
|
||||
|
||||
AD se sertifikaatdienste kan deur LDAP navrae gelys word, wat inligting oor **Enterprise Certificate Authorities (CAs)** en hul konfigurasies onthul. Dit is toeganklik vir enige domein-geverifieerde gebruiker sonder spesiale voorregte. Gereedskap soos **[Certify](https://github.com/GhostPack/Certify)** en **[Certipy](https://github.com/ly4k/Certipy)** word gebruik vir enumerasie en kwesbaarheidsevaluering in AD CS omgewings.
|
||||
AD se sertifikaatdienste kan deur LDAP-navrae gedenumeriseer word, wat inligting oor **Enterprise Certificate Authorities (CAs)** en hul konfigurasies openbaar. Dit is toeganklik vir enige domein-geauthentiseerde gebruiker sonder spesiale voorregte. Gereedskap soos **[Certify](https://github.com/GhostPack/Certify)** en **[Certipy](https://github.com/ly4k/Certipy)** word gebruik vir enumerasie en kwesbaarheidsevaluering in AD CS-omgewings.
|
||||
|
||||
Opdragte om hierdie gereedskap te gebruik sluit in:
|
||||
Kommando's vir die gebruik van hierdie gereedskap sluit in:
|
||||
```bash
|
||||
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
|
||||
Certify.exe cas
|
||||
# Identify vulnerable certificate templates with Certify
|
||||
Certify.exe find /vulnerable
|
||||
# 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
|
||||
@ -119,5 +129,7 @@ certutil -v -dstemplate
|
||||
|
||||
- [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)
|
||||
- [GhostPack/Certify](https://github.com/GhostPack/Certify)
|
||||
- [GhostPack/Rubeus](https://github.com/GhostPack/Rubeus)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user