Resource-based Constrained Delegation
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)
Αυτό είναι παρόμοιο με την βασική Constrained Delegation αλλά αντί να δίνει δικαιώματα σε ένα αντικείμενο να παριστάνει οποιονδήποτε χρήστη απέναντι σε μια υπηρεσία. Η Resource-based Constrained Delegation ορίζει στο αντικείμενο ποιος μπορεί να παριστάνει οποιονδήποτε χρήστη απέναντί του.
Σε αυτή την περίπτωση, το περιορισμένο αντικείμενο θα έχει ένα χαρακτηριστικό που ονομάζεται msDS-AllowedToActOnBehalfOfOtherIdentity με το όνομα του χρήστη που μπορεί να παριστάνει οποιονδήποτε άλλο χρήστη απέναντί του.
Μια άλλη σημαντική διαφορά από αυτή την Constrained Delegation σε άλλες delegations είναι ότι οποιοσδήποτε χρήστης με δικαιώματα εγγραφής σε έναν λογαριασμό μηχανής (_GenericAll/GenericWrite/WriteDacl/WriteProperty κ.λπ.) μπορεί να ορίσει το msDS-AllowedToActOnBehalfOfOtherIdentity (Σε άλλες μορφές Delegation χρειάζεστε δικαιώματα διαχειριστή τομέα).
Στην Constrained Delegation είχε αναφερθεί ότι η TrustedToAuthForDelegation
σημαία μέσα στην τιμή userAccountControl του χρήστη είναι απαραίτητη για να εκτελέσετε ένα S4U2Self. Αλλά αυτό δεν είναι εντελώς αλήθεια.
Η πραγματικότητα είναι ότι ακόμη και χωρίς αυτή την τιμή, μπορείτε να εκτελέσετε ένα S4U2Self απέναντι σε οποιονδήποτε χρήστη αν είστε μια υπηρεσία (έχετε ένα SPN) αλλά, αν έχετε TrustedToAuthForDelegation
το επιστρεφόμενο TGS θα είναι Forwardable και αν δεν έχετε αυτή τη σημαία το επιστρεφόμενο TGS δεν θα είναι Forwardable.
Ωστόσο, αν το TGS που χρησιμοποιείται στο S4U2Proxy είναι NOT Forwardable προσπαθώντας να εκμεταλλευτείτε μια βασική Constrain Delegation δεν θα λειτουργήσει. Αλλά αν προσπαθείτε να εκμεταλλευτείτε μια Resource-Based constrain delegation, θα λειτουργήσει (αυτό δεν είναι ευπάθεια, είναι χαρακτηριστικό, προφανώς).
Αν έχετε ισοδύναμα δικαιώματα εγγραφής σε έναν λογαριασμό Υπολογιστή μπορείτε να αποκτήσετε προνομιακή πρόσβαση σε αυτή τη μηχανή.
Ας υποθέσουμε ότι ο επιτιθέμενος έχει ήδη ισοδύναμα δικαιώματα εγγραφής πάνω στον υπολογιστή του θύματος.
Ο επιτιθέμενος παραβιάζει έναν λογαριασμό που έχει ένα SPN ή δημιουργεί έναν (“Υπηρεσία A”). Σημειώστε ότι οποιοσδήποτε Διαχειριστής Χρήστης χωρίς καμία άλλη ειδική προνομία μπορεί να δημιουργήσει μέχρι 10 αντικείμενα Υπολογιστή (MachineAccountQuota) και να τους ορίσει ένα SPN. Έτσι, ο επιτιθέμενος μπορεί απλά να δημιουργήσει ένα αντικείμενο Υπολογιστή και να ορίσει ένα SPN.
Ο επιτιθέμενος καταχράται το δικαίωμα ΕΓΓΡΑΦΗΣ του πάνω στον υπολογιστή του θύματος (ΥπηρεσίαB) για να ρυθμίσει resource-based constrained delegation ώστε να επιτρέψει στην ΥπηρεσίαA να παριστάνει οποιονδήποτε χρήστη απέναντι σε αυτόν τον υπολογιστή του θύματος (ΥπηρεσίαB).
Ο επιτιθέμενος χρησιμοποιεί το Rubeus για να εκτελέσει μια πλήρη επίθεση S4U (S4U2Self και S4U2Proxy) από την Υπηρεσία A στην Υπηρεσία B για έναν χρήστη με προνομιακή πρόσβαση στην Υπηρεσία B.
S4U2Self (από τον λογαριασμό SPN που παραβιάστηκε/δημιουργήθηκε): Ζητήστε ένα TGS του Διαχειριστή για μένα (Not Forwardable).
S4U2Proxy: Χρησιμοποιήστε το μη Forwardable TGS του προηγούμενου βήματος για να ζητήσετε ένα TGS από τον Διαχειριστή προς τον υπολογιστή θύμα.
Ακόμη και αν χρησιμοποιείτε ένα μη Forwardable TGS, καθώς εκμεταλλεύεστε την Resource-based constrained delegation, θα λειτουργήσει.
Ο επιτιθέμενος μπορεί να περάσει το εισιτήριο και να παριστάνει τον χρήστη για να αποκτήσει πρόσβαση στην ΥπηρεσίαB του θύματος.
Για να ελέγξετε το MachineAccountQuota του τομέα μπορείτε να χρησιμοποιήσετε:
Μπορείτε να δημιουργήσετε ένα αντικείμενο υπολογιστή μέσα στο τομέα χρησιμοποιώντας powermad:
Χρησιμοποιώντας το module PowerShell του activedirectory
Χρησιμοποιώντας το powerview
Πρώτα απ' όλα, δημιουργήσαμε το νέο αντικείμενο Υπολογιστή με τον κωδικό πρόσβασης 123456
, οπότε χρειαζόμαστε το hash αυτού του κωδικού πρόσβασης:
Αυτό θα εκτυπώσει τους κατακερματισμούς RC4 και AES για αυτόν τον λογαριασμό. Τώρα, η επίθεση μπορεί να εκτελεστεί:
Μπορείτε να δημιουργήσετε περισσότερα εισιτήρια απλά ζητώντας μία φορά χρησιμοποιώντας την παράμετρο /altservice
του Rubeus:
Σημειώστε ότι οι χρήστες έχουν ένα χαρακτηριστικό που ονομάζεται "Δεν μπορεί να ανατεθεί". Εάν ένας χρήστης έχει αυτό το χαρακτηριστικό σε True, δεν θα μπορείτε να τον προσποιηθείτε. Αυτή η ιδιότητα μπορεί να προβληθεί μέσα στο bloodhound.
Η τελευταία γραμμή εντολών θα εκτελέσει την πλήρη επίθεση S4U και θα εισάγει το TGS από τον Διαχειριστή στον θύμα υπολογιστή στη μνήμη. Σε αυτό το παράδειγμα ζητήθηκε ένα TGS για την υπηρεσία CIFS από τον Διαχειριστή, οπότε θα μπορείτε να έχετε πρόσβαση στο C$:
Μάθετε για τα διαθέσιμα εισιτήρια υπηρεσιών εδώ.
KDC_ERR_ETYPE_NOTSUPP
: Αυτό σημαίνει ότι το kerberos είναι ρυθμισμένο να μην χρησιμοποιεί DES ή RC4 και παρέχετε μόνο το hash RC4. Παρέχετε στο Rubeus τουλάχιστον το hash AES256 (ή απλά παρέχετε τα hashes rc4, aes128 και aes256). Παράδειγμα: [Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())
KRB_AP_ERR_SKEW
: Αυτό σημαίνει ότι η ώρα του τρέχοντος υπολογιστή είναι διαφορετική από αυτήν του DC και το kerberos δεν λειτουργεί σωστά.
preauth_failed
: Αυτό σημαίνει ότι το δεδομένο όνομα χρήστη + hashes δεν λειτουργούν για είσοδο. Ίσως να ξεχάσατε να βάλετε το "$" μέσα στο όνομα χρήστη κατά την παραγωγή των hashes (.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local
)
KDC_ERR_BADOPTION
: Αυτό μπορεί να σημαίνει:
Ο χρήστης που προσπαθείτε να προσποιηθείτε δεν μπορεί να έχει πρόσβαση στην επιθυμητή υπηρεσία (επειδή δεν μπορείτε να τον προσποιηθείτε ή επειδή δεν έχει αρκετά δικαιώματα)
Η ζητούμενη υπηρεσία δεν υπάρχει (αν ζητήσετε ένα εισιτήριο για winrm αλλά το winrm δεν εκτελείται)
Ο ψεύτικος υπολογιστής που δημιουργήθηκε έχει χάσει τα δικαιώματά του πάνω στον ευάλωτο διακομιστή και πρέπει να τα επαναφέρετε.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)