AD CS Domain Escalation
Αυτό είναι ένα σύνοψη των τεχνικών ανόδου των τομέων των αναρτήσεων:
Εσφαλμένα Πρότυπα Πιστοποιητικών - ESC1
Εξήγηση
Εξήγηση των Εσφαλμένων Προτύπων Πιστοποιητικών - ESC1
Τα δικαιώματα εγγραφής χορηγούνται σε χρήστες με χαμηλά προνόμια από το Enterprise CA.
Δεν απαιτείται έγκριση διευθυντή.
Δεν απαιτούνται υπογραφές από εξουσιοδοτημένο προσωπικό.
Οι περιγραφείς ασφαλείας στα πρότυπα πιστοποιητικών είναι υπερβολικά επιεικείς, επιτρέποντας σε χρήστες με χαμηλά προνόμια να αποκτήσουν δικαιώματα εγγραφής.
Τα πρότυπα πιστοποιητικών έχουν ρυθμιστεί για να ορίζουν EKUs που διευκολύνουν την πιστοποίηση:
Αναγνωριστικά Χρήσης Επέκτασης Κλειδιών (EKU) όπως Πιστοποίηση Πελάτη (OID 1.3.6.1.5.5.7.3.2), Πιστοποίηση Πελάτη PKINIT (1.3.6.1.5.2.3.4), Σύνδεση Κάρτας Έξυπνης (OID 1.3.6.1.4.1.311.20.2.2), Οποιοσδήποτε Σκοπός (OID 2.5.29.37.0), ή κανένα EKU (SubCA) περιλαμβάνονται.
Η δυνατότητα για τους αιτούντες να συμπεριλάβουν ένα subjectAltName στο Αίτημα Υπογραφής Πιστοποίησης (CSR) επιτρέπεται από το πρότυπο:
Το Active Directory (AD) δίνει προτεραιότητα στο subjectAltName (SAN) σε ένα πιστοποιητικό για τον έλεγχο ταυτότητας εάν είναι παρόν. Αυτό σημαίνει ότι με την καθορισμένη SAN σε ένα CSR, μπορεί να ζητηθεί ένα πιστοποιητικό για να προσομοιώσει οποιονδήποτε χρήστη (π.χ. διαχειριστή τομέα). Εάν ο αιτών μπορεί να καθορίσει μια SAN δηλώνεται στο αντικείμενο AD του προτύπου πιστοποιητικού μέσω της ιδιότητας
mspki-certificate-name-flag
. Αυτή η ιδιότητα είναι ένα bit, και η παρουσία της σημαίαςCT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
επιτρέπει την καθορισμό της SAN από τον αιτούντα.
Η διαμόρφωση που περιγράφεται επιτρέπει σε χρήστες με χαμηλά προνόμια να ζητήσουν πιστοποιητικά με οποιαδήποτε SAN της επιλογής τους, επιτρέποντας την πιστοποίηση ως οποιονδήποτε κύριο τομέα μέσω Kerberos ή SChannel.
Αυτό το χαρακτηριστικό ενεργοποιείται μερικές φορές για να υποστηρίξει τη δυνατότητα δημιουργίας πιστοποιητικών HTTPS ή οικοδεσπότη με την πτήση από προϊόντα ή υπηρεσίες ανάπτυξης, ή λόγω έλλειψης κατανόησης.
Σημειώνεται ότι η δημιουργία ενός πιστοποιητικού με αυτήν την επιλογή ενεργοποιεί έναν προειδοποιητικό μηνύματος, το οποίο δεν συμβαίνει όταν ένα υπάρχον πρότυπο πιστοποιητικού (όπως το πρότυπο 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, ειδικότερα αυτών που δεν απαιτούν έγκριση ή υπογραφές, διαθέτοντας ένα EKU Πιστοποίησης Πελάτη ή Είσοδος με Κάρτα Εξυπηρέτησης, και με τη σημαία CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
ενεργοποιημένη, μπορεί να πραγματοποιηθεί εκτελώντας το ακόλουθο ερώτημα LDAP:
Εσφαλμένα Πρότυπα Πιστοποιητικών - ESC2
Εξήγηση
Το δεύτερο σενάριο κατάχρησης είναι μια παραλλαγή του πρώτου:
Τα δικαιώματα εγγραφής χορηγούνται σε χρήστες με χαμηλά προνόμια από το Enterprise CA.
Η απαίτηση για έγκριση διευθυντή απενεργοποιείται.
Η ανάγκη για εξουσιοδοτημένες υπογραφές παραλείπεται.
Ένα υπερβολικά επιτρεπτικό αποκριτήριο ασφαλείας στο πρότυπο πιστοποιητικού χορηγεί δικαιώματα εγγραφής πιστοποιητικού σε χρήστες με χαμηλά προνόμια.
Το πρότυπο πιστοποιητικού ορίζεται να περιλαμβάνει το Any Purpose EKU ή κανένα EKU.
Το Any Purpose EKU επιτρέπει την απόκτηση ενός πιστοποιητικού από έναν επιτιθέμενο για οποιοδήποτε σκοπό, συμπεριλαμβανομένης της πιστοποίησης πελάτη, της πιστοποίησης διακομιστή, της υπογραφής κώδικα, κλπ. Η ίδια τεχνική που χρησιμοποιείται για το ESC3 μπορεί να χρησιμοποιηθεί για την εκμετάλλευση αυτού του σεναρίου.
Τα πιστοποιητικά με κανένα EKU, τα οποία λειτουργούν ως πιστοποιητικά υποδοχής υπογεγραμμένα από ανώτερη αρχή πιστοποίησης, μπορούν να εκμεταλλευτούν για οποιοδήποτε σκοπό και μπορούν επίσης να χρησιμοποιηθούν για την υπογραφή νέων πιστοποιητικών. Έτσι, ένας επιτιθέμενος θα μπορούσε να καθορίσει τυχαία EKUs ή πεδία στα νέα πιστοποιητικά χρησιμοποιώντας ένα πιστοποιητικό υποδοχής από ανώτερη αρχή πιστοποίησης.
Ωστόσο, τα νέα πιστοποιητικά που δημιουργούνται για πιστοποίηση τομέα δεν θα λειτουργήσουν εάν η υποδοχή υπογεγραμμένη από ανώτερη αρχή πιστοποίησης δεν είναι εμπιστευμένη από το αντικείμενο NTAuthCertificates
, το οποίο είναι η προεπιλεγμένη ρύθμιση. Παρ' όλα αυτά, ένας επιτιθέμενος μπορεί ακόμα να δημιουργήσει νέα πιστοποιητικά με οποιοδήποτε EKU και τυχαίες τιμές πιστοποιητικού. Αυτά θα μπορούσαν πιθανόν να καταχραστούν για μια ευρεία γκάμα σκοπών (π.χ., υπογραφή κώδικα, πιστοποίηση διακομιστή, κλπ.) και θα μπορούσαν να έχουν σημαντικές επιπτώσεις για άλλες εφαρμογές στο δίκτυο όπως SAML, AD FS, ή IPSec.
Για να απαριθμήσετε τα πρότυπα που ταιριάζουν σε αυτό το σενάριο μέσα στο σχήμα διαμόρφωσης του δάσους AD, μπορεί να εκτελεστεί η ακόλουθη ερώτηση LDAP:
Εσφαλμένα Πρότυπα Πράκτορα Εγγραφής - ESC3
Εξήγηση
Αυτό το σενάριο είναι παρόμοιο με το πρώτο και το δεύτερο αλλά καταχράζεται ένα διαφορετικό EKU (Πράκτορας Αίτησης Πιστοποιητικού) και 2 διαφορετικά πρότυπα (επομένως έχει 2 σύνολα απαιτήσεων),
Το EKU του Πράκτορα Αίτησης Πιστοποιητικού (OID 1.3.6.1.4.1.311.20.2.1), γνωστό ως Πράκτορας Εγγραφής στην τεκμηρίωση της Microsoft, επιτρέπει σε έναν αρχέτυπο να εγγραφεί για ένα πιστοποιητικό εκ μέρους ενός άλλου χρήστη.
Ο "πράκτορας εγγραφής" εγγράφεται σε ένα τέτοιο πρότυπο και χρησιμοποιεί το αποτέλεσμα πιστοποιητικό για συνυπογραφή ενός CSR εκ μέρους του άλλου χρήστη. Στη συνέχεια στέλνει το συνυπογεγραμμένο CSR στον CA, εγγράφοντας σε ένα πρότυπο που επιτρέπει την "εγγραφή εκ μέρους", και ο CA απαντά με ένα πιστοποιητικό που ανήκει στον "άλλο" χρήστη.
Απαιτήσεις 1:
Τα δικαιώματα εγγραφής χορηγούνται σε χρήστες με χαμηλά προνόμια από το Enterprise CA.
Η απαίτηση για έγκριση διευθυντή παραλείπεται.
Δεν υπάρχει απαίτηση για εξουσιοδοτημένες υπογραφές.
Ο περιγραφέας ασφαλείας του προτύπου πιστοποιητικού είναι υπερβολικά επιεικής, χορηγώντας δικαιώματα εγγραφής σε χρήστες με χαμηλά προνόμια.
Το πρότυπο πιστοποιητικού περιλαμβάνει το EKU του Πράκτορα Αίτησης Πιστοποιητικού, επιτρέποντας την αίτηση άλλων προτύπων πιστοποιητικών εκ μέρους άλλων αρχετύπων.
Απαιτήσεις 2:
Το Enterprise CA χορηγεί δικαιώματα εγγραφής σε χρήστες με χαμηλά προνόμια.
Η έγκριση διευθυντή παρακάμπτεται.
Η έκδοση σχήματος του προτύπου είναι είτε 1 είτε υπερβαίνει το 2, και καθορίζει μια Απαίτηση Έκδοσης Πολιτικής Εφαρμογής που απαιτεί το EKU του Πράκτορα Αίτησης Πιστοποιητικού.
Ένα EKU που έχει οριστεί στο πρότυπο πιστοποιητικού επιτρέπει την ταυτοποίηση τομέα.
Δεν εφαρμόζονται περιορισμοί για τους πράκτορες εγγραφής στον CA.
Κατάχρηση
Μπορείτε να χρησιμοποιήσετε το Certify ή το Certipy για να καταχραστείτε αυτό το σενάριο:
Οι χρήστες που επιτρέπεται να λάβουν ένα πιστοποιητικό πράκτορα εγγραφής, οι πρότυπα στα οποία οι πράκτορες εγγραφής επιτρέπεται να εγγραφούν και οι λογαριασμοί για τους οποίους μπορεί να ενεργήσει ο πράκτορας εγγραφής μπορούν να περιοριστούν από τις επιχειρησιακές CA. Αυτό επιτυγχάνεται ανοίγοντας το certsrc.msc
snap-in, δεξί κλικ στην CA, κάνοντας κλικ στις ιδιότητες, και στη συνέχεια πλοήγηση στην καρτέλα "Πράκτορες Εγγραφής".
Ωστόσο, σημειώνεται ότι η προεπιλεγμένη ρύθμιση για τις CA είναι "Να μην περιορίζονται οι πράκτορες εγγραφής". Όταν οι διαχειριστές ενεργοποιούν τον περιορισμό στους πράκτορες εγγραφής, ρυθμίζοντάς τον σε "Περιορισμός πράκτορων εγγραφής", η προεπιλεγμένη ρύθμιση παραμένει εξαιρετικά επιεικής. Επιτρέπει σε Όλους την πρόσβαση για εγγραφή σε όλα τα πρότυπα ως οποιονδήποτε.
Ευάλωτος Έλεγχος Πρόσβασης Προτύπου Πιστοποιητικού - ESC4
Εξήγηση
Το αποκριτήριο ασφαλείας στα πρότυπα πιστοποιητικών καθορίζει τα δικαιώματα που κατέχουν συγκεκριμένοι κύριοι AD σχετικά με το πρότυπο.
Αν ένας εισβολέας διαθέτει τα απαιτούμενα δικαιώματα για να τροποποιήσει ένα πρότυπο και να εφαρμόσει οποιεσδήποτε εκμεταλλεύσιμες λανθάνουσες ρυθμίσεις που περιγράφονται σε προηγούμενες ενότητες, θα μπορούσε να διευκολύνει την ανόδο προνομίων.
Σημαντικά δικαιώματα που εφαρμόζονται στα πρότυπα πιστοποιητικών περιλαμβάνουν:
Κάτοχος: Χορηγεί συνειρμικό έλεγχο επί του αντικειμένου, επιτρέποντας την τροποποίηση οποιωνδήποτε χαρακτηριστικών.
Πλήρης Έλεγχος: Επιτρέπει πλήρη εξουσία επί του αντικειμένου, συμπεριλαμβανομένης της δυνατότητας τροποποίησης οποιωνδήποτε χαρακτηριστικών.
ΕγγραφήΚάτοχος: Επιτρέπει την τροποποίηση του κατόχου του αντικειμένου σε έναν κύριο υπό τον έλεγχο του εισβολέα.
ΕγγραφήDacl: Επιτρέπει τη ρύθμιση των ελέγχων πρόσβασης, πιθανώς χορηγώντας σε έναν εισβολέα Πλήρη Έλεγχο.
ΕγγραφήΙδιότητα: Εξουσιοδοτεί την επεξεργασία οποιωνδήποτε ιδιοτήτων αντικειμένου.
Κατάχρηση
Ένα παράδειγμα προηγούμενης ανόδου προνομίων όπως το προηγούμενο:
Το ESC4 είναι όταν ένας χρήστης έχει δικαιώματα εγγραφής σε ένα πρότυπο πιστοποιητικού. Αυτό μπορεί για παράδειγμα να καταχραστεί για να αντικαταστήσει τη διαμόρφωση του προτύπου πιστοποιητικού ώστε να γίνει ευάλωτο για το ESC1.
Όπως βλέπουμε στη διαδρομή παραπάνω, μόνο ο JOHNPC
έχει αυτά τα δικαιώματα, αλλά ο χρήστης μας JOHN
έχει τη νέα άκρη AddKeyCredentialLink
στον JOHNPC
. Καθώς αυτή η τεχνική σχετίζεται με πιστοποιητικά, έχω εφαρμόσει αυτήν την επίθεση επίσης, η οποία είναι γνωστή ως Σκιώδεις Διαπιστεύσεις. Εδώ ένα μικρό sneak peak της εντολής shadow auto
του Certipy για την ανάκτηση του NT hash του θύματος.
Certipy μπορεί να αντικαταστήσει τη διαμόρφωση ενός προτύπου πιστοποιητικού με ένα μόνο πλήκτρο. Από προεπιλογή, το Certipy θα αντικαταστήσει τη διαμόρφωση για να την καθιστά ευάλωτη στο ESC1. Μπορούμε επίσης να καθορίσουμε την παράμετρο -save-old
για να αποθηκεύσουμε την παλιά διαμόρφωση, η οποία θα είναι χρήσιμη για την επαναφορά της διαμόρφωσης μετά την επίθεσή μας.
Ευάλωτος Έλεγχος Πρόσβασης Αντικειμένων PKI - ESC5
Εξήγηση
Το εκτεταμένο δίκτυο συνδεδεμένων σχέσεων βασισμένο σε ACL, το οποίο περιλαμβάνει αρκετά αντικείμενα πέρα από τα πρότυπα πιστοποιητικών και την αρχή πιστοποίησης, μπορεί να επηρεάσει την ασφάλεια ολόκληρου του συστήματος AD CS. Αυτά τα αντικείμενα, τα οποία μπορούν να επηρεάσουν σημαντικά την ασφάλεια, περιλαμβάνουν:
Το αντικείμενο υπολογιστή AD του διακομιστή CA, το οποίο ενδέχεται να διαρρεύσει μέσω μηχανισμών όπως το S4U2Self ή το S4U2Proxy.
Ο διακομιστής RPC/DCOM του διακομιστή CA.
Οποιοδήποτε κατώτερο αντικείμενο ή δοχείο AD εντός της συγκεκριμένης διαδρομής δοχείου
CN=Δημόσιες Υπηρεσίες Κλειδιών,CN=Υπηρεσίες,CN=Διαμόρφωση,DC=<DOMAIN>,DC=<COM>
. Αυτή η διαδρομή περιλαμβάνει, αλλά δεν περιορίζεται σε, δοχεία και αντικείμενα όπως το δοχείο Πρότυπα Πιστοποιητικών, το δοχείο Αρχές Πιστοποίησης, το αντικείμενο NTAuthCertificates και το Δοχείο Υπηρεσιών Εγγραφής.
Η ασφάλεια του συστήματος PKI μπορεί να διακινδυνευτεί εάν ένας χρήστης με χαμηλά προνόμια καταφέρει να αναλάβει τον έλεγχο επί οποιουδήποτε από αυτά τα κρίσιμα στοιχεία.
EDITF_ATTRIBUTESUBJECTALTNAME2 - ESC6
Εξήγηση
Το θέμα που συζητήθηκε στην ανάρτηση της 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 πάνω από τη νέα επέκταση ασφαλείας.
Ευάλωτος Έλεγχος Πρόσβασης Αρχής Πιστοποίησης - ESC7
Επίθεση 1
Εξήγηση
Ο έλεγχος πρόσβασης για μια αρχή πιστοποίησης διατηρείται μέσω ενός συνόλου δικαιωμάτων που ελέγχουν τις ενέργειες της CA. Αυτά τα δικαιώματα μπορούν να προβληθούν από την πρόσβαση στο certsrv.msc
, δεξί κλικ σε μια CA, επιλογή ιδιοτήτων και στη συνέχεια πλοήγηση στην καρτέλα Ασφάλειας. Επιπλέον, τα δικαιώματα μπορούν να απαριθμηθούν χρησιμοποιώντας το module PSPKI με εντολές όπως:
Αυτό παρέχει εισαγωγή στα κύρια δικαιώματα, δηλαδή τα ManageCA
και ManageCertificates
, που αντιστοιχούν στους ρόλους του "διαχειριστή CA" και "Διαχειριστή Πιστοποιητικών" αντίστοιχα.
Κατάχρηση
Έχοντας δικαιώματα ManageCA
σε έναν αρμόδιο για πιστοποιητικά εξουσιοδοτημένο, ο υποκείμενος μπορεί να ρυθμίσει τις ρυθμίσεις απομακρυσμένα χρησιμοποιώντας το PSPKI. Αυτό περιλαμβάνει την εναλλαγή της σημαίας EDITF_ATTRIBUTESUBJECTALTNAME2
για να επιτραπεί η προδιαγραφή SAN σε οποιοδήποτε πρότυπο, ένα κρίσιμο στοιχείο της ανόδου τομέα.
Η απλοποίηση αυτής της διαδικασίας είναι εφικτή μέσω της χρήσης της εντολής Enable-PolicyModuleFlag του PSPKI, επιτρέποντας τροποποιήσεις χωρίς άμεση διαδραστικότητα GUI.
Η κατοχή δικαιωμάτων ManageCertificates
διευκολύνει την έγκριση εκκρεμών αιτημάτων, παρακάμπτοντας αποτελεσματικά την προστασία "έγκρισης διαχειριστή πιστοποιητικού CA".
Μια συνδυασμένη χρήση των ενοτήτων Certify και PSPKI μπορεί να χρησιμοποιηθεί για να ζητηθεί, εγκριθεί και κατεβάσει ένα πιστοποιητικό:
Επίθεση 2
Εξήγηση
Στην προηγούμενη επίθεση χρησιμοποιήθηκαν οι άδειες Manage CA
για να ενεργοποιηθεί η σημαία EDITF_ATTRIBUTESUBJECTALTNAME2 για την εκτέλεση της επίθεσης ESC6, αλλά αυτό δεν θα έχει κανένα αποτέλεσμα μέχρι να επανεκκινηθεί η υπηρεσία CA (CertSvc
). Όταν ένας χρήστης έχει το δικαίωμα πρόσβασης Manage CA
, του επιτρέπεται επίσης να επανεκκινήσει την υπηρεσία. Ωστόσο, αυτό δεν σημαίνει ότι ο χρήστης μπορεί να επανεκκινήσει την υπηρεσία απομακρυσμένα. Επιπλέον, η ESC6 ενδέχεται να μην λειτουργήσει απευθείας σε περισσότερα περιβάλλοντα με ενημερώσεις ασφαλείας από τον Μάιο του 2022.
Επομένως, παρουσιάζεται εδώ μια άλλη επίθεση.
Προϋποθέσεις:
Μόνο άδεια
ManageCA
Άδεια
Manage Certificates
(μπορεί να χορηγηθεί από τοManageCA
)Το πρότυπο πιστοποιητικού
SubCA
πρέπει να είναι ενεργοποιημένο (μπορεί να ενεργοποιηθεί από τοManageCA
)
Η τεχνική βασίζεται στο γεγονός ότι οι χρήστες με το δικαίωμα πρόσβασης Manage CA
και Manage Certificates
μπορούν να εκδώσουν αιτήσεις πιστοποιητικών που αποτυγχάνουν. Το πρότυπο πιστοποιητικού SubCA
είναι ευάλωτο στην ESC1, αλλά μόνο οι διαχειριστές μπορούν να εγγραφούν στο πρότυπο. Έτσι, ένας χρήστης μπορεί να ζητήσει να εγγραφεί στο SubCA
- το οποίο θα αρνηθείται - αλλά στη συνέχεια να εκδοθεί από τον διαχειριστή.
Κατάχρηση
Μπορείτε να χορηγήσετε στον εαυτό σας το δικαίωμα πρόσβασης Manage Certificates
προσθέτοντας τον χρήστη σας ως νέο υπάλληλο.
Ο πρότυπο SubCA
μπορεί να ενεργοποιηθεί στο CA με την παράμετρο -enable-template
. Από προεπιλογή, το πρότυπο SubCA
είναι ενεργοποιημένο.
Αν έχουμε πληρούνται τις προϋποθέσεις για αυτήν την επίθεση, μπορούμε να ξεκινήσουμε με το αίτημα ενός πιστοποιητικού βασισμένο στο πρότυπο SubCA
.
Αυτό το αίτημα θα απορριφθεί, αλλά θα αποθηκεύσουμε τον ιδιωτικό κλειδί και θα καταγράψουμε τον αριθμό αίτησης.
Με τα Manage CA
και Manage Certificates
μπορούμε στη συνέχεια να εκδώσουμε το αποτυχημένο πιστοποιητικό αίτηση με την εντολή ca
και την παράμετρο -issue-request <request ID>
.
Και τελικά, μπορούμε να ανακτήσουμε το εκδοθέν πιστοποιητικό με την εντολή req
και την παράμετρο -retrieve <request ID>
.
Προώθηση NTLM σε HTTP Σημεία Άκρης του AD CS - ESC8
Εξήγηση
Σε περιβάλλοντα όπου είναι εγκατεστημένο το AD CS, εάν υπάρχει ένα ευάλωτο σημείο άκρης web εγγραφής και τουλάχιστον ένα πρότυπο πιστοποιητικού που είναι δημοσιευμένο και επιτρέπει την εγγραφή υπολογιστή τομέα και την πιστοποίηση πελάτη (όπως το προεπιλεγμένο πρότυπο Machine
), γίνεται δυνατή η διακίνηση ενός υπολογιστή με ενεργή υπηρεσία spooler από έναν επιτιθέμενο!
Πολλές μέθοδοι εγγραφής βασισμένες σε HTTP υποστηρίζονται από το AD CS, διατίθενται μέσω επιπλέον ρόλων διακομιστή που οι διαχειριστές μπορεί να εγκαταστήσουν. Αυτές οι διεπαφές για την εγγραφή πιστοποιητικών βασισμένες σε HTTP είναι ευάλωτες σε επιθέσεις NTLM relay. Ένας επιτιθέμενος, από ένα υπολογιστή που έχει διαρρεύσει, μπορεί να προσωποποιήσει οποιονδήποτε λογαριασμό AD που πιστοποιείται μέσω εισερχόμενου NTLM. Προσωποποιώντας τον λογαριασμό θύματος, αυτές οι διεπαφές web μπορούν να προσπελαστούν από έναν επιτιθέμενο για να ζητήσει ένα πιστοποιητικό πιστοποίησης πελάτη χρησιμοποιώντας τα πρότυπα πιστοποιητικών User
ή Machine
.
Η διεπαφή εγγραφής web (μια παλαιότερη εφαρμογή ASP διαθέσιμη στο
http://<caserver>/certsrv/
), προεπιλογής λειτουργεί μόνο με HTTP, το οποίο δεν προσφέρει προστασία ενάντια σε επιθέσεις NTLM relay. Επιπλέον, επιτρέπει ρητά μόνο την πιστοποίηση NTLM μέσω της κεφαλίδας HTTP Authorization της, καθιστώντας ανεφάρμοστες πιο ασφαλείς μεθόδους πιστοποίησης όπως το Kerberos.Η Υπηρεσία Εγγραφής Πιστοποιητικών (CES), η Υπηρεσία Πολιτικής Εγγραφής Πιστοποιητικών (CEP) και η Υπηρεσία Εγγραφής Συσκευών Δικτύου (NDES) υποστηρίζουν προεπιλεγμένα τη διαπραγμάτευση πιστοποίησης μέσω της κεφαλίδας HTTP Authorization τους. Η διαπραγμάτευση πιστοποίησης υποστηρίζει τόσο το Kerberos όσο και το NTLM, επιτρέποντας σε έναν επιτιθέμενο να υποβαθμίσει σε NTLM πιστοποίηση κατά τις επιθέσεις relay. Αν και αυτές οι υπηρεσίες web ενεργοποιούν το HTTPS από προεπιλογή, το HTTPS μόνο του δεν προστατεύει ενάντια σε επιθέσεις NTLM relay. Η προστασία από επιθέσεις NTLM relay για υπηρεσίες HTTPS είναι δυνατή μόνο όταν το HTTPS συνδυάζεται με channel binding. Δυστυχώς, το AD CS δεν ενεργοποιεί την Επέκταση Προστασίας για Πιστοποίηση στο IIS, η οποία απαιτείται για το channel binding.
Ένα συνηθισμένο πρόβλημα με τις επιθέσεις NTLM relay είναι η σύντομη διάρκεια των συνεδριών NTLM και η ανικανότητα του επιτιθέμενου να αλληλεπιδράσει με υπηρεσίες που απαιτούν υπογραφή NTLM.
Ωστόσο, αυτό το περιορισμό ξεπερνιέται με την εκμετάλλευση μιας επίθεσης NTLM relay για να αποκτηθεί ένα πιστοποιητικό για τον χρήστη, καθώς η περίοδος ισχύος του πιστοποιητικού καθορίζει τη διάρκεια της συνεδρίας και το πιστοποιητικό μπορεί να χρησιμοποιηθεί με υπηρεσίες που απαιτούν υπογραφή NTLM. Για οδηγίες σχετικά με τη χρήση ενός κλεμμένου πιστοποιητικού, ανατρέξτε στο:
pageAD CS Account PersistenceΈνας άλλος περιορισμός των επιθέσεων NTLM relay είναι ότι ένα μηχάνημα που ελέγχεται από τον επιτιθέμενο πρέπει να πιστοποιηθεί από ένα λογαριασμό θύματος. Ο επιτιθέμενος μπορεί είτε να περιμένει είτε να προσπαθήσει να αναγκάσει αυτήν την πιστοποίηση:
pageForce NTLM Privileged AuthenticationΚατάχρηση
Certify το cas
απαριθμεί τα ενεργοποιημένα HTTP σημεία άκρης του AD CS:
Η ιδιότητα msPKI-Enrollment-Servers
χρησιμοποιείται από επιχειρηματικές Αρχές Πιστοποίησης (CAs) για να αποθηκεύουν τα σημεία Υπηρεσίας Εγγραφής Πιστοποιητικών (CES). Αυτά τα σημεία μπορούν να αναλυθούν και να καταχωρηθούν χρησιμοποιώντας το εργαλείο Certutil.exe:
```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ```
Κατάχρηση με Certify
Κατάχρηση με το Certipy
Το αίτημα για ένα πιστοποιητικό γίνεται από το Certipy από προεπιλογή με βάση το πρότυπο Machine
ή User
, που καθορίζεται από το εάν το όνομα λογαριασμού που μεταδίδεται τελειώνει σε $
. Η καθορισμός ενός εναλλακτικού προτύπου μπορεί να επιτευχθεί μέσω της χρήσης της παραμέτρου -template
.
Μια τεχνική όπως το PetitPotam μπορεί στη συνέχεια να χρησιμοποιηθεί για να επιβάλει την ταυτοποίηση. Όταν ασχολείστε με ελεγκτές τομέων, απαιτείται η καθορισμός της παραμέτρου -template DomainController
.
Χωρίς Επέκταση Ασφάλειας - ESC9
Εξήγηση
Η νέα τιμή 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
.
Αρχικά, η κρυπτογράφηση της 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
:
Η προσπάθεια πιστοποίησης με το εκδοθέν πιστοποιητικό τώρα επιστρέφει το NT hash του Administrator@corp.local
. Η εντολή πρέπει να περιλαμβάνει το -domain <domain>
λόγω έλλειψης καθορισμού του τομέα στο πιστοποιητικό:
Αδύναμες Αντιστοιχίσεις Πιστοποιητικών - ESC10
Εξήγηση
Δύο τιμές κλειδιών μητρώου στον ελεγκτή τομέα αναφέρονται από το ESC10:
Η προεπιλεγμένη τιμή για το
CertificateMappingMethods
κάτω απόHKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel
είναι0x18
(0x8 | 0x10
), προηγουμένως ρυθμισμένη σε0x1F
.Η προεπιλεγμένη ρύθμιση για το
StrongCertificateBindingEnforcement
κάτω απόHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
είναι1
, προηγουμένως0
.
Περίπτωση 1
Όταν το StrongCertificateBindingEnforcement
ρυθμίζεται ως 0
.
Περίπτωση 2
Εάν το CertificateMappingMethods
περιλαμβάνει το bit UPN
(0x4
).
Περίπτωση Κατάχρησης 1
Με το StrongCertificateBindingEnforcement
ρυθμισμένο ως 0
, ένας λογαριασμός Α με δικαιώματα GenericWrite
μπορεί να εκμεταλλευτεί για να διακινδυνεύσει οποιονδήποτε λογαριασμό Β.
Για παράδειγμα, έχοντας δικαιώματα GenericWrite
πάνω στο Jane@corp.local
, ένας επιτιθέμενος στοχεύει να διακινδυνεύσει τον Administrator@corp.local
. Η διαδικασία αντικατοπτρίζει το ESC9, επιτρέποντας τη χρήση οποιουδήποτε προτύπου πιστοποιητικού.
Αρχικά, η κρυπτογράφηση του Jane
ανακτάται χρησιμοποιώντας τα Shadow Credentials, εκμεταλλευόμενη το GenericWrite
.
Στη συνέχεια, το userPrincipalName
της Jane
τροποποιείται σε Administrator
, προσβλητικά παραλείποντας το τμήμα @corp.local
για να αποφευχθεί μια παραβίαση περιορισμού.
Ακολουθώντας αυτό, ζητείται ένα πιστοποιητικό που επιτρέπει την πιστοποίηση του πελάτη ως Jane
, χρησιμοποιώντας το προεπιλεγμένο πρότυπο User
.
Jane
's userPrincipalName
επαναφέρεται στην αρχική του τιμή, Jane@corp.local
.
Η πιστοποίηση με το ληφθέν πιστοποιητικό θα παράγει το NT hash του Administrator@corp.local
, απαιτώντας την καθορισμό του τομέα στην εντολή λόγω της απουσίας λεπτομερειών του τομέα στο πιστοποιητικό.
Περίπτωση Κατάχρησης 2
Με το CertificateMappingMethods
περιέχοντας το bit flag UPN
(0x4
), ένας λογαριασμός Α με δικαιώματα GenericWrite
μπορεί να εκμεταλλευτεί οποιονδήποτε λογαριασμό Β που λείπει το χαρακτηριστικό userPrincipalName
, συμπεριλαμβανομένων των λογαριασμών μηχανών και του ενσωματωμένου διαχειριστή του τομέα Administrator
.
Εδώ, ο στόχος είναι να διαρρεύσει ο λογαριασμός DC$@corp.local
, ξεκινώντας με την απόκτηση του hash της Jane
μέσω των Shadow Credentials, εκμεταλλευόμενος το GenericWrite
.
Jane
's userPrincipalName
ορίζεται στο DC$@corp.local
.
Ένα πιστοποιητικό για την πιστοποίηση του πελάτη ζητείται ως Jane
χρησιμοποιώντας το προεπιλεγμένο πρότυπο Χρήστη
.
Jane
's userPrincipalName
επαναφέρεται στην αρχική του κατάσταση μετά από αυτήν τη διαδικασία.
Για να πιστοποιηθεί μέσω του Schannel, χρησιμοποιείται η επιλογή -ldap-shell
του Certipy, ενώ η επιτυχία πιστοποίησης εμφανίζεται ως u:CORP\DC$
.
Μέσω του LDAP κέλυφους, εντολές όπως το set_rbcd
ενεργοποιούν επιθέσεις Resource-Based Constrained Delegation (RBCD), που μπορεί να θέσουν σε κίνδυνο τον ελεγκτή του τομέα.
Αυτή η ευπάθεια επεκτείνεται επίσης σε οποιονδήποτε λογαριασμό χρήστη που λείπει το userPrincipalName
ή όπου δεν ταιριάζει με το sAMAccountName
, με το προεπιλεγμένο Administrator@corp.local
να είναι ένας κύριος στόχος λόγω των υψηλών προνομίων LDAP και της απουσίας ενός userPrincipalName
από προεπιλογή.
Προώθηση NTLM στο ICPR - ESC11
Εξήγηση
Εάν ο Διακομιστής CA δεν έχει ρυθμιστεί με το IF_ENFORCEENCRYPTICERTREQUEST
, μπορεί να πραγματοποιήσει επιθέσεις ανακατεύθυνσης NTLM χωρίς υπογραφή μέσω της υπηρεσίας RPC. Αναφορά εδώ.
Μπορείτε να χρησιμοποιήσετε το certipy
για να απαριθμήσετε εάν η Επιβολή Κρυπτογράφησης για Αιτήσεις
είναι απενεργοποιημένη και το certipy
θα εμφανίσει τις ευπάθειες ESC11
.
Σενάριο Κατάχρησης
Χρειάζεται να δημιουργήσετε έναν διακομιστή αναμετάδοσης:
Σημείωση: Για τους ελεγκτές τομέα, πρέπει να καθορίσουμε το -template
στο DomainController.
Ή χρησιμοποιώντας το fork του sploutchy του impacket :
Πρόσβαση κέλυφους στον ADCS CA με YubiHSM - ESC12
Εξήγηση
Οι διαχειριστές μπορούν να ρυθμίσουν την Αρχή Πιστοποίησης για να την αποθηκεύσουν σε μια εξωτερική συσκευή όπως το "Yubico YubiHSM2".
Εάν η συσκευή USB συνδέεται στον διακομιστή CA μέσω θύρας USB, ή μέσω ενός διακομιστή συσκευών USB στην περίπτωση που ο διακομιστής CA είναι εικονική μηχανή, απαιτείται ένα κλειδί ελέγχου ταυτότητας (μερικές φορές αναφέρεται ως "κωδικός πρόσβασης") για τον Πάροχο Αποθήκευσης Κλειδιών για τη δημιουργία και χρήση κλειδιών στο YubiHSM.
Αυτό το κλειδί/κωδικός πρόσβασης αποθηκεύεται στο μητρώο υπό HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword
σε καθαρό κείμενο.
Αναφορά στο εδώ.
Σενάριο Κατάχρησης
Αν ο ιδιωτικός κλειδί της CA αποθηκεύεται σε μια φυσική συσκευή USB και έχετε πρόσβαση στο κέλυφος, είναι δυνατή η ανάκτηση του κλειδιού.
Αρχικά, πρέπει να αποκτήσετε το πιστοποιητικό της CA (αυτό είναι δημόσιο) και στη συνέχεια:
Κατάχρηση Συνδέσμου Ομάδας OID - ESC13
Εξήγηση
Το χαρακτηριστικό msPKI-Certificate-Policy
επιτρέπει την προσθήκη της πολιτικής έκδοσης στο πρότυπο πιστοποιητικού. Τα αντικείμενα msPKI-Enterprise-Oid
που είναι υπεύθυνα για την έκδοση πολιτικών μπορούν να ανακαλυφθούν στον Πεδίο Ονομασίας Διαμόρφωσης (CN=OID,CN=Δημόσιες Υπηρεσίες Κλειδιών,CN=Υπηρεσίες) του δοχείου PKI OID. Μια πολιτική μπορεί να συνδεθεί με μια ομάδα AD χρησιμοποιώντας το χαρακτηριστικό msDS-OIDToGroupLink
αυτού του αντικειμένου, επιτρέποντας σε ένα σύστημα να εξουσιοδοτήσει έναν χρήστη που παρουσιάζει το πιστοποιητικό ως να ήταν μέλος της ομάδας. Αναφορά εδώ.
Με άλλα λόγια, όταν ένας χρήστης έχει άδεια να εγγραφεί ένα πιστοποιητικό και το πιστοποιητικό συνδέεται με μια ομάδα OID, ο χρήστης μπορεί να κληρονομήσει τα προνόμια αυτής της ομάδας.
Χρησιμοποιήστε το Check-ADCSESC13.ps1 για να βρείτε το OIDToGroupLink:
Σενάριο Κατάχρησης
Βρείτε ένα δικαίωμα χρήστη που μπορεί να χρησιμοποιήσει την εντολή certipy find
ή Certify.exe find /showAllPermissions
.
Αν ο John
έχει άδεια να εγγραφεί στο VulnerableTemplate
, ο χρήστης μπορεί να κληρονομήσει τα προνόμια της ομάδας VulnerableGroup
.
Το μόνο που χρειάζεται να κάνει είναι να καθορίσει το πρότυπο, θα λάβει ένα πιστοποιητικό με δικαιώματα OIDToGroupLink.
Εξήγηση της Παραβίασης των Δασών με Πιστοποιητικά στην Παθητική Φωνή
Θραύση των Trust των Δασών από Κατεστραμμένες CAs
Η διαμόρφωση για την διασυνοριακή εγγραφή γίνεται σχετικά απλή. Το πιστοποιητικό της ρίζας CA από το δάσος πόρων δημοσιεύεται στα δάση λογαριασμών από τους διαχειριστές, και τα πιστοποιητικά της επιχείρησης CA από το δάσος πόρων προστίθενται στους κάδους NTAuthCertificates
και AIA σε κάθε δάσος λογαριασμού. Για να διευκρινιστεί, αυτή η διάταξη χορηγεί στο CA στο δάσος πόρων πλήρη έλεγχο πάνω σε όλα τα άλλα δάση για τα οποία διαχειρίζεται το PKI. Αν αυτό το CA καταστραφεί από επιτιθέμενους, τα πιστοποιητικά για όλους τους χρήστες τόσο στο δάσος πόρων όσο και στα δάση λογαριασμών μπορεί να πλαστογραφηθούν από αυτούς, καταρρίπτοντας έτσι το όριο ασφαλείας του δάσους.
Προνομιούχες Εγγραφές που Χορηγούνται σε Ξένους Αρχηγούς
Σε περιβάλλοντα με πολλά δάση, απαιτείται προσοχή όσον αφορά τις Επιχειρησιακές CAs που δημοσιεύουν πρότυπα πιστοποιητικών τα οποία επιτρέπουν σε Εξουσιοδοτημένους Χρήστες ή ξένους αρχηγούς (χρήστες/ομάδες εξωτερικοί στο δάσος στο οποίο ανήκει η Επιχειρησιακή CA) δικαιώματα εγγραφής και επεξεργασίας. Κατά την επαλήθευση απέναντι σε μια εμπιστοσύνη, το SID των Εξουσιοδοτημένων Χρηστών προστίθεται στο τεκμήριο του χρήστη από το AD. Έτσι, αν ένας τομέας διαθέτει μια Επιχειρησιακή CA με ένα πρότυπο που επιτρέπει τα δικαιώματα εγγραφής στους Εξουσιοδοτημένους Χρήστες, ένα πρότυπο θα μπορούσε πιθανόν να εγγραφεί από έναν χρήστη από διαφορετικό δάσος. Αντίστοιχα, αν τα δικαιώματα εγγραφής χορηγούνται ρητά σε ξένο αρχηγό από ένα πρότυπο, δημιουργείται έτσι μια σχέση ελέγχου πρόσβασης διασυνοριακά, επιτρέποντας σε έναν αρχηγό από ένα δάσος να εγγραφεί σε ένα πρότυπο από ένα άλλο δάσος.
Και τα δύο σενάρια οδηγούν σε μια αύξηση της επιφάνειας επίθεσης από ένα δάσος σε ένα άλλο. Οι ρυθμίσεις του προτύπου πιστοποιητικού θα μπορούσαν να εκμεταλλευτούν από έναν επιτιθέμενο για να αποκτήσει επιπλέον προνόμια σε ένα ξένο τομέα.
Last updated