mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-20 18:14:15 +00:00
190 lines
13 KiB
Markdown
190 lines
13 KiB
Markdown
# Ataques EIGRP
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**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 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.
|
|
|
|
<figure><img src="../../.gitbook/assets/image (25) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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**](https://frrouting.org/). 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 <a href="#41e6" id="41e6"></a>
|
|
|
|
**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
|
|
```
|
|
```markdown
|
|
<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
|
|
```
|
|
```markdown
|
|
<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
|
|
```
|
|
```markdown
|
|
> **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):
|
|
|
|
<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 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**
|
|
|
|
<figure><img src="../../.gitbook/assets/image (29) (1) (2).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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 <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.** 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 a função **sprayhello** de ser executada em múltiplas 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 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 href="#5c04" id="5c04"></a>
|
|
|
|
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**](https://github.com/in9uz/EIGRPWN/blob/main/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.
|
|
|
|
<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 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
|
|
```
|
|
<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 conectividade com o host **172.16.100.140/32** devido à injeção de rota.
|
|
|
|
### Abusando dos K-Values <a href="#25aa" id="25aa"></a>
|
|
|
|
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**](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 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
|
|
```
|
|
<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>Roteador GW1 desconecta e reconecta EIGRP incessantemente</p></figcaption></figure>
|
|
|
|
**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 href="#1d0c" id="1d0c"></a>
|
|
|
|
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**](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 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**](https://github.com/secdev/scapy).
|
|
|
|
<figure><img src="../../.gitbook/assets/image (4) (4).png" alt=""><figcaption><p>Tabela de roteamento transborda 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><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|