AD CS Domain Escalation
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
This is a summary of escalation technique sections of the posts:
Τα δικαιώματα εγγραφής χορηγούνται σε χρήστες με χαμηλά προνόμια από την Enterprise CA.
Η έγκριση του διευθυντή δεν απαιτείται.
Δεν απαιτούνται υπογραφές από εξουσιοδοτημένο προσωπικό.
Οι περιγραφείς ασφαλείας στα πρότυπα πιστοποιητικών είναι υπερβολικά επιεικείς, επιτρέποντας στους χρήστες με χαμηλά προνόμια να αποκτούν δικαιώματα εγγραφής.
Τα πρότυπα πιστοποιητικών είναι ρυθμισμένα να ορίζουν EKUs που διευκολύνουν την αυθεντικοποίηση:
Οι ταυτοτήτες Extended Key Usage (EKU) όπως Client Authentication (OID 1.3.6.1.5.5.7.3.2), PKINIT Client Authentication (1.3.6.1.5.2.3.4), Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2), Any Purpose (OID 2.5.29.37.0), ή χωρίς EKU (SubCA) περιλαμβάνονται.
Η δυνατότητα για τους αιτούντες να συμπεριλάβουν ένα subjectAltName στην Αίτηση Υπογραφής Πιστοποιητικού (CSR) επιτρέπεται από το πρότυπο:
Το Active Directory (AD) δίνει προτεραιότητα στο subjectAltName (SAN) σε ένα πιστοποιητικό για την επαλήθευση ταυτότητας αν είναι παρόν. Αυτό σημαίνει ότι με την καθορισμένη SAN σε ένα CSR, μπορεί να ζητηθεί ένα πιστοποιητικό για να προσποιηθεί οποιονδήποτε χρήστη (π.χ., έναν διαχειριστή τομέα). Εάν μπορεί να καθοριστεί μια SAN από τον αιτούντα, αυτό υποδεικνύεται στο αντικείμενο AD του προτύπου πιστοποιητικού μέσω της ιδιότητας mspki-certificate-name-flag
. Αυτή η ιδιότητα είναι ένα bitmask, και η παρουσία της σημαίας CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
επιτρέπει την καθορισμένη SAN από τον αιτούντα.
Η ρύθμιση που περιγράφεται επιτρέπει στους χρήστες με χαμηλά προνόμια να ζητούν πιστοποιητικά με οποιαδήποτε SAN επιλέξουν, επιτρέποντας την αυθεντικοποίηση ως οποιοσδήποτε τομεακός κύριος μέσω Kerberos ή SChannel.
Αυτή η δυνατότητα είναι μερικές φορές ενεργοποιημένη για να υποστηρίξει τη δημιουργία πιστοποιητικών HTTPS ή host κατά την εκτέλεση από προϊόντα ή υπηρεσίες ανάπτυξης, ή λόγω έλλειψης κατανόησης.
Σημειώνεται ότι η δημιουργία ενός πιστοποιητικού με αυτή την επιλογή ενεργοποιεί μια προειδοποίηση, κάτι που δεν συμβαίνει όταν ένα υπάρχον πρότυπο πιστοποιητικού (όπως το πρότυπο WebServer
, το οποίο έχει ενεργοποιημένη την CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
) αντιγράφεται και στη συνέχεια τροποποιείται για να περιλαμβάνει ένα OID αυθεντικοποίησης.
Για να βρείτε ευάλωτα πρότυπα πιστοποιητικών μπορείτε να εκτελέσετε:
Για να καταχραστεί αυτή την ευπάθεια για να προσποιηθεί έναν διαχειριστή θα μπορούσε να εκτελέσει:
Τότε μπορείτε να μετατρέψετε το παραγόμενο πιστοποιητικό σε μορφή .pfx
και να το χρησιμοποιήσετε για αυθεντικοποίηση χρησιμοποιώντας Rubeus ή certipy ξανά:
Τα Windows binaries "Certreq.exe" & "Certutil.exe" μπορούν να χρησιμοποιηθούν για να παραχθεί το PFX: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee
Η καταμέτρηση των προτύπων πιστοποιητικών εντός του σχήματος διαμόρφωσης του AD Forest, συγκεκριμένα εκείνων που δεν απαιτούν έγκριση ή υπογραφές, που διαθέτουν Client Authentication ή Smart Card Logon EKU, και με την ενεργοποιημένη σημαία CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
, μπορεί να πραγματοποιηθεί εκτελώντας το ακόλουθο LDAP query:
Το δεύτερο σενάριο κακοποίησης είναι μια παραλλαγή του πρώτου:
Τα δικαιώματα εγγραφής χορηγούνται σε χρήστες με χαμηλά προνόμια από την Enterprise CA.
Η απαίτηση για έγκριση από διευθυντή είναι απενεργοποιημένη.
Η ανάγκη για εξουσιοδοτημένες υπογραφές παραλείπεται.
Ένας υπερβολικά επιτρεπτικός περιγραφέας ασφαλείας στο πρότυπο πιστοποιητικού χορηγεί δικαιώματα εγγραφής πιστοποιητικού σε χρήστες με χαμηλά προνόμια.
Το πρότυπο πιστοποιητικού ορίζεται να περιλαμβάνει το Any Purpose EKU ή κανένα EKU.
Το Any Purpose EKU επιτρέπει σε έναν επιτιθέμενο να αποκτήσει ένα πιστοποιητικό για οποιονδήποτε σκοπό, συμπεριλαμβανομένης της πιστοποίησης πελάτη, της πιστοποίησης διακομιστή, της υπογραφής κώδικα, κ.λπ. Η ίδια τεχνική που χρησιμοποιείται για το ESC3 μπορεί να χρησιμοποιηθεί για την εκμετάλλευση αυτού του σεναρίου.
Πιστοποιητικά με κανένα EKU, που δρουν ως υποκαταστάτες CA, μπορούν να εκμεταλλευτούν για οποιονδήποτε σκοπό και μπορούν επίσης να χρησιμοποιηθούν για την υπογραφή νέων πιστοποιητικών. Έτσι, ένας επιτιθέμενος θα μπορούσε να καθορίσει αυθαίρετα EKUs ή πεδία στα νέα πιστοποιητικά χρησιμοποιώντας ένα πιστοποιητικό υποκαταστάτη CA.
Ωστόσο, νέα πιστοποιητικά που δημιουργούνται για πιστοποίηση τομέα δεν θα λειτουργούν αν ο υποκαταστάτης CA δεν είναι αξιόπιστος από το NTAuthCertificates
αντικείμενο, το οποίο είναι η προεπιλεγμένη ρύθμιση. Παρ' όλα αυτά, ένας επιτιθέμενος μπορεί να δημιουργήσει νέα πιστοποιητικά με οποιοδήποτε EKU και αυθαίρετες τιμές πιστοποιητικού. Αυτά θα μπορούσαν να κακοποιηθούν για μια ευρεία γκάμα σκοπών (π.χ., υπογραφή κώδικα, πιστοποίηση διακομιστή, κ.λπ.) και θα μπορούσαν να έχουν σημαντικές επιπτώσεις για άλλες εφαρμογές στο δίκτυο όπως SAML, AD FS ή IPSec.
Για να απαριθμήσετε τα πρότυπα που ταιριάζουν σε αυτό το σενάριο εντός του σχήματος διαμόρφωσης του AD Forest, μπορεί να εκτελεστεί το εξής LDAP query:
Αυτό το σενάριο είναι παρόμοιο με το πρώτο και το δεύτερο αλλά καταχράται μια διαφορετική EKU (Πράκτορας Αίτησης Πιστοποιητικού) και 2 διαφορετικά πρότυπα (επομένως έχει 2 σύνολα απαιτήσεων),
Η EKU Πράκτορα Αίτησης Πιστοποιητικού (OID 1.3.6.1.4.1.311.20.2.1), γνωστή ως Πράκτορας Εγγραφής στην τεκμηρίωση της Microsoft, επιτρέπει σε έναν κύριο να εγγραφεί για ένα πιστοποιητικό εκ μέρους άλλου χρήστη.
Ο “πράκτορας εγγραφής” εγγράφεται σε ένα τέτοιο πρότυπο και χρησιμοποιεί το προκύπτον πιστοποιητικό για να συνυπογράψει ένα CSR εκ μέρους του άλλου χρήστη. Στη συνέχεια στέλνει το συνυπογεγραμμένο CSR στην CA, εγγραφόμενος σε ένα πρότυπο που επιτρέπει “εγγραφή εκ μέρους”, και η CA απαντά με ένα πιστοποιητικό που ανήκει στον “άλλο” χρήστη.
Requirements 1:
Τα δικαιώματα εγγραφής χορηγούνται σε χρήστες με χαμηλά προνόμια από την Enterprise CA.
Η απαίτηση για έγκριση διευθυντή παραλείπεται.
Καμία απαίτηση για εξουσιοδοτημένες υπογραφές.
Ο περιγραφέας ασφαλείας του προτύπου πιστοποιητικού είναι υπερβολικά επιτρεπτικός, χορηγώντας δικαιώματα εγγραφής σε χρήστες με χαμηλά προνόμια.
Το πρότυπο πιστοποιητικού περιλαμβάνει την EKU Πράκτορα Αίτησης Πιστοποιητικού, επιτρέποντας την αίτηση άλλων προτύπων πιστοποιητικών εκ μέρους άλλων προσώπων.
Requirements 2:
Η Enterprise CA χορηγεί δικαιώματα εγγραφής σε χρήστες με χαμηλά προνόμια.
Η έγκριση του διευθυντή παρακάμπτεται.
Η έκδοση του σχήματος του προτύπου είναι είτε 1 είτε υπερβαίνει το 2, και καθορίζει μια Απαίτηση Έκδοσης Πολιτικής Εφαρμογής που απαιτεί την EKU Πράκτορα Αίτησης Πιστοποιητικού.
Μια EKU που ορίζεται στο πρότυπο πιστοποιητικού επιτρέπει την αυθεντικοποίηση τομέα.
Περιορισμοί για τους πράκτορες εγγραφής δεν εφαρμόζονται στην CA.
Μπορείτε να χρησιμοποιήσετε Certify ή Certipy για να καταχραστείτε αυτό το σενάριο:
The χρήστες που επιτρέπεται να αποκτούν ένα πιστοποιητικό πράκτορα εγγραφής, τα πρότυπα στα οποία οι πράκτορες εγγραφής επιτρέπεται να εγγραφούν, και οι λογαριασμοί εκ μέρους των οποίων μπορεί να ενεργήσει ο πράκτορας εγγραφής μπορούν να περιοριστούν από τις επιχειρησιακές CA. Αυτό επιτυγχάνεται ανοίγοντας το certsrc.msc
snap-in, κλικάροντας με το δεξί κουμπί πάνω στην CA, επιλέγοντας Ιδιότητες, και στη συνέχεια μεταβαίνοντας στην καρτέλα “Πράκτορες Εγγραφής”.
Ωστόσο, σημειώνεται ότι η προεπιλεγμένη ρύθμιση για τις CA είναι να “Μη περιορίζετε τους πράκτορες εγγραφής.” Όταν η περιοριστική ρύθμιση για τους πράκτορες εγγραφής ενεργοποιείται από τους διαχειριστές, ρυθμίζοντας την σε “Περιορίστε τους πράκτορες εγγραφής,” η προεπιλεγμένη διαμόρφωση παραμένει εξαιρετικά επιτρεπτική. Επιτρέπει την πρόσβαση σε Όλους για να εγγραφούν σε όλα τα πρότυπα ως οποιοσδήποτε.
Ο ασφαλιστικός περιγραφέας στα πρότυπα πιστοποιητικών καθορίζει τις άδειες που κατέχουν συγκεκριμένοι AD principals σχετικά με το πρότυπο.
Εάν ένας επιτιθέμενος κατέχει τις απαραίτητες άδειες για να αλλάξει ένα πρότυπο και να θεσπίσει οποιεσδήποτε εκμεταλλεύσιμες κακοδιαμορφώσεις που περιγράφονται σε προηγούμενες ενότητες, η κλιμάκωση προνομίων θα μπορούσε να διευκολυνθεί.
Σημαντικές άδειες που ισχύουν για τα πρότυπα πιστοποιητικών περιλαμβάνουν:
Ιδιοκτήτης: Παρέχει έμμεσο έλεγχο πάνω στο αντικείμενο, επιτρέποντας την τροποποίηση οποιωνδήποτε χαρακτηριστικών.
Πλήρης Έλεγχος: Δίνει πλήρη εξουσία πάνω στο αντικείμενο, συμπεριλαμβανομένης της ικανότητας να αλλάξει οποιαδήποτε χαρακτηριστικά.
WriteOwner: Επιτρέπει την αλλαγή του ιδιοκτήτη του αντικειμένου σε έναν κύριο υπό τον έλεγχο του επιτιθέμενου.
WriteDacl: Επιτρέπει την προσαρμογή των ελέγχων πρόσβασης, ενδεχομένως παρέχοντας στον επιτιθέμενο Πλήρη Έλεγχο.
WriteProperty: Εξουσιοδοτεί την επεξεργασία οποιωνδήποτε ιδιοτήτων αντικειμένου.
Ένα παράδειγμα κλιμάκωσης προνομίων όπως το προηγούμενο:
ESC4 είναι όταν ένας χρήστης έχει δικαιώματα εγγραφής πάνω σε ένα πρότυπο πιστοποιητικού. Αυτό μπορεί για παράδειγμα να καταχραστεί για να αντικαταστήσει τη διαμόρφωση του προτύπου πιστοποιητικού ώστε να καταστεί το πρότυπο ευάλωτο σε ESC1.
Όπως μπορούμε να δούμε στο παραπάνω μονοπάτι, μόνο ο JOHNPC
έχει αυτά τα δικαιώματα, αλλά ο χρήστης μας JOHN
έχει την νέα άκρη AddKeyCredentialLink
προς τον JOHNPC
. Δεδομένου ότι αυτή η τεχνική σχετίζεται με πιστοποιητικά, έχω εφαρμόσει αυτή την επίθεση επίσης, η οποία είναι γνωστή ως Shadow Credentials. Ορίστε μια μικρή ματιά στην εντολή shadow auto
του Certipy για να ανακτήσετε το NT hash του θύματος.
Certipy μπορεί να αντικαταστήσει τη ρύθμιση ενός προτύπου πιστοποιητικού με μια μόνο εντολή. Από προεπιλογή, το Certipy θα αντικαταστήσει τη ρύθμιση για να την καταστήσει ευάλωτη σε ESC1. Μπορούμε επίσης να καθορίσουμε την παράμετρο -save-old
για να αποθηκεύσουμε την παλιά ρύθμιση, η οποία θα είναι χρήσιμη για την αποκατάσταση της ρύθμισης μετά την επίθεσή μας.
Το εκτενές δίκτυο αλληλοσυνδεδεμένων σχέσεων βασισμένων σε ACL, το οποίο περιλαμβάνει αρκετά αντικείμενα πέρα από τα πρότυπα πιστοποιητικών και την αρχή πιστοποίησης, μπορεί να επηρεάσει την ασφάλεια ολόκληρου του συστήματος AD CS. Αυτά τα αντικείμενα, που μπορούν να επηρεάσουν σημαντικά την ασφάλεια, περιλαμβάνουν:
Το αντικείμενο υπολογιστή AD του διακομιστή CA, το οποίο μπορεί να παραβιαστεί μέσω μηχανισμών όπως το S4U2Self ή S4U2Proxy.
Ο διακομιστής RPC/DCOM του διακομιστή CA.
Οποιοδήποτε κατώτερο αντικείμενο ή κοντέινερ AD εντός της συγκεκριμένης διαδρομής κοντέινερ CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>
. Αυτή η διαδρομή περιλαμβάνει, αλλά δεν περιορίζεται σε, κοντέινερ και αντικείμενα όπως το κοντέινερ Πρότυπα Πιστοποιητικών, το κοντέινερ Αρχών Πιστοποίησης, το αντικείμενο NTAuthCertificates και το Κοντέινερ Υπηρεσιών Εγγραφής.
Η ασφάλεια του συστήματος PKI μπορεί να παραβιαστεί αν ένας επιτιθέμενος με χαμηλά προνόμια καταφέρει να αποκτήσει έλεγχο σε οποιοδήποτε από αυτά τα κρίσιμα στοιχεία.
Το θέμα που συζητείται στην ανάρτηση CQure Academy αγγίζει επίσης τις επιπτώσεις της σημαίας EDITF_ATTRIBUTESUBJECTALTNAME2
, όπως περιγράφεται από τη Microsoft. Αυτή η ρύθμιση, όταν ενεργοποιηθεί σε μια Αρχή Πιστοποίησης (CA), επιτρέπει την προσθήκη καθορισμένων από τον χρήστη τιμών στο εναλλακτικό όνομα υποκειμένου για οποιοδήποτε αίτημα, συμπεριλαμβανομένων εκείνων που κατασκευάζονται από το Active Directory®. Ως εκ τούτου, αυτή η διάταξη επιτρέπει σε έναν εισβολέα να εγγραφεί μέσω οποιουδήποτε προτύπου έχει ρυθμιστεί για αυθεντικοποίηση τομέα—συγκεκριμένα εκείνων που είναι ανοιχτά για εγγραφή μη προνομιούχων χρηστών, όπως το πρότυπο Χρήστη. Ως αποτέλεσμα, μπορεί να εξασφαλιστεί ένα πιστοποιητικό, επιτρέποντας στον εισβολέα να αυθεντικοποιηθεί ως διαχειριστής τομέα ή οποιαδήποτε άλλη ενεργή οντότητα εντός του τομέα.
Σημείωση: Η προσέγγιση για την προσθήκη εναλλακτικών ονομάτων σε ένα Αίτημα Υπογραφής Πιστοποιητικού (CSR), μέσω του επιχειρήματος -attrib "SAN:"
στο certreq.exe
(αναφερόμενο ως “Ζεύγη Τιμών Ονομάτων”), παρουσιάζει μια αντίθεση με τη στρατηγική εκμετάλλευσης των SANs στο ESC1. Εδώ, η διάκριση έγκειται στο πώς οι πληροφορίες λογαριασμού είναι ενσωματωμένες—εντός ενός χαρακτηριστικού πιστοποιητικού, αντί για μια επέκταση.
Για να επαληθεύσουν αν η ρύθμιση είναι ενεργοποιημένη, οι οργανισμοί μπορούν να χρησιμοποιήσουν την παρακάτω εντολή με το certutil.exe
:
Αυτή η λειτουργία χρησιμοποιεί ουσιαστικά πρόσβαση σε απομακρυσμένο μητρώο, επομένως, μια εναλλακτική προσέγγιση θα μπορούσε να είναι:
Τα εργαλεία όπως το Certify και το Certipy είναι ικανά να ανιχνεύσουν αυτή τη λανθασμένη ρύθμιση και να την εκμεταλλευτούν:
Για να αλλάξετε αυτές τις ρυθμίσεις, υποθέτοντας ότι διαθέτετε δικαιώματα διαχειριστή τομέα ή ισοδύναμα, μπορεί να εκτελεστεί η παρακάτω εντολή από οποιονδήποτε σταθμό εργασίας:
Για να απενεργοποιήσετε αυτή τη ρύθμιση στο περιβάλλον σας, η σημαία μπορεί να αφαιρεθεί με:
Μετά τις ενημερώσεις ασφαλείας του Μαΐου 2022, οι νεοεκδοθείσες πιστοποιήσεις θα περιέχουν μια επέκταση ασφαλείας που ενσωματώνει την ιδιότητα objectSid
του αιτούντος. Για το ESC1, αυτό το SID προέρχεται από το καθορισμένο SAN. Ωστόσο, για το ESC6, το SID αντικατοπτρίζει το objectSid
του αιτούντος, όχι το SAN.
Για να εκμεταλλευτεί κανείς το ESC6, είναι απαραίτητο το σύστημα να είναι ευάλωτο στο ESC10 (Αδύνατοι Χάρτες Πιστοποιητικών), το οποίο δίνει προτεραιότητα στο SAN έναντι της νέας επέκτασης ασφαλείας.
Ο έλεγχος πρόσβασης για μια αρχή πιστοποίησης διατηρείται μέσω ενός συνόλου δικαιωμάτων που διέπουν τις ενέργειες της CA. Αυτά τα δικαιώματα μπορούν να προβληθούν με την πρόσβαση στο certsrv.msc
, κάνοντας δεξί κλικ σε μια CA, επιλέγοντας ιδιότητες και στη συνέχεια πηγαίνοντας στην καρτέλα Ασφάλεια. Επιπλέον, τα δικαιώματα μπορούν να απαριθμηθούν χρησιμοποιώντας το PSPKI module με εντολές όπως:
Αυτό παρέχει πληροφορίες σχετικά με τα κύρια δικαιώματα, δηλαδή ManageCA
και ManageCertificates
, που σχετίζονται με τους ρόλους του “CA administrator” και “Certificate Manager” αντίστοιχα.
Η κατοχή δικαιωμάτων ManageCA
σε μια αρχή πιστοποίησης επιτρέπει στον κύριο να χειρίζεται ρυθμίσεις απομακρυσμένα χρησιμοποιώντας το PSPKI. Αυτό περιλαμβάνει την εναλλαγή της σημαίας EDITF_ATTRIBUTESUBJECTALTNAME2
για να επιτραπεί η προδιαγραφή SAN σε οποιοδήποτε πρότυπο, μια κρίσιμη πτυχή της κλιμάκωσης τομέα.
Η απλοποίηση αυτής της διαδικασίας είναι εφικτή μέσω της χρήσης του cmdlet Enable-PolicyModuleFlag του PSPKI, επιτρέποντας τροποποιήσεις χωρίς άμεση αλληλεπίδραση με το GUI.
Η κατοχή δικαιωμάτων ManageCertificates
διευκολύνει την έγκριση εκκρεμών αιτημάτων, παρακάμπτοντας αποτελεσματικά την προστασία "έγκριση διαχειριστή πιστοποιητικού CA".
Μια συνδυασμένη χρήση των μονάδων Certify και PSPKI μπορεί να χρησιμοποιηθεί για να ζητήσει, να εγκρίνει και να κατεβάσει ένα πιστοποιητικό:
Στην προηγούμενη επίθεση Manage CA
οι άδειες χρησιμοποιήθηκαν για να ενεργοποιήσουν τη σημαία EDITF_ATTRIBUTESUBJECTALTNAME2 για να εκτελέσουν την επίθεση ESC6, αλλά αυτό δεν θα έχει καμία επίδραση μέχρι να επανεκκινήσει η υπηρεσία CA (CertSvc
). Όταν ένας χρήστης έχει το δικαίωμα πρόσβασης Manage CA
, επιτρέπεται επίσης να επανεκκινήσει την υπηρεσία. Ωστόσο, αυτό δεν σημαίνει ότι ο χρήστης μπορεί να επανεκκινήσει την υπηρεσία απομακρυσμένα. Επιπλέον, η ESC6 μπορεί να μην λειτουργεί κατευθείαν σε πολλές περιβαλλοντικές εγκαταστάσεις που έχουν διορθωθεί λόγω των ενημερώσεων ασφαλείας του Μαΐου 2022.
Επομένως, μια άλλη επίθεση παρουσιάζεται εδώ.
Perquisites:
Μόνο ManageCA
άδεια
Manage Certificates
άδεια (μπορεί να παραχωρηθεί από ManageCA
)
Το πρότυπο πιστοποιητικού SubCA
πρέπει να είναι ενεργοποιημένο (μπορεί να ενεργοποιηθεί από ManageCA
)
Η τεχνική βασίζεται στο γεγονός ότι οι χρήστες με το δικαίωμα πρόσβασης Manage CA
και Manage Certificates
μπορούν να εκδίδουν αποτυχημένα αιτήματα πιστοποιητικών. Το πρότυπο πιστοποιητικού SubCA
είναι ευάλωτο στην ESC1, αλλά μόνο οι διαχειριστές μπορούν να εγγραφούν στο πρότυπο. Έτσι, ένας χρήστης μπορεί να ζητήσει να εγγραφεί στο SubCA
- το οποίο θα αρνηθεί - αλλά στη συνέχεια θα εκδοθεί από τον διαχειριστή αργότερα.
Μπορείτε να παραχωρήσετε στον εαυτό σας το δικαίωμα πρόσβασης Manage Certificates
προσθέτοντας τον χρήστη σας ως νέο αξιωματούχο.
Το SubCA
πρότυπο μπορεί να ενεργοποιηθεί στην CA με την παράμετρο -enable-template
. Από προεπιλογή, το πρότυπο SubCA
είναι ενεργοποιημένο.
Αν έχουμε εκπληρώσει τις προϋποθέσεις για αυτήν την επίθεση, μπορούμε να ξεκινήσουμε με την αίτηση ενός πιστοποιητικού βασισμένου στο πρότυπο SubCA
.
Αυτή η αίτηση θα απορριφθεί, αλλά θα αποθηκεύσουμε το ιδιωτικό κλειδί και θα σημειώσουμε το ID της αίτησης.
Με τα Manage CA
και Manage Certificates
, μπορούμε στη συνέχεια να εκδώσουμε το αποτυχημένο πιστοποιητικό αίτημα με την εντολή ca
και την παράμετρο -issue-request <request ID>
.
Τέλος, μπορούμε να ανακτήσουμε το εκδοθέν πιστοποιητικό με την εντολή req
και την παράμετρο -retrieve <request ID>
.
Σε περιβάλλοντα όπου έχει εγκατασταθεί το AD CS, αν υπάρχει τουλάχιστον ένα ευάλωτο σημείο εγγραφής ιστού και τουλάχιστον ένα πρότυπο πιστοποιητικού έχει δημοσιευθεί που επιτρέπει την εγγραφή υπολογιστών τομέα και την πιστοποίηση πελατών (όπως το προεπιλεγμένο Machine
πρότυπο), είναι δυνατόν για οποιονδήποτε υπολογιστή με ενεργή την υπηρεσία spooler να παραβιαστεί από έναν επιτιθέμενο!
Πολλές μεθόδοι εγγραφής βασισμένες σε HTTP υποστηρίζονται από το AD CS, οι οποίες είναι διαθέσιμες μέσω πρόσθετων ρόλων διακομιστή που μπορεί να εγκαταστήσουν οι διαχειριστές. Αυτές οι διεπαφές για την εγγραφή πιστοποιητικών βασισμένων σε HTTP είναι ευάλωτες σε επιθέσεις NTLM relay. Ένας επιτιθέμενος, από μια παραβιασμένη μηχανή, μπορεί να προσποιηθεί οποιονδήποτε λογαριασμό AD που πιστοποιείται μέσω εισερχόμενου NTLM. Ενώ προσποιείται τον λογαριασμό του θύματος, αυτές οι διεπαφές ιστού μπορούν να προσπελαστούν από έναν επιτιθέμενο για να ζητήσει ένα πιστοποιητικό πιστοποίησης πελάτη χρησιμοποιώντας τα πρότυπα πιστοποιητικών User
ή Machine
.
Η διεπαφή εγγραφής ιστού (μια παλαιότερη εφαρμογή ASP διαθέσιμη στο http://<caserver>/certsrv/
), προεπιλέγει μόνο HTTP, το οποίο δεν προσφέρει προστασία κατά των επιθέσεων NTLM relay. Επιπλέον, επιτρέπει ρητά μόνο την πιστοποίηση NTLM μέσω της κεφαλίδας HTTP Authorization, καθιστώντας τις πιο ασφαλείς μεθόδους πιστοποίησης όπως το Kerberos μη εφαρμόσιμες.
Η Υπηρεσία Εγγραφής Πιστοποιητικών (CES), η Πολιτική Εγγραφής Πιστοποιητικών (CEP) Web Service, και η Υπηρεσία Εγγραφής Δικτυακών Συσκευών (NDES) υποστηρίζουν προεπιλεγμένα την πιστοποίηση negotiate μέσω της κεφαλίδας HTTP Authorization τους. Η πιστοποίηση negotiate υποστηρίζει και τις δύο Kerberos και NTLM, επιτρέποντας σε έναν επιτιθέμενο να υποβαθμίσει την πιστοποίηση σε NTLM κατά τη διάρκεια επιθέσεων relay. Αν και αυτές οι διαδικτυακές υπηρεσίες ενεργοποιούν το HTTPS προεπιλεγμένα, το HTTPS από μόνο του δεν προστατεύει από επιθέσεις NTLM relay. Η προστασία από επιθέσεις NTLM relay για υπηρεσίες HTTPS είναι δυνατή μόνο όταν το HTTPS συνδυάζεται με την δέσμευση καναλιού. Δυστυχώς, το AD CS δεν ενεργοποιεί την Επεκτεταμένη Προστασία για Πιστοποίηση στο IIS, η οποία απαιτείται για την δέσμευση καναλιού.
Ένα κοινό πρόβλημα με τις επιθέσεις NTLM relay είναι η σύντομη διάρκεια των συνεδριών NTLM και η αδυναμία του επιτιθέμενου να αλληλεπιδράσει με υπηρεσίες που απαιτούν υπογραφή NTLM.
Ωστόσο, αυτός ο περιορισμός ξεπερνιέται εκμεταλλευόμενος μια επίθεση NTLM relay για να αποκτήσει ένα πιστοποιητικό για τον χρήστη, καθώς η διάρκεια ισχύος του πιστοποιητικού καθορίζει τη διάρκεια της συνεδρίας, και το πιστοποιητικό μπορεί να χρησιμοποιηθεί με υπηρεσίες που επιβάλλουν υπογραφή NTLM. Για οδηγίες σχετικά με τη χρήση ενός κλεμμένου πιστοποιητικού, ανατρέξτε σε:
AD CS Account PersistenceΈνας άλλος περιορισμός των επιθέσεων NTLM relay είναι ότι μια μηχανή που ελέγχεται από τον επιτιθέμενο πρέπει να πιστοποιηθεί από έναν λογαριασμό θύματος. Ο επιτιθέμενος θα μπορούσε είτε να περιμένει είτε να προσπαθήσει να επιβάλει αυτή την πιστοποίηση:
Force NTLM Privileged AuthenticationCertify’s cas
καταμετρά ενεργοποιημένα HTTP AD CS endpoints:
Η ιδιότητα msPKI-Enrollment-Servers
χρησιμοποιείται από τις επιχειρηματικές Αρχές Πιστοποίησης (CAs) για να αποθηκεύει τα σημεία τερματισμού Υπηρεσίας Εγγραφής Πιστοποιητικών (CES). Αυτά τα σημεία τερματισμού μπορούν να αναλυθούν και να καταγραφούν χρησιμοποιώντας το εργαλείο Certutil.exe:
```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ```
Η αίτηση για ένα πιστοποιητικό γίνεται από το Certipy από προεπιλογή με βάση το πρότυπο Machine
ή User
, που καθορίζεται από το αν το όνομα του λογαριασμού που αναμεταδίδεται τελειώνει σε $
. Η καθορισμός ενός εναλλακτικού προτύπου μπορεί να επιτευχθεί μέσω της χρήσης της παραμέτρου -template
.
Μια τεχνική όπως το PetitPotam μπορεί στη συνέχεια να χρησιμοποιηθεί για να εξαναγκάσει την αυθεντικοποίηση. Όταν ασχολείστε με ελεγκτές τομέα, απαιτείται ο καθορισμός του -template DomainController
.
Η νέα τιμή CT_FLAG_NO_SECURITY_EXTENSION
(0x80000
) για msPKI-Enrollment-Flag
, που αναφέρεται ως ESC9, αποτρέπει την ενσωμάτωση της νέας szOID_NTDS_CA_SECURITY_EXT
ασφάλειας σε ένα πιστοποιητικό. Αυτή η σημαία γίνεται σχετική όταν το StrongCertificateBindingEnforcement
είναι ρυθμισμένο σε 1
(η προεπιλεγμένη ρύθμιση), κάτι που αντιτίθεται σε μια ρύθμιση 2
. Η σημασία της αυξάνεται σε σενάρια όπου μια πιο αδύναμη αντιστοίχιση πιστοποιητικού για Kerberos ή Schannel θα μπορούσε να εκμεταλλευτεί (όπως στο ESC10), δεδομένου ότι η απουσία του ESC9 δεν θα άλλαζε τις απαιτήσεις.
Οι συνθήκες υπό τις οποίες η ρύθμιση αυτής της σημαίας γίνεται σημαντική περιλαμβάνουν:
Το StrongCertificateBindingEnforcement
δεν έχει ρυθμιστεί σε 2
(με την προεπιλεγμένη να είναι 1
), ή οι CertificateMappingMethods
περιλαμβάνουν τη σημαία UPN
.
Το πιστοποιητικό είναι σημειωμένο με τη σημαία CT_FLAG_NO_SECURITY_EXTENSION
εντός της ρύθμισης msPKI-Enrollment-Flag
.
Οποιοδήποτε EKU πιστοποίησης πελάτη καθορίζεται από το πιστοποιητικό.
Οι άδειες GenericWrite
είναι διαθέσιμες σε οποιονδήποτε λογαριασμό για να συμβιβαστεί άλλος.
Ας υποθέσουμε ότι ο John@corp.local
κατέχει άδειες GenericWrite
πάνω στον Jane@corp.local
, με στόχο να συμβιβάσει τον Administrator@corp.local
. Το πρότυπο πιστοποιητικού ESC9
, στο οποίο επιτρέπεται η εγγραφή της Jane@corp.local
, είναι ρυθμισμένο με τη σημαία CT_FLAG_NO_SECURITY_EXTENSION
στην ρύθμιση msPKI-Enrollment-Flag
.
Αρχικά, το hash της Jane
αποκτάται χρησιμοποιώντας Shadow Credentials, χάρη στον GenericWrite
του John
:
Στη συνέχεια, το userPrincipalName
της Jane
τροποποιείται σε Administrator
, παραλείποντας σκόπιμα το μέρος του τομέα @corp.local
:
Αυτή η τροποποίηση δεν παραβιάζει τους περιορισμούς, δεδομένου ότι το Administrator@corp.local
παραμένει διακριτό ως το userPrincipalName
του Administrator
.
Ακολουθώντας αυτό, το πρότυπο πιστοποιητικού ESC9
, που έχει χαρακτηριστεί ευάλωτο, ζητείται ως Jane
:
Σημειώνεται ότι το userPrincipalName
του πιστοποιητικού αντικατοπτρίζει τον Administrator
, χωρίς κανένα “object SID”.
Το userPrincipalName
της Jane
επιστρέφει τότε στην αρχική της, Jane@corp.local
:
Απο attempting authentication με το εκδοθέν πιστοποιητικό τώρα αποδίδει το NT hash του Administrator@corp.local
. Η εντολή πρέπει να περιλαμβάνει -domain <domain>
λόγω της έλλειψης καθορισμού τομέα από το πιστοποιητικό:
Δύο τιμές κλειδιών μητρώου στον ελεγκτή τομέα αναφέρονται από το ESC10:
Η προεπιλεγμένη τιμή για CertificateMappingMethods
κάτω από HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel
είναι 0x18
(0x8 | 0x10
), προηγουμένως ρυθμισμένη σε 0x1F
.
Η προεπιλεγμένη ρύθμιση για StrongCertificateBindingEnforcement
κάτω από HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
είναι 1
, προηγουμένως 0
.
Case 1
Όταν το StrongCertificateBindingEnforcement
είναι ρυθμισμένο σε 0
.
Case 2
Εάν το CertificateMappingMethods
περιλαμβάνει το bit UPN
(0x4
).
Με το StrongCertificateBindingEnforcement
ρυθμισμένο σε 0
, ένας λογαριασμός A με δικαιώματα GenericWrite
μπορεί να εκμεταλλευτεί για να συμβιβάσει οποιονδήποτε λογαριασμό B.
Για παράδειγμα, έχοντας δικαιώματα GenericWrite
πάνω από Jane@corp.local
, ένας επιτιθέμενος στοχεύει να συμβιβάσει το Administrator@corp.local
. Η διαδικασία αντικατοπτρίζει το ESC9, επιτρέποντας τη χρήση οποιουδήποτε προτύπου πιστοποιητικού.
Αρχικά, το hash της Jane
ανακτάται χρησιμοποιώντας Shadow Credentials, εκμεταλλευόμενο το GenericWrite
.
Στη συνέχεια, το userPrincipalName
της Jane
τροποποιείται σε Administrator
, παραλείποντας σκόπιμα το τμήμα @corp.local
για να αποφευχθεί μια παραβίαση περιορισμού.
Ακολουθώντας αυτό, ζητείται ένα πιστοποιητικό που επιτρέπει την πιστοποίηση πελάτη ως Jane
, χρησιμοποιώντας το προεπιλεγμένο πρότυπο User
.
Jane
's userPrincipalName
επιστρέφει τότε στην αρχική του μορφή, Jane@corp.local
.
Η πιστοποίηση με το αποκτηθέν πιστοποιητικό θα αποφέρει το NT hash του Administrator@corp.local
, απαιτώντας τον καθορισμό του τομέα στην εντολή λόγω της απουσίας λεπτομερειών τομέα στο πιστοποιητικό.
Με το CertificateMappingMethods
να περιέχει το UPN
bit flag (0x4
), ένας λογαριασμός A με δικαιώματα GenericWrite
μπορεί να συμβιβάσει οποιονδήποτε λογαριασμό B που δεν έχει ιδιότητα userPrincipalName
, συμπεριλαμβανομένων των λογαριασμών μηχανών και του ενσωματωμένου τοπικού διαχειριστή τομέα Administrator
.
Εδώ, ο στόχος είναι να συμβιβαστεί το DC$@corp.local
, ξεκινώντας με την απόκτηση του hash της Jane
μέσω Shadow Credentials, εκμεταλλευόμενοι το GenericWrite
.
Jane
's userPrincipalName
είναι τότε ρυθμισμένο σε DC$@corp.local
.
Ένα πιστοποιητικό για την πιστοποίηση πελάτη ζητείται ως Jane
χρησιμοποιώντας το προεπιλεγμένο πρότυπο User
.
Jane
's userPrincipalName
επιστρέφει στην αρχική του κατάσταση μετά από αυτή τη διαδικασία.
Για να αυθεντικοποιηθεί μέσω Schannel, χρησιμοποιείται η επιλογή -ldap-shell
του Certipy, υποδεικνύοντας την επιτυχία της αυθεντικοποίησης ως u:CORP\DC$
.
Μέσω του LDAP shell, εντολές όπως set_rbcd
επιτρέπουν επιθέσεις Resource-Based Constrained Delegation (RBCD), ενδεχομένως θέτοντας σε κίνδυνο τον ελεγκτή τομέα.
Αυτή η ευπάθεια επεκτείνεται επίσης σε οποιονδήποτε λογαριασμό χρήστη που δεν έχει userPrincipalName
ή όπου δεν ταιριάζει με το sAMAccountName
, με τον προεπιλεγμένο Administrator@corp.local
να είναι ένας κύριος στόχος λόγω των ανυψωμένων LDAP δικαιωμάτων του και της απουσίας userPrincipalName
από προεπιλογή.
Εάν ο CA Server δεν είναι ρυθμισμένος με IF_ENFORCEENCRYPTICERTREQUEST
, μπορεί να πραγματοποιηθούν επιθέσεις NTLM relay χωρίς υπογραφή μέσω της υπηρεσίας RPC. Reference in here.
Μπορείτε να χρησιμοποιήσετε το certipy
για να καταγράψετε αν η Enforce Encryption for Requests
είναι απενεργοποιημένη και το certipy θα δείξει τις ευπάθειες ESC11
.
Πρέπει να ρυθμιστεί ένας διακομιστής αναμετάδοσης:
Σημείωση: Για τους ελεγκτές τομέα, πρέπει να καθορίσουμε -template
στο DomainController.
Ή χρησιμοποιώντας το fork του sploutchy από το impacket:
Οι διαχειριστές μπορούν να ρυθμίσουν την Αρχή Πιστοποίησης για να την αποθηκεύσουν σε μια εξωτερική συσκευή όπως το "Yubico YubiHSM2".
Εάν η συσκευή USB είναι συνδεδεμένη στον διακομιστή CA μέσω μιας θύρας USB, ή σε περίπτωση που ο διακομιστής CA είναι εικονική μηχανή, απαιτείται ένα κλειδί αυθεντικοποίησης (μερικές φορές αναφέρεται ως "κωδικός πρόσβασης") για να μπορέσει ο Παροχέας Αποθήκευσης Κλειδιών να δημιουργήσει και να χρησιμοποιήσει κλειδιά στο YubiHSM.
Αυτό το κλειδί/κωδικός πρόσβασης αποθηκεύεται στο μητρώο κάτω από HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword
σε καθαρό κείμενο.
Αναφορά εδώ.
Εάν το ιδιωτικό κλειδί της CA είναι αποθηκευμένο σε μια φυσική συσκευή USB όταν αποκτήσετε πρόσβαση σε shell, είναι δυνατόν να ανακτηθεί το κλειδί.
Αρχικά, πρέπει να αποκτήσετε το πιστοποιητικό CA (αυτό είναι δημόσιο) και στη συνέχεια:
Τέλος, χρησιμοποιήστε την εντολή certutil -sign
για να πλαστογραφήσετε ένα νέο αυθαίρετο πιστοποιητικό χρησιμοποιώντας το πιστοποιητικό CA και το ιδιωτικό του κλειδί.
Το χαρακτηριστικό msPKI-Certificate-Policy
επιτρέπει την προσθήκη της πολιτικής έκδοσης στο πρότυπο πιστοποιητικού. Τα αντικείμενα msPKI-Enterprise-Oid
που είναι υπεύθυνα για την έκδοση πολιτικών μπορούν να ανακαλυφθούν στο Configuration Naming Context (CN=OID,CN=Public Key Services,CN=Services) του κοντέινερ PKI OID. Μια πολιτική μπορεί να συνδεθεί με μια ομάδα AD χρησιμοποιώντας το χαρακτηριστικό msDS-OIDToGroupLink
αυτού του αντικειμένου, επιτρέποντας σε ένα σύστημα να εξουσιοδοτήσει έναν χρήστη που παρουσιάζει το πιστοποιητικό σαν να ήταν μέλος της ομάδας. Αναφορά εδώ.
Με άλλα λόγια, όταν ένας χρήστης έχει άδεια να εγγραφεί για ένα πιστοποιητικό και το πιστοποιητικό είναι συνδεδεμένο με μια ομάδα OID, ο χρήστης μπορεί να κληρονομήσει τα προνόμια αυτής της ομάδας.
Χρησιμοποιήστε το Check-ADCSESC13.ps1 για να βρείτε το OIDToGroupLink:
Βρείτε μια άδεια χρήστη που μπορεί να χρησιμοποιήσει certipy find
ή Certify.exe find /showAllPermissions
.
Εάν ο John
έχει άδεια να εγγραφεί στο VulnerableTemplate
, ο χρήστης μπορεί να κληρονομήσει τα προνόμια της ομάδας VulnerableGroup
.
Το μόνο που χρειάζεται να κάνει είναι να καθορίσει το πρότυπο, θα αποκτήσει ένα πιστοποιητικό με δικαιώματα OIDToGroupLink.
Η ρύθμιση για διασυνοριακή εγγραφή είναι σχετικά απλή. Το πιστοποιητικό ρίζας CA από το δάσος πόρων δημοσιεύεται στα δάση λογαριασμών από τους διαχειριστές, και τα πιστοποιητικά CA επιχείρησης από το δάσος πόρων προστίθενται στα NTAuthCertificates
και AIA containers σε κάθε δάσος λογαριασμού. Για να διευκρινιστεί, αυτή η ρύθμιση παρέχει στον CA στο δάσος πόρων πλήρη έλεγχο σε όλα τα άλλα δάση για τα οποία διαχειρίζεται το PKI. Εάν αυτή η CA συμβιβαστεί από επιτιθέμενους, πιστοποιητικά για όλους τους χρήστες και στα δύο δάση, πόρων και λογαριασμών, θα μπορούσαν να παραποιηθούν από αυτούς, σπάζοντας έτσι το όριο ασφαλείας του δάσους.
Σε περιβάλλοντα πολλών δασών, απαιτείται προσοχή σχετικά με τις CA επιχείρησης που δημοσιεύουν πρότυπα πιστοποιητικών που επιτρέπουν Επικυρωμένους Χρήστες ή ξένους πρίγκιπες (χρήστες/ομάδες εξωτερικοί προς το δάσος στο οποίο ανήκει η CA επιχείρησης) δικαιώματα εγγραφής και επεξεργασίας. Μετά την επικύρωση μέσω ενός δεσμού, το SID Επικυρωμένων Χρηστών προστίθεται στο διακριτικό του χρήστη από το AD. Έτσι, εάν ένα τομέα διαθέτει μια CA επιχείρησης με ένα πρότυπο που επιτρέπει δικαιώματα εγγραφής στους Επικυρωμένους Χρήστες, ένα πρότυπο θα μπορούσε ενδεχομένως να εγγραφεί από έναν χρήστη από ένα διαφορετικό δάσος. Ομοίως, εάν δικαιώματα εγγραφής χορηγούνται ρητά σε έναν ξένο πρίγκιπα από ένα πρότυπο, δημιουργείται μια διασυνοριακή σχέση ελέγχου πρόσβασης, επιτρέποντας σε έναν πρίγκιπα από ένα δάσος να εγγραφεί σε ένα πρότυπο από ένα άλλο δάσος.
Και οι δύο περιπτώσεις οδηγούν σε μια αύξηση της επιφάνειας επίθεσης από ένα δάσος σε άλλο. Οι ρυθμίσεις του προτύπου πιστοποιητικού θα μπορούσαν να εκμεταλλευτούν από έναν επιτιθέμενο για να αποκτήσει επιπλέον δικαιώματα σε έναν ξένο τομέα.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)