.. | ||
account-persistence.md | ||
certificate-theft.md | ||
domain-escalation.md | ||
domain-persistence.md | ||
README.md |
AD Certificates
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Εισαγωγή
Συστατικά ενός Πιστοποιητικού
- Ο Θέμα του πιστοποιητικού δηλώνει τον κάτοχό του.
- Ένα Δημόσιο Κλειδί συνδυάζεται με ένα ιδιωτικά διατηρούμενο κλειδί για να συνδέσει το πιστοποιητικό με τον νόμιμο κάτοχό του.
- Η Περίοδος Ικανότητας, που καθορίζεται από τις ημερομηνίες NotBefore και NotAfter, σηματοδοτεί τη διάρκεια ισχύος του πιστοποιητικού.
- Ένας μοναδικός Αριθμός Σειράς, που παρέχεται από την Αρχή Πιστοποίησης (CA), προσδιορίζει κάθε πιστοποιητικό.
- Ο Εκδότης αναφέρεται στην CA που έχει εκδώσει το πιστοποιητικό.
- SubjectAlternativeName επιτρέπει πρόσθετα ονόματα για το θέμα, ενισχύοντας την ευελιξία αναγνώρισης.
- Basic Constraints προσδιορίζουν αν το πιστοποιητικό είναι για μια CA ή μια τελική οντότητα και καθορίζουν περιορισμούς χρήσης.
- Extended Key Usages (EKUs) καθορίζουν τους συγκεκριμένους σκοπούς του πιστοποιητικού, όπως η υπογραφή κώδικα ή η κρυπτογράφηση email, μέσω Αναγνωριστικών Αντικειμένων (OIDs).
- Ο Αλγόριθμος Υπογραφής προσδιορίζει τη μέθοδο υπογραφής του πιστοποιητικού.
- Η Υπογραφή, που δημιουργείται με το ιδιωτικό κλειδί του εκδότη, εγγυάται την αυθεντικότητα του πιστοποιητικού.
Ειδικές Σκέψεις
- Οι Εναλλακτικές Ονομασίες Θέματος (SANs) επεκτείνουν την εφαρμογή ενός πιστοποιητικού σε πολλές ταυτότητες, κρίσιμες για διακομιστές με πολλαπλά domains. Οι ασφαλείς διαδικασίες έκδοσης είναι ζωτικής σημασίας για την αποφυγή κινδύνων προσποίησης από επιτιθέμενους που χειρίζονται την προδιαγραφή SAN.
Αρχές Πιστοποίησης (CAs) στο Active Directory (AD)
Η AD CS αναγνωρίζει τα πιστοποιητικά CA σε ένα δάσος AD μέσω καθορισμένων κοντέινερ, το καθένα εξυπηρετεί μοναδικούς ρόλους:
- Το κοντέινερ Certification Authorities περιέχει αξιόπιστα πιστοποιητικά ρίζας CA.
- Το κοντέινερ Enrolment Services περιγράφει τις Enterprise CAs και τα πρότυπα πιστοποιητικών τους.
- Το αντικείμενο NTAuthCertificates περιλαμβάνει πιστοποιητικά CA που έχουν εξουσιοδοτηθεί για την αυθεντικοποίηση AD.
- Το κοντέινερ AIA (Authority Information Access) διευκολύνει την επικύρωση της αλυσίδας πιστοποιητικών με ενδιάμεσα και διασταυρούμενα πιστοποιητικά CA.
Απόκτηση Πιστοποιητικού: Ροή Αίτησης Πιστοποιητικού Πελάτη
- Η διαδικασία αίτησης ξεκινά με τους πελάτες να βρίσκουν μια Enterprise CA.
- Δημιουργείται μια CSR, που περιέχει ένα δημόσιο κλειδί και άλλες λεπτομέρειες, μετά τη δημιουργία ενός ζεύγους δημόσιου-ιδιωτικού κλειδιού.
- Η CA αξιολογεί την CSR σε σχέση με τα διαθέσιμα πρότυπα πιστοποιητικών, εκδίδοντας το πιστοποιητικό με βάση τις άδειες του προτύπου.
- Μετά την έγκριση, η CA υπογράφει το πιστοποιητικό με το ιδιωτικό της κλειδί και το επιστρέφει στον πελάτη.
Πρότυπα Πιστοποιητικών
Ορισμένα εντός του AD, αυτά τα πρότυπα περιγράφουν τις ρυθμίσεις και τις άδειες για την έκδοση πιστοποιητικών, συμπεριλαμβανομένων των επιτρεπόμενων EKUs και δικαιωμάτων εγγραφής ή τροποποίησης, κρίσιμα για τη διαχείριση της πρόσβασης στις υπηρεσίες πιστοποιητικών.
Εγγραφή Πιστοποιητικού
Η διαδικασία εγγραφής για πιστοποιητικά ξεκινά από έναν διαχειριστή που δημιουργεί ένα πρότυπο πιστοποιητικού, το οποίο στη συνέχεια δημοσιεύεται από μια Enterprise Certificate Authority (CA). Αυτό καθιστά το πρότυπο διαθέσιμο για εγγραφή πελατών, ένα βήμα που επιτυγχάνεται προσθέτοντας το όνομα του προτύπου στο πεδίο certificatetemplates
ενός αντικειμένου Active Directory.
Για να ζητήσει ένας πελάτης ένα πιστοποιητικό, πρέπει να παραχωρηθούν δικαιώματα εγγραφής. Αυτά τα δικαιώματα καθορίζονται από τους περιγραφείς ασφαλείας στο πρότυπο πιστοποιητικού και την ίδια την Enterprise CA. Οι άδειες πρέπει να παραχωρούνται και στις δύο τοποθεσίες για να είναι επιτυχής μια αίτηση.
Δικαιώματα Εγγραφής Προτύπου
Αυτά τα δικαιώματα καθορίζονται μέσω Εισόδων Ελέγχου Πρόσβασης (ACEs), που περιγράφουν άδειες όπως:
- Δικαιώματα Certificate-Enrollment και Certificate-AutoEnrollment, το καθένα συνδεδεμένο με συγκεκριμένα GUIDs.
- ExtendedRights, επιτρέποντας όλες τις επεκτεταμένες άδειες.
- FullControl/GenericAll, παρέχοντας πλήρη έλεγχο πάνω στο πρότυπο.
Δικαιώματα Εγγραφής Enterprise CA
Τα δικαιώματα της CA περιγράφονται στον περιγραφέα ασφαλείας της, προσβάσιμο μέσω της κονσόλας διαχείρισης της Αρχής Πιστοποίησης. Ορισμένες ρυθμίσεις επιτρέπουν ακόμη και σε χρήστες με χαμηλά προνόμια απομακρυσμένη πρόσβαση, γεγονός που θα μπορούσε να είναι ανησυχητικό για την ασφάλεια.
Πρόσθετοι Έλεγχοι Έκδοσης
Ορισμένοι έλεγχοι μπορεί να ισχύουν, όπως:
- Έγκριση Διαχειριστή: Τοποθετεί τις αιτήσεις σε εκκρεμή κατάσταση μέχρι να εγκριθούν από έναν διαχειριστή πιστοποιητικών.
- Πράκτορες Εγγραφής και Εξουσιοδοτημένες Υπογραφές: Προσδιορίζουν τον αριθμό των απαιτούμενων υπογραφών σε μια CSR και τα απαραίτητα Αναγνωριστικά Πολιτικής Εφαρμογής OIDs.
Μέθοδοι Αίτησης Πιστοποιητικών
Τα πιστοποιητικά μπορούν να ζητηθούν μέσω:
- Windows Client Certificate Enrollment Protocol (MS-WCCE), χρησιμοποιώντας διεπαφές DCOM.
- ICertPassage Remote Protocol (MS-ICPR), μέσω ονομάτων σωλήνων ή TCP/IP.
- Της διαδικτυακής διεπαφής εγγραφής πιστοποιητικού, με τον ρόλο Web Enrollment της Αρχής Πιστοποίησης εγκατεστημένο.
- Της Υπηρεσίας Εγγραφής Πιστοποιητικού (CES), σε συνδυασμό με την Υπηρεσία Πολιτικής Εγγραφής Πιστοποιητικού (CEP).
- Της Υπηρεσίας Εγγραφής Δικτύου (NDES) για συσκευές δικτύου, χρησιμοποιώντας το Απλό Πρωτόκολλο Εγγραφής Πιστοποιητικού (SCEP).
Οι χρήστες Windows μπορούν επίσης να ζητήσουν πιστοποιητικά μέσω της GUI (certmgr.msc
ή certlm.msc
) ή εργαλείων γραμμής εντολών (certreq.exe
ή της εντολής Get-Certificate
του PowerShell).
# Example of requesting a certificate using PowerShell
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
Πιστοποίηση μέσω Πιστοποιητικού
Το Active Directory (AD) υποστηρίζει την πιστοποίηση μέσω πιστοποιητικού, κυρίως χρησιμοποιώντας τα πρωτόκολλα Kerberos και Secure Channel (Schannel).
Διαδικασία Πιστοποίησης Kerberos
Στη διαδικασία πιστοποίησης Kerberos, το αίτημα ενός χρήστη για ένα Ticket Granting Ticket (TGT) υπογράφεται χρησιμοποιώντας το ιδιωτικό κλειδί του πιστοποιητικού του χρήστη. Αυτό το αίτημα υποβάλλεται σε πολλές επικυρώσεις από τον ελεγκτή τομέα, συμπεριλαμβανομένης της έγκυρης κατάστασης του πιστοποιητικού, της διαδρομής και της κατάστασης ανάκλησης. Οι επικυρώσεις περιλαμβάνουν επίσης την επαλήθευση ότι το πιστοποιητικό προέρχεται από μια αξιόπιστη πηγή και την επιβεβαίωση της παρουσίας του εκδότη στο κατάστημα πιστοποιητικών NTAUTH. Οι επιτυχείς επικυρώσεις οδηγούν στην έκδοση ενός TGT. Το αντικείμενο NTAuthCertificates
στο AD, που βρίσκεται στο:
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
is κεντρικό για την establishment εμπιστοσύνης για την πιστοποίηση πιστοποιητικών.
Secure Channel (Schannel) Authentication
Schannel διευκολύνει ασφαλείς συνδέσεις TLS/SSL, όπου κατά τη διάρκεια ενός handshake, ο πελάτης παρουσιάζει ένα πιστοποιητικό που, αν επικυρωθεί επιτυχώς, εξουσιοδοτεί την πρόσβαση. Η αντιστοίχιση ενός πιστοποιητικού σε έναν λογαριασμό AD μπορεί να περιλαμβάνει τη λειτουργία S4U2Self του Kerberos ή το Subject Alternative Name (SAN) του πιστοποιητικού, μεταξύ άλλων μεθόδων.
AD Certificate Services Enumeration
Οι υπηρεσίες πιστοποιητικών του AD μπορούν να καταμετρηθούν μέσω LDAP queries, αποκαλύπτοντας πληροφορίες σχετικά με Enterprise Certificate Authorities (CAs) και τις ρυθμίσεις τους. Αυτό είναι προσβάσιμο από οποιονδήποτε χρήστη που έχει πιστοποίηση τομέα χωρίς ειδικά προνόμια. Εργαλεία όπως το Certify και το Certipy χρησιμοποιούνται για την καταμέτρηση και την αξιολόγηση ευπαθειών σε περιβάλλοντα AD CS.
Οι εντολές για τη χρήση αυτών των εργαλείων περιλαμβάνουν:
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
Certify.exe cas
# Identify vulnerable certificate templates with Certify
Certify.exe find /vulnerable
# 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
Αναφορές
- 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
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Υποστήριξη HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.