hacktricks/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md
carlospolop 88fe91771a f
2023-06-05 20:55:20 +02:00

16 KiB

Ataques EIGRP

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Esta página fue copiada de 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. 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). Esto es configurable opcionalmente.

~# nano /etc/frr/vtysh.conf
service integrated-vtysh-config

La configuración de FRRouting está hecha. 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

EIGRP Protocol

El Protocolo de Enrutamiento de Gateway Interior Mejorado (EIGRP) es un protocolo de enrutamiento de red propietario de Cisco que se utiliza para enrutar paquetes de datos en una red de área local (LAN) o de área amplia (WAN). EIGRP es un protocolo de enrutamiento avanzado que utiliza una variedad de métricas para determinar la mejor ruta para enviar paquetes de datos a través de una red.

EIGRP Attacks

EIGRP es vulnerable a varios tipos de ataques, incluyendo ataques de denegación de servicio (DoS), ataques de inyección de paquetes y ataques de envenenamiento de ruta. Estos ataques pueden ser utilizados por un atacante para interrumpir el tráfico de red, interceptar datos confidenciales o redirigir el tráfico a un destino malicioso.

DoS Attacks

Los ataques de denegación de servicio (DoS) contra EIGRP pueden ser utilizados para interrumpir el tráfico de red y hacer que la red sea inaccesible para los usuarios legítimos. Los atacantes pueden enviar una gran cantidad de paquetes de EIGRP a un router de destino, lo que puede hacer que el router se bloquee o se reinicie.

Packet Injection Attacks

Los ataques de inyección de paquetes contra EIGRP pueden ser utilizados para interceptar datos confidenciales que se transmiten a través de la red. Los atacantes pueden enviar paquetes de EIGRP falsificados a un router de destino, lo que puede permitirles interceptar y leer los datos que se transmiten a través de la red.

Route Poisoning Attacks

Los ataques de envenenamiento de ruta contra EIGRP pueden ser utilizados para redirigir el tráfico de red a un destino malicioso. Los atacantes pueden enviar información de enrutamiento falsa a un router de destino, lo que puede hacer que el router redirija el tráfico a un destino malicioso en lugar del destino legítimo.

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 a 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 pentest 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, 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 de 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. A este tipo de ataque se le llama agujero negro. La herramienta utilizada para realizarlo será el script 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 **** 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

Dump de tráfico durante una interrupción de vecindario

El router GW1 se desconecta y reconecta infinitamente a EIGRP

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.

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.

Tabla de enrutamiento desbordada en el router GW1

CPU del router sobrecargada

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥