Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**IPsec** είναι ευρέως αναγνωρισμένο ως η κύρια τεχνολογία για την ασφάλιση των επικοινωνιών μεταξύ δικτύων (LAN-to-LAN) και από απομακρυσμένους χρήστες προς την πύλη του δικτύου (remote access), λειτουργώντας ως η ραχοκοκαλιά για τις λύσεις VPN επιχειρήσεων.
Η εγκαθίδρυση μιας **ασφαλούς συσχέτισης (SA)** μεταξύ δύο σημείων διαχειρίζεται από το **IKE**, το οποίο λειτουργεί υπό την ομπρέλα του ISAKMP, ενός πρωτοκόλλου σχεδιασμένου για την αυθεντικοποίηση και την ανταλλαγή κλειδιών. Αυτή η διαδικασία εκτυλίσσεται σε πολλές φάσεις:
* **Φάση 1:** Δημιουργείται ένα ασφαλές κανάλι μεταξύ δύο σημείων. Αυτό επιτυγχάνεται μέσω της χρήσης ενός Προ-Κοινόχρηστου Κλειδιού (PSK) ή πιστοποιητικών, χρησιμοποιώντας είτε κύριο τρόπο, ο οποίος περιλαμβάνει τρία ζεύγη μηνυμάτων, είτε **επιθετικό τρόπο**.
* **Φάση 1.5:** Αν και δεν είναι υποχρεωτική, αυτή η φάση, γνωστή ως η Φάση Επεκτεταμένης Αυθεντικοποίησης, επαληθεύει την ταυτότητα του χρήστη που προσπαθεί να συνδεθεί απαιτώντας ένα όνομα χρήστη και έναν κωδικό πρόσβασης.
* **Φάση 2:** Αυτή η φάση είναι αφιερωμένη στη διαπραγμάτευση των παραμέτρων για την ασφάλιση των δεδομένων με **ESP** και **AH**. Επιτρέπει τη χρήση αλγορίθμων διαφορετικών από αυτούς στη Φάση 1 γιανα διασφαλιστεί η **Τέλεια Προχωρημένη Μυστικότητα (PFS)**, ενισχύοντας την ασφάλεια.
Η διαμόρφωση IPSec μπορεί να προετοιμαστεί μόνο γιανα αποδεχτεί μία ή μερικές μεταμορφώσεις. Μια μεταμόρφωση είναι ένας συνδυασμός τιμών. **Κάθε μεταμόρφωση** περιέχει έναν αριθμό χαρακτηριστικών όπως DES ή 3DES ως **αλγόριθμο κρυπτογράφησης**, SHA ή MD5 ως **αλγόριθμο ακεραιότητας**, ένα προ-μοιρασμένο κλειδί ως **τύπο αυθεντικοποίησης**, Diffie-Hellman 1 ή 2 ως **αλγόριθμο κατανομής κλειδιών** και 28800 δευτερόλεπτα ως **διάρκεια ζωής**.
Έτσι, το πρώτο πράγμα που πρέπει να κάνετε είναι να**βρείτε μια έγκυρη μεταμόρφωση**, ώστε ο διακομιστής να επικοινωνήσει μαζί σας. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε το εργαλείο **ike-scan**. Από προεπιλογή, το Ike-scan λειτουργεί σε κύριο τρόπο και στέλνει ένα πακέτο στην πύλη με ένα ISAKMP header και μια μόνο πρόταση με **οκτώ μεταμορφώσεις μέσα σε αυτήν**.
Όπως μπορείτε να δείτε στην προηγούμενη απάντηση, υπάρχει ένα πεδίο που ονομάζεται **AUTH** με την τιμή **PSK**. Αυτό σημαίνει ότι το vpn είναι ρυθμισμένο χρησιμοποιώντας ένα προμοιρασμένο κλειδί (και αυτό είναι πραγματικά καλό για έναν pentester).\
* _**1 returned handshake; 0 returned notify:**_ Αυτό σημαίνει ότι ο**στόχος είναι ρυθμισμένος για IPsec και είναι πρόθυμος να εκτελέσει διαπραγμάτευση IKE, και είτε μία είτε περισσότερες από τις μετατροπές που προτείνατε είναι αποδεκτές** (μια έγκυρη μετατροπή θα εμφανιστεί στην έξοδο).
* _0 returned handshake; 1 returned notify:_ Οι πύλες VPN απαντούν με ένα μήνυμα ειδοποίησης όταν **καμία από τις μετατροπές δεν είναι αποδεκτή** (αν και ορισμένες πύλες δεν το κάνουν, οπότε θα πρέπει να γίνει περαιτέρω ανάλυση και να δοθεί μια αναθεωρημένη πρόταση).
Στη συνέχεια, σε αυτή την περίπτωση έχουμε ήδη μια έγκυρη μετατροπή, αλλά αν βρίσκεστε στην 3η περίπτωση, τότε πρέπει να**κάνετε brute-force λίγο γιανα βρείτε μια έγκυρη μετατροπή:**
Αν η brute-force δεν λειτούργησε, ίσως ο διακομιστής να απαντά χωρίς handshakes ακόμη και σε έγκυρους μετασχηματισμούς. Τότε, θα μπορούσατε να δοκιμάσετε την ίδια brute-force αλλά χρησιμοποιώντας επιθετική λειτουργία:
Η Cisco υποδεικνύει να αποφεύγεται η χρήση των ομάδων DH 1 και 2 επειδή δεν είναι αρκετά ισχυρές. Οι ειδικοί πιστεύουν ότι **χώρες με πολλούς πόρους μπορούν εύκολα να σπάσουν την κρυπτογράφηση** των δεδομένων που χρησιμοποιούν αυτές τις αδύναμες ομάδες. Αυτό γίνεται με τη χρήση μιας ειδικής μεθόδου που τις προετοιμάζει να σπάσουν τους κωδικούς γρήγορα. Παρόλο που κοστίζει πολλά χρήματα γιανα ρυθμιστεί αυτή η μέθοδος, επιτρέπει σε αυτές τις ισχυρές χώρες να διαβάζουν τα κρυπτογραφημένα δεδομένα σε πραγματικό χρόνο αν χρησιμοποιούν μια ομάδα που δεν είναι ισχυρή (όπως 1,024-bit ή μικρότερη).
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το ike-scan γιανα προσπαθήσετε να**ανακαλύψετε τον προμηθευτή** της συσκευής. Το εργαλείο στέλνει μια αρχική πρόταση και σταματά να επαναλαμβάνει. Στη συνέχεια, θα **αναλύσει** τη **διαφορά χρόνου****μεταξύ** των ληφθέντων **μηνυμάτων** από τον διακομιστή και του αντίστοιχου προτύπου απάντησης, ο pentester μπορεί να αναγνωρίσει με επιτυχία τον προμηθευτή της πύλης VPN. Επιπλέον, μερικοί διακομιστές VPN θα χρησιμοποιήσουν το προαιρετικό **Vendor ID (VID) payload** με το IKE.
Για να επιτραπεί η σύλληψη του hash, χρειάζεστε μια έγκυρη μετατροπή που να υποστηρίζει τη λειτουργία Aggressive και το σωστό ID (όνομα ομάδας). Πιθανώς δεν θα γνωρίζετε το έγκυρο όνομα ομάδας, οπότε θα πρέπει να το βρείτε με brute-force.\
Για να το κάνετε αυτό, θα σας πρότεινα 2 μεθόδους:
Αν**δεν επιστραφεί κανένας hash**, τότε πιθανότατα αυτή η μέθοδος brute forcing θα λειτουργήσει. **Αν επιστραφεί κάποιος hash, αυτό σημαίνει ότι θα σταλεί ένας ψεύτικος hash για μια ψεύτικη ταυτότητα, οπότε αυτή η μέθοδος δεν θα είναι αξιόπιστη**γιανα κάνετε brute-force την ταυτότητα. Για παράδειγμα, μπορεί να επιστραφεί ένας ψεύτικος hash (αυτό συμβαίνει σε σύγχρονες εκδόσεις):
Αλλά αν, όπως είπα, **δεν επιστραφεί κανένας hash**, τότε θα πρέπει να προσπαθήσετε να κάνετε brute-force κοινών ονομάτων ομάδων χρησιμοποιώντας το ike-scan.
Αυτό το σενάριο **θα προσπαθήσει να κάνει brute-force πιθανές ταυτότητες** και θα επιστρέψει τις ταυτότητες όπου επιστρέφεται μια έγκυρη χειραψία (αυτό θα είναι ένα έγκυρο όνομα ομάδας).
Αν έχετε ανακαλύψει μια συγκεκριμένη μετατροπή, προσθέστε την στην εντολή ike-scan. Καιαν έχετε ανακαλύψει πολλές μετατροπές, μη διστάσετε να προσθέσετε έναν νέο βρόχο γιανα τις δοκιμάσετε όλες (θα πρέπει να τις δοκιμάσετε όλες μέχρι να λειτουργήσει σωστά μία από αυτές).
Μπορείτε να χρησιμοποιήσετε το [λεξικό του ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) ή [αυτό στο seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) με κοινά ονόματα ομάδων γιανα τα κάνετε brute-force:
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) επίσης χρησιμοποιεί **ike-scan**γιανα κάνει brute force πιθανά ονόματα ομάδων. Ακολουθεί τη δική του μέθοδο γιανα**βρει μια έγκυρη ταυτότητα με βάση την έξοδο του ike-scan**.
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) είναι ένα εργαλείο που μπορεί να χρησιμοποιηθεί γιανα**κάνει 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 που μπορεί να σπάσει:
Μπορείτε να χρησιμοποιήσετε **psk-crack**, **john** (χρησιμοποιώντας [**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/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, [περισσότερες πληροφορίες](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Το Fiked θα λειτουργήσει ως σημείο τερματισμού VPN και θα καταγράψει τα διαπιστευτήρια XAuth:
Επίσης, χρησιμοποιώντας το IPSec προσπαθήστε να κάνετε μια επίθεση MitM και να μπλοκάρετε όλη την κίνηση στην θύρα 500, αν η σήραγγα IPSec δεν μπορεί να δημιουργηθεί ίσως η κίνηση θα σταλεί σε καθαρή μορφή.
Για να κάνετε brute force το **XAUTH** (όταν γνωρίζετε ένα έγκυρο όνομα ομάδας **id** και το **psk**) μπορείτε να χρησιμοποιήσετε ένα όνομα χρήστη ή μια λίστα ονομάτων χρηστών και μια λίστα κωδικών πρόσβασης:
Στο Kali, το **VPNC** χρησιμοποιείται για την εγκαθίδρυση IPsec tunnels. Τα**προφίλ** πρέπει να βρίσκονται στον κατάλογο `/etc/vpnc/`. Μπορείτε να ξεκινήσετε αυτά τα προφίλ χρησιμοποιώντας την εντολή _**vpnc**_.
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.