Kerberos Double Hop Problem
Introduction
Το πρόβλημα "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
Αν είναι ενεργοποιημένη η unconstrained delegation στον υπολογιστή, αυτό δεν θα συμβεί καθώς ο Server θα λάβει ένα TGT κάθε χρήστη που τον προσπελάσει. Επιπλέον, αν χρησιμοποιηθεί η unconstrained delegation, πιθανώς μπορείτε να συμβιβάσετε τον Domain Controller από αυτό. Περισσότερες πληροφορίες στη σελίδα της unconstrained delegation.
CredSSP
Ένας άλλος τρόπος για να αποφευχθεί αυτό το πρόβλημα, ο οποίος είναι ιδιαίτερα ανασφαλής, είναι ο Credential Security Support Provider. Από τη Microsoft:
Η αυθεντικοποίηση CredSSP αναθέτει τα credentials του χρήστη από τον τοπικό υπολογιστή σε έναν απομακρυσμένο υπολογιστή. Αυτή η πρακτική αυξάνει τον κίνδυνο ασφαλείας της απομακρυσμένης λειτουργίας. Αν ο απομακρυσμένος υπολογιστής συμβιβαστεί, όταν τα credentials μεταβιβάζονται σε αυτόν, τα credentials μπορούν να χρησιμοποιηθούν για τον έλεγχο της δικτυακής συνεδρίας.
Συνιστάται έντονα να είναι απενεργοποιημένο το CredSSP σε παραγωγικά συστήματα, ευαίσθητα δίκτυα και παρόμοια περιβάλλοντα λόγω ανησυχιών ασφαλείας. Για να προσδιορίσετε αν είναι ενεργοποιημένο το CredSSP, μπορεί να εκτελεστεί η εντολή Get-WSManCredSSP
. Αυτή η εντολή επιτρέπει τον έλεγχο της κατάστασης του CredSSP και μπορεί να εκτελεστεί ακόμη και απομακρυσμένα, εφόσον είναι ενεργοποιημένο το WinRM.
Workarounds
Invoke Command
Για να αντιμετωπιστεί το πρόβλημα του διπλού hop, παρουσιάζεται μια μέθοδος που περιλαμβάνει ένα εσωτερικό Invoke-Command
. Αυτό δεν λύνει το πρόβλημα άμεσα αλλά προσφέρει μια λύση χωρίς να απαιτούνται ειδικές ρυθμίσεις. Η προσέγγιση επιτρέπει την εκτέλεση μιας εντολής (hostname
) σε έναν δευτερεύοντα διακομιστή μέσω μιας εντολής PowerShell που εκτελείται από μια αρχική επιτιθέμενη μηχανή ή μέσω μιας προηγουμένως καθορισμένης PS-Session με τον πρώτο διακομιστή. Να πώς γίνεται:
Εναλλακτικά, προτείνεται η δημιουργία μιας PS-Session με τον πρώτο διακομιστή και η εκτέλεση του Invoke-Command
χρησιμοποιώντας το $cred
για την κεντρικοποίηση των εργασιών.
Εγγραφή Ρυθμίσεων PSSession
Μια λύση για την παράκαμψη του προβλήματος διπλού άλματος περιλαμβάνει τη χρήση του Register-PSSessionConfiguration
με το Enter-PSSession
. Αυτή η μέθοδος απαιτεί μια διαφορετική προσέγγιση από το evil-winrm
και επιτρέπει μια συνεδρία που δεν υποφέρει από τον περιορισμό του διπλού άλματος.
PortForwarding
Για τοπικούς διαχειριστές σε έναν ενδιάμεσο στόχο, η προώθηση θυρών επιτρέπει την αποστολή αιτημάτων σε έναν τελικό διακομιστή. Χρησιμοποιώντας το netsh
, μπορεί να προστεθεί ένας κανόνας για την προώθηση θυρών, μαζί με έναν κανόνα τείχους προστασίας των Windows για να επιτραπεί η προωθημένη θύρα.
winrs.exe
winrs.exe
μπορεί να χρησιμοποιηθεί για την προώθηση αιτημάτων WinRM, ενδεχομένως ως μια λιγότερο ανιχνεύσιμη επιλογή αν η παρακολούθηση PowerShell είναι ανησυχία. Η παρακάτω εντολή δείχνει τη χρήση του:
OpenSSH
Η εγκατάσταση του OpenSSH στον πρώτο διακομιστή επιτρέπει μια λύση για το πρόβλημα του double-hop, ιδιαίτερα χρήσιμη για σενάρια jump box. Αυτή η μέθοδος απαιτεί εγκατάσταση και ρύθμιση του OpenSSH για Windows μέσω CLI. Όταν ρυθμιστεί για Αυθεντικοποίηση με Κωδικό, αυτό επιτρέπει στον ενδιάμεσο διακομιστή να αποκτήσει ένα TGT εκ μέρους του χρήστη.
Βήματα Εγκατάστασης OpenSSH
Κατεβάστε και μεταφέρετε το τελευταίο zip του OpenSSH στον στόχο διακομιστή.
Αποσυμπιέστε και εκτελέστε το σενάριο
Install-sshd.ps1
.Προσθέστε έναν κανόνα τείχους προστασίας για να ανοίξετε την πόρτα 22 και επαληθεύστε ότι οι υπηρεσίες SSH εκτελούνται.
Για να επιλυθούν τα σφάλματα Connection reset
, οι άδειες ενδέχεται να χρειαστεί να ενημερωθούν ώστε να επιτρέπουν σε όλους την πρόσβαση για ανάγνωση και εκτέλεση στον κατάλογο του OpenSSH.
Αναφορές
Last updated