hacktricks/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md
2023-06-06 18:56:34 +00:00

18 KiB

Ataques GLBP e HSRP

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

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

Sequestro FHRP

O que é FHRP?

FHRP (Protocolo de Redundância do Primeiro Salto) é uma classe de protocolos de rede projetados para criar um sistema de roteamento redundante. Com o FHRP, roteadores físicos podem ser combinados em um único dispositivo lógico, o que aumenta a tolerância a falhas e ajuda a distribuir a carga.

Os engenheiros da Cisco Systems desenvolveram dois protocolos FHRP, GLBP e HSRP, que demonstrarei a seguir.

Protocolo GLBP

Desenvolvido pelos engenheiros da Cisco Systems. Como o HSRP, este protocolo é implementado no topo da pilha de protocolos TCP/IP, por isso é usado o protocolo de camada de transporte UDP sob o número de porta 3222 para a tradução de informações de serviço. Os roteadores GLBP dentro do mesmo grupo lógico trocam pacotes "hello" especiais a cada 3 segundos, mas se um roteador GLBP dentro do mesmo grupo não receber um pacote hello de seu vizinho GLBP dentro de 10 segundos, ele o reconhece como "morto". No entanto, os valores do temporizador podem ser configurados dependendo das necessidades do administrador.

A estrutura e mecânica do GLBP

O GLBP fornece compartilhamento de carga para vários roteadores (gateways) usando um único endereço IP virtual e vários endereços MAC virtuais. Cada host é configurado com o mesmo endereço IP virtual e todos os roteadores no grupo virtual participam da transmissão de pacotes.

Funciona de maneira muito diferente dos protocolos HSRP e VRRP porque usa verdadeiros mecanismos de balanceamento de carga, que descreverei abaixo:

Dependente do Host. Um tipo de balanceamento de carga usado em uma rede onde há NAT. O Dependente do Host garante que o host receberá de volta o mesmo endereço MAC do dispositivo AVF que foi usado em um momento anterior, assim a NAT configurada para o host não será quebrada.

Round-Robin. Neste modo, o dispositivo AVG distribui endereços MAC para os membros AVF alternadamente. Este é o mecanismo usado por padrão.

Round-robin baseado em peso. Balanceamento de carga baseado em uma métrica especial "Peso".

Funções no domínio GLBP e Terminologia

AVG (Gateway Virtual Ativo) - o roteador com o papel principal é também responsável por distribuir endereços MAC para outros roteadores dentro do mesmo grupo GLBP. Uma espécie de "chefe" no domínio GLBP. O AVG informa aos outros roteadores como distribuir o tráfego, fornecendo endereços MAC quando uma solicitação ARP chega. Vale ressaltar que só pode haver um roteador AVG em um domínio GLBP, mas ele também pode ser um membro AVF.

AVF (Encaminhador Virtual Ativo) - um roteador em um grupo GLBP que lida com o tráfego na rede.

Prioridade GLBP - O valor de prioridade que determina qual roteador no grupo GLBP será o AVG. O valor padrão é 100 (a faixa de prioridade pode ser de 1 a 255). Pode ser definido manualmente, ou seja, o engenheiro de rede determina qual roteador será o "superior" e qual será o "escravo". Quanto maior a prioridade, maior a probabilidade de o roteador obter o papel de AVG. Normalmente, o papel de AVG é dado a roteadores mais poderosos.

Peso GLBP - O valor do chamado Peso GLBP de um roteador em um grupo GLBP. O Peso GLBP define o nível de carga do roteador. Este valor é "flutuante" e pode variar dependendo da carga no canal físico (o mecanismo de Rastreamento de Objetos está envolvido), mas também pode ser configurado manualmente.

Endereço IP virtual GLBP - o endereço IP virtual no domínio GLBP. Usado como endereço de gateway padrão para hosts legítimos.

O GLBP usa o endereço IP de envio de grupo reservado 224.0.0.102 e o número de porta do protocolo de camada de transporte UDP 3222 para enviar e processar informações de serviço. Pacotes GLBP Hello especiais são enviados a cada 3 segundos. Se o roteador GLBP não receber um pacote hello de um vizinho dentro de 10 segundos, o vizinho será considerado "morto" e sairá do domínio GLBP.

Mecanismo de ataque GLBP

A técnica deste ataque de rede é impor seu dispositivo como o roteador principal injetando um pacote GLBP malicioso com um valor de prioridade máximo. **A exploração bem-sucedida leva a um ataque DoS ou MITM no qual você pode interceptar o tráfego dentro da rede, conduzir um redirecionamento ou causar um DoS ao

~$ sudo ip link set eth0 promisc on
~$ sudo sysctl -w net.ipv4.ip_forward=1

Selecione o roteador com endereço IP 10.10.100.100 e ative a opção Obter IP. Você também precisa gerar um ARP Gratuito.

A estrutura de uma injeção maliciosa GLBP

Como você pode ver, o roteador AVG agora está fingindo ser um sistema atacante. O valor de prioridade é 255, o valor de peso é 255, ou seja, o máximo.

Após realizar a injeção, precisamos criar um endereço IP secundário em nossa interface de rede com o valor do endereço IP virtual no domínio GLBP. Você também precisa definir uma máscara de 24 bits.

Dessa forma, o tráfego legítimo será redirecionado de volta para nós, porque o endereço IP virtual usado no domínio GLBP é o endereço do gateway padrão para hosts:

~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0

Para ver não apenas o tráfego de entrada, mas também o tráfego de saída, precisamos de uma pequena regra para SNAT (masquerading):

~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Também precisamos remover a rota padrão em nossa máquina e escrever uma nova que passará pelo antigo roteador AVG (o endereço é 10.10.100.100). Mesmo que tenhamos sequestrado o papel do AVG do roteador, ele ainda poderá rotear o tráfego.

~$ sudo route del default
~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100

É isso, agora somos o "homem do meio"! Vou executar a ferramenta net-creds.py para analisar o tráfego em busca de dados importantes. Por exemplo, tráfego FTP não criptografado ou hashes NTLM.

~$ sudo python2 net-creds.py -i eth0

Depois de executar a ferramenta, tentarei ler a compartilhamento SMB com o endereço IP 172.16.100.70, que está atrás dos roteadores GLBP.

user@Boundless:~$ smbclient -L \\172.16.100.70 --user mercy

Assim é como você pode interceptar o tráfego dentro da rede atacando domínios GLBP.

Sequestro de HSRP

HSRP (Hot Standby Router/Redundancy Protocol) — é um protocolo proprietário da Cisco que permite a redundância do gateway de rede. A ideia geral é combinar vários roteadores físicos em um roteador lógico com um endereço IP comum. Este endereço do roteador virtual será atribuído à interface do roteador com a função de mestre, e este, por sua vez, cuidará do encaminhamento do tráfego. No domínio HSRP, a tarefa de lidar com todo o tráfego recai precisamente sobre o roteador com a função primária, ao contrário do GLBP, onde foi proposto o balanceamento de carga usando métricas especiais (prioridade e peso).

Funções no domínio HSRP e terminologia

Roteador Ativo HSRP — um dispositivo que age como um roteador virtual e fornece o encaminhamento do tráfego de redes de origem para redes de destino.
Roteador Standby HSRP — um dispositivo que age como um roteador standby, aguardando a falha do roteador ativo. Quando o roteador ativo primário falha, o roteador standby assumirá o papel primário e assumirá as funções do roteador ativo.
Grupo HSRP — um grupo de dispositivos que garante a operação e tolerância a falhas de um roteador lógico.
Endereço MAC HSRP — o endereço MAC virtual do roteador lógico no domínio HSRP.
Endereço IP Virtual HSRP — Este é um endereço IP virtual especial no grupo HSRP. Este endereço IP será o gateway padrão para os hosts finais, usado no próprio roteador lógico.

Versões do protocolo HSRP

O protocolo HSRP tem duas versões — HSRPv1 e HSRPv2. Eles diferem nos seguintes parâmetros:

  • O número de grupos lógicos possíveis. HSRPv1 pode ter até 255 grupos. HSRPv2 pode ter até 4096 grupos.
  • Endereço IP multicast. HSRPv1 usa o endereço IP 224.0.0.2 para enviar informações de serviço, e HSRPv2 usa 224.0.0.102.
  • Endereço MAC virtual. HSRPv1 usa 00:00:0C:07:AC:XX como seu endereço MAC virtual. HSRPv2 tem um endereço MAC virtual de 00:00:0C:9F:FX:XX (onde XX é o número do grupo HSRP)

HSRP usa o endereço IP reservado 224.0.0.2 ou 224.0.0.102 (dependendo da versão do HSRP) e o protocolo de camada de transporte UDP com o número de porta 1985 para transmitir e processar as informações de serviço. Pacotes HSRP Hello especiais são enviados a cada 3 segundos. Se o roteador HSRP não receber um pacote hello de um vizinho dentro de 10 segundos, o vizinho será considerado "morto" e sairá do domínio HSRP.

Mecanismo de ataque HSRP

Este é exatamente o mesmo que o Sequestro GLBP. Precisamos realizar uma injeção maliciosa de HSRP com um valor de prioridade máxima de 255. Isso nos permite sequestrar o papel do roteador ativo, abrindo a porta para um ataque MITM. Mas novamente, precisamos examinar as seguintes informações antes de realizar o ataque:

  • O endereço IP virtual usado no domínio HSRP
  • A presença de autenticação
  • Valor das prioridades do roteador

Podemos extrair essas informações analisando o tráfego HSRP. Vamos usar o Wireshark.

Como você pode ver na captura de tela, o processo HSRP envolve apenas dois roteadores com os endereços 10.10.100.100 e 10.10.100.200

Anúncios HSRP

Primeiro roteador HSRP

Segundo roteador HSRP

Com base na análise do tráfego HSRP, temos o seguinte:

  • Foi detectada uma configuração incorreta dentro da configuração de prioridade. O roteador ativo é considerado um roteador HSRP com prioridade 200, ou seja, temos um vetor para o sequestro HSRP
  • o endereço IP virtual usado no domínio HSRP é 10.10.100.254
  • A autenticação MD5 é usada

Ter autenticação no domínio amarra nossas mãos, mas eu vou consertar isso.

Bypass de autenticação HSRP

Salve o dump de tráfego HSRP no formato .pcap, para que o exfiltrador possa extrair corretamente as hashes MD5 do dump. Vou usar o hsrp2john.py como exfiltrador:

~/cisconightmare/exfiltrate$ python2 hsrp2john.py hsrp_with_authentication.pcap

Hashes MD5 extraídas do dump de tráfego HSRP

Vou quebrar as hashes com o John the Ripper, especificando as próprias hashes como entrada. E com o parâmetro --wordlist vou especificar o caminho para o dicionário:

~/cisconightmare/exfiltrate$ john hsrp_hashes --wordlist=wordlistforbrute

Senha do domínio HSRP quebrada

Como resultado, temos uma chave para entrar no domínio HSRP - endgame.

Injeção HSRP (Loki)

Usarei o mesmo Loki para atacar o protocolo HSRP. Entre outras coisas, ele possui uma função de injeção de chave, que nos ajuda a contornar a autenticação. Anteriormente, na seção de sequestro HSRP, obtivemos todas as informações necessárias sobre o domínio HSRP.

Iniciando o Loki.

Loki detectou anúncios HSRP

Não se esqueça de mudar para o modo promíscuo e permitir o roteamento de tráfego antes de realizar o ataque:

~$ sudo ip link set eth0 promisc on
~$ sudo sysctl -w net.ipv4.ip_forward=1

Selecione o roteador com o endereço 10.10.100.100 e uma prioridade de 200. Como parâmetro Secret, insira a senha quebrada do domínio HSRP, gere um ARP Gratuito e selecione a opção Get IP.

Como podemos ver, o roteador ativo agora é o nosso sistema de ataque. O valor de prioridade é 255.

Após a injeção, precisamos criar um endereço IP secundário em nossa interface de rede com o valor do endereço IP virtual no domínio HSRP. Você também deve especificar uma máscara de 24 bits. Dessa forma, o tráfego legítimo será redirecionado para nós, porque o endereço IP virtual usado no domínio HSRP é o endereço do gateway padrão para os hosts.

~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0

Nós configuramos o conhecido NAT de origem (masquerading) para interceptar todo o tráfego:

~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Nós removemos a rota padrão da nossa máquina e escrevemos uma nova rota que passará pelo antigo roteador Ativo (cujo endereço é 10.10.100.100). Mesmo que tenhamos sequestrado o papel ativo do roteador, ele ainda será capaz de rotear o tráfego.

~$ sudo route del default
~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100

Agora somos o "homem do meio". Vamos executar o net-creds.py:

~$ sudo python2 net-creds.py -i eth0

Depois de executar a ferramenta, vou reproduzir uma tentativa de autenticação no servidor FTP em 172.16.100.140:

~$ ftp 172.16.100.140

Como resultado, obtemos credenciais do servidor FTP: insomnia:betrayal

Assim é possível atacar o domínio HSRP e interceptar o tráfego. Basicamente, tudo é semelhante ao GLBP.

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