
IPIPおよびGREプロトコルを介して認証されていないパケットを転送するホスト向けのスキャナー兼攻撃スイート。(CVE-2020-10136 CVE-2024-7595)

公開インターネット上のホスト(主にCiscoルーター)向けのスキャナおよび攻撃スイートです。これらのホストは、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>: 1秒あたりのパケットレート制限(例: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が開放されており、脆弱な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トンネリングホストを利用して、インターネット上のランダムなホストのポート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。使用例:
脆弱なGRE転送ホストが198.51.100.25で見つかり、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
[...]