Az - Cloud Kerberos Trust
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)
Αυτή η ανάρτηση είναι μια περίληψη του https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/ που μπορεί να ελεγχθεί για περισσότερες πληροφορίες σχετικά με την επίθεση. Αυτή η τεχνική σχολιάζεται επίσης στο https://www.youtube.com/watch?v=AFay_58QubY.
Όταν καθοριστεί μια εμπιστοσύνη με το Azure AD, δημιουργείται ένας Read Only Domain Controller (RODC) στο AD. Ο λογαριασμός υπολογιστή RODC, ονομάζεται AzureADKerberos$
. Επίσης, υπάρχει ένας δευτερεύων λογαριασμός krbtgt
που ονομάζεται krbtgt_AzureAD
. Αυτός ο λογαριασμός περιέχει τα κλειδιά Kerberos που χρησιμοποιούνται για τα εισιτήρια που δημιουργεί το Azure AD.
Επομένως, αν αυτός ο λογαριασμός παραβιαστεί, θα μπορούσε να είναι δυνατό να προσποιηθεί οποιονδήποτε χρήστη... αν και αυτό δεν είναι αληθές γιατί αυτός ο λογαριασμός εμποδίζεται να δημιουργεί εισιτήρια για οποιαδήποτε κοινή προνομιούχα ομάδα AD όπως οι Domain Admins, Enterprise Admins, Administrators...
Ωστόσο, σε ένα πραγματικό σενάριο θα υπάρχουν προνομιούχοι χρήστες που δεν είναι σε αυτές τις ομάδες. Έτσι, ο νέος λογαριασμός krbtgt, αν παραβιαστεί, θα μπορούσε να χρησιμοποιηθεί για να τους προσποιηθεί.
Επιπλέον, όταν ένας χρήστης αυθεντικοποιείται στα Windows χρησιμοποιώντας μια υβριδική ταυτότητα, το Azure AD θα εκδώσει μερικό εισιτήριο Kerberos μαζί με το PRT. Το TGT είναι μερικό γιατί το AzureAD έχει περιορισμένες πληροφορίες για τον χρήστη στο on-prem AD (όπως το security identifier (SID) και το όνομα).
Τα Windows μπορούν στη συνέχεια να ανταλλάξουν αυτό το μερικό TGT για ένα πλήρες TGT ζητώντας ένα εισιτήριο υπηρεσίας για την υπηρεσία krbtgt
.
Καθώς μπορεί να υπάρχουν υπηρεσίες που δεν υποστηρίζουν την αυθεντικοποίηση kerberos αλλά NTLM, είναι δυνατό να ζητηθεί ένα μερικό TGT υπογεγραμμένο χρησιμοποιώντας ένα δευτερεύον κλειδί krbtgt
περιλαμβάνοντας το KERB-KEY-LIST-REQ
πεδίο στο PADATA μέρος του αιτήματος και στη συνέχεια να αποκτηθεί ένα πλήρες TGT υπογεγραμμένο με το κύριο κλειδί krbtgt
συμπεριλαμβάνοντας το NT hash στην απάντηση.
Όταν το AzureAD δημιουργεί ένα μερικό TGT, θα χρησιμοποιεί τις λεπτομέρειες που έχει για τον χρήστη. Επομένως, αν ένας Global Admin μπορούσε να τροποποιήσει δεδομένα όπως το security identifier και το όνομα του χρήστη στο AzureAD, όταν ζητήσει ένα TGT για αυτόν τον χρήστη, το security identifier θα ήταν διαφορετικό.
Δεν είναι δυνατό να γίνει αυτό μέσω του Microsoft Graph ή του Azure AD Graph, αλλά είναι δυνατό να χρησιμοποιηθεί το API που χρησιμοποιεί το Active Directory Connect για να δημιουργήσει και να ενημερώσει συγχρονισμένους χρήστες, το οποίο μπορεί να χρησιμοποιηθεί από τους Global Admins για να τροποποιήσουν το SAM name και το SID οποιουδήποτε υβριδικού χρήστη, και στη συνέχεια αν αυθεντικοποιηθούμε, αποκτούμε ένα μερικό TGT που περιέχει το τροποποιημένο SID.
Σημειώστε ότι μπορούμε να το κάνουμε αυτό με το AADInternals και να ενημερώσουμε τους συγχρονισμένους χρήστες μέσω του Set-AADIntAzureADObject cmdlet.
Η επιτυχία της επίθεσης και η απόκτηση προνομίων Domain Admin εξαρτώνται από την εκπλήρωση ορισμένων προϋποθέσεων:
Η ικανότητα να αλλάξει λογαριασμούς μέσω του Synchronization API είναι κρίσιμη. Αυτό μπορεί να επιτευχθεί με την κατοχή του ρόλου του Global Admin ή με την κατοχή ενός λογαριασμού συγχρονισμού AD Connect. Εναλλακτικά, ο ρόλος του Hybrid Identity Administrator θα αρκούσε, καθώς παρέχει τη δυνατότητα διαχείρισης του AD Connect και δημιουργίας νέων λογαριασμών συγχρονισμού.
Η παρουσία ενός υβριδικού λογαριασμού είναι απαραίτητη. Αυτός ο λογαριασμός πρέπει να είναι επιδεκτικός τροποποίησης με τις λεπτομέρειες του λογαριασμού του θύματος και θα πρέπει επίσης να είναι προσβάσιμος για αυθεντικοποίηση.
Η αναγνώριση ενός στόχου λογαριασμού θύματος εντός του Active Directory είναι απαραίτητη. Αν και η επίθεση μπορεί να εκτελεστεί σε οποιονδήποτε λογαριασμό έχει ήδη συγχρονιστεί, ο Azure AD tenant δεν πρέπει να έχει αναπαραχθεί τα on-premises security identifiers, απαιτώντας την τροποποίηση ενός μη συγχρονισμένου λογαριασμού για την απόκτηση του εισιτηρίου.
Επιπλέον, αυτός ο λογαριασμός θα πρέπει να έχει προνόμια ισοδύναμα με αυτά του domain admin αλλά δεν πρέπει να είναι μέλος τυπικών ομάδων διαχειριστών AD για να αποφευχθεί η δημιουργία μη έγκυρων TGT από τον AzureAD RODC.
Ο πιο κατάλληλος στόχος είναι ο λογαριασμός Active Directory που χρησιμοποιείται από την υπηρεσία AD Connect Sync. Αυτός ο λογαριασμός δεν συγχρονίζεται με το Azure AD, αφήνοντας το SID του ως βιώσιμο στόχο, και κατέχει εγγενώς προνόμια ισοδύναμα με αυτά του Domain Admin λόγω του ρόλου του στη συγχρονισμένη κωδικοποίηση κωδικών πρόσβασης (υποθέτοντας ότι η συγχρονισμένη κωδικοποίηση κωδικών είναι ενεργή). Για τομείς με άμεση εγκατάσταση, αυτός ο λογαριασμός προσαρτάται με MSOL_. Για άλλες περιπτώσεις, ο λογαριασμός μπορεί να εντοπιστεί με την καταμέτρηση όλων των λογαριασμών που έχουν δικαιώματα αναπαραγωγής καταλόγου στο αντικείμενο τομέα.
Check it in the original post: https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)