BBOTはBlack Lantern Security製の再帰型インターネットスキャナーで、サブドメイン列挙・Webクローリング・メール収集・クラウド資産発見・脆弱性チェックなど、偵察(recon)からバグバウンティ、Attack Surface Management(ASM)までを1つのCLIツールで自動化します。SpiderFootに影響を受けた設計で、200個近いモジュール(bbot/modules配下)を「プリセット」として組み合わせて実行する点が特徴です。
コアは`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)から選べます。
- STEP 01
`pipx install bbot`でインストールすると、初回実行時にコンソールへBBOTのASCIIアートバナーとバージョン情報が表示されます。
- STEP 02
`bbot -t evilcorp.com -p subdomain-enum`のように実行すると、Presetがsubdomain-enumフラグ付きモジュール群(APIベースの受動収集+DNSブルートフォース)を自動選択し、進捗ログがリアルタイムでストリーム表示されます。
- STEP 03
APIキー(github, chaos, securitytrailsなど)を`~/.config/bbot`の設定ファイルに書いていない場合、該当モジュールがスキップされる、または警告が出ることが予想されます(README記載のsubdomain-enum.ymlにコメントアウトされたAPIキー欄あり)。
- STEP 04
スキャン完了後、outputディレクトリにTXT/JSON形式でユニークなサブドメインやイベントが保存され、`-p spider`併用時はメールアドレスなどの追加情報も出力されます。
- STEP 05
`--install-all-deps`や`-c`オプションで依存ツール(nuclei, gowitnessなど外部バイナリ)のインストールを試みるため、初回は依存関係のダウンロードに時間がかかると考えられます。
- STEP 06
`--reset-config`/`--reset-secrets`のような操作では、既存の設定ファイルをバックアップ(.bak)した上で初期化するかどうか確認プロンプトが出ます。
実行結果として、ターゲットドメインに関連するサブドメイン・IP・URL・メールアドレス・技術情報・脆弱性候補などが「イベント」として蓄積され、選んだoutputモジュール(TXT, JSON, CSV, Neo4jなど)の形式でファイルまたは外部システムに保存されます。README曰く、他ツールより20-50%多くサブドメインを発見するとされており、再帰的な多モジュール連携がその根拠として構造上確認できます。
多くのモジュールが外部API(github, chaos, securitytrails, censys, hunterioなど)や外部バイナリ(nuclei, gowitness, fingerprintx, legba, medusa, jadxなど)に依存しており、APIキー未設定や依存ツール未インストールの場合は該当モジュールの結果が得られません。
DNSブルートフォースやスパイダーなど能動的スキャンを行うモジュールが含まれるため、許可のないターゲットに対して実行すると法的・倫理的リスクがあります(READMEもバグバウンティ/ペンテスト用途を前提としています)。
AGPLv3ライセンスであるため、改変・サービス提供する場合はソースコード開示義務が生じる点に注意が必要です。
distro_tests.ymlのようにOSごとのビルド依存(gcc, libssl-dev等)が必要で、環境によってはネイティブ依存関係のビルドに失敗する可能性があります。
サブドメイン列挙・Web偵察・ASM調査を一括で自動化したいペンテスターやバグバウンティハンター、セキュリティ運用チームに向いているツールです。CLI構造(Preset+Scanner+モジュール群)とREADMEに記載された具体的なプリセットYAML、CI(tests.yml, distro_tests.yml)の存在から、実運用を意識した継続的な検証体制があることが確認でき、実際にインストールしなくても「動作の仕組みと得られる結果の形」については高い確度で判断できます。ただし個別のモジュール精度や外部API連携の実効性は、実際のAPIキーやターゲット環境に依存するため、その部分は実行してみないと確認できません。