
IPアドレスごとに一度だけスキャンし、Nmapを使用して大量データのスキャン時間を短縮します。
IPアドレスごとに一度だけスキャンし、大量のデータに対してNmapのスキャン時間を短縮します。Unimapは「Unique Nmap Scan」の略称です。このツールはLinux、OSX、Windows、またはAndroid(Termux)で問題なく動作します。
組織全体に対してNmapを実行する予定がある場合、数十、数百、あるいは数千ものサブドメインが同じIPアドレスを指している可能性が高く、スキャンを続けることがほぼ不可能になる時点が来ることを考慮する必要があります。また、同じリモートホストアドレスへの複数回のスキャンにより、IPがブロックされる可能性もあります。
Unimapは独自の技術を使用して、最初にすべてのサブドメインのIPアドレスを解決します。このプロセスが完了すると、一意のIPアドレスを持つベクターを作成し、ユーザーが設定したスレッド数に応じてNmapで並列スキャンを起動します。同時に、Nmapで作成されたファイルのデータを解析して、どの情報が各IPに対応するかを特定します。最後に、Unimapはサブドメインに関連付けられた各IPの情報を関連付けます。例えば、同じIPを指す50のサブドメインがある場合、Nmapスキャンは1回だけ実行しますが、各サブドメインに関連するすべてのデータを同時に取得できます。大規模なスキャンでは、数日または数週間の時間を節約できます。
コンピュータにRust(1.88以降)とNmapがインストールされている必要があります。その後、以下を実行します:
1. git clone https://github.com/Edu4rdSHL/unimap.git && cd unimap
# または、https://github.com/Edu4rdSHL/unimap/releases/latest からリリースをダウンロードし、
# 解凍して次のステップに進みます。
2. cargo build --release
# これでバイナリは ./target/release/unimap にあります
# 次のコマンドはLinuxとMacOSでのみ動作します。Windowsユーザーは環境変数でターゲットパスを指定する必要があります
3. cp ./target/release/unimap /usr/local/bin
# これで、どこからでも `unimap` コマンドを使用できます。
イメージ edu4rdshl/unimap は、linux/amd64 と linux/arm64 向けに
リリースごとに latest およびリリースバージョンとして公開されています:
docker pull edu4rdshl/unimap:latest
docker run --rm edu4rdshl/unimap:latest -t hackerone.com --fast-scan
# CSVとNmap XMLファイルを保持するには:/opt/unimap にディレクトリをマウントします
docker run --rm -v "$(pwd):/opt/unimap" edu4rdshl/unimap:latest -f targets.txt --fast-scan -u results.csv
イメージを自分でビルドするには、docker/README.md を参照してください。
お使いのOS用の最新バージョンをダウンロードして使用します。
unimap は、AURヘルパーを使用して利用可能なAURパッケージからインストールできます。例えば、
$ paru -S unimap
必要に応じて、AURパッケージをクローンして、makepkgでコンパイルすることもできます。例えば、
git clone https://aur.archlinux.org/unimap.git && cd unimap && makepkg -si
Unimapは、Nmap TCP SYN(ステルス)スキャンを起動するためにroot/管理者権限を必要とします。精度とパフォーマンスの理由からこれを使用します。 LinuxまたはLinuxベースの場合は、rootシェルを使用するか、sudoでツールを実行してください。Windowsでは、管理者としてコマンドプロンプト(CMD)を開き、通常どおりツールを実行できます。
unimap -f targets.txt -u log.csv はフルスキャンを実行し、出力をlog.csvに書き込みます。unimap -f targets.txt --fast-scan -o は高速スキャンを実行し、ログファイルをlogs/フォルダに保存します。sudo unimap -f targets.txt --ports "1-1000" --min-rate 5000 は、min-rate 5000でサービスおよびバージョン検出を行いながらポート1〜1000をスキャンします(高速スキャンが必要な場合は--fast-scanフラグを使用します)。--threads と --min-rate(最も重要)の数を調整するだけです。ユニットテストと統合テストを実行します(ネットワーク、root、Nmapは不要):
cargo test
Dockerイメージをビルドして scanme.nmap.org に対して実際のスキャンを起動する短いエンドツーエンドチェックを実行します(Dockerとインターネットアクセスが必要):
scripts/container-test.sh
issueを開いてください。