hacktricks/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md

17 KiB

Ataques EIGRP

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Esta página foi copiada de https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9

Atacando o Protocolo EIGRP

EIGRP (Enhanced Interior Gateway Routing Protocol) é um protocolo de roteamento dinâmico. É um protocolo de vetor de distância. Se não houver autenticação e configuração de interfaces passivas, um invasor pode interferir no roteamento EIGRP e causar envenenamento das tabelas de roteamento. Além disso, a rede EIGRP (em outras palavras, sistema autônomo) é plana e não tem segmentação em zonas. O que isso poderia significar para um invasor? Bem, se ele injetar uma rota, é provável que essa rota se espalhe por todo o sistema autônomo EIGRP.

Em primeiro lugar, atacar um sistema EIGRP autônomo requer o estabelecimento de uma vizinhança com um roteador EIGRP legítimo, o que abre muitas possibilidades, desde reconhecimento básico até várias injeções.

Para isso, usarei o FRRouting. Este é um software de código aberto projetado para criar um roteador no Unix e Linux. FRRouting permite que você implemente um roteador virtual que suporta BGP, OSPF, EIGRP, RIP e outros protocolos. Tudo o que você precisa fazer é implantá-lo em seu sistema de atacante e você pode realmente fingir ser um roteador legítimo no domínio de roteamento. Vou mostrar como implantar o FRR em seu sistema na próxima seção.

Inteligência de Rede

Conectar-se ao domínio de roteamento permite fazer enumeração e reconhecimento de redes e não gastar muito tempo escaneando. Este método economiza muito tempo precioso. Além disso, ao escanear, você pode ser detectado pelos sistemas de segurança IPS/IDS. Para mim, conectar-se ao domínio e enumeração é o vetor de ataque em domínios de roteamento que lhe dá o maior impacto. Mas para fazer isso, você precisa implantar o FRRouting. Aqui vamos nós.

É necessário editar o arquivo de configuração daemons. Ele contém as configurações dos daemons no contexto de sua atividade. Ou eles estão habilitados (yes) ou não (no). Precisamos ativar o daemon eigrpd.

~# nano /etc/frr/daemons
eigrpd=yes

Depois disso, você precisa corrigir o arquivo vtysh.conf adicionando uma linha responsável por salvar a configuração em um único arquivo, para que as configurações de diferentes protocolos não sejam espalhadas em arquivos diferentes (por exemplo, eigrpd.conf, staticd.conf). Isso é configurável opcionalmente.

~# nano /etc/frr/vtysh.conf
service integrated-vtysh-config

A configuração do FRRouting está pronta. Agora é hora de executar o daemon FRR. E sim, precisamos habilitar o roteamento de tráfego. Por padrão, ele está desativado em distribuições Linux.

~$ sudo systemctl start frr
~$ sudo sysctl -w net.ipv4.ip_forward=1

O comando vtysh nos levará ao painel de controle do roteador FRR.

~$ sudo vtysh

EIGRP Attacks

Introduction

EIGRP (Enhanced Interior Gateway Routing Protocol) is a Cisco proprietary routing protocol that is widely used in enterprise networks. It is an advanced distance-vector routing protocol that uses Diffusing Update Algorithm (DUAL) to calculate the shortest path to a destination network. EIGRP is a classless routing protocol that supports variable-length subnet masks (VLSM) and route summarization.

EIGRP Protocol Overview

EIGRP uses a hierarchical network design that consists of autonomous systems (AS) and areas. An AS is a collection of networks that are under a common administrative domain. An area is a logical grouping of networks within an AS. EIGRP routers within an AS exchange routing information using EIGRP packets. EIGRP packets are sent using multicast addresses and are authenticated using a shared secret key.

EIGRP Attacks

EIGRP is vulnerable to various attacks that can be used to disrupt network operations or to gain unauthorized access to network resources. The following are some of the common EIGRP attacks:

  • EIGRP Neighbor Spoofing: An attacker can spoof EIGRP packets to make it appear as if they are coming from a legitimate EIGRP neighbor. This can be used to inject false routing information into the network or to cause routing loops.

  • EIGRP Route Injection: An attacker can inject false routing information into the network by sending EIGRP packets with fake route updates. This can be used to redirect traffic to a malicious destination or to cause denial of service (DoS) attacks.

  • EIGRP Route Poisoning: An attacker can send EIGRP packets with poisoned routes to make it appear as if a network is unreachable. This can be used to cause network outages or to redirect traffic to a malicious destination.

  • EIGRP Authentication Bypass: An attacker can bypass EIGRP authentication by sniffing the network for valid authentication keys or by using brute-force attacks to guess the key. This can be used to gain unauthorized access to network resources.

EIGRP Countermeasures

To mitigate EIGRP attacks, the following countermeasures can be implemented:

  • EIGRP Authentication: EIGRP authentication should be enabled to prevent unauthorized access to the network. EIGRP supports two types of authentication: plain text and MD5.

  • EIGRP Packet Filtering: EIGRP packets should be filtered to prevent spoofing and injection attacks. Access control lists (ACLs) can be used to filter EIGRP packets based on source and destination IP addresses.

  • EIGRP Route Filtering: EIGRP routes should be filtered to prevent route poisoning attacks. Route maps can be used to filter EIGRP routes based on various criteria such as source and destination IP addresses, AS numbers, and prefix lengths.

  • EIGRP Stub Routing: EIGRP stub routing can be used to prevent unauthorized access to the network. Stub routers are configured to only advertise their directly connected networks and do not participate in the EIGRP routing process.

Conclusion

EIGRP is a widely used routing protocol that is vulnerable to various attacks. To secure EIGRP networks, it is important to implement appropriate countermeasures such as authentication, packet filtering, route filtering, and stub routing.

Inguz# show version

No entanto, não se esqueça que o domínio de roteamento EIGRP pode ser protegido por autenticação. Mas ainda há uma chance de se conectar ao domínio de roteamento. Quando os pacotes hello são enviados, eles também contêm hashes criptográficos. Se você puder extrair esses hashes do dump de tráfego e redefinir a senha, poderá fazer login no domínio de roteamento com essa senha.

Vá para o modo de configuração global e inicie o processo EIGRP, especifique o número do sistema autônomo - 1

E também precisamos declarar a rede em que estamos. Estamos em 10.10.100.0/24. Meu endereço é 10.10.100.50/32

Inguz# configInguz(config)# router eigrp 1Inguz(config-router) network 10.10.100.50/32

Depois disso, o bairro entre os roteadores EIGRP legítimos é estabelecido. Há dois deles na minha rede:

  • GW1 (10.10.100.100)
  • GW2 (10.10.100.200)

Vizinhança EIGRP com GW1 (10.10.100.100):

Vizinhança EIGRP com GW2 (10.10.100.200):

Durante o estabelecimento e manutenção da vizinhança entre os roteadores EIGRP, os roteadores trocam suas informações de roteamento. Após o estabelecimento da vizinhança, novas rotas aparecerão na tabela de roteamento do sistema atacante, a saber:

  • 10.1.239.0/24 via 10.10.100.100;
  • 30.30.30.0/24 via 10.10.100.100;
  • 100.100.100.0/24 via 10.10.100.100;
  • 172.16.100.0/24 via 10.10.100.200

Assim, após o estabelecimento da vizinhança, sabemos sobre a existência dessas sub-redes, o que facilita o pentest e economiza tempo. Podemos fazer sem varreduras adicionais de sub-redes. Agora estamos no domínio de roteamento EIGRP e podemos desenvolver alguns vetores de ataque. Vamos falar sobre eles.

Vizinhos EIGRP Falsos

Descobri que gerar e enviar rapidamente pacotes EIGRP hello em massa sobrecarrega a CPU do roteador, o que, por sua vez, pode abrir a porta para um ataque DoS. Eu desenvolvi um pequeno script helloflooding.py, mas parece-me que o script carece de velocidade no envio dos pacotes. Isso é causado pelo GIL, que impede que a função sprayhello seja executada em várias threads por segundo. Eventualmente, reescreverei o script em C.

Argumentos do script:

  • Interface do sistema atacante (eth0);
  • Número autônomo do sistema EIGRP (1);
  • Sub-rede onde o sistema atacante está localizado. No meu caso, a sub-rede é 10.10.100.0/24
~$ sudo python3 helloflooding.py --interface eth0 --as 1 --subnet 10.10.100.0/24

Buraco Negro EIGRP

A essência desse ataque é uma simples injeção de uma rota falsa que irá envenenar a tabela de roteamento. O tráfego para, digamos, a rede 10.10.100.0/24 não irá a lugar algum, causando uma negação de serviço. Tal ataque é chamado de Buraco Negro. O script routeinject.py será a ferramenta usada para realizá-lo. Para este exemplo, enviarei tráfego destinado ao host 172.16.100.140/32 para o buraco negro.

Argumentos do script:

  • interface do sistema atacante
  • número AS do EIGRP
  • endereço IP do atacante
  • endereço IP da sub-rede de destino cujo tráfego será enviado para o buraco negro
  • máscara de sub-rede de destino
~$ sudo python3 routeinject.py --interface eth0 --as 1 --src 10.10.100.50 --dst 172.16.100.140 --prefix 32

Nosso host parece estar em apuros :)

Como você pode ver, o host perde a conectividade com o host 172.16.100.140/32 devido à injeção de rota.

Abusando dos Valores K

Para estabelecer vizinhos EIGRP, os roteadores usam valores K especiais. Eles devem ser iguais entre todos os vizinhos EIGRP. Se pelo menos um valor K não corresponder, o domínio EIGRP irá falhar e a vizinhança será interrompida. Usaremos o relationshipnightmare.py para realizar este ataque**.**

Argumentos do script:

  • interface de rede
  • número AS EIGRP
  • Endereço IP do roteador legítimo

Em nome do IP especificado, será enviada uma injeção no endereço IP EIGRP multicast, no qual os valores K são diferentes. No meu caso, vou quebrar a vizinhança em nome do roteador GW1 (o endereço é 10.10.100.100).

~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100

Despejo de tráfego durante uma interrupção de vizinhança

O roteador GW1 desconecta e reconecta o EIGRP infinitamente

Um ataque DoS pode ser realizado desta maneira. Durante a operação, ocorrem interrupções e tentativas de vizinhança infinitas, paralisando parte do domínio de roteamento EIGRP.

Sobrecarga da tabela de roteamento

A essência deste ataque é provocar o envio de um grande número de rotas falsas, que vão sobrecarregar a tabela de roteamento. Isso esgota os recursos de computação do roteador, ou seja, a CPU e a RAM, uma vez que as injeções ocorrem em uma velocidade enorme. Este ataque é implementado pelo script routingtableoverflow.py.

Argumentos do script

  • interface de rede
  • Número AS do EIGRP
  • Endereço IP do atacante
in9uz@Inguz:~$ sudo python3 routingtableoverflow.py --interface eth0 --as 1 --src 10.10.100.50

Após a execução do script, a tabela de roteamento começa a transbordar com rotas. Os endereços aleatórios das redes de destino são devidos ao uso de RandIP() no Scapy.

Tabela de roteamento transbordando no roteador GW1

CPU do roteador sobrecarregada

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥