mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 07:01:09 +00:00
219 lines
18 KiB
Markdown
219 lines
18 KiB
Markdown
# Ataques GLBP y HSRP
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección de exclusivos [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Consigue el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
**Esta página fue copiada de** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)\*\*\*\*
|
|
|
|
## Secuestro de FHRP <a href="#6196" id="6196"></a>
|
|
|
|
### ¿Qué es FHRP? <a href="#b12d" id="b12d"></a>
|
|
|
|
FHRP (Protocolo de redundancia de primer salto) es una clase de protocolos de red diseñados para crear un sistema de enrutamiento redundante en caliente. Con FHRP, los routers físicos se pueden combinar en un solo dispositivo lógico, lo que aumenta la tolerancia a fallos y ayuda a distribuir la carga.
|
|
|
|
**Los ingenieros de Cisco Systems han desarrollado dos protocolos FHRP, GLBP y HSRP, que demostraré a continuación.**
|
|
|
|
### Protocolo GLBP <a href="#8a26" id="8a26"></a>
|
|
|
|
**Desarrollado por ingenieros de Cisco Systems.** Al igual que HSRP, este protocolo se implementa en la parte superior de la pila de protocolos TCP/IP, por lo que se utiliza el protocolo de capa de transporte UDP en el puerto número 3222 para la traducción de la información del servicio. Los routers GLBP dentro del mismo grupo lógico intercambian paquetes especiales "hello" cada 3 segundos, pero si un router GLBP dentro del mismo grupo no ha recibido un paquete hello de su vecino GLBP en 10 segundos, lo reconoce como "muerto". Sin embargo, los valores del temporizador se pueden configurar según las necesidades del administrador.
|
|
|
|
### La estructura y mecánica de GLBP <a href="#3bb3" id="3bb3"></a>
|
|
|
|
GLBP proporciona el uso compartido de carga a múltiples routers (gateways) utilizando una dirección IP virtual y múltiples direcciones MAC virtuales. Cada host está configurado con la misma dirección IP virtual y todos los routers en el grupo virtual participan en la transmisión de paquetes.
|
|
|
|
Funciona de manera muy diferente a los protocolos HSRP y VRRP porque utiliza mecanismos de equilibrio de carga reales, que se denotan a continuación:
|
|
|
|
**Dependiente del host.** Un tipo de equilibrio de carga utilizado en una red donde hay NAT. Host-Dependent garantiza el hecho de que el host recibirá la misma dirección MAC del dispositivo AVF que se utilizó en un momento anterior, por lo que el NAT configurado para el host no se romperá.
|
|
|
|
**Round-Robin.** En este modo, el dispositivo AVG distribuye direcciones MAC a los miembros AVF alternativamente. Este es el mecanismo utilizado de forma predeterminada.
|
|
|
|
**Round-robin basado en peso**. Equilibrio de carga basado en una métrica especial de "peso".
|
|
|
|
### Roles en el dominio GLBP y terminología <a href="#febd" id="febd"></a>
|
|
|
|
**AVG (Gateway virtual activo)** - el router con el papel principal también es responsable de distribuir direcciones MAC a otros routers dentro del mismo grupo GLBP. Una especie de "jefe" en el dominio GLBP. AVG le dice a los otros routers cómo distribuir el tráfico entregando direcciones MAC cuando llega una solicitud ARP. Vale la pena señalar que solo puede haber un router AVG en un dominio GLBP, pero también puede ser un miembro AVF.
|
|
|
|
**AVF (Reenviador virtual activo)** - un router en un grupo GLBP que maneja el tráfico en la red.
|
|
|
|
**Prioridad GLBP** - El valor de prioridad que determina qué router en el grupo GLBP será el AVG. El valor predeterminado es 100 (el rango de prioridad puede ser de 1 a 255). Se puede establecer manualmente, es decir, el ingeniero de red determina qué router será el "superior" y cuál será el "esclavo". Cuanto mayor sea la prioridad, es más probable que el router obtenga el papel de AVG. Por lo general, el papel de AVG se otorga a routers más potentes.
|
|
|
|
**Peso GLBP** - El valor del llamado Peso GLBP de un router en un grupo GLBP. El peso GLBP define el nivel de carga del router. Este valor es "flotante" y puede variar según la carga en el canal físico (se involucra el mecanismo de seguimiento de objetos), pero también se puede configurar manualmente.
|
|
|
|
**Dirección IP virtual GLBP** - la dirección IP virtual en el dominio GLBP. Se utiliza como dirección de puerta de enlace predeterminada para hosts legítimos.
|
|
|
|
GLBP utiliza la dirección IP de envío de grupo reservada **224.0.0.102** y el número de puerto del protocolo de capa de transporte UDP **3222** para enviar y procesar información del servicio. Se envían paquetes especiales de GLBP Hello cada **3 segundos**. Si el router GLBP no ha recibido un paquete hello de un vecino dentro de **10 segundos**, se considerará que el vecino está "muerto" y se eliminará del dominio GLBP.
|
|
|
|
### Mecanismo de ataque GLBP <a href="#3260" id="3260"></a>
|
|
|
|
La técnica de este ataque de red es imponer su dispositivo como el enrutador principal **inyectando un paquete GLBP malicioso con un valor de prioridad máximo.** **La explotación exitosa conduce a un ataque DoS o MITM en el que puede interceptar el tráfico dentro de la red, realizar una redirección o causar un DoS al asumir el papel de enrutador AVG.** Todo lo que tienes que hacer es construir un paquete GLBP con el valor de prioridad más alto de 255 y
|
|
```
|
|
~$ sudo ip link set eth0 promisc on
|
|
~$ sudo sysctl -w net.ipv4.ip_forward=1
|
|
```
|
|
Selecciona el router con dirección IP **10.10.100.100** y activa la opción **Obtener IP**. También necesitas generar un **ARP Gratuito**.
|
|
|
|
<figure><img src="../../.gitbook/assets/image (222).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (161) (2).png" alt=""><figcaption><p>La estructura de una inyección maliciosa de GLBP</p></figcaption></figure>
|
|
|
|
Como puedes ver, el router AVG ahora está fingiendo ser un sistema atacante. **El valor de prioridad es 255, el valor de peso es 255, es decir, el máximo.**
|
|
|
|
**Después de realizar la inyección, necesitamos crear una dirección IP secundaria en nuestra interfaz de red con el valor de la dirección IP virtual en el dominio GLBP. También necesitas establecer una máscara de 24 bits.**
|
|
|
|
**De esta manera, el tráfico legítimo se redirigirá hacia nosotros, porque la dirección IP virtual utilizada en el dominio GLBP es la dirección de la puerta de enlace predeterminada para los hosts:**
|
|
```
|
|
~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
|
|
```
|
|
Para ver no solo el tráfico entrante sino también el tráfico saliente, necesitamos una pequeña regla para **SNAT (enmascaramiento):**
|
|
```
|
|
~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
```
|
|
También necesitamos eliminar la ruta predeterminada en nuestra máquina y escribir una nueva que pase a través del antiguo router AVG (la dirección es 10.10.100.100). Aunque hayamos secuestrado el rol AVG del router, aún podrá enrutar el tráfico.
|
|
```
|
|
~$ sudo route del default
|
|
~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
|
```
|
|
¡Listo, ahora somos el "hombre en el medio"! Ejecutaré la herramienta [**net-creds.py**](https://github.com/DanMcInerney/net-creds) para analizar el tráfico y buscar datos importantes. Por ejemplo, tráfico FTP no encriptado o hashes NTLM.
|
|
```
|
|
~$ sudo python2 net-creds.py -i eth0
|
|
```
|
|
Después de ejecutar la utilidad, intentaré leer el recurso compartido SMB con la dirección IP **172.16.100.70**, que se encuentra detrás de los routers GLBP.
|
|
```
|
|
user@Boundless:~$ smbclient -L \\172.16.100.70 --user mercy
|
|
```
|
|
<figure><img src="../../.gitbook/assets/image (243).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**Así es como se puede interceptar el tráfico dentro de la red atacando los dominios GLBP.**
|
|
|
|
### Secuestro de HSRP <a href="#595f" id="595f"></a>
|
|
|
|
**HSRP (Hot Standby Router/Redundancy Protocol) —** es un protocolo propietario de Cisco que permite la redundancia de la puerta de enlace de la red. La idea general es combinar varios routers físicos en un solo router lógico con una dirección IP común. Esta dirección del router virtual se asignará a la interfaz del router con el rol principal, y este último, a su vez, se encargará del reenvío de tráfico. En el dominio HSRP, la tarea de manejar todo el tráfico recae precisamente en el router con el rol principal, a diferencia de GLBP, donde se propuso el equilibrio de carga mediante el uso de métricas especiales (prioridad y peso).
|
|
|
|
### Roles en el dominio HSRP y terminología <a href="#4185" id="4185"></a>
|
|
|
|
**Router activo de HSRP** — un dispositivo que actúa como un router virtual y proporciona el reenvío de tráfico desde redes de origen a redes de destino.\
|
|
**Router en espera de HSRP** — un dispositivo que actúa como un router en espera, esperando que falle el router activo. Cuando falla el router activo principal, el router en espera tomará el rol principal y asumirá las funciones del router activo.\
|
|
**Grupo de HSRP** — un grupo de dispositivos que asegura el funcionamiento y la tolerancia a fallos de un router lógico.\
|
|
**Dirección MAC de HSRP** — la dirección MAC virtual del router lógico en el dominio HSRP.\
|
|
**Dirección IP virtual de HSRP** — Esta es una dirección IP virtual especial en el grupo HSRP. Esta dirección IP será la puerta de enlace predeterminada para los hosts finales, utilizada en el propio router lógico.
|
|
|
|
### Versiones del protocolo HSRP <a href="#eda3" id="eda3"></a>
|
|
|
|
El protocolo HSRP tiene dos versiones: HSRPv1 y HSRPv2. Difieren en los siguientes parámetros:
|
|
|
|
* **El número de grupos lógicos posibles.** HSRPv1 puede tener hasta 255 grupos. HSRPv2 puede tener hasta 4096 grupos.
|
|
* **Dirección IP multicast.** HSRPv1 utiliza la dirección IP **224.0.0.2** para enviar información de servicio, y HSRPv2 utiliza **224.0.0.102**.
|
|
* **Dirección MAC virtual.** HSRPv1 utiliza **00:00:0C:07:AC:XX** como su dirección MAC virtual. HSRPv2 tiene una dirección MAC virtual de **00:00:0C:9F:FX:XX** (donde XX es el número de grupo HSRP).
|
|
|
|
HSRP utiliza la dirección IP reservada **224.0.0.2** o **224.0.0.102** (dependiendo de la versión de HSRP) y el protocolo de capa de transporte UDP con el número de puerto **1985** para difundir y procesar la información de servicio. Se envían paquetes especiales de HSRP Hello **cada 3 segundos**. Si el router HSRP no recibe un paquete hello de un vecino **dentro de los 10 segundos**, el vecino se considerará "muerto" y saldrá del dominio HSRP.
|
|
|
|
### Mecanismo de ataque HSRP <a href="#d4a3" id="d4a3"></a>
|
|
|
|
**Esto es exactamente lo mismo que el secuestro de GLBP. Necesitamos realizar una inyección maliciosa de HSRP con un valor de prioridad máxima de 255.** Esto nos permite secuestrar el rol del router activo, abriendo la puerta a un ataque **MITM**. Pero nuevamente, necesitamos examinar la siguiente información antes de realizar el ataque:
|
|
|
|
* **La dirección IP virtual utilizada en el dominio HSRP**
|
|
* **La presencia de autenticación**
|
|
* **Valor de las prioridades del router**
|
|
|
|
Podemos extraer esta información analizando el tráfico de HSRP. **Utilicemos Wireshark.**
|
|
|
|
Como se puede ver en la captura de pantalla, el proceso de HSRP involucra solo dos routers con direcciones 10.10.100.100 y 10.10.100.200
|
|
|
|
<figure><img src="../../.gitbook/assets/image (181).png" alt=""><figcaption><p>Anuncios de HSRP</p></figcaption></figure>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (212).png" alt=""><figcaption><p>Primer router de HSRP</p></figcaption></figure>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (304).png" alt=""><figcaption><p>Segundo router de HSRP</p></figcaption></figure>
|
|
|
|
Basándonos en el análisis del tráfico de HSRP, tenemos lo siguiente:
|
|
|
|
* **Se detectó una mala configuración dentro del ajuste de prioridad. Se considera que el router activo es un router de HSRP con prioridad 200, es decir, tenemos un vector para el secuestro de HSRP.**
|
|
* **la dirección IP virtual utilizada en el dominio HSRP es 10.10.100.254**
|
|
* **Se utiliza autenticación MD5**
|
|
|
|
Tener autenticación en el dominio nos ata las manos, pero lo arreglaré.
|
|
|
|
### Saltarse la autenticación de HSRP <a href="#d9fd" id="d9fd"></a>
|
|
|
|
Guarde el volcado de tráfico de HSRP en formato **.pcap**, para que el exfiltrador pueda extraer correctamente los hashes MD5 del volcado. Usaré **hsrp2john.py** como exfiltrador:
|
|
```
|
|
~/cisconightmare/exfiltrate$ python2 hsrp2john.py hsrp_with_authentication.pcap
|
|
```
|
|
<figure><img src="../../.gitbook/assets/image (287).png" alt=""><figcaption><p>Hashes MD5 extraídas del volcado de tráfico HSRP</p></figcaption></figure>
|
|
|
|
Voy a crackear los hashes con **John the Ripper**, especificando los hashes como entrada. Y con el comando **--wordlist** especificaré la ruta al diccionario:
|
|
```
|
|
~/cisconightmare/exfiltrate$ john hsrp_hashes --wordlist=wordlistforbrute
|
|
```
|
|
<figure><img src="../../.gitbook/assets/image (203).png" alt=""><figcaption><p>Contraseña del dominio HSRP descifrada</p></figcaption></figure>
|
|
|
|
Como resultado, tenemos una clave para ingresar al dominio HSRP: **endgame**.
|
|
|
|
### Inyección HSRP (Loki) <a href="#6a2b" id="6a2b"></a>
|
|
|
|
Usaré el mismo Loki para atacar el protocolo HSRP. Entre otras cosas, tiene una función de inyección de clave, que nos ayuda a evitar la autenticación. Anteriormente, en la sección de Secuestro de HSRP, obtuvimos toda la información necesaria sobre el dominio HSRP.
|
|
|
|
Iniciando Loki.
|
|
|
|
<figure><img src="../../.gitbook/assets/image (309).png" alt=""><figcaption><p>Loki detectó anuncios HSRP</p></figcaption></figure>
|
|
|
|
No olvide cambiar al modo promiscuo y permitir el enrutamiento de tráfico antes de realizar el ataque:
|
|
```
|
|
~$ sudo ip link set eth0 promisc on
|
|
~$ sudo sysctl -w net.ipv4.ip_forward=1
|
|
```
|
|
Selecciona el router con dirección **10.10.100.100** y una prioridad de **200**. Como parámetro **Secret**, introduce la contraseña descifrada del dominio HSRP, genera un ARP gratuito y selecciona la opción **Get IP**.
|
|
|
|
<figure><img src="../../.gitbook/assets/image (192).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (237).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**Como podemos ver, el router activo ahora es nuestro sistema atacante. El valor de prioridad es 255.**
|
|
|
|
**Después de la inyección, necesitamos crear una dirección IP secundaria en nuestra interfaz de red con el valor de la dirección IP virtual en el dominio HSRP. También debemos especificar una máscara de 24 bits. De esta manera, el tráfico legítimo se redirigirá hacia nosotros, ya que la dirección IP virtual utilizada en el dominio HSRP es la dirección de la puerta de enlace predeterminada para los hosts.**
|
|
```
|
|
~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
|
|
```
|
|
Establecemos el conocido NAT de origen (enmascaramiento) para interceptar todo el tráfico:
|
|
```
|
|
~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
```
|
|
Eliminamos la ruta predeterminada en nuestra máquina y escribimos una nueva que pasará a través del antiguo enrutador activo (su dirección es 10.10.100.100). Aunque hayamos secuestrado el rol activo del enrutador, aún podrá enrutar el tráfico.
|
|
```
|
|
~$ sudo route del default
|
|
~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
|
|
```
|
|
**Ahora somos el "hombre en el medio". Ejecutemos** [**net-creds.py**](https://github.com/DanMcInerney/net-creds)**:**
|
|
```
|
|
~$ sudo python2 net-creds.py -i eth0
|
|
```
|
|
Después de ejecutar la utilidad, reproduciré un intento de autenticación en el servidor FTP en 172.16.100.140:
|
|
```
|
|
~$ ftp 172.16.100.140
|
|
```
|
|
<figure><img src="../../.gitbook/assets/image (179).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Como resultado, obtenemos credenciales del servidor FTP: **insomnia:betrayal**
|
|
|
|
De esta manera se puede atacar el dominio HSRP e interceptar el tráfico. Básicamente, todo es similar a GLBP.
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Revisa los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|