
Scanner et suite d'attaque pour les hôtes qui transfèrent des paquets non authentifiés via les protocoles IPIP et GRE. (CVE-2020-10136 CVE-2024-7595)

Un scanner et une suite d'attaque pour les hôtes de l'internet public (principalement des routeurs Cisco) qui transmettent des paquets non authentifiés encapsulés dans les protocoles IP-in-IP et GRE.
Cette vulnérabilité, connue sous le nom d'« Insecure Implementation of Tunneling Protocols », est référencée sous les identifiants CVE-2020-10136 et CVE-2024-7595. Elle vous permet d'envoyer (mais pas de recevoir) n'importe quel paquet IP depuis les hôtes concernés.
À première vue, la possibilité d'envoyer mais pas de recevoir des paquets peut sembler inutile. Cependant, de nombreux hôtes concernés se trouvent sur des réseaux qui ne mettent pas en œuvre le filtrage de chemin inverse (reverse-path filtering). Cela signifie que vous pouvez usurper des adresses IP sur l'internet public en utilisant ces vulnérabilités, sans avoir besoin d'un hôte dépourvu de validation de l'adresse source (communément appelée IP Header Modification ou IPHM) pour lancer des attaques telles que les attaques par déni de service distribué (DDoS) par amplification DNS.
Cet outil est destiné uniquement à des fins éducatives.
L'outil n'inclut pas la recherche de vulnérabilités similaires dans les protocoles 6in4 et IP6IP6, car IPv6 n'est pas un vrai protocole utilisé par les individus sérieux.
cd scanner/
cargo build --release
sudo ./target/release/ipeeyoupeewepee <source_ip> <src_port> <rate_limit> <protocol_type (GRE|IPIP)>
Paramètres :
<source_ip> : L'adresse IPv4 publique à partir de laquelle vous effectuez le scan.<src_port> : Le port UDP sur lequel le scanner écoutera les paquets transférés. Assurez-vous que ce port est ouvert dans votre pare-feu.<rate_limit> : La limite de débit en paquets par seconde (ex. 1000).<protocol_type> : Le protocole d'encapsulation à rechercher, GRE ou IPIP.Pour utiliser la suite d'attaque située dans le répertoire tools/, assurez-vous d'avoir python3 et scapy installés. Vous pouvez également exécuter poetry install et poetry shell en tant que root dans le répertoire tools/ pour configurer et accéder à un environnement virtuel.
Ce script vérifie si l'hôte vulnérable est capable de transmettre des paquets IP usurpés.
sudo python3 can_i_spoof.py <source_ip> <source_port> <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
Paramètres :
<source_ip> : L'adresse IPv4 publique à partir de laquelle vous effectuez le scan.<source_port> : Le port UDP pour écouter les paquets transférés.<tunnel_ip> : L'adresse IP de l'hôte IPIP ou GRE vulnérable.<spoof_ip> : L'adresse IP que vous avez l'intention d'usurper.<protocol> : Le protocole d'encapsulation à exploiter, soit GRE, soit IPIP.Exemple d'utilisation :
Si l'adresse IP de votre machine est 192.0.2.42, que vous avez le port UDP 31337 ouvert dans votre pare-feu et que vous avez identifié un hôte de transmission GRE vulnérable à 198.51.100.25, vous pouvez vérifier s'il peut usurper l'adresse IP 203.0.113.23 avec la commande suivante :
sudo python3 can_i_spoof.py 192.0.2.42 31337 198.51.100.25 203.0.113.23 GRE
Ce script utilise un hôte de tunnelisation GRE ou IPIP vulnérable pour envoyer des paquets TCP SYN usurpés vers le port 22 d'hôtes aléatoires sur l'internet, afin de générer des rapports d'abus en masse contre l'adresse IP cible spécifiée.
sudo python3 abuse_honeypot.py <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
Paramètres :
<tunnel_ip> : L'adresse IP de l'hôte IPIP ou GRE vulnérable.<spoof_ip> : L'adresse IP que vous avez l'intention d'usurper.<protocol> : Le protocole d'encapsulation à exploiter, soit GRE, soit IPIP.Exemple d'utilisation :
Si vous avez identifié un hôte de transmission GRE vulnérable à 198.51.100.25 et que vous souhaitez usurper des paquets TCP SYN sur le port 22 depuis l'adresse IP 203.0.113.23, vous pouvez exécuter la commande suivante :
sudo python3 abuse_honeypot.py 198.51.100.25 203.0.113.23 GRE
Ce script utilise des hôtes de tunnelisation GRE ou IPIP vulnérables pour refléter des réponses DNS vers une cible spécifiée, illustrant une méthode d'exécution d'une attaque par déni de service distribué (DDoS) par réflexion DNS. Cet exemple est basique et peut probablement être amélioré pour obtenir une plus grande amplification et des débits de paquets plus élevés ; toute amélioration est laissée en exercice au lecteur.
sudo python3 dns_reflect.py <tunnel_ips.txt> <dns_resolvers.txt> <spoof_ip>
Paramètres :
<tunnel_ips.txt> : Un fichier contenant une liste d'adresses IP d'hôtes IPIP ou GRE vulnérables.<dns_resolvers.txt> : Un fichier contenant une liste de résolveurs DNS à utiliser pour refléter les réponses vers la cible.<spoof_ip> : L'adresse IP que vous avez l'intention d'usurper.Exemple d'utilisation :
Pour lancer une attaque contre l'adresse IP 203.0.113.23, vous exécuteriez la commande suivante :
sudo python3 dns_reflect.py tunnel_ips.txt dns_resolvers.txt 203.0.113.23
Dans cet exemple, tunnel_ips.txt doit contenir une liste d'hôtes IPIP ou GRE vulnérables, avec le protocole spécifié au début de chaque ligne, au format suivant :
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
[...]
Et dns_resolvers.txt doit inclure une liste de résolveurs DNS récursifs publics, au format suivant :
9.9.9.9
8.8.8.8
1.1.1.1
[...]