Kerberos Double Hop Problem
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)
Το πρόβλημα "Double Hop" του Kerberos εμφανίζεται όταν ένας επιτιθέμενος προσπαθεί να χρησιμοποιήσει Kerberos authentication across two hops, για παράδειγμα χρησιμοποιώντας PowerShell/WinRM.
Όταν συμβαίνει μια authentication μέσω Kerberos, οι credentials δεν αποθηκεύονται στη μνήμη. Επομένως, αν εκτελέσετε το mimikatz δεν θα βρείτε credentials του χρήστη στη μηχανή ακόμα και αν εκτελεί διαδικασίες.
Αυτό συμβαίνει επειδή όταν συνδέεστε με Kerberos αυτά είναι τα βήματα:
Ο Χρήστης1 παρέχει credentials και ο domain controller επιστρέφει ένα Kerberos TGT στον Χρήστη1.
Ο Χρήστης1 χρησιμοποιεί το TGT για να ζητήσει ένα service ticket για να συνδεθεί με τον Server1.
Ο Χρήστης1 συνδέεται με τον Server1 και παρέχει το service ticket.
Ο Server1 δεν έχει credentials του Χρήστη1 αποθηκευμένα ή το TGT του Χρήστη1. Επομένως, όταν ο Χρήστης1 από τον Server1 προσπαθεί να συνδεθεί σε έναν δεύτερο server, δεν μπορεί να αυθεντικοποιηθεί.
Αν είναι ενεργοποιημένη η unconstrained delegation στον υπολογιστή, αυτό δεν θα συμβεί καθώς ο Server θα λάβει ένα TGT κάθε χρήστη που τον προσπελάσει. Επιπλέον, αν χρησιμοποιηθεί η unconstrained delegation, πιθανώς μπορείτε να συμβιβάσετε τον Domain Controller από αυτό. Περισσότερες πληροφορίες στη σελίδα της unconstrained delegation.
Ένας άλλος τρόπος για να αποφευχθεί αυτό το πρόβλημα, ο οποίος είναι ιδιαίτερα ανασφαλής, είναι ο Credential Security Support Provider. Από τη Microsoft:
Η αυθεντικοποίηση CredSSP αναθέτει τα credentials του χρήστη από τον τοπικό υπολογιστή σε έναν απομακρυσμένο υπολογιστή. Αυτή η πρακτική αυξάνει τον κίνδυνο ασφαλείας της απομακρυσμένης λειτουργίας. Αν ο απομακρυσμένος υπολογιστής συμβιβαστεί, όταν τα credentials μεταβιβάζονται σε αυτόν, τα credentials μπορούν να χρησιμοποιηθούν για τον έλεγχο της δικτυακής συνεδρίας.
Συνιστάται έντονα να είναι απενεργοποιημένο το CredSSP σε παραγωγικά συστήματα, ευαίσθητα δίκτυα και παρόμοια περιβάλλοντα λόγω ανησυχιών ασφαλείας. Για να προσδιορίσετε αν είναι ενεργοποιημένο το CredSSP, μπορεί να εκτελεστεί η εντολή Get-WSManCredSSP
. Αυτή η εντολή επιτρέπει τον έλεγχο της κατάστασης του CredSSP και μπορεί να εκτελεστεί ακόμη και απομακρυσμένα, εφόσον είναι ενεργοποιημένο το WinRM.
Για να αντιμετωπιστεί το πρόβλημα του διπλού hop, παρουσιάζεται μια μέθοδος που περιλαμβάνει ένα εσωτερικό Invoke-Command
. Αυτό δεν λύνει το πρόβλημα άμεσα αλλά προσφέρει μια λύση χωρίς να απαιτούνται ειδικές ρυθμίσεις. Η προσέγγιση επιτρέπει την εκτέλεση μιας εντολής (hostname
) σε έναν δευτερεύοντα διακομιστή μέσω μιας εντολής PowerShell που εκτελείται από μια αρχική επιτιθέμενη μηχανή ή μέσω μιας προηγουμένως καθορισμένης PS-Session με τον πρώτο διακομιστή. Να πώς γίνεται:
Εναλλακτικά, προτείνεται η δημιουργία μιας PS-Session με τον πρώτο διακομιστή και η εκτέλεση του Invoke-Command
χρησιμοποιώντας το $cred
για την κεντρικοποίηση των εργασιών.
Μια λύση για την παράκαμψη του προβλήματος διπλού άλματος περιλαμβάνει τη χρήση του Register-PSSessionConfiguration
με το Enter-PSSession
. Αυτή η μέθοδος απαιτεί μια διαφορετική προσέγγιση από το evil-winrm
και επιτρέπει μια συνεδρία που δεν υποφέρει από τον περιορισμό του διπλού άλματος.
Για τοπικούς διαχειριστές σε έναν ενδιάμεσο στόχο, η προώθηση θυρών επιτρέπει την αποστολή αιτημάτων σε έναν τελικό διακομιστή. Χρησιμοποιώντας το netsh
, μπορεί να προστεθεί ένας κανόνας για την προώθηση θυρών, μαζί με έναν κανόνα τείχους προστασίας των Windows για να επιτραπεί η προωθημένη θύρα.
winrs.exe
μπορεί να χρησιμοποιηθεί για την προώθηση αιτημάτων WinRM, ενδεχομένως ως μια λιγότερο ανιχνεύσιμη επιλογή αν η παρακολούθηση PowerShell είναι ανησυχία. Η παρακάτω εντολή δείχνει τη χρήση του:
Η εγκατάσταση του OpenSSH στον πρώτο διακομιστή επιτρέπει μια λύση για το πρόβλημα του double-hop, ιδιαίτερα χρήσιμη για σενάρια jump box. Αυτή η μέθοδος απαιτεί εγκατάσταση και ρύθμιση του OpenSSH για Windows μέσω CLI. Όταν ρυθμιστεί για Αυθεντικοποίηση με Κωδικό, αυτό επιτρέπει στον ενδιάμεσο διακομιστή να αποκτήσει ένα TGT εκ μέρους του χρήστη.
Κατεβάστε και μεταφέρετε το τελευταίο zip του OpenSSH στον στόχο διακομιστή.
Αποσυμπιέστε και εκτελέστε το σενάριο Install-sshd.ps1
.
Προσθέστε έναν κανόνα τείχους προστασίας για να ανοίξετε την πόρτα 22 και επαληθεύστε ότι οι υπηρεσίες SSH εκτελούνται.
Για να επιλυθούν τα σφάλματα Connection reset
, οι άδειες ενδέχεται να χρειαστεί να ενημερωθούν ώστε να επιτρέπουν σε όλους την πρόσβαση για ανάγνωση και εκτέλεση στον κατάλογο του OpenSSH.
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)