mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-24 12:03:37 +00:00
204 lines
16 KiB
Markdown
204 lines
16 KiB
Markdown
# Ataques EIGRP
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
**Esta página foi copiada de** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
|
|
|
## Atacando o Protocolo EIGRP <a href="#0f82" id="0f82"></a>
|
|
|
|
**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.
|
|
|
|
<figure><img src="../../.gitbook/assets/image (25) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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**](https://frrouting.org/). 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 <a href="#41e6" id="41e6"></a>
|
|
|
|
**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 bandwidth and delay as metrics for path selection. EIGRP is a classless routing protocol that supports VLSM (Variable Length Subnet Masking) and CIDR (Classless Inter-Domain Routing).
|
|
|
|
#### EIGRP Protocol Overview
|
|
|
|
EIGRP uses a Diffusing Update Algorithm (DUAL) to calculate the shortest path to a destination network. EIGRP routers exchange routing information with their neighbors using multicast packets. EIGRP routers maintain a topology table that contains information about all the networks in the topology. The topology table is used to calculate the shortest path to a destination network.
|
|
|
|
#### 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 a router believe that it has a neighbor that does not actually exist. This can be used to inject false routing information into the network or to cause a denial of service (DoS) attack.
|
|
|
|
- **EIGRP Route Injection**: An attacker can inject false routing information into the network by sending EIGRP packets with false metric values. This can be used to redirect traffic to a malicious destination or to cause a DoS attack.
|
|
|
|
- **EIGRP Route Poisoning**: An attacker can send EIGRP packets with infinite metric values to poison the routing tables of EIGRP routers. This can be used to cause a DoS attack or to redirect traffic to a malicious destination.
|
|
|
|
- **EIGRP Authentication Bypass**: EIGRP supports authentication to prevent unauthorized access to routing information. An attacker can bypass EIGRP authentication by spoofing the source IP address of EIGRP packets or by using a known key.
|
|
|
|
#### Conclusion
|
|
|
|
EIGRP is a widely used routing protocol in enterprise networks. However, it is vulnerable to various attacks that can be used to disrupt network operations or to gain unauthorized access to network resources. It is important to implement appropriate security measures to protect EIGRP networks from these attacks.
|
|
```
|
|
Inguz# show version
|
|
```
|
|
<figure><img src="../../.gitbook/assets/image (3) (2) (2).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
> **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):
|
|
|
|
<figure><img src="../../.gitbook/assets/image (5) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Vizinhança EIGRP com GW2 (10.10.100.200):
|
|
|
|
<figure><img src="../../.gitbook/assets/image (30) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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**
|
|
|
|
<figure><img src="../../.gitbook/assets/image (29) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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 <a href="#51ee" id="51ee"></a>
|
|
|
|
**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**](https://github.com/in9uz/EIGRPWN/blob/main/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.**
|
|
|
|
<figure><img src="../../.gitbook/assets/image (2) (6) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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
|
|
```
|
|
<figure><img src="../../.gitbook/assets/image (26) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
### Buraco Negro EIGRP <a href="#5c04" id="5c04"></a>
|
|
|
|
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**](https://github.com/in9uz/EIGRPWN/blob/main/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.
|
|
|
|
<figure><img src="../../.gitbook/assets/image (16) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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
|
|
```
|
|
<figure><img src="../../.gitbook/assets/image (20) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**Nosso host parece estar em apuros :)**
|
|
|
|
<figure><img src="../../.gitbook/assets/image (6) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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 <a href="#25aa" id="25aa"></a>
|
|
|
|
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**](https://github.com/in9uz/EIGRPWN/blob/main/relationshipnightmare.py) para realizar este ataque\*\*.\*\*
|
|
|
|
<figure><img src="../../.gitbook/assets/image (12) (2) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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 **(endereço é 10.10.100.100)**.
|
|
```
|
|
~$ sudo python3 relationshipnightmare.py --interface eth0 --as 1 --src 10.10.100.100
|
|
```
|
|
<figure><img src="../../.gitbook/assets/image (9) (1) (4).png" alt=""><figcaption><p>Despejo de tráfego durante uma interrupção de vizinhança</p></figcaption></figure>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (27) (1).png" alt=""><figcaption><p>O roteador GW1 desconecta e reconecta o EIGRP infinitamente</p></figcaption></figure>
|
|
|
|
**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.**
|
|
|
|
### Transbordamento da tabela de roteamento <a href="#1d0c" id="1d0c"></a>
|
|
|
|
A essência deste ataque é provocar o envio de um grande número de rotas falsas, que transbordarão 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**](https://github.com/in9uz/EIGRPWN/blob/main/routingtableoverflow.py).
|
|
|
|
<figure><img src="../../.gitbook/assets/image (3) (4).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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**](https://github.com/secdev/scapy).
|
|
|
|
<figure><img src="../../.gitbook/assets/image (4) (4).png" alt=""><figcaption><p>Tabela de roteamento transbordando no roteador GW1</p></figcaption></figure>
|
|
|
|
<figure><img src="../../.gitbook/assets/image (21) (1).png" alt=""><figcaption><p>CPU do roteador sobrecarregada</p></figcaption></figure>
|
|
|
|
<details>
|
|
|
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
|
|
|
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|