今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

blacklanternsecurity/bbot

複数のターゲットを同時スキャンできるPython製セキュリティ調査フレームワークです。

BBOTを実行すると、1つのドメインを投げただけなのに、そこからサブドメイン、メール、クラウド資産が次々と芋づる式に見つかっていく様子を目の当たりにできます。これはAmassやSubfinderのような単発スキャンとは違い、API結果から新しいターゲットを自動で派生させるイベント駆動の再帰アーキテクチャと、ターゲット固有のNLP変形によって実現されているもので、他ツールより20〜50%多くサブドメインを発見できるという数字も納得できるはずです。バグバウティの偵察や攻撃対象領域の定期監視をしているなら、Neo4jで発見資産をグラフ化したり、13種の出力先に流し込んだりする体験を、今日一度自分の対象ドメインで試してみたくなります。

01 / 概要
何をするものか一文で言うと
ひとことで複数のターゲットを同時スキャンできるPython製セキュリティ調査フレームワークです。

BBOTはBlack Lantern Security製の再帰型インターネットスキャナーで、サブドメイン列挙・Webクローリング・メール収集・クラウド資産発見・脆弱性チェックなど、偵察(recon)からバグバウンティ、Attack Surface Management(ASM)までを1つのCLIツールで自動化します。SpiderFootに影響を受けた設計で、200個近いモジュール(bbot/modules配下)を「プリセット」として組み合わせて実行する点が特徴です。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

コアは`bbot/scanner`のScannerクラスと`Preset`(bbot/core/config, bbot/scanner/preset)で、CLI(bbot/cli.py)がコマンドライン引数をPresetにマージし、有効化されたモジュール(flags/target/output_modulesの組み合わせ)を非同期(asyncio)で実行します。各モジュールはターゲットに対して発見した情報(サブドメイン、IP、URL、メールなど)を「イベント」(bbot/core/event)として発行し、そのイベントが後続モジュールへの新たな入力になる「再帰(recursive)」構造がBBOT最大の特徴です。例えばDNSブルートフォースで見つかったサブドメインがさらにポートスキャン・Webモジュール・脆弱性検査モジュールへ連鎖的に流れ込みます。dnsresolve/cloudcheck/excavateなどinternalモジュールがイベントの正規化・DNS解決・クラウド判定・情報抽出を担い、内部でblastdns(高速並列DNSリゾルバ)を使うことでスピードを稼いでいます。出力はJSON/CSV/Neo4j/Splunk/Elasticなど多数のoutputモジュール(bbot/modules/output)から選べます。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    `pipx install bbot`でインストールすると、初回実行時にコンソールへBBOTのASCIIアートバナーとバージョン情報が表示されます。

  2. STEP 02

    `bbot -t evilcorp.com -p subdomain-enum`のように実行すると、Presetがsubdomain-enumフラグ付きモジュール群(APIベースの受動収集+DNSブルートフォース)を自動選択し、進捗ログがリアルタイムでストリーム表示されます。

  3. STEP 03

    APIキー(github, chaos, securitytrailsなど)を`~/.config/bbot`の設定ファイルに書いていない場合、該当モジュールがスキップされる、または警告が出ることが予想されます(README記載のsubdomain-enum.ymlにコメントアウトされたAPIキー欄あり)。

  4. STEP 04

    スキャン完了後、outputディレクトリにTXT/JSON形式でユニークなサブドメインやイベントが保存され、`-p spider`併用時はメールアドレスなどの追加情報も出力されます。

  5. STEP 05

    `--install-all-deps`や`-c`オプションで依存ツール(nuclei, gowitnessなど外部バイナリ)のインストールを試みるため、初回は依存関係のダウンロードに時間がかかると考えられます。

  6. STEP 06

    `--reset-config`/`--reset-secrets`のような操作では、既存の設定ファイルをバックアップ(.bak)した上で初期化するかどうか確認プロンプトが出ます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

実行結果として、ターゲットドメインに関連するサブドメイン・IP・URL・メールアドレス・技術情報・脆弱性候補などが「イベント」として蓄積され、選んだoutputモジュール(TXT, JSON, CSV, Neo4jなど)の形式でファイルまたは外部システムに保存されます。README曰く、他ツールより20-50%多くサブドメインを発見するとされており、再帰的な多モジュール連携がその根拠として構造上確認できます。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

多くのモジュールが外部API(github, chaos, securitytrails, censys, hunterioなど)や外部バイナリ(nuclei, gowitness, fingerprintx, legba, medusa, jadxなど)に依存しており、APIキー未設定や依存ツール未インストールの場合は該当モジュールの結果が得られません。

02

DNSブルートフォースやスパイダーなど能動的スキャンを行うモジュールが含まれるため、許可のないターゲットに対して実行すると法的・倫理的リスクがあります(READMEもバグバウンティ/ペンテスト用途を前提としています)。

03

AGPLv3ライセンスであるため、改変・サービス提供する場合はソースコード開示義務が生じる点に注意が必要です。

04

distro_tests.ymlのようにOSごとのビルド依存(gcc, libssl-dev等)が必要で、環境によってはネイティブ依存関係のビルドに失敗する可能性があります。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

サブドメイン列挙・Web偵察・ASM調査を一括で自動化したいペンテスターやバグバウンティハンター、セキュリティ運用チームに向いているツールです。CLI構造(Preset+Scanner+モジュール群)とREADMEに記載された具体的なプリセットYAML、CI(tests.yml, distro_tests.yml)の存在から、実運用を意識した継続的な検証体制があることが確認でき、実際にインストールしなくても「動作の仕組みと得られる結果の形」については高い確度で判断できます。ただし個別のモジュール精度や外部API連携の実効性は、実際のAPIキーやターゲット環境に依存するため、その部分は実行してみないと確認できません。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する