
chaosは、RSTがChatGPTと協力して開発した「オリジン」IPスキャナーです。主にペネトレーションテスターやバグハンターを対象としたニッチなユーティリティです。
オリジンIPとは、サードパーティ経由で公開されているWebサイトの最終的な公開IPアドレスを指す業界用語です。オリジンIPに関心を持つ理由について詳しく知りたい場合は、こちらのブログ記事をご覧ください。
chaosは、ChatGPTを用いたDevOpsの原則に従い、アイデアから機能するProof-of-Conceptまでを24時間未満で迅速にプロトタイプ化しました。
usage: chaos.py [-h] -f FQDN -i IP [-a AGENT] [-C] [-D] [-j JITTER] [-o OUTPUT] [-p PORTS] [-P] [-r] [-s SLEEP] [-t TIMEOUT] [-T] [-v] [-x]
_..._
.-'` `'-.
__|___________|__
\ /
`._ CHAOS _.'
`-------`
/ \\
/ \\
/ \\
/ \\
/ \\
/ \\
/ \\
/ \\
/ \\
/_____________________\\
CHAtgpt Origin-ip Scanner
_______ _______ _______ _______ _______
|\\ /|\\ /|\\ /|\\ /|\\/|
| +---+ | +---+ | +---+ | +---+ | +---+ |
| |H | | |U | | |M | | |A | | |N | |
| |U | | |S | | |A | | |N | | |C | |
| |M | | |E | | |N | | |D | | |O | |
| |A | | |R | | |C | | | | | |L | |
| +---+ | +---+ | +---+ | +---+ | +---+ |
|/_____|\\_____|\\_____|\\_____|\\_____\\
Origin IP Scanner developed with ChatGPT
cha*os (n): 完全な無秩序と混乱
(ver: 0.9.4)

cd path/to/chaospip3 install -U pip setuptools virtualenvvirtualenv envsource env/bin/activate(env) pip3 install -U -r ./requirements.txt(env) ./chaos.py -h-h, --help このヘルプメッセージを表示して終了
-f FQDN, --fqdn FQDN FQDNファイルへのパス(1行に1つのFQDN)
-i IP, --ip IP HTTPリクエストのIPアドレス(カンマ区切りのIP、IPネットワーク、および/またはIP/ネットワークを1行に記述したファイル)
-a AGENT, --agent AGENT
リクエストのUser-Agentヘッダー値
-C, --csv CSV出力をOUTPUT_FILE.csvに追記
-D, --dns リクエスト前にFQDN/IP値に対して前方/逆引きDNSルックアップを実行(テストキューには影響なし)
-j JITTER, --jitter JITTER
sleep値に0~N秒のランダム遅延を追加
-o OUTPUT, --output OUTPUT
コンソール出力をFILEに追記
-p PORTS, --ports PORTS
使用するTCPポートのカンマ区切りリスト(デフォルト:"80,443")
-P, --no-prep 各IP/ポートに対して`GET /`(`Host: {IP:Port}`ヘッダー)による事前スキャンを実行しない(応答しないホストを除外しない)
-r, --randomize IP/ポートのテスト順序を(ある程度)ランダム化
-s SLEEP, --sleep SLEEP
スレッド完了前にN秒追加
-t TIMEOUT, --timeout TIMEOUT
応答しないホストのタイムアウトまでN秒待機
-T, --test テストモード;リクエストを送信しない
-v, --verbose 詳細出力を有効化
-x, --singlethread シングルスレッド実行(1~2コアシステム向け);デフォルトスレッド数=(コア数-1)(コア数>2の場合)
Python HTTPサーバーを起動
% python3 -u -m http.server 8001
Serving HTTP on :: port 8001 (http://[::]:8001/) ...
SSLとして検出されるポートでHTTPとしてncatを起動(--keep-openがハングする可能性があるためループ使用)
% while true; do ncat -lvp 8443 -c 'printf "HTTP/1.0 204 Plaintext OK\n\n<html></html>\n"'; done
Ncat: Version 7.94 ( https://nmap.org/ncat )
Ncat: Listening on [::]:8443
Ncat: Listening on 0.0.0.0:8443
また、デフォルトでHTTP検出されるポートでSSLとしてncatを起動
% while true; do ncat --ssl -lvp 8444 -c 'printf "HTTP/1.0 202 OK\n\n<html></html>\n"'; done
Ncat: Version 7.94 ( https://nmap.org/ncat )
Ncat: Generating a temporary 2048-bit RSA key. Use --ssl-key and --ssl-cert to use a permanent one.
Ncat: SHA-1 fingerprint: 0208 1991 FA0D 65F0 608A 9DAB A793 78CB A6EC 27B8
Ncat: Listening on [::]:8444
Ncat: Listening on 0.0.0.0:8444
FQDNファイルを準備:
% cat ../test_localhost_fqdn.txt
www.example.com
localhost.example.com
localhost.local
localhost
notreally.arealdomain
IPファイル / リストを準備:
% cat ../test_localhost_ips.txt
127.0.0.1
127.0.0.0/29
not_an_ip_addr
-6.a
=4.2
::1
スキャンを実行
