
ライブホストとターゲット用URLのリストを生成し、Massdns、Masscan、nmapの使用を自動化して到達不能なホストをフィルタリングします
入力ファイルとしてドメイン名のリストを与えると、このスクリプトはMassDNSを自動化して解決不能なホストをフィルタリングし、その結果をMasscanに渡してホストが到達可能か、どのポートで到達可能かを確認します。スクリプトはその後、さらなるターゲティング(gobusterやdirsearchなどのツールへの受け渡し、HTTPリクエストの実行)に使用する完全なURLのリスト、到達可能なドメイン名のリスト、到達可能なIPアドレスのリストを生成します。オプションの最終ステップとして、この縮小されたホストリストに対してnmapバージョンスキャンを実行し、先ほど到達可能だったホストが稼働していることを確認し、そのオープンポートからサービス情報を収集できます。
このスクリプトは、特に大規模なドメインセット(例:数千のサブドメインを持つapexドメインから収集したサブドメイン列挙など)に有効です。このような大規模リストでは、nmapスキャンには時間がかかりすぎます。ここでの目標は、まず精度は劣るものの非常に高速なMassDNSを使用して、入力リストから解決不能なドメインを除去することでサイズを迅速に縮小することです。次にMasscanがMassDNSの出力を受け取り、ホストが到達可能かどうか、どのポートで到達可能かをさらに確認します。スクリプトはこれらの結果を解析し、検出されたライブホストのリストを生成します。
これでホストのリストは、さらなるスキャン/テストに適した大きさにまで縮小されているはずです。さらに一歩進めたい場合は、スクリプトに到達可能なホストのリストに対してnmapスキャンを実行するよう指示できます。これにより、ホストのリストが短くなっているため、より妥当な時間で完了します。nmap実行後、Masscanからの誤検知はフィルタリングされます。生のnmap出力は通常のnmap XML形式で保存され、バージョン検出からの追加情報はSQLiteデータベースに追加されます。

nmapスキャンオプションを使用する場合、このツールはnmapがすでにインストールされていることを前提としています
注: インストールスクリプトの実行は、MassDNSとMasscanがまだインストールされていない場合、またはこのリポジトリ内に再インストールしたい場合にのみ必要です。スクリプトを実行しない場合は、それぞれの実行ファイルへのパスを引数として指定できます。また、スクリプトはMassDNSに同梱されているリゾルバリストが {massDNS_directory}/lists/resolvers.txt にあることを期待しています。
git clone https://github.com/allyomalley/LiveTargetsFinder.git
cd LiveTargetsFinder
sudo pip3 install -r requirements.txt
(オプション)
chmod +x install_deps.sh
./install_deps.sh
MassDNSとMasscanがまだインストールされておらず、自分でインストールしたい場合は、ドキュメントを参照して指示に従ってください:
このスクリプトはmacOSとLinuxでのみテストしています。Pythonスクリプト自体はWindowsマシンでも動作するはずですが、MassDNSとMasscanのインストール方法は異なると思います。
python3 liveTargetsFinder.py [domainList] [options]
-s(--hashmap-size)は特にパフォーマンス上の理由から選択されています。おそらく増やすことが可能です。-c 25 -o J -r ./massdns/lists/resolvers.txt -s 100 -w massdnsOutput -t A targetHosts--max-rate引数です。おそらく調整したいでしょう。
-iL ipFile -oD masscanOutput --open-only --max-rate 5000 -p80,443 --max-retries 10--script http-server-header.nse,http-devframework.nse,http-headers -sV -T4 -p80,443 -oX {output.xml}インストールスクリプトを実行した場合:
python3 liveTargetsFinder.py --target-list victim_domains.txt
インストールスクリプトを実行しなかった場合:
python3 liveTargetsFinder.py --target-list victim_domains.txt --massdns-path ../massdns/bin/massdns --masscan-path ../masscan/bin/masscan
nmapスキャンを実行し、デフォルトのDBパス(liveTargetsFinder.sqlite3)に書き込み/追加する
python3 liveTargetsFinder.py --target-list victim_domains.txt --nmap
nmapスキャンを実行し、指定したデータベースに書き込み/追加する
python3 liveTargetsFinder.py --target-list victim_domains.txt --nmap --db-path serviceinfo_victim.sqlite3
入力: victimDomains.txt
| フラグ | 説明 | デフォルト | 必須 |
|---|
--target-list | ドメインのリストを含む入力ファイル(例:google.com) | はい | |
--massdns-path | MassDNS実行ファイルへのパス(デフォルト以外の場合) | ./massdns/bin/massdns | いいえ |
--masscan-path | Masscan実行ファイルへのパス(デフォルト以外の場合) | ./masscan/bin/masscan | いいえ |
--nmap | 収集したライブホストに対してnmapバージョン検出スキャンを実行 | 無効 | いいえ |
--db-path | --nmapオプションを使用する場合、追加するデータベースのパスを指定(存在しない場合は作成) | output/liveTargetsFinder.sqlite3 | いいえ |
| ファイル | 説明 | 例 |
|---|
| output/victimDomains_targetUrls.txt | 到達可能なライブURLのリスト | https://github.com, http://github.com |
| output/victimDomains_domains_alive.txt | ライブドメイン名のリスト | github.com, google.com |
| output/victimDomains_ips_alive.txt | ライブIPアドレスのリスト | 10.1.0.200, 52.3.1.166 |
| 指定またはデフォルトのDBパス | ライブホストとその実行中のサービスに関する情報を保存するSQLiteデータベース | |
| output/victimDomains_massdns.txt | MassDNSからの生出力(ndjson形式) | |
| output/victimDomains_masscan.txt | Masscanからの生出力(ndjson形式) | |
| output/victimDomains_nmap.txt | nmapからの生出力(XML形式) |