Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DivideAndScan — 全ポートスキャン結果を分割し、対象を絞ったNmap実行に活用する | Kitploit
ツール/GitHubGitHub/snovvcrash/divideandscan
脆弱性スキャナーネットワークマッピングポートスキャンスクリプトと自動化ペネトレーションテスト
GitHubsnovvcrash/divideandscan

DivideAndScan

全ポートスキャン結果を分割し、対象を絞ったNmap実行に活用する

リポジトリを見る
333492年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

DivideAndScan

Divide Et Impera And Scan(そしてスキャン結果も統合)

バージョン python codacy pypi docker

注目のプロジェクト

NixOSNixOSoffsec.tools
NixOSoffsec.tools

DivideAndScan(ディバイド・アンド・スキャン)は、ポートスキャン処理を3つのフェーズに分割することで効率的に自動化するために使用されます。

  1. 複数のターゲットに対して開いているポートを検出する。
  2. 各ターゲットに対して個別にNmapを実行し、バージョン取得とNSEアクションを行う。
  3. 結果を1つのNmapレポートに統合する(複数の形式に対応)。

第1フェーズでは高速ポートスキャナーを使用することを想定しており、その出力は解析されて単一ファイルのデータベース(TinyDB)に保存されます。次に、第2フェーズでは、データベースのデータに基づいて、各ターゲットの開いているポートのセットに対して個別のNmapスキャンが開始されます(マルチプロセッシング対応)。最後に、第3フェーズでは、個別のNmap出力がnMap_Mergerを使用して、異なる形式(XML / HTML / 簡易テキスト / grepable)の単一レポートに統合されます。可視化部分はDrawNmapによって提供されます。

考えられるユースケース:

  • 大規模なスコープを列挙するペネトレーションテスト/レッドチーム活動
  • サイバーセキュリティウォーゲーム/トレーニング用CTFラボ
  • OSCP認定試験

* 利用可能なポートスキャナー:

  • Nmap
  • Masscan
  • RustScan
  • Naabu
  • NimScan
  • sx

免責事項. このリポジトリに含まれるすべての情報は、教育および研究目的でのみ提供されています。作者は本ツールの不正使用に対して一切の責任を負いません。

動作の仕組み

how-it-works.png

インストール方法

前提条件

divide and scan を正常に行うには、優れたポートスキャンツールをいくつか入手する必要があります(以下の例では、GitHubリリースはeget経由で取得しています)。

📑 注: ホストOSに依存関係をインストールしたくない場合は、Dockerのセクションに進んでください。

Nmap

root@kitploit:~
sudo apt install nmap xsltproc -y
sudo nmap --script-updatedb

Masscan

root@kitploit:~
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*

RustScan

root@kitploit:~
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

Naabu

root@kitploit:~
sudo mkdir /opt/naabu
sudo eget -s linux/amd64 projectdiscovery/naabu --to /opt/naabu
sudo ln -sv /opt/naabu/naabu /usr/local/bin/naabu

NimScan

root@kitploit:~
sudo mkdir /opt/nimscan
sudo eget -a NimScan elddy/NimScan --to /opt/nimscan
sudo ln -sv /opt/nimscan/nimscan /usr/local/bin/nimscan

sx

root@kitploit:~
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

dnsx

root@kitploit:~
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 を使用してインストールすることをお勧めします:

root@kitploit:~
~$ pipx install -f "git+https://github.com/snovvcrash/DivideAndScan.git"
~$ das

shiv でパッケージ化された リリース もあります(ただしファイルサイズは大きめです):

root@kitploit:~
# 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 を使用して開発環境をセットアップすることもできます:

root@kitploit:~
~$ git clone --recurse-submodules https://github.com/snovvcrash/DivideAndScan
~$ cd DivideAndScan
~$ poetry install
~$ poetry run das

📑 注: DivideAndScan はすべてのポートスキャナーを実行する際に sudo を使用するため、スキャンコマンドを実行するときにパスワードの入力を求められます。

Dockerを使用する場合

dockeri.co

Docker コンテナ内で DivideAndScan を次のように実行できます:

root@kitploit:~
~$ docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan

ツールは入力データを必要とし、出力データを生成するため、現在の作業ディレクトリをコンテナ内の /app にマウントポイントとして指定する必要があります。また、ホスト側でポート8050を公開すると、Nmapレポートの可視化に使用されるDashアプリにアクセスできます。

エイリアスを設定してベースコマンドを短くすることもできます:

root@kitploit:~
~$ alias das='docker run --rm -it --name das -v ~/.das:/root/.das -v `pwd`:/app -p 8050:8050 snovvcrash/divideandscan'
~$ das

使用方法

how-to-use.png

1. DBへの入力

add モジュールに高速ポートスキャナーのコマンドを指定して、目的の範囲で開いているポートを検出します。

2. ターゲットスキャン

3(オプション). レポートの統合

🔥 使用例 🔥

Hack The Box 上のすべての稼働マシンの開いているポートを列挙してみましょう。

  1. Masscan を使用して、データベースに「ホスト ⇄ 開いているポート」のマッピングを追加します。デモンストレーションのために、-p1-49151 を使用して動的ポート範囲を除外し、不要な情報を避けます。2つ目のスクリーンショットでは、ホスト別とポート別にスキャン結果を確認しています:
root@kitploit:~
~$ das -db htb add -rm masscan '-e tun0 --rate 1000 -iL hosts.txt -p1-49151 --open'

例1.png

root@kitploit:~
~$ das -db htb scan -hosts all -show
~$ das -db htb scan -ports all -show

例2.png

  1. 各ターゲットに対してNmapプロセスを起動し、関心のあるポート(開いているポート)のみを列挙します。2つ目のスクリーンショットでは、同じ操作をNmapプロセスを同時に起動して行っています:
root@kitploit:~
~$ das -db htb scan -hosts all -oA report

例3.png

root@kitploit:~
~$ das -db htb scan -hosts all -oA report -nmap '-Pn -sVC -O' -parallel

例4.png

独自のスキャナーを持ち込もう!

お気に入りのポートスキャナーをDivideAndScanと連携させるには、das/parsers/DUMMY_SCANNER.py にその出力のための単一の parse メソッドを実装してください(masscanの例を参照):

root@kitploit:~
from das.parsers import IAddPortscanOutput


class AddPortscanOutput(IAddPortscanOutput):
    """DUMMY_SCANNER出力を処理するための子クラス."""

    def parse(self):
        """
        DUMMY_SCANNERの生出力パーサー.

        :return: 2つの値のペア(ポートスキャン生出力のファイル名、DBに追加されたホスト数)
        :rtype: tuple
        """
        hosts = set()
        for line in self.portscan_raw:
            # DUMMY_SCANNERパーサーの実装
            pass

        return (self.portscan_out, len(hosts))

ヘルプ

root@kitploit:~
usage: das [-h] [-db DB] {db,add,scan,dns,report,parse,draw,tree,help} ...

 -----------------------------------------------------------------------------------------------
|  ________  .__      .__    .___        _____              .____________                       |
|  \______ \ |__|__  _|__| __| _/____   /  _  \   ____    __| _/   _____/ ____ _____    ____    |
|   |    |  \|  \  \/ /  |/ __ |/ __ \ /  /_\  \ /    \  / __ |\_____  \_/ ___\\__  \  /    \   |
|   |    `   \  |\   /|  / /_/ \  ___//    |    \   |  \/ /_/ |/        \  \___ / __ \|   |  \  |
|  /_______  /__| \_/ |__\____ |\___  >____|__  /___|  /\____ /_______  /\___  >____  /___|  /  |
|          \/                 \/    \/        \/     \/      \/       \/     \/     \/     \/   |
|  {@snovvcrash}            {https://github.com/snovvcrash/DivideAndScan}             {vX.Y.Z}  |
 -----------------------------------------------------------------------------------------------

positional arguments:
  {db,add,scan,dns,report,parse,draw,tree,help}
    db                  DBの手動操作のためのユーティリティ
    add                 フルポートスキャンを実行し、出力をDBに追加
    scan                DB内のホストとポートに対してターゲットNmapスキャンを実行
    dns                 入力ファイルのドメイン名をDB内の対応するIPアドレスにマッピング
    report              個別のNmap出力を単一のレポートに統合(https://github.com/CBHue/nMap_Merger)
    parse               Nmapの生XMLレポートをサービス名で解析し、{service}://{host}:{port} 形式でエントリを出力
    draw                Nmap XMLレポートを可視化(https://github.com/jor6PS/DrawNmap)
    tree                ~/.das/ ディレクトリの内容をtreeを使用して表示
    help                選択したポートスキャナーの組み込み --help ダイアログを表示

options:
  -h, --help            このヘルプメッセージを表示して終了
  -db DB                操作するDB名

Psst, ちょっと聞いてくれよ... 組織的なp0r7 5c4nn1n6をやってみないか?

ToDo

  • projectdiscovery/naabu パーサーを追加
  • elddy/NimScan パーサーを追加
  • sx パーサーを追加
  • ZMap パーサーを追加
  • ホスト名(存在する場合)をIP値の隣に保存
  • Webディレクトリファジングを自動化するための fuff スイッチを追加(代わりに parse モジュールを追加)
ツールをダウンロード

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

root@kitploit:~
# Nmap, 正しく解析するには -v フラグが常に必要です!
~$ das add nmap '-v -n -Pn -e eth0 --min-rate 1000 -T4 -iL hosts.txt -p1-65535 --open'
# Masscan
~$ das add masscan '--rate 1000 -iL hosts.txt -p1-65535 --open'
# RustScan
~$ das add rustscan '-b 1000 -t 2000 -u 5000 -a hosts.txt -r 1-65535 -g --no-config'
# Naabu
~$ das add naabu '-rate 1000 -iL hosts.txt -p - -silent -s s'
# NimScan
~$ das add nimscan '192.168.1.0/24 -vi -p:1-65535 -f:500'
# sx
~$ sudo sx arp -i eth0 192.168.1.0/24 --json | tee arp.cache
~$ das add sx 'tcp syn -a arp.cache -i eth0 --rate 1000/s 192.168.1.0/24 -p 445,3389'

モジュールが動作を開始すると、~/.das/db ディレクトリが作成され、モジュールルーチンが完了するとデータベースファイルと生のスキャン結果が配置されます。

scan モジュールを使用して、ターゲットを絞ったNmapスキャンを実行します。スキャン対象は -hosts または -ports オプションで調整できます:

root@kitploit:~
# ホスト単位でスキャン
~$ das scan -hosts all -oA report1
~$ das scan -hosts 192.168.1.0/24,10.10.13.37 -oA report1
~$ das scan -hosts hosts.txt -oA report1
# ポート単位でスキャン
~$ das scan -ports all -oA report2
~$ das scan -ports 22,80,443,445 -oA report2
~$ das scan -ports ports.txt -oA report2

複数のプロセスでNmapを同時に起動するには、-parallel スイッチを指定し、-proc オプションでワーカー数を設定します(値が指定されない場合、マシンのプロセッサ数がデフォルトになります):

root@kitploit:~
~$ das scan -hosts all -oA report -parallel [-proc 4]

出力形式は、-oX、-oN、-oG、-oA オプションで選択します。それぞれXML+HTML形式、簡易テキスト形式、grepable形式、全形式に対応します。モジュールの完了後、~/.das/nmap_<DB_NAME> ディレクトリが作成され、Nmapの生スキャンレポートが格納されます。

また、実際にスキャンを開始する前に、-show オプションを使用してデータベースの内容を確認することもできます:

root@kitploit:~
~$ das scan -hosts all -show

scan モジュールとは独立してレポートを生成するには、report モジュールを使用します。このモジュールは ~/.das/nmap_<DB_NAME> ディレクトリ内のNmap生スキャンレポートを検索し、-hosts または -ports オプションに基づいて処理および統合します:

root@kitploit:~
# ホスト単位で出力を統合
~$ das report -hosts all -oA report1
~$ das report -hosts 192.168.1.0/24,10.10.13.37 -oA report1
~$ das report -hosts hosts.txt -oA report1
# ポート単位で出力を統合
~$ das report -ports all -oA report2
~$ das report -ports 22,80,443,445 -oA report2
~$ das report -ports ports.txt -oA report2

📑 注: report モジュールは -hosts または -ports オプションを処理する際にDBを検索せず、代わりに ~/.das/nmap_<DB_NAME> ディレクトリ内のNmap生レポートを直接参照することに注意してください。つまり、-hosts 127.0.0.1 という引数値は、~/.das/nmap_<DB_NAME>/127-0-0-1.* ファイルが存在する場合にのみ正常に解決され、-ports 80 という引数値は ~/.das/nmap_<DB_NAME>/port80.* ファイルが存在する場合にのみ正常に解決されます。

  1. 結果として、おなじみのNmap形式(簡易テキスト、grepable、XML)の単一レポートと、見やすいHTMLレポートが得られます。

例5.png