<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtén la [**merchandising oficial de PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
Encuentra vulnerabilidades que importan más para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, ejecuta escaneos proactivos de amenazas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy.
IPsec es la tecnología más comúnmente utilizada tanto para soluciones de VPN empresariales de gateway a gateway (LAN a LAN) como de host a gateway (acceso remoto).
**IKE es un tipo de ISAKMP** (Protocolo de Gestión de Claves de Asociación de Seguridad de Internet), que es un marco para la autenticación e intercambio de claves. IKE establece la asociación de seguridad (SA) entre dos puntos finales a través de un proceso de tres fases:
* **Fase 1:** Establece un canal seguro entre 2 puntos finales utilizando una Clave Precompartida (PSK) o certificados. Puede utilizar el modo principal (3 pares de mensajes) o **modo agresivo**.
* **Fase 2:** Negocia los parámetros para la seguridad de los datos utilizando ESP y AH. Puede utilizar un algoritmo diferente al utilizado en la fase 1 (Secreto Directo Perfecto (PFS)).
La configuración de IPSec puede estar preparada para aceptar solo una o unas pocas transformaciones. Una transformación es una combinación de valores. **Cada transformación** contiene una serie de atributos como DES o 3DES como el algoritmo de **encriptación**, SHA o MD5 como el algoritmo de **integridad**, una clave precompartida como el tipo de **autenticación**, Diffie-Hellman 1 o 2 como el algoritmo de **distribución de clave** y 28800 segundos como el **tiempo de vida**.
Entonces, lo primero que debes hacer es **encontrar una transformación válida**, para que el servidor pueda comunicarse contigo. Para hacerlo, puedes utilizar la herramienta **ike-scan**. Por defecto, Ike-scan funciona en modo principal y envía un paquete al gateway con un encabezado ISAKMP y una sola propuesta con **ocho transformaciones en su interior**.
Como puedes ver en la respuesta anterior, hay un campo llamado **AUTH** con el valor **PSK**. Esto significa que la VPN está configurada utilizando una clave precompartida (lo cual es realmente bueno para un pentester).\
* _**1 returned handshake; 0 returned notify:**_ Esto significa que el **objetivo está configurado para IPsec y está dispuesto a realizar la negociación IKE, y uno o más de los transformados que propusiste son aceptables** (se mostrará un transformado válido en la salida).
* _0 returned handshake; 1 returned notify:_ Las puertas de enlace VPN responden con un mensaje de notificación cuando **ninguno de los transformados es aceptable** (aunque algunas puertas de enlace no lo hacen, en cuyo caso se debe intentar un análisis adicional y una propuesta revisada).
Entonces, en este caso ya tenemos un transformado válido, pero si te encuentras en el tercer caso, entonces necesitas **hacer un poco de fuerza bruta para encontrar un transformado válido:**
Si el ataque de fuerza bruta no funcionó, tal vez el servidor esté respondiendo sin realizar apretones de manos incluso a transformaciones válidas. En ese caso, podrías intentar el mismo ataque de fuerza bruta pero utilizando el modo agresivo:
Cisco recomienda evitar especialmente los grupos DH 1 y 2. Los autores del documento describen cómo es probable que **los estados nación puedan descifrar sesiones IPsec negociadas usando grupos débiles a través de la precomputación de log discreto**. Los cientos de millones de dólares gastados en realizar la precomputación se amortizan a través del descifrado en tiempo real de cualquier sesión que utilice un grupo débil (de 1,024 bits o menos).
Luego, puedes usar ike-scan para intentar **descubrir el proveedor** del dispositivo. La herramienta envía una propuesta inicial y deja de retransmitir. Luego, **analizará** la **diferencia de tiempo** entre los **mensajes recibidos** del servidor y el patrón de respuesta coincidente, permitiendo al pentester identificar con éxito el proveedor de la puerta de enlace VPN. Además, algunos servidores VPN utilizarán la carga útil opcional **Identificación de proveedor (VID)** con IKE.
Para poder capturar el hash, necesitas una transformación válida que admita el modo Agresivo y el ID correcto (nombre de grupo). Probablemente no sepas el nombre de grupo válido, por lo que tendrás que hacer fuerza bruta para encontrarlo.\
Si **no se devuelve ningún hash**, entonces probablemente este método de fuerza bruta funcionará. **Si se devuelve algún hash, esto significa que se enviará un hash falso para un ID falso, por lo que este método no será confiable** para realizar fuerza bruta en el ID. Por ejemplo, podría devolverse un hash falso (esto ocurre en versiones modernas):
Este script **intentará realizar fuerza bruta en posibles IDs** y devolverá los IDs donde se devuelve un handshake válido (esto será un nombre de grupo válido).
Si has descubierto una transformación específica, agrégala en el comando ike-scan. Y si has descubierto varias transformaciones, siéntete libre de agregar un nuevo bucle para probarlas todas (debes probarlas todas hasta que una de ellas funcione correctamente).
Puedes utilizar el [diccionario de ikeforce](https://github.com/SpiderLabs/ikeforce/blob/master/wordlists/groupnames.dic) o [el de seclists](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/ike-groupid.txt) de nombres de grupo comunes para realizar fuerza bruta en ellos:
[**iker.py**](https://github.com/isaudits/scripts/blob/master/iker.py) también utiliza **ike-scan** para realizar fuerza bruta de posibles nombres de grupo. Sigue su propio método para **encontrar un ID válido basado en la salida de ike-scan**.
[**ikeforce.py**](https://github.com/SpiderLabs/ikeforce) es una herramienta que se puede utilizar para **realizar fuerza bruta de IDs también**. Esta herramienta intentará **explotar diferentes vulnerabilidades** que podrían ser utilizadas para **distinguir entre un ID válido y uno no válido** (puede haber falsos positivos y falsos negativos, por eso prefiero usar el método de ike-scan si es posible).
Por defecto, **ikeforce** enviará al principio algunos IDs aleatorios para verificar el comportamiento del servidor y determinar la táctica a utilizar.
* El **primer método** es realizar fuerza bruta de los nombres de grupo **buscando** la información de **Dead Peer Detection DPD** de los sistemas Cisco (esta información solo es respondida por el servidor si el nombre del grupo es correcto).
* El **segundo método** disponible es **verificar el número de respuestas enviadas en cada intento** porque a veces se envían más paquetes cuando se utiliza el ID correcto.
* Finalmente, si el servidor no responde a las verificaciones, **ikeforce** intentará realizar fuerza bruta en el servidor y verificar si cuando se envía el ID correcto, el servidor responde con algún paquete.\
Obviamente, el objetivo de la fuerza bruta del ID es obtener la **PSK** cuando se tiene un ID válido. Luego, con el **ID** y la **PSK**, deberás realizar fuerza bruta en el XAUTH (si está habilitado).
Si has descubierto una transformación específica, agrégala en el comando de ikeforce. Y si has descubierto varias transformaciones, siéntete libre de agregar un nuevo bucle para probarlas todas (deberías probarlas todas hasta que una de ellas funcione correctamente).
También es posible obtener nombres de usuario válidos al husmear la conexión entre el cliente VPN y el servidor, ya que el primer paquete de modo agresivo que contiene el ID del cliente se envía en texto claro (del libro **Network Security Assessment: Know Your Network**)
Finalmente, si has encontrado una **transformación válida** y el **nombre del grupo** y si el **modo agresivo está permitido**, entonces puedes obtener fácilmente el hash que se puede descifrar:
ike-scan -M -A -n <ID> --pskcrack=hash.txt <IP>#If aggressive mode is supported and you know the id, you can get the hash of the passwor
```
El hash se guardará dentro de _hash.txt_.
Puedes usar **psk-crack**, **john** (usando [**ikescan2john.py**](https://github.com/truongkma/ctf-tools/blob/master/John/run/ikescan2john.py)) y **hashcat** para **descifrar** el hash:
La mayoría de las implementaciones utilizan **modo agresivo IKE con una PSK para realizar autenticación de grupo**, y **XAUTH para proporcionar autenticación de usuario adicional** (a través de Microsoft Active Directory, RADIUS, o similar). Dentro de **IKEv2**, **EAP reemplaza XAUTH** para autenticar usuarios.
Por lo tanto, puedes capturar los datos del inicio de sesión utilizando _fiked_ y ver si hay algún nombre de usuario predeterminado (Necesitas redirigir el tráfico IKE a `fiked` para el espionaje, lo cual se puede hacer con la ayuda de suplantación de ARP, [más información](https://opensourceforu.com/2012/01/ipsec-vpn-penetration-testing-backtrack-tools/)). Fiked actuará como un punto final de VPN y capturará las credenciales XAuth:
### Ataque de MitM y bloqueo de tráfico al puerto 500 usando IPSec
También, utilizando IPSec, intenta realizar un ataque de MitM y bloquear todo el tráfico al puerto 500. Si el túnel IPSec no puede establecerse, es posible que el tráfico se envíe en texto claro.
Para realizar un ataque de fuerza bruta en **XAUTH** (cuando se conoce un nombre de grupo válido **id** y el **psk**), puedes utilizar un nombre de usuario o una lista de nombres de usuario y una lista de contraseñas:
En Kali, **VPNC** se utiliza para establecer túneles IPsec. Los **perfiles** deben estar ubicados en el directorio `/etc/vpnc/`. Puedes iniciar estos perfiles utilizando el comando _**vpnc**_.
Los siguientes comandos y configuraciones ilustran el proceso de configuración de una conexión VPN con VPNC:
Encuentre vulnerabilidades que son más importantes para que pueda solucionarlas más rápido. Intruder rastrea su superficie de ataque, ejecuta escaneos proactivos de amenazas, encuentra problemas en toda su pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébelo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy.
<summary><strong>Aprenda hacking en AWS desde cero hasta experto con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si desea ver su **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulte los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Obtenga el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únase al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígame** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparta sus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).