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

13 KiB

Ataques EIGRP

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

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 intruso pode interferir no roteamento EIGRP e causar envenenamento de 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 atacante? Bem, se ele injetar uma rota, é provável que essa rota se espalhe por todo o sistema autônomo EIGRP.

Primeiramente, atacar um sistema EIGRP isolado requer estabelecer uma vizinhança com um roteador EIGRP legítimo, o que abre uma série de 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 em Unix e Linux. FRRouting permite implementar um roteador virtual que suporta BGP, OSPF, EIGRP, RIP e outros protocolos. Tudo o que você precisa fazer é implantá-lo no sistema do atacante e você pode realmente se passar por um roteador legítimo no domínio de roteamento. Vou mostrar como implantar o FRR no seu sistema na próxima seção.

Inteligência de Rede

Conectar-se ao domínio de roteamento nos permite fazer enumeração e reconhecimento de redes sem 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 fazer a enumeração é o vetor de ataque em domínios de roteamento que oferece o maior impacto. Mas para fazer isso, você precisa implantar o FRRouting. Vamos lá.

É 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 ativados (yes) ou não (no). Precisamos ativar o daemon eigrpd.

~# nano /etc/frr/daemons
eigrpd=yes
<figure><img src="../../.gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>

Após isso, 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 fiquem dispersas 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á concluída. Agora é hora de executar o daemon FRR. E sim, precisamos habilitar o roteamento de tráfego. Por padrão, ele está desativado nas distribuições Linux

~$ sudo systemctl start frr
~$ sudo sysctl -w net.ipv4.ip_forward=1
<figure><img src="../../.gitbook/assets/image (32).png" alt=""><figcaption></figcaption></figure>

O comando **vtysh** nos levará ao painel de controle do roteador FRR.
~$ sudo vtysh

Sure, please provide the English text that you need translated into Portuguese.

Inguz# show version
> **No entanto, não se esqueça de que o domínio de roteamento EIGRP pode ser protegido por autenticação. Mas você ainda tem a chance de se conectar ao domínio de roteamento. Quando pacotes hello são enviados, eles também contêm hashes criptográficos. Se você conseguir extrair esses hashes do dump de tráfego e redefinir a senha, você pode 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

Após isso, a vizinhança entre os roteadores EIGRP legítimos é estabelecida. Existem 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 roteadores EIGRP, os roteadores trocam suas informações de roteamento. Após a vizinhança ser estabelecida, novas rotas aparecerão na nossa 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 estabelecer a vizinhança, sabemos sobre a existência dessas sub-redes, o que facilita o nosso pentesting e economiza tempo. Podemos dispensar a varredura adicional 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. 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 a função sprayhello de ser executada em múltiplas threads por segundo. Eventualmente reescreverei o script em C.

Argumentos do script:

  • Interface do sistema atacante (eth0);
  • Número do sistema autônomo 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

EIGRP Blackhole

A essência deste ataque é uma simples injeção de uma rota falsa que irá envenenar a tabela de roteamento. O tráfego para, digamos, a 10.10.100.0/24 rede não irá a lugar algum, causando uma negação de serviço. Tal ataque é chamado de Blackhole. O script routeinject.py **** será a ferramenta usada para realizá-lo. Para este exemplo, vou enviar 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 alvo cujo tráfego será enviado para o buraco negro
  • máscara de sub-rede alvo
~$ 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 conectividade com o host 172.16.100.140/32 devido à injeção de rota.

Abusando dos K-Values

Para estabelecer vizinhos EIGRP, os roteadores usam K-values especiais. Eles devem ser iguais entre todos os vizinhos EIGRP. Se pelo menos um K-value não coincidir, o domínio EIGRP irá falhar e a vizinhança será quebrada. Usaremos 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 multicast EIGRP, no qual os K-values são diferentes. No meu caso, vou quebrar a vizinhança em nome do roteador GW1 (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

Roteador GW1 desconecta e reconecta EIGRP incessantemente

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

Sobrecarga da tabela de roteamento

A essência deste ataque é provocar o envio de um número enorme de rotas falsas, que irão sobrecarregar a tabela de roteamento. Isso esgota os recursos de computação do roteador, nomeadamente a CPU e a RAM, uma vez que as injeções ocorrem a 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 executar o script, a tabela de roteamento começa a transbordar com rotas. Os endereços aleatórios das redes alvo são devido ao uso de RandIP() no Scapy.

Tabela de roteamento transborda no roteador GW1

CPU do roteador sobrecarregada

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: