500/udp - Pentesting IPsec/IKE VPN
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)
IPsec είναι ευρέως αναγνωρισμένο ως η κύρια τεχνολογία για την ασφάλιση των επικοινωνιών μεταξύ δικτύων (LAN-to-LAN) και από απομακρυσμένους χρήστες προς την πύλη του δικτύου (remote access), λειτουργώντας ως η ραχοκοκαλιά για τις λύσεις VPN επιχειρήσεων.
Η εγκαθίδρυση μιας ασφαλούς συσχέτισης (SA) μεταξύ δύο σημείων διαχειρίζεται από το IKE, το οποίο λειτουργεί υπό την ομπρέλα του ISAKMP, ενός πρωτοκόλλου σχεδιασμένου για την αυθεντικοποίηση και την ανταλλαγή κλειδιών. Αυτή η διαδικασία εκτυλίσσεται σε πολλές φάσεις:
Φάση 1: Δημιουργείται ένα ασφαλές κανάλι μεταξύ δύο σημείων. Αυτό επιτυγχάνεται μέσω της χρήσης ενός Προ-Κοινόχρηστου Κλειδιού (PSK) ή πιστοποιητικών, χρησιμοποιώντας είτε κύριο τρόπο, ο οποίος περιλαμβάνει τρία ζεύγη μηνυμάτων, είτε επιθετικό τρόπο.
Φάση 1.5: Αν και δεν είναι υποχρεωτική, αυτή η φάση, γνωστή ως η Φάση Επεκτεταμένης Αυθεντικοποίησης, επαληθεύει την ταυτότητα του χρήστη που προσπαθεί να συνδεθεί απαιτώντας ένα όνομα χρήστη και έναν κωδικό πρόσβασης.
Φάση 2: Αυτή η φάση είναι αφιερωμένη στη διαπραγμάτευση των παραμέτρων για την ασφάλιση των δεδομένων με ESP και AH. Επιτρέπει τη χρήση αλγορίθμων διαφορετικών από αυτούς στη Φάση 1 για να διασφαλιστεί η Τέλεια Προχωρημένη Μυστικότητα (PFS), ενισχύοντας την ασφάλεια.
Προεπιλεγμένη θύρα: 500/udp
Η διαμόρφωση IPSec μπορεί να προετοιμαστεί μόνο για να αποδεχτεί μία ή μερικές μεταμορφώσεις. Μια μεταμόρφωση είναι ένας συνδυασμός τιμών. Κάθε μεταμόρφωση περιέχει έναν αριθμό χαρακτηριστικών όπως DES ή 3DES ως αλγόριθμο κρυπτογράφησης, SHA ή MD5 ως αλγόριθμο ακεραιότητας, ένα προ-μοιρασμένο κλειδί ως τύπο αυθεντικοποίησης, Diffie-Hellman 1 ή 2 ως αλγόριθμο κατανομής κλειδιών και 28800 δευτερόλεπτα ως διάρκεια ζωής.
Έτσι, το πρώτο πράγμα που πρέπει να κάνετε είναι να βρείτε μια έγκυρη μεταμόρφωση, ώστε ο διακομιστής να επικοινωνήσει μαζί σας. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε το εργαλείο ike-scan. Από προεπιλογή, το Ike-scan λειτουργεί σε κύριο τρόπο και στέλνει ένα πακέτο στην πύλη με ένα ISAKMP header και μια μόνο πρόταση με οκτώ μεταμορφώσεις μέσα σε αυτήν.
Ανάλογα με την απάντηση, μπορείτε να αποκτήσετε κάποιες πληροφορίες σχετικά με το σημείο τερματισμού:
Όπως μπορείτε να δείτε στην προηγούμενη απάντηση, υπάρχει ένα πεδίο που ονομάζεται AUTH με την τιμή PSK. Αυτό σημαίνει ότι το vpn είναι ρυθμισμένο χρησιμοποιώντας ένα προμοιρασμένο κλειδί (και αυτό είναι πραγματικά καλό για έναν pentester). Η τιμή της τελευταίας γραμμής είναι επίσης πολύ σημαντική:
0 returned handshake; 0 returned notify: Αυτό σημαίνει ότι ο στόχος είναι όχι μια πύλη IPsec.
1 returned handshake; 0 returned notify: Αυτό σημαίνει ότι ο στόχος είναι ρυθμισμένος για IPsec και είναι πρόθυμος να εκτελέσει διαπραγμάτευση IKE, και είτε μία είτε περισσότερες από τις μετατροπές που προτείνατε είναι αποδεκτές (μια έγκυρη μετατροπή θα εμφανιστεί στην έξοδο).
0 returned handshake; 1 returned notify: Οι πύλες VPN απαντούν με ένα μήνυμα ειδοποίησης όταν καμία από τις μετατροπές δεν είναι αποδεκτή (αν και ορισμένες πύλες δεν το κάνουν, οπότε θα πρέπει να γίνει περαιτέρω ανάλυση και να δοθεί μια αναθεωρημένη πρόταση).
Στη συνέχεια, σε αυτή την περίπτωση έχουμε ήδη μια έγκυρη μετατροπή, αλλά αν βρίσκεστε στην 3η περίπτωση, τότε πρέπει να κάνετε brute-force λίγο για να βρείτε μια έγκυρη μετατροπή:
Πρώτα απ 'όλα, πρέπει να δημιουργήσετε όλες τις δυνατές μετατροπές:
Και στη συνέχεια κάντε brute-force το καθένα χρησιμοποιώντας το ike-scan (αυτό μπορεί να διαρκέσει αρκετά λεπτά):
Αν η brute-force δεν λειτούργησε, ίσως ο διακομιστής να απαντά χωρίς handshakes ακόμη και σε έγκυρους μετασχηματισμούς. Τότε, θα μπορούσατε να δοκιμάσετε την ίδια brute-force αλλά χρησιμοποιώντας επιθετική λειτουργία:
Ελπίζω μια έγκυρη μετατροπή να επιστραφεί. Μπορείτε να δοκιμάσετε την ίδια επίθεση χρησιμοποιώντας iker.py. Μπορείτε επίσης να προσπαθήσετε να κάνετε brute force μετατροπές με ikeforce:
Στην Ομάδα DH: 14 = 2048-bit MODP και 15 = 3072-bit
2 = HMAC-SHA = SHA1 (σε αυτή την περίπτωση). Η μορφή --trans
είναι $Enc,$Hash,$Auth,$DH
Η Cisco υποδεικνύει να αποφεύγεται η χρήση των ομάδων DH 1 και 2 επειδή δεν είναι αρκετά ισχυρές. Οι ειδικοί πιστεύουν ότι χώρες με πολλούς πόρους μπορούν εύκολα να σπάσουν την κρυπτογράφηση των δεδομένων που χρησιμοποιούν αυτές τις αδύναμες ομάδες. Αυτό γίνεται με τη χρήση μιας ειδικής μεθόδου που τις προετοιμάζει να σπάσουν τους κωδικούς γρήγορα. Παρόλο που κοστίζει πολλά χρήματα για να ρυθμιστεί αυτή η μέθοδος, επιτρέπει σε αυτές τις ισχυρές χώρες να διαβάζουν τα κρυπτογραφημένα δεδομένα σε πραγματικό χρόνο αν χρησιμοποιούν μια ομάδα που δεν είναι ισχυρή (όπως 1,024-bit ή μικρότερη).
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το ike-scan για να προσπαθήσετε να ανακαλύψετε τον προμηθευτή της συσκευής. Το εργαλείο στέλνει μια αρχική πρόταση και σταματά να επαναλαμβάνει. Στη συνέχεια, θα αναλύσει τη διαφορά χρόνου μεταξύ των ληφθέντων μηνυμάτων από τον διακομιστή και του αντίστοιχου προτύπου απάντησης, ο pentester μπορεί να αναγνωρίσει με επιτυχία τον προμηθευτή της πύλης VPN. Επιπλέον, μερικοί διακομιστές VPN θα χρησιμοποιήσουν το προαιρετικό Vendor ID (VID) payload με το IKE.
Καθορίστε τη valid μετατροπή αν χρειάζεται (χρησιμοποιώντας --trans)
Αν το IKE ανακαλύψει ποιος είναι ο προμηθευτής, θα το εκτυπώσει:
Αυτό μπορεί επίσης να επιτευχθεί με το nmap script ike-version
Για να επιτραπεί η σύλληψη του hash, χρειάζεστε μια έγκυρη μετατροπή που να υποστηρίζει τη λειτουργία Aggressive και το σωστό ID (όνομα ομάδας). Πιθανώς δεν θα γνωρίζετε το έγκυρο όνομα ομάδας, οπότε θα πρέπει να το βρείτε με brute-force. Για να το κάνετε αυτό, θα σας πρότεινα 2 μεθόδους:
Πρώτα απ' όλα, προσπαθήστε να κάνετε ένα αίτημα με ένα ψεύτικο ID προσπαθώντας να συγκεντρώσετε το hash ("-P"):
Αν δεν επιστραφεί κανένας hash, τότε πιθανότατα αυτή η μέθοδος brute forcing θα λειτουργήσει. Αν επιστραφεί κάποιος hash, αυτό σημαίνει ότι θα σταλεί ένας ψεύτικος hash για μια ψεύτικη ταυτότητα, οπότε αυτή η μέθοδος δεν θα είναι αξιόπιστη για να κάνετε brute-force την ταυτότητα. Για παράδειγμα, μπορεί να επιστραφεί ένας ψεύτικος hash (αυτό συμβαίνει σε σύγχρονες εκδόσεις):
Αλλά αν, όπως είπα, δεν επιστραφεί κανένας hash, τότε θα πρέπει να προσπαθήσετε να κάνετε brute-force κοινών ονομάτων ομάδων χρησιμοποιώντας το ike-scan.
Αυτό το σενάριο θα προσπαθήσει να κάνει brute-force πιθανές ταυτότητες και θα επιστρέψει τις ταυτότητες όπου επιστρέφεται μια έγκυρη χειραψία (αυτό θα είναι ένα έγκυρο όνομα ομάδας).
Αν έχετε ανακαλύψει μια συγκεκριμένη μετατροπή, προσθέστε την στην εντολή ike-scan. Και αν έχετε ανακαλύψει πολλές μετατροπές, μη διστάσετε να προσθέσετε έναν νέο βρόχο για να τις δοκιμάσετε όλες (θα πρέπει να τις δοκιμάσετε όλες μέχρι να λειτουργήσει σωστά μία από αυτές).
Μπορείτε να χρησιμοποιήσετε το λεξικό του ikeforce ή αυτό στο seclists με κοινά ονόματα ομάδων για να τα κάνετε brute-force:
Or use this dict (is a combination of the other 2 dicts without repetitions):
iker.py επίσης χρησιμοποιεί ike-scan για να κάνει brute force πιθανά ονόματα ομάδων. Ακολουθεί τη δική του μέθοδο για να βρει μια έγκυρη ταυτότητα με βάση την έξοδο του ike-scan.
ikeforce.py είναι ένα εργαλείο που μπορεί να χρησιμοποιηθεί για να κάνει brute force ταυτότητες επίσης. Αυτό το εργαλείο θα προσπαθήσει να εκμεταλλευτεί διάφορες ευπάθειες που θα μπορούσαν να χρησιμοποιηθούν για να διακρίνουν μεταξύ μιας έγκυρης και μιας μη έγκυρης ταυτότητας (μπορεί να έχει ψευδώς θετικά και ψευδώς αρνητικά, γι' αυτό προτιμώ να χρησιμοποιώ τη μέθοδο ike-scan αν είναι δυνατόν).
Από προεπιλογή, το ikeforce θα στείλει στην αρχή μερικές τυχαίες ταυτότητες για να ελέγξει τη συμπεριφορά του διακομιστή και να καθορίσει την τακτική που θα χρησιμοποιήσει.
Η πρώτη μέθοδος είναι να κάνει brute-force τα ονόματα ομάδων αναζητώντας τις πληροφορίες Dead Peer Detection DPD των συστημάτων Cisco (αυτές οι πληροφορίες επαναλαμβάνονται μόνο από τον διακομιστή αν το όνομα της ομάδας είναι σωστό).
Η δεύτερη μέθοδος που είναι διαθέσιμη είναι να ελέγχει τον αριθμό των απαντήσεων που αποστέλλονται σε κάθε προσπάθεια γιατί μερικές φορές αποστέλλονται περισσότερα πακέτα όταν χρησιμοποιείται η σωστή ταυτότητα.
Η τρίτη μέθοδος συνίσταται στο να αναζητά "INVALID-ID-INFORMATION" ως απάντηση σε λανθασμένη ταυτότητα.
Τέλος, αν ο διακομιστής δεν επαναλάβει τίποτα στους ελέγχους, το ikeforce θα προσπαθήσει να κάνει brute force τον διακομιστή και να ελέγξει αν όταν αποστέλλεται η σωστή ταυτότητα, ο διακομιστής επαναλαμβάνει με κάποιο πακέτο. Προφανώς, ο στόχος του brute forcing της ταυτότητας είναι να αποκτήσετε το PSK όταν έχετε μια έγκυρη ταυτότητα. Στη συνέχεια, με την ταυτότητα και το PSK θα πρέπει να κάνετε brute force το XAUTH (αν είναι ενεργοποιημένο).
Αν έχετε ανακαλύψει μια συγκεκριμένη μετατροπή, προσθέστε την στην εντολή ikeforce. Και αν έχετε ανακαλύψει πολλές μετατροπές, μη διστάσετε να προσθέσετε έναν νέο βρόχο για να τις δοκιμάσετε όλες (θα πρέπει να τις δοκιμάσετε όλες μέχρι να λειτουργήσει σωστά μία από αυτές).
(Από το βιβλίο Network Security Assessment: Know Your Network): Είναι επίσης δυνατό να αποκτήσετε έγκυρα ονόματα χρηστών παρακολουθώντας τη σύνδεση μεταξύ του VPN client και του server, καθώς το πρώτο πακέτο του επιθετικού τρόπου που περιέχει το client ID αποστέλλεται σε καθαρή μορφή.
Τέλος, αν έχετε βρει μια έγκυρη μετατροπή και το όνομα ομάδας και αν επιτρέπεται ο επιθετικός τρόπος, τότε μπορείτε πολύ εύκολα να αποκτήσετε το κωδικοποιημένο hash που μπορεί να σπάσει:
Ο hash θα αποθηκευτεί μέσα στο hash.txt.
Μπορείτε να χρησιμοποιήσετε psk-crack, john (χρησιμοποιώντας ikescan2john.py) και hashcat για να crack τον hash:
Aggressive mode IKE σε συνδυασμό με ένα Pre-Shared Key (PSK) χρησιμοποιείται συνήθως για σκοπούς ομαδικής αυθεντικοποίησης. Αυτή η μέθοδος ενισχύεται από το XAuth (Extended Authentication), το οποίο εισάγει μια επιπλέον στρώση αυθεντικοποίησης χρήστη. Αυτή η αυθεντικοποίηση συνήθως εκμεταλλεύεται υπηρεσίες όπως το Microsoft Active Directory, RADIUS, ή συγκρίσιμα συστήματα.
Με τη μετάβαση στο IKEv2, παρατηρείται μια σημαντική αλλαγή όπου το EAP (Extensible Authentication Protocol) χρησιμοποιείται αντί του XAuth για την αυθεντικοποίηση χρηστών. Αυτή η αλλαγή υπογραμμίζει μια εξέλιξη στις πρακτικές αυθεντικοποίησης εντός των ασφαλών πρωτοκόλλων επικοινωνίας.
Έτσι μπορείτε να καταγράψετε τα δεδομένα της σύνδεσης χρησιμοποιώντας fiked και να δείτε αν υπάρχει κάποιο προεπιλεγμένο όνομα χρήστη (Πρέπει να ανακατευθύνετε την κίνηση IKE στο fiked
για να την καταγράψετε, κάτι που μπορεί να γίνει με τη βοήθεια του ARP spoofing, περισσότερες πληροφορίες). Το Fiked θα λειτουργήσει ως σημείο τερματισμού VPN και θα καταγράψει τα διαπιστευτήρια XAuth:
Επίσης, χρησιμοποιώντας το IPSec προσπαθήστε να κάνετε μια επίθεση MitM και να μπλοκάρετε όλη την κίνηση στην θύρα 500, αν η σήραγγα IPSec δεν μπορεί να δημιουργηθεί ίσως η κίνηση θα σταλεί σε καθαρή μορφή.
Για να κάνετε brute force το XAUTH (όταν γνωρίζετε ένα έγκυρο όνομα ομάδας id και το psk) μπορείτε να χρησιμοποιήσετε ένα όνομα χρήστη ή μια λίστα ονομάτων χρηστών και μια λίστα κωδικών πρόσβασης:
Με αυτόν τον τρόπο, το ikeforce θα προσπαθήσει να συνδεθεί χρησιμοποιώντας κάθε συνδυασμό username:password.
Αν βρείτε έναν ή περισσότερους έγκυρους μετασχηματισμούς, απλώς χρησιμοποιήστε τους όπως στα προηγούμενα βήματα.
Στο Kali, το VPNC χρησιμοποιείται για την εγκαθίδρυση IPsec tunnels. Τα προφίλ πρέπει να βρίσκονται στον κατάλογο /etc/vpnc/
. Μπορείτε να ξεκινήσετε αυτά τα προφίλ χρησιμοποιώντας την εντολή vpnc.
Οι παρακάτω εντολές και ρυθμίσεις απεικονίζουν τη διαδικασία ρύθμισης μιας σύνδεσης VPN με το VPNC:
In this setup:
Αντικαταστήστε το [VPN_GATEWAY_IP]
με τη πραγματική διεύθυνση IP της πύλης VPN.
Αντικαταστήστε το [VPN_CONNECTION_ID]
με τον αναγνωριστικό για τη σύνδεση VPN.
Αντικαταστήστε το [VPN_GROUP_SECRET]
με το μυστικό ομάδας του VPN.
Αντικαταστήστε το [VPN_USERNAME]
και το [VPN_PASSWORD]
με τα διαπιστευτήρια αυθεντικοποίησης του VPN.
[PID]
συμβολίζει το αναγνωριστικό διαδικασίας που θα ανατεθεί όταν το vpnc
ξεκινήσει.
Βεβαιωθείτε ότι χρησιμοποιούνται πραγματικές, ασφαλείς τιμές για να αντικαταστήσουν τις θέσεις κατά τη ρύθμιση του VPN.
Network Security Assessment 3rd Edition
port:500 IKE
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)