* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menace proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) dès aujourd'hui.
IPsec est la technologie la plus couramment utilisée pour les solutions VPN d'entreprise, à la fois de passerelle à passerelle (LAN à LAN) et d'hôte à passerelle (accès distant).
**IKE est un type d'ISAKMP** (Internet Security Association Key Management Protocol), qui est un cadre d'authentification et d'échange de clés. IKE établit l'association de sécurité (SA) entre deux points de terminaison grâce à un processus en trois phases :
* **Phase 1 :** Établir un canal sécurisé entre 2 points de terminaison à l'aide d'une clé pré-partagée (PSK) ou de certificats. Il peut utiliser le mode principal (3 paires de messages) ou le mode **agressif**.
* **Phase 1.5 :** C'est facultatif, cela s'appelle la phase d'authentification étendue et authentifie l'utilisateur qui essaie de se connecter (utilisateur + mot de passe).
* **Phase 2 :** Négocie les paramètres de sécurité des données en utilisant ESP et AH. Il peut utiliser un algorithme différent de celui utilisé dans la phase 1 (Perfect Forward Secrecy (PFS)).
La configuration IPSec peut être préparée pour n'accepter qu'une ou quelques transformations. Une transformation est une combinaison de valeurs. **Chaque transformation** contient un certain nombre d'attributs tels que DES ou 3DES comme algorithme de **chiffrement**, SHA ou MD5 comme algorithme d'**intégrité**, une clé pré-partagée comme type d'**authentification**, Diffie-Hellman 1 ou 2 comme algorithme de **distribution de clé** et 28800 secondes comme **durée de vie**.
Ensuite, la première chose que vous devez faire est de **trouver une transformation valide**, afin que le serveur puisse communiquer avec vous. Pour ce faire, vous pouvez utiliser l'outil **ike-scan**. Par défaut, Ike-scan fonctionne en mode principal et envoie un paquet à la passerelle avec un en-tête ISAKMP et une seule proposition avec **huit transformations à l'intérieur**.
Comme vous pouvez le voir dans la réponse précédente, il y a un champ appelé **AUTH** avec la valeur **PSK**. Cela signifie que le VPN est configuré en utilisant une clé prépartagée (et c'est vraiment bon pour un pentester).\
* _0 handshake retourné; 0 notification retournée:_ Cela signifie que la cible n'est pas une passerelle IPsec.
* _**1 handshake retourné; 0 notification retournée:**_ Cela signifie que la cible est configurée pour IPsec et est prête à effectuer une négociation IKE, et l'une ou plusieurs des transformations que vous avez proposées sont acceptables (une transformation valide sera affichée dans la sortie).
* _0 handshake retourné; 1 notification retournée:_ Les passerelles VPN répondent par un message de notification lorsque aucune des transformations n'est acceptable (bien que certaines passerelles ne le fassent pas, auquel cas une analyse supplémentaire et une proposition révisée doivent être essayées).
Dans ce cas, nous avons déjà une transformation valide, mais si vous êtes dans le troisième cas, vous devez **forcer un peu pour trouver une transformation valide:**
Si la méthode de la force brute n'a pas fonctionné, il se peut que le serveur réponde sans effectuer de poignées de main, même pour des transformations valides. Dans ce cas, vous pouvez essayer la même méthode de force brute, mais en utilisant le mode agressif :
Cisco recommande d'éviter en particulier les groupes DH 1 et 2. Les auteurs de l'article décrivent comment il est probable que les États-nations puissent décrypter les sessions IPsec négociées à l'aide de groupes faibles via la précomputation des logarithmes discrets. Les centaines de millions de dollars dépensés pour effectuer la précomputation sont amortis par le décryptage en temps réel de toute session utilisant un groupe faible (1 024 bits ou moins).
Ensuite, vous pouvez utiliser ike-scan pour essayer de **découvrir le fournisseur** du dispositif. L'outil envoie une proposition initiale et arrête de rejouer. Ensuite, il **analyse** la **différence de temps** entre les **messages** reçus du serveur et le modèle de réponse correspondant, le testeur de pénétration peut identifier avec succès le fournisseur de la passerelle VPN. De plus, certains serveurs VPN utiliseront la charge utile optionnelle **Vendor ID (VID)** avec IKE.
Pour être autorisé à capturer le hash, vous avez besoin d'une transformation valide prenant en charge le mode Aggressive et le bon ID (nom de groupe). Vous ne connaîtrez probablement pas le nom de groupe valide, vous devrez donc le brute-force.\
Si **aucun hachage n'est renvoyé**, alors cette méthode de force brute devrait fonctionner. **Si un hachage est renvoyé, cela signifie qu'un faux hachage va être renvoyé pour un faux ID, donc cette méthode ne sera pas fiable** pour la force brute de l'ID. Par exemple, un faux hachage pourrait être renvoyé (cela se produit dans les versions modernes) :
Si vous avez découvert une transformation spécifique, ajoutez-la dans la commande ike-scan. Et si vous avez découvert plusieurs transformations, n'hésitez pas à ajouter une nouvelle boucle pour les essayer toutes (vous devriez les essayer toutes jusqu'à ce que l'une d'entre elles fonctionne correctement).
Vous pouvez utiliser le [dictionnaire d'ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) ou [celui de seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) de noms de groupe courants pour les forcer :
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) utilise également **ike-scan** pour forcer de manière brutale les noms de groupe possibles. Il suit sa propre méthode pour **trouver un ID valide basé sur la sortie de ike-scan**.
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) est un outil qui peut être utilisé pour **forcer de manière brutale les IDs également**. Cet outil **essaiera d'exploiter différentes vulnérabilités** qui pourraient être utilisées pour **distinguer un ID valide d'un ID non valide** (il peut y avoir des faux positifs et des faux négatifs, c'est pourquoi je préfère utiliser la méthode ike-scan si possible).
* La **première méthode** consiste à forcer de manière brutale les noms de groupe en **recherchant** les informations **Dead Peer Detection DPD** des systèmes Cisco (ces informations ne sont renvoyées par le serveur que si le nom de groupe est correct).
* La **deuxième méthode** disponible consiste à **vérifier le nombre de réponses envoyées à chaque tentative** car parfois plus de paquets sont envoyés lorsque l'ID correct est utilisé.
* Enfin, si le serveur ne renvoie rien lors des vérifications, **ikeforce** essaiera de forcer de manière brutale le serveur et vérifiera si lorsque l'ID correct est envoyé, le serveur renvoie un paquet.\
Évidemment, l'objectif de la force brute de l'ID est d'obtenir la **PSK** lorsque vous avez un ID valide. Ensuite, avec l'**ID** et la **PSK**, vous devrez forcer de manière brutale le XAUTH (s'il est activé).
Si vous avez découvert une transformation spécifique, ajoutez-la dans la commande ikeforce. Et si vous avez découvert plusieurs transformations, n'hésitez pas à ajouter une nouvelle boucle pour les essayer toutes (vous devriez les essayer toutes jusqu'à ce que l'une d'entre elles fonctionne correctement).
Il est également possible d'obtenir des noms d'utilisateur valides en écoutant la connexion entre le client VPN et le serveur, car le premier paquet de mode agressif contenant l'ID du client est envoyé en clair (d'après le livre **Network Security Assessment: Know Your Network**)
Enfin, si vous avez trouvé une **transformation valide** et le **nom du groupe** et si le **mode agressif est autorisé**, vous pouvez très facilement récupérer le hash crackable :
Vous pouvez utiliser **psk-crack**, **john** (en utilisant [**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py)) et **hashcat** pour **cracker** le hash :
La plupart des implémentations utilisent le mode **agressif IKE avec un PSK pour effectuer une authentification de groupe**, et **XAUTH pour fournir une authentification utilisateur supplémentaire** (via Microsoft Active Directory, RADIUS ou similaire). Dans **IKEv2**, **EAP remplace XAUTH** pour authentifier les utilisateurs.
Ainsi, vous pouvez capturer les données de connexion en utilisant _fiked_ et voir s'il y a un nom d'utilisateur par défaut (vous devez rediriger le trafic IKE vers `fiked` pour l'écoute, ce qui peut être fait à l'aide de l'usurpation ARP, [plus d'informations](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked agira en tant que point de terminaison VPN et capturera les identifiants XAuth :
De plus, en utilisant IPSec, essayez de réaliser une attaque de l'homme du milieu (MitM) et bloquez tout le trafic vers le port 500. Si le tunnel IPSec ne peut pas être établi, il se peut que le trafic soit envoyé en clair.
Pour effectuer une attaque de force brute sur le **XAUTH** (lorsque vous connaissez un nom de groupe valide **id** et le **psk**), vous pouvez utiliser un nom d'utilisateur ou une liste de noms d'utilisateurs et une liste de mots de passe :
Dans Kali, **VPNC** est utilisé pour établir des tunnels IPsec. Les **profils** doivent être situés dans _**/etc/vpnc/**_ et vous pouvez utiliser l'outil _**vpnc**_ pour les appeler.\
Trouvez les vulnérabilités les plus importantes afin de les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menaces proactives et détecte les problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) dès aujourd'hui.
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).