# Ataques EIGRP
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* ¿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)
* Obtén 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).
**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)
## Atacando el protocolo EIGRP
**EIGRP (Protocolo de enrutamiento de puerta de enlace interior mejorado)** es un protocolo de enrutamiento dinámico. **Es un protocolo vector de distancia.** **Si no hay autenticación y configuración de interfaces pasivas, un intruso puede interferir en el enrutamiento EIGRP y causar envenenamiento de tablas de enrutamiento.** **Además, la red EIGRP (en otras palabras, el sistema autónomo) es plana y no tiene segmentación en ninguna zona.** ¿Qué podría significar esto para un atacante? Bueno, si inyecta una ruta, es probable que esta ruta se propague por todo el sistema autónomo EIGRP.
En primer lugar, atacar un sistema EIGRP independiente requiere establecer una vecindad con un enrutador EIGRP legítimo, lo que abre muchas posibilidades, desde reconocimiento básico hasta varias inyecciones.
Para esto usaré [**FRRouting**](https://frrouting.org/). Este es un software de código abierto diseñado para crear un enrutador en Unix y Linux. **FRRouting** te permite implementar **un enrutador virtual que admite BGP, OSPF, EIGRP, RIP y otros protocolos.** Todo lo que necesitas hacer es implementarlo en el sistema del atacante y puedes fingir ser un enrutador legítimo en el dominio de enrutamiento. Te mostraré cómo implementar FRR en tu sistema en la siguiente sección.
### Inteligencia de red
**Conectarse al dominio de enrutamiento nos permite hacer enumeración y reconocimiento de redes y no pasar mucho tiempo escaneando.** Este método te ahorra mucho tiempo valioso. **Además, al escanear, puedes ser detectado por sistemas de seguridad IPS/IDS.** Para mí, conectarse al dominio y la enumeración es el vector de ataque en los dominios de enrutamiento que te da el mayor impacto. Pero para hacer esto necesitas implementar **FRRouting**. Aquí vamos.
**Es necesario editar el archivo de configuración daemons.** Contiene las configuraciones de los demonios en el contexto de su actividad. Ya sea que estén habilitados (sí) o no (no). Necesitamos activar el demonio **eigrpd**.
```
~# nano /etc/frr/daemons
eigrpd=yes
```
Después de eso, es necesario corregir el archivo **vtysh.conf** agregando una línea responsable de guardar la configuración en un solo archivo, para que las configuraciones de diferentes protocolos no se dispersen en diferentes archivos **(por ejemplo, eigrpd.conf, staticd.conf).** Es configurable opcionalmente.
```
~# nano /etc/frr/vtysh.conf
service integrated-vtysh-config
```
La configuración de FRRouting está lista. Ahora es el momento de ejecutar el demonio de FRR. Y sí, necesitamos habilitar el enrutamiento de tráfico. Por defecto, está deshabilitado en las distribuciones de Linux.
```
~$ sudo systemctl start frr
~$ sudo sysctl -w net.ipv4.ip_forward=1
```
El comando **vtysh** nos llevará al panel de control del router FRR.
```
~$ sudo vtysh
```
### EIGRP Attacks
#### Introduction
EIGRP (Enhanced Interior Gateway Routing Protocol) is a Cisco proprietary routing protocol that is widely used in enterprise networks. It is an advanced distance-vector routing protocol that uses Diffusing Update Algorithm (DUAL) to calculate the shortest path to a destination network. EIGRP is a classless routing protocol that supports variable-length subnet masks (VLSM) and route summarization.
#### EIGRP Protocol Overview
EIGRP uses a hierarchical network design that consists of multiple autonomous systems (AS). Each AS is identified by a unique number called Autonomous System Number (ASN). EIGRP routers within the same AS exchange routing information using EIGRP packets. EIGRP packets are sent using multicast address 224.0.0.10.
#### EIGRP Packet Types
EIGRP uses five packet types to exchange routing information:
- **Hello**: Used to discover and maintain neighbor relationships.
- **Update**: Used to advertise routing information.
- **Query**: Used to request missing routing information.
- **Reply**: Used to respond to a query packet.
- **Acknowledgment**: Used to acknowledge receipt of an EIGRP packet.
#### EIGRP Authentication
EIGRP supports two types of authentication:
- **Plain text authentication**: Uses a clear-text password that is sent in EIGRP packets.
- **MD5 authentication**: Uses a hash-based message authentication code (HMAC) that is calculated using a shared secret key.
#### EIGRP Attacks
EIGRP is vulnerable to various attacks that can be used to disrupt network operations or steal sensitive information. The following are some of the common EIGRP attacks:
- **Eavesdropping**: An attacker can use a packet sniffer to capture EIGRP packets and extract sensitive information such as network topology, IP addresses, and passwords.
- **Spoofing**: An attacker can spoof EIGRP packets to inject false routing information or modify existing routing information. This can cause network congestion, black holes, or routing loops.
- **DoS**: An attacker can launch a DoS (Denial of Service) attack by flooding the network with EIGRP packets or by sending malformed EIGRP packets that can crash EIGRP routers.
- **Brute force**: An attacker can use a brute-force attack to guess the plain-text password used for EIGRP authentication.
- **MD5 hash leak**: If an attacker can obtain the MD5 hash of the shared secret key used for EIGRP authentication, they can use a brute-force attack to guess the key and authenticate themselves as a legitimate EIGRP router.
#### EIGRP Countermeasures
To mitigate EIGRP attacks, the following countermeasures can be implemented:
- **Encryption**: EIGRP packets can be encrypted using IPsec to prevent eavesdropping and spoofing attacks.
- **Authentication**: EIGRP authentication should be enabled using MD5 authentication to prevent unauthorized access.
- **Access control**: Access to EIGRP routers should be restricted to authorized personnel only.
- **Logging**: EIGRP routers should be configured to log all EIGRP-related events for auditing and troubleshooting purposes.
- **Updates filtering**: EIGRP routers should be configured to filter incoming routing updates to prevent the injection of false routing information.
- **DoS protection**: EIGRP routers should be configured to limit the rate of incoming EIGRP packets to prevent DoS attacks.
```
Inguz# show version
```
> **Sin embargo, no olvides que el dominio de enrutamiento EIGRP puede estar protegido por autenticación. Pero aún tienes la oportunidad de conectarte al dominio de enrutamiento. Cuando se envían paquetes hello, también contienen hashes criptográficos. Si puedes extraer estos hashes del volcado de tráfico y restablecer la contraseña, puedes iniciar sesión en el dominio de enrutamiento con esta contraseña.**
Ve al modo de configuración global y comienza el proceso de **EIGRP**, especifica el número de sistema autónomo - **1**
Y también necesitamos declarar la red en la que estamos. Estamos en 10.10.100.0/24. Mi dirección es 10.10.100.50/32
```
Inguz# configInguz(config)# router eigrp 1Inguz(config-router) network 10.10.100.50/32
```
Después de eso, se establece la vecindad entre los routers EIGRP legítimos. Hay dos de ellos en mi red:
* **GW1 (10.10.100.100)**
* **GW2 (10.10.100.200)**
Vecindad EIGRP con GW1 (10.10.100.100):
Vecindad EIGRP con GW2 (10.10.100.200):
Durante el establecimiento y mantenimiento de la vecindad entre los routers EIGRP, los routers intercambian su información de enrutamiento. Después de que se establece la vecindad, aparecerán nuevas rutas en nuestra tabla de enrutamiento del sistema atacante, a saber:
* **10.1.239.0/24 a través de 10.10.100.100;**
* **30.30.30.0/24 a través de 10.10.100.100;**
* **100.100.100.0/24 a través de 10.10.100.100;**
* **172.16.100.0/24 a través de 10.10.100.200**
Así, después de establecer la vecindad, sabemos sobre la existencia de estas subredes, lo que nos facilita la prueba de penetración y nos ahorra tiempo. Podemos prescindir del escaneo adicional de subredes. Ahora estamos en el dominio de enrutamiento EIGRP y podemos desarrollar algunos vectores de ataque. Hablemos de ellos.
### Vecinos EIGRP falsos
**He descubierto que generar y enviar rápidamente paquetes de saludo EIGRP masivos sobrecarga la CPU del router, lo que a su vez puede abrir la puerta a un ataque DoS.** He desarrollado un pequeño script [**helloflooding.py**](https://github.com/in9uz/EIGRPWN/blob/main/helloflooding.py), pero me parece que el script carece de velocidad para enviar los paquetes. **Esto se debe a GIL**, que impide que la función **sprayhello** se ejecute en múltiples hilos por segundo. **Eventualmente reescribiré el script en C.**
Argumentos del script:
* **Interfaz del sistema atacante (eth0);**
* **Número autónomo del sistema EIGRP (1);**
* **Subred donde se encuentra el sistema atacante. En mi caso, la subred es 10.10.100.0/24**
```
~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24
```
### Agujero negro EIGRP
La esencia de este ataque es la simple inyección de una ruta falsa que envenenará la tabla de enrutamiento. El tráfico hacia, digamos, la red `10.10.100.0/24` no llegará a ninguna parte, causando una denegación de servicio. Este tipo de ataque se llama agujero negro. La herramienta utilizada para realizarlo será el script [**routeinject.py**](https://github.com/in9uz/EIGRPWN/blob/main/routeinject.py). Para este ejemplo, enviaré tráfico destinado al host `172.16.100.140/32` al agujero negro.
Argumentos del script:
* **interfaz del sistema atacante**
* **número AS de EIGRP**
* **dirección IP del atacante**
* **dirección IP de la subred objetivo cuyo tráfico se enviará al agujero negro**
* **máscara de subred objetivo**
```
~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32
```
**Nuestro host parece estar en problemas :)**
Como se puede ver, el host pierde conectividad con el host **172.16.100.140/32** debido a la inyección de ruta.
### Abusando de los valores K
Para establecer vecinos EIGRP, **los routers usan valores K especiales.** Estos deben ser iguales entre todos los vecinos EIGRP. Si al menos un valor K no coincide, el dominio EIGRP se bloqueará y la vecindad se romperá. Usaremos [**relationshipnightmare.py**](https://github.com/in9uz/EIGRPWN/blob/main/relationshipnightmare.py) \*\*\*\* para realizar este ataque\*\*.\*\*
Argumentos del script:
* **interfaz de red**
* **número AS de EIGRP**
* **dirección IP del router legítimo**
**En nombre de la dirección IP especificada se enviará una inyección en la dirección IP multicast de EIGRP, en la que los valores K son diferentes.** En mi caso, romperé la vecindad en nombre del router GW1 **(la dirección es 10.10.100.100)**.
```
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
```
**Un ataque DoS puede llevarse a cabo de esta manera. Durante la operación, ocurren interrupciones y intentos de vecindario infinitos, paralizando parte del dominio de enrutamiento EIGRP.**
### Desbordamiento de tabla de enrutamiento
La esencia de este ataque es provocar el envío de una gran cantidad de rutas falsas, que desbordarán la tabla de enrutamiento. Esto agota los recursos informáticos del router, es decir, la CPU y la RAM, ya que las inyecciones ocurren a una velocidad enorme. Este ataque se implementa con el script [**routingtableoverflow.py**](https://github.com/in9uz/EIGRPWN/blob/main/routingtableoverflow.py).
Argumentos del script
* **interfaz de red**
* **número AS de EIGRP**
* **dirección IP del atacante**
```
in9uz@Inguz:~$ sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50
```
Después de ejecutar el script, la tabla de enrutamiento comienza a desbordarse con rutas. Las direcciones aleatorias de las redes objetivo se deben al uso de **RandIP()** en [**Scapy**](https://github.com/secdev/scapy).
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
* ¿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 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 PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).