
全ポートスキャン結果を分割し、対象を絞ったNmap実行に活用する
Divide Et Impera And Scan(そしてスキャン結果も統合)
NixOS![]() | ![]() |
|---|---|
| NixOS | offsec.tools |
DivideAndScan(ディバイド・アンド・スキャン)は、ポートスキャン処理を3つのフェーズに分割することで効率的に自動化するために使用されます。
第1フェーズでは高速ポートスキャナーを使用することを想定しており、その出力は解析されて単一ファイルのデータベース(TinyDB)に保存されます。次に、第2フェーズでは、データベースのデータに基づいて、各ターゲットの開いているポートのセットに対して個別のNmapスキャンが開始されます(マルチプロセッシング対応)。最後に、第3フェーズでは、個別のNmap出力がnMap_Mergerを使用して、異なる形式(XML / HTML / 簡易テキスト / grepable)の単一レポートに統合されます。可視化部分はDrawNmapによって提供されます。
考えられるユースケース:
* 利用可能なポートスキャナー:
免責事項. このリポジトリに含まれるすべての情報は、教育および研究目的でのみ提供されています。作者は本ツールの不正使用に対して一切の責任を負いません。

divide and scan を正常に行うには、優れたポートスキャンツールをいくつか入手する必要があります(以下の例では、GitHubリリースはeget経由で取得しています)。
📑 注: ホストOSに依存関係をインストールしたくない場合は、Dockerのセクションに進んでください。
sudo apt install nmap xsltproc -y
sudo nmap --script-updatedb
pushd /tmp
wget https://github.com/ivre/masscan/archive/refs/heads/master.zip -O masscan-master.zip
unzip masscan-master.zip
cd masscan-master
make
sudo make install
popd && rm -rf /tmp/masscan-master*
eget -t 2.0.1 -a amd64 RustScan/RustScan --to /tmp/rustscan.deb
sudo dpkg -i /tmp/rustscan.deb && rm /tmp/rustscan.deb
sudo wget https://gist.github.com/snovvcrash/8b85b900bd928493cd1ae33b2df318d8/raw/fe8628396616c4bf7a3e25f2c9d1acc2f36af0c0/rustscan-ports-top1000.toml -O /root/.rustscan.toml
sudo mkdir /opt/naabu
sudo eget -s linux/amd64 projectdiscovery/naabu --to /opt/naabu
sudo ln -sv /opt/naabu/naabu /usr/local/bin/naabu
sudo mkdir /opt/nimscan
sudo eget -a NimScan elddy/NimScan --to /opt/nimscan
sudo ln -sv /opt/nimscan/nimscan /usr/local/bin/nimscan
sudo mkdir /opt/sx
sudo eget -s linux/amd64 v-byte-cpu/sx --to /opt/sx
sudo ln -sv /opt/sx/sx /usr/local/bin/sx
sudo mkdir /opt/pd
sudo eget -s linux/amd64 projectdiscovery/dnsx --to /opt/pd
sudo ln -sv /opt/pd/dnsx /usr/local/bin/dnsx
DivideAndScan は PyPI に divideandscan として公開されていますが、最新版を常に利用できるようにするため、GitHub から pipx を使用してインストールすることをお勧めします:
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das
shiv でパッケージ化された リリース もあります(ただしファイルサイズは大きめです):
# shiv -e das.divideandscan:main -o das.pyz divideandscan
~$ wget https://github.com/snovvcrash/DivideAndScan/releases/latest/download/das.pyz && chmod +x das.pyz
~$ ./das.pyz
デバッグ目的で、poetry を使用して開発環境をセットアップすることもできます:
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das
📑 注: DivideAndScan はすべてのポートスキャナーを実行する際に sudo を使用するため、スキャンコマンドを実行するときにパスワードの入力を求められます。
Docker コンテナ内で DivideAndScan を次のように実行できます:
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan
ツールは入力データを必要とし、出力データを生成するため、現在の作業ディレクトリをコンテナ内の /app にマウントポイントとして指定する必要があります。また、ホスト側でポート8050を公開すると、Nmapレポートの可視化に使用されるDashアプリにアクセスできます。
エイリアスを設定してベースコマンドを短くすることもできます:
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

|
⚠️ 警告: ポートスキャンツールのほとんどは、不適切に使用するとシステムに損傷を与える可能性があるため、使用する内容をよく理解していることを確認してください。
モジュールが動作を開始すると、 |
|
|