TimeRoasting
Reading time: 4 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
timeRoasting, η κύρια αιτία είναι ο ξεπερασμένος μηχανισμός αυθεντικοποίησης που άφησε η Microsoft στην επέκταση της για τους NTP servers, γνωστός ως MS-SNTP. Σε αυτόν τον μηχανισμό, οι πελάτες μπορούν να χρησιμοποιούν απευθείας οποιοδήποτε Relative Identifier (RID) λογαριασμού υπολογιστή, και ο ελεγκτής τομέα θα χρησιμοποιήσει το NTLM hash του λογαριασμού υπολογιστή (που παράγεται από το MD4) ως το κλειδί για να δημιουργήσει τον Κωδικό Αυθεντικοποίησης Μηνύματος (MAC) του πακέτου απάντησης.
Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτόν τον μηχανισμό για να αποκτήσουν ισοδύναμες τιμές hash τυχαίων λογαριασμών υπολογιστών χωρίς αυθεντικοποίηση. Προφανώς, μπορούμε να χρησιμοποιήσουμε εργαλεία όπως το Hashcat για brute-forcing.
Ο συγκεκριμένος μηχανισμός μπορεί να προβληθεί στην ενότητα 3.1.5.1 "Συμπεριφορά Αίτησης Αυθεντικοποίησης" της επίσημης τεκμηρίωσης Windows για το πρωτόκολλο MS-SNTP.
Στο έγγραφο, η ενότητα 3.1.5.1 καλύπτει τη Συμπεριφορά Αίτησης Αυθεντικοποίησης.
Μπορεί να παρατηρηθεί ότι όταν το στοιχείο ADM ExtendedAuthenticatorSupported είναι ρυθμισμένο σε
false
, η αρχική μορφή Markdown διατηρείται.
Παράθεση από το αρχικό άρθρο:
Εάν το στοιχείο ADM ExtendedAuthenticatorSupported είναι false, ο πελάτης ΠΡΕΠΕΙ να κατασκευάσει ένα μήνυμα Αίτησης NTP Πελάτη. Το μήκος του μηνύματος Αίτησης NTP Πελάτη είναι 68 bytes. Ο πελάτης ρυθμίζει το πεδίο Αυθεντικοποιητή του μηνύματος Αίτησης NTP Πελάτη όπως περιγράφεται στην ενότητα 2.2.1, γράφοντας τα 31 λιγότερο σημαντικά bits της τιμής RID στα 31 λιγότερο σημαντικά bits του υποπεδίου Αναγνωριστικού Κλειδιού του αυθεντικοποιητή, και στη συνέχεια γράφοντας την τιμή Επιλογέα Κλειδιού στο πιο σημαντικό bit του υποπεδίου Αναγνωριστικού Κλειδιού.
Στην ενότητα 4 του εγγράφου Παραδείγματα Πρωτοκόλλου σημείο 3
Παράθεση από το αρχικό άρθρο:
- Μετά την παραλαβή του αιτήματος, ο διακομιστής επαληθεύει ότι το μέγεθος του ληφθέντος μηνύματος είναι 68 bytes. Εάν δεν είναι, ο διακομιστής είτε απορρίπτει το αίτημα (εάν το μέγεθος του μηνύματος δεν είναι 48 bytes) είτε το αντιμετωπίζει ως μη αυθεντικοποιημένο αίτημα (εάν το μέγεθος του μηνύματος είναι 48 bytes). Υποθέτοντας ότι το μέγεθος του ληφθέντος μηνύματος είναι 68 bytes, ο διακομιστής εξάγει το RID από το ληφθέν μήνυμα. Ο διακομιστής το χρησιμοποιεί για να καλέσει τη μέθοδο NetrLogonComputeServerDigest (όπως καθορίζεται στην ενότητα [MS-NRPC] 3.5.4.8.2) για να υπολογίσει τα κρυπτογραφικά checksums και να επιλέξει το κρυπτογραφικό checksum με βάση το πιο σημαντικό bit του υποπεδίου Αναγνωριστικού Κλειδιού από το ληφθέν μήνυμα, όπως καθορίζεται στην ενότητα 3.2.5. Ο διακομιστής στη συνέχεια στέλνει μια απάντηση στον πελάτη, ρυθμίζοντας το πεδίο Αναγνωριστικού Κλειδιού σε 0 και το πεδίο Κρυπτογραφικού-Checksum στο υπολογισμένο κρυπτογραφικό checksum.
Σύμφωνα με την περιγραφή στο επίσημο έγγραφο της Microsoft παραπάνω, οι χρήστες δεν χρειάζονται καμία αυθεντικοποίηση; απλώς χρειάζεται να συμπληρώσουν το RID για να ξεκινήσουν ένα αίτημα, και στη συνέχεια μπορούν να αποκτήσουν το κρυπτογραφικό checksum. Το κρυπτογραφικό checksum εξηγείται στην ενότητα 3.2.5.1.1 του εγγράφου.
Παράθεση από το αρχικό άρθρο:
Ο διακομιστής ανακτά το RID από τα 31 λιγότερο σημαντικά bits του υποπεδίου Αναγνωριστικού Κλειδιού του πεδίου Αυθεντικοποιητή του μηνύματος Αίτησης NTP Πελάτη. Ο διακομιστής χρησιμοποιεί τη μέθοδο NetrLogonComputeServerDigest (όπως καθορίζεται στην ενότητα [MS-NRPC] 3.5.4.8.2) για να υπολογίσει τα κρυπτογραφικά checksums με τις εξής παραμέτρους εισόδου:
Το κρυπτογραφικό checksum υπολογίζεται χρησιμοποιώντας το MD5, και η συγκεκριμένη διαδικασία μπορεί να αναφερθεί στο περιεχόμενο του εγγράφου. Αυτό μας δίνει την ευκαιρία να εκτελέσουμε μια επίθεση roasting.
πώς να επιτεθείτε
Παράθεση στο https://swisskyrepo.github.io/InternalAllTheThings/active-directory/ad-roasting-timeroasting/
SecuraBV/Timeroast - Σενάρια Timeroasting από τον Tom Tervoort
sudo ./timeroast.py 10.0.0.42 | tee ntp-hashes.txt
hashcat -m 31300 ntp-hashes.txt
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.