Translated ['src/windows-hardening/active-directory-methodology/ad-certi

This commit is contained in:
Translator 2025-09-07 20:20:23 +00:00
parent ca7e02ca36
commit 8b83fe87be

View File

@ -1,27 +1,27 @@
# AD CS Domain Persistence
# AD CS Μόνιμη παραμονή στο Domain
{{#include ../../../banners/hacktricks-training.md}}
**Αυτή είναι μια περίληψη των τεχνικών διαρκούς παρουσίας τομέα που μοιράστηκαν στο [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)**. Ελέγξτε το για περισσότερες λεπτομέρειες.
**Αυτή είναι μια περίληψη των τεχνικών domain persistence που μοιράζονται στο [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf)**. Δείτε το για περισσότερες λεπτομέρειες.
## Forging Certificates with Stolen CA Certificates - DPERSIST1
Πώς μπορείτε να καταλάβετε ότι ένα πιστοποιητικό είναι πιστοποιητικό CA;
Πώς μπορείτε να καταλάβετε ότι ένα certificate είναι CA certificate;
Μπορεί να προσδιοριστεί ότι ένα πιστοποιητικό είναι πιστοποιητικό CA εάν πληρούνται αρκετές προϋποθέσεις:
Μπορεί να καθοριστεί ότι ένα certificate είναι CA certificate εάν πληρούνται αρκετές προϋποθέσεις:
- Το πιστοποιητικό είναι αποθηκευμένο στον διακομιστή CA, με το ιδιωτικό του κλειδί ασφαλισμένο από το DPAPI της μηχανής ή από υλικό όπως TPM/HSM αν το λειτουργικό σύστημα το υποστηρίζει.
- Τα πεδία Issuer και Subject του πιστοποιητικού ταιριάζουν με το διακριτό όνομα του CA.
- Μια επέκταση "CA Version" είναι παρούσα στα πιστοποιητικά CA αποκλειστικά.
- Το πιστοποιητικό δεν έχει πεδία Extended Key Usage (EKU).
- Το certificate αποθηκεύεται στον CA server, με το private key του να προστατεύεται από το DPAPI της μηχανής, ή από hardware όπως TPM/HSM εάν το λειτουργικό σύστημα το υποστηρίζει.
- Τα πεδία Issuer και Subject του certificate ταιριάζουν με το distinguished name της CA.
- Μια επέκταση "CA Version" υπάρχει αποκλειστικά στα CA certificates.
- Το certificate δεν περιλαμβάνει πεδία Extended Key Usage (EKU).
Για να εξαγάγετε το ιδιωτικό κλειδί αυτού του πιστοποιητικού, το εργαλείο `certsrv.msc` στον διακομιστή CA είναι η υποστηριζόμενη μέθοδος μέσω της ενσωματωμένης GUI. Παρ' όλα αυτά, αυτό το πιστοποιητικό δεν διαφέρει από άλλα που είναι αποθηκευμένα στο σύστημα. Έτσι, μέθοδοι όπως η [THEFT2 technique](certificate-theft.md#user-certificate-theft-via-dpapi-theft2) μπορούν να εφαρμοστούν για την εξαγωγή.
Για να εξαχθεί το private key αυτού του certificate, το εργαλείο `certsrv.msc` στον CA server είναι η υποστηριζόμενη μέθοδος μέσω του ενσωματωμένου GUI. Παρ' όλα αυτά, αυτό το certificate δεν διαφέρει από άλλα που είναι αποθηκευμένα στο σύστημα· επομένως μέθοδοι όπως η [THEFT2 technique](certificate-theft.md#user-certificate-theft-via-dpapi-theft2) μπορούν να εφαρμοστούν για την εξαγωγή.
Το πιστοποιητικό και το ιδιωτικό κλειδί μπορούν επίσης να αποκτηθούν χρησιμοποιώντας το Certipy με την ακόλουθη εντολή:
Το certificate και το private key μπορούν επίσης να αποκτηθούν χρησιμοποιώντας Certipy με την ακόλουθη εντολή:
```bash
certipy ca 'corp.local/administrator@ca.corp.local' -hashes :123123.. -backup
```
Αφού αποκτηθεί το πιστοποιητικό CA και το ιδιωτικό του κλειδί σε μορφή `.pfx`, εργαλεία όπως το [ForgeCert](https://github.com/GhostPack/ForgeCert) μπορούν να χρησιμοποιηθούν για τη δημιουργία έγκυρων πιστοποιητικών:
Μετά την απόκτηση του πιστοποιητικού CA και του ιδιωτικού του κλειδιού σε μορφή `.pfx`, εργαλεία όπως το [ForgeCert](https://github.com/GhostPack/ForgeCert) μπορούν να χρησιμοποιηθούν για να δημιουργήσουν έγκυρα πιστοποιητικά:
```bash
# Generating a new certificate with ForgeCert
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword Password123! --Subject "CN=User" --SubjectAltName localadmin@theshire.local --NewCertPath localadmin.pfx --NewCertPassword Password123!
@ -36,28 +36,74 @@ Rubeus.exe asktgt /user:localdomain /certificate:C:\ForgeCert\localadmin.pfx /pa
certipy auth -pfx administrator_forged.pfx -dc-ip 172.16.126.128
```
> [!WARNING]
> Ο χρήστης που στοχεύεται για πλαστογράφηση πιστοποιητικού πρέπει να είναι ενεργός και ικανός να αυθεντικοποιείται στο Active Directory για να επιτύχει η διαδικασία. Η πλαστογράφηση ενός πιστοποιητικού για ειδικούς λογαριασμούς όπως ο krbtgt είναι αναποτελεσματική.
> Ο χρήστης που στοχεύεται για πλαστογράφηση πιστοποιητικού πρέπει να είναι ενεργός και ικανός να αυθεντικοποιηθεί στο Active Directory για να επιτύχει η διαδικασία. Η πλαστογράφηση πιστοποιητικού για ειδικούς λογαριασμούς όπως krbtgt είναι αναποτελεσματική.
Αυτό το πλαστό πιστοποιητικό θα είναι **έγκυρο** μέχρι την ημερομηνία λήξης που έχει καθοριστεί και **όσο το πιστοποιητικό της ρίζας CA είναι έγκυρο** (συνήθως από 5 έως **10+ χρόνια**). Είναι επίσης έγκυρο για **μηχανές**, οπότε σε συνδυασμό με το **S4U2Self**, ένας επιτιθέμενος μπορεί να **διατηρήσει επιμονή σε οποιαδήποτε μηχανή τομέα** όσο το πιστοποιητικό CA είναι έγκυρο.\
Επιπλέον, τα **πιστοποιητικά που παράγονται** με αυτή τη μέθοδο **δεν μπορούν να ανακληθούν** καθώς η CA δεν είναι ενήμερη γι' αυτά.
Αυτό το πλαστογραφημένο πιστοποιητικό θα είναι **έγκυρο** μέχρι την καθορισμένη ημερομηνία λήξης και όσο **το root CA πιστοποιητικό είναι έγκυρο** (συνήθως από 5 έως **10+ χρόνια**). Είναι επίσης έγκυρο για **μηχανήματα**, οπότε σε συνδυασμό με το **S4U2Self**, ένας επιτιθέμενος μπορεί να **διατηρήσει persistence σε οποιαδήποτε domain machine** για όσο το πιστοποιητικό CA είναι έγκυρο.\ Επιπλέον, τα **πιστοποιητικά που δημιουργούνται** με αυτή τη μέθοδο **δεν μπορούν να ανακληθούν**, καθώς η CA δεν είναι ενήμερη γι' αυτά.
## Εμπιστοσύνη σε Rogue CA Πιστοποιητικά - DPERSIST2
### Λειτουργία υπό την αυστηρή εφαρμογή αντιστοίχισης πιστοποιητικών (2025+)
Το αντικείμενο `NTAuthCertificates` ορίζεται για να περιέχει ένα ή περισσότερα **πιστοποιητικά CA** εντός του χαρακτηριστικού `cacertificate`, το οποίο χρησιμοποιεί το Active Directory (AD). Η διαδικασία επαλήθευσης από τον **ελεγκτή τομέα** περιλαμβάνει τον έλεγχο του αντικειμένου `NTAuthCertificates` για μια καταχώρηση που ταιριάζει με την **CA που καθορίζεται** στο πεδίο Εκδότη του αυθεντικοποιητικού **πιστοποιητικού**. Η αυθεντικοποίηση προχωρά εάν βρεθεί ταίριασμα.
Από τις 11 Φεβρουαρίου 2025 (μετά την κυκλοφορία του KB5014754), οι domain controllers έχουν ως προεπιλογή το **Full Enforcement** για τις αντιστοιχίσεις πιστοποιητικών. Στην πράξη αυτό σημαίνει ότι τα πλαστογραφημένα πιστοποιητικά σας πρέπει είτε:
Ένα αυτο-υπογεγραμμένο πιστοποιητικό CA μπορεί να προστεθεί στο αντικείμενο `NTAuthCertificates` από έναν επιτιθέμενο, εφόσον έχει έλεγχο αυτού του αντικειμένου AD. Κανονικά, μόνο τα μέλη της ομάδας **Enterprise Admin**, μαζί με τους **Domain Admins** ή **Administrators** στο **δενδρικό τομέα ρίζας**, έχουν άδεια να τροποποιούν αυτό το αντικείμενο. Μπορούν να επεξεργαστούν το αντικείμενο `NTAuthCertificates` χρησιμοποιώντας το `certutil.exe` με την εντολή `certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA126`, ή χρησιμοποιώντας το [**PKI Health Tool**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool).
- Να περιέχουν μια ισχυρή σύνδεση με τον λογαριασμό-στόχο (για παράδειγμα, την SID security extension), ή
- Να συνοδεύονται από μια ισχυρή, ρητή αντιστοίχιση στο αντικείμενο-στόχο μέσω του `altSecurityIdentities` attribute.
Αυτή η δυνατότητα είναι ιδιαίτερα σχετική όταν χρησιμοποιείται σε συνδυασμό με μια προηγουμένως περιγραφείσα μέθοδο που περιλαμβάνει το ForgeCert για τη δυναμική δημιουργία πιστοποιητικών.
Μια αξιόπιστη προσέγγιση για persistence είναι να δημιουργήσετε (mint) ένα πλαστογραφημένο πιστοποιητικό αλυσοδεμένο στην κλεμμένη Enterprise CA και στη συνέχεια να προσθέσετε μια ισχυρή, ρητή αντιστοίχιση στο victim principal:
```powershell
# Example: map a forged cert to a target account using Issuer+Serial (strong mapping)
$Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA' # reverse DN format expected by AD
$SerialR = '1200000000AC11000000002B' # serial in reversed byte order
$Map = "X509:<I>$Issuer<SR>$SerialR" # strong mapping format
Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map}
```
Σημειώσεις
- Εάν μπορείτε να δημιουργήσετε forged certificates που περιλαμβάνουν την SID security extension, αυτά θα αντιστοιχούν implicit ακόμα και υπό Full Enforcement. Διαφορετικά, προτιμήστε explicit strong mappings. Δείτε [account-persistence](account-persistence.md) για περισσότερα σχετικά με explicit mappings.
- Revocation δεν βοηθάει εδώ τους αμυνόμενους: τα forged certificates είναι άγνωστα στη CA database και επομένως δεν μπορούν να ανακληθούν.
## Κακόβουλη Λανθασμένη Ρύθμιση - DPERSIST3
## Εμπιστοσύνη σε Rogue CA Certificates - DPERSIST2
Οι ευκαιρίες για **επιμονή** μέσω **τροποποιήσεων περιγραφής ασφαλείας των στοιχείων AD CS** είναι πολλές. Οι τροποποιήσεις που περιγράφονται στην ενότητα "[Domain Escalation](domain-escalation.md)" μπορούν να υλοποιηθούν κακόβουλα από έναν επιτιθέμενο με ανυψωμένη πρόσβαση. Αυτό περιλαμβάνει την προσθήκη "δικαιωμάτων ελέγχου" (π.χ., WriteOwner/WriteDACL κ.λπ.) σε ευαίσθητα στοιχεία όπως:
Το αντικείμενο `NTAuthCertificates` έχει οριστεί να περιέχει ένα ή περισσότερα **CA certificates** μέσα στο attribute `cacertificate`, το οποίο χρησιμοποιεί το Active Directory (AD). Η διαδικασία επαλήθευσης από τον **domain controller** ελέγχει το αντικείμενο `NTAuthCertificates` για μια εγγραφή που ταιριάζει με την **CA specified** στο πεδίο Issuer του πιστοποιητικού που εκτελεί την authentication. Η authentication προχωράει αν βρεθεί αντιστοιχία.
- Το **αντικείμενο υπολογιστή AD του CA server**
- Ο **RPC/DCOM server του CA server**
- Οποιοδήποτε **καταγωγικό αντικείμενο ή κοντέινερ AD** στο **`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`** (για παράδειγμα, το κοντέινερ Πρότυπα Πιστοποιητικών, το κοντέινερ Αρχών Πιστοποίησης, το αντικείμενο NTAuthCertificates κ.λπ.)
- **Ομάδες AD που έχουν δικαιώματα ελέγχου AD CS** από προεπιλογή ή από τον οργανισμό (όπως η ενσωματωμένη ομάδα Cert Publishers και οποιοδήποτε από τα μέλη της)
Ένα self-signed CA πιστοποιητικό μπορεί να προστεθεί στο αντικείμενο `NTAuthCertificates` από έναν επιτιθέμενο, εφόσον έχει έλεγχο πάνω σε αυτό το AD object. Κανονικά, μόνο μέλη της ομάδας **Enterprise Admin**, μαζί με **Domain Admins** ή **Administrators** στο **forest roots domain**, έχουν άδεια να τροποποιήσουν αυτό το αντικείμενο. Μπορούν να επεξεργαστούν το αντικείμενο `NTAuthCertificates` χρησιμοποιώντας `certutil.exe` με την εντολή `certutil.exe -dspublish -f C:\Temp\CERT.crt NTAuthCA`, ή χρησιμοποιώντας το [**PKI Health Tool**](https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/import-third-party-ca-to-enterprise-ntauth-store#method-1---import-a-certificate-by-using-the-pki-health-tool).
Ένα παράδειγμα κακόβουλης υλοποίησης θα περιλάμβανε έναν επιτιθέμενο, ο οποίος έχει **ανυψωμένα δικαιώματα** στο τομέα, να προσθέτει την άδεια **`WriteOwner`** στο προεπιλεγμένο πρότυπο πιστοποιητικού **`User`**, με τον επιτιθέμενο να είναι ο κύριος για το δικαίωμα. Για να εκμεταλλευτεί αυτό, ο επιτιθέμενος θα άλλαζε πρώτα την ιδιοκτησία του προτύπου **`User`** σε αυτόν. Ακολούθως, η **`mspki-certificate-name-flag`** θα ρυθμιζόταν σε **1** στο πρότυπο για να επιτρέψει το **`ENROLLEE_SUPPLIES_SUBJECT`**, επιτρέποντας σε έναν χρήστη να παρέχει ένα Subject Alternative Name στην αίτηση. Στη συνέχεια, ο επιτιθέμενος θα μπορούσε να **εγγραφεί** χρησιμοποιώντας το **πρότυπο**, επιλέγοντας ένα όνομα **τομεακού διαχειριστή** ως εναλλακτικό όνομα, και να χρησιμοποιήσει το αποκτηθέν πιστοποιητικό για αυθεντικοποίηση ως DA.
Επιπλέον χρήσιμες εντολές για αυτή την τεχνική:
```bash
# Add/remove and inspect the Enterprise NTAuth store
certutil -enterprise -f -AddStore NTAuth C:\Temp\CERT.crt
certutil -enterprise -viewstore NTAuth
certutil -enterprise -delstore NTAuth <Thumbprint>
# (Optional) publish into AD CA containers to improve chain building across the forest
certutil -dspublish -f C:\Temp\CERT.crt RootCA # CN=Certification Authorities
certutil -dspublish -f C:\Temp\CERT.crt CA # CN=AIA
```
Αυτή η ικανότητα είναι ιδιαίτερα σχετική όταν χρησιμοποιείται σε συνδυασμό με μια προηγουμένως περιγραφείσα μέθοδο που περιλαμβάνει το ForgeCert για δυναμική δημιουργία πιστοποιητικών.
> Post-2025 mapping considerations: η προσθήκη ενός rogue CA στο NTAuth καθιερώνει μόνο την εμπιστοσύνη στην issuing CA. Για να χρησιμοποιηθούν leaf certificates για logon όταν οι DCs βρίσκονται σε **Full Enforcement**, το leaf πρέπει είτε να περιέχει την επέκταση SID security είτε να υπάρχει ισχυρός ρητός mapping στο αντικείμενο-στόχο (π.χ. Issuer+Serial στο `altSecurityIdentities`). Δείτε {{#ref}}account-persistence.md{{#endref}}.
## Malicious Misconfiguration - DPERSIST3
Οι ευκαιρίες για **persistence** μέσω **τροποποιήσεων security descriptor σε στοιχεία του AD CS** είναι πολλές. Τροποποιήσεις που περιγράφονται στην ενότητα "[Domain Escalation](domain-escalation.md)" μπορούν να υλοποιηθούν κακόβουλα από έναν attacker με elevated access. Αυτό περιλαμβάνει την προσθήκη "control rights" (π.χ., WriteOwner/WriteDACL/etc.) σε ευαίσθητα στοιχεία όπως:
- Το **CA servers AD computer** object
- Τον **CA servers RPC/DCOM server**
- Οποιοδήποτε **descendant AD object or container** στο **`CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>`** (για παράδειγμα, το Certificate Templates container, το Certification Authorities container, το NTAuthCertificates object, κ.λπ.)
- **AD groups delegated rights to control AD CS** από προεπιλογή ή από την οργάνωση (όπως το built-in Cert Publishers group και οποιοδήποτε από τα μέλη του)
Ένα παράδειγμα κακόβουλης υλοποίησης θα περιλάμβανε έναν attacker, που έχει **elevated permissions** στο domain, να προσθέτει το δικαίωμα **`WriteOwner`** στο default πρότυπο πιστοποιητικού **`User`**, με τον attacker να είναι ο principal για το δικαίωμα. Για να το εκμεταλλευτεί, ο attacker πρώτα θα άλλαζε την ιδιοκτησία του template **`User`** στον εαυτό του. Στη συνέχεια, η τιμή **mspki-certificate-name-flag** θα οριζόταν σε **1** στο template για να ενεργοποιηθεί το **`ENROLLEE_SUPPLIES_SUBJECT`**, επιτρέποντας σε έναν user να παρέχει Subject Alternative Name στο request. Κατόπιν, ο attacker θα μπορούσε να **enroll** χρησιμοποιώντας το **template**, επιλέγοντας ένα όνομα **domain administrator** ως alternative name, και να χρησιμοποιήσει το αποκτηθέν πιστοποιητικό για authentication ως ο DA.
Πρακτικά χειριστήρια που μπορεί να ρυθμίσουν οι attackers για μακροχρόνια domain persistence (βλέπε {{#ref}}domain-escalation.md{{#endref}} για πλήρεις λεπτομέρειες και detection):
- Flags πολιτικής CA που επιτρέπουν SAN από requesters (π.χ., ενεργοποίηση `EDITF_ATTRIBUTESUBJECTALTNAME2`). Αυτό κρατάει διαδρομές τύπου ESC1 εκμεταλλεύσιμες.
- Template DACL ή ρυθμίσεις που επιτρέπουν issuance ικανό για authentication (π.χ., προσθήκη Client Authentication EKU, ενεργοποίηση `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`).
- Έλεγχος του `NTAuthCertificates` object ή των CA containers για συνεχή επανεισαγωγή rogue issuers εάν οι defenders επιχειρήσουν cleanup.
> [!TIP]
> Σε hardened περιβάλλοντα μετά το KB5014754, ο συνδυασμός αυτών των misconfigurations με ρητά ισχυρά mappings (`altSecurityIdentities`) διασφαλίζει ότι τα εκδιδομένα ή πλαστογραφημένα πιστοποιητικά παραμένουν χρησιμοποιήσιμα ακόμη και όταν οι DCs εφαρμόζουν strong mapping.
## References
- Microsoft KB5014754 Certificate-based authentication changes on Windows domain controllers (enforcement timeline and strong mappings). https://support.microsoft.com/en-au/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16
- Certipy Command Reference and forge/auth usage. https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference
{{#include ../../../banners/hacktricks-training.md}}