
bbot v3.0.1
ハッカーのための再帰的インターネットスキャナー。🧡
BEE·bot は、Spiderfoot にインスパイアされた多目的スキャナーで、偵察(Recon)、バグバウンティ、ASM(攻撃対象領域管理) を自動化するために作られました!
https://github.com/blacklanternsecurity/bbot/assets/20261699/e539e89b-92ea-46fa-b893-9cde94eebf81
リアルタイムのBBOTスキャン – VivaGraphJS による可視化
インストール
# stable version
pipx install bbot
# bleeding edge (dev branch)
pipx install --pip-args '\--pre' bbot
その他のインストール方法(Docker を含む)については、Getting Started を参照してください。
2.x からアップグレードしますか? BBOT 3.0 には、CLI、プリセット、モジュール、イベント、Python API に破壊的変更が含まれています。アップグレード前に 2.x → 3.0 Migration Guide(ソース)を参照してください。
スピードのヒント: BBOT の DNS リゾルバ (blastdns) は、
/etc/resolv.conf内のリゾルバごとに複数のスレッドを起動します。フィルタリングされていないリゾルバを追加すると、スキャンが劇的に高速化します。詳細は サンプル resolv.conf と Tips and Tricks を参照してください。
コマンド例
1) サブドメイン検出
パッシブ API ソースに加え、ターゲット固有のサブドメインミューテーションを使用した再帰的な DNS ブルートフォース。
# evilcorp.com のサブドメインを検出
bbot -t evilcorp.com -p subdomain-enum
# パッシブソースのみ
bbot -t evilcorp.com -p subdomain-enum -rf passive
subdomain-enum.yml
description: Enumerate subdomains via APIs, brute-force
flags:
# enable every module with the subdomain-enum flag
- subdomain-enum
output_modules:
# output unique subdomains to TXT file
- subdomains
config:
dns:
threads: 25
brute_threads: 1000
# put your API keys here
# modules:
# github:
# api_key: ""
# chaos:
# api_key: ""
# securitytrails:
# api_key: ""
BBOT は一貫して、他のツールよりも 20~50% 多くのサブドメインを発見します。ドメインが大きいほど、その差は顕著になります。これを可能にする仕組みについては、How It Works を参照してください。

2) Web スパイダー
# evilcorp.com をクロールし、メールアドレスなどを抽出
bbot -t evilcorp.com -p spider
spider.yml
description: Recursive web spider
modules:
- http
blacklist:
# Prevent spider from invalidating sessions by logging out
- "RE:/.*(sign|log)[_-]?out"
config:
web:
# how many links to follow in a row
spider_distance: 2
# don't follow links whose directory depth is higher than 4
spider_depth: 4
# maximum number of links to follow per page
spider_links_per_page: 25
3) メールアドレス収集
# 無料 API + スクレイピングで簡単にメールアドレスを列挙
bbot -t evilcorp.com -p email-enum
# サブドメイン列挙 + Web スパイダーと組み合わせて最大収量を得る
bbot -t evilcorp.com -p email-enum subdomain-enum spider
email-enum.yml
description: Enumerate email addresses from APIs, web crawling, etc.
flags:
- email-enum
output_modules:
- emails
4) Web スキャナー
# www.evilcorp.com に対して軽量な Web スキャンを実行
bbot -t www.evilcorp.com -p web
# www.evilcorp.com に対してヘビーな Web スキャンを実行
bbot -t www.evilcorp.com -p web-heavy
web.yml
description: Quick web scan
include:
- iis-shortnames
flags:
- web
web-heavy.yml
description: Aggressive web scan
include:
# include the web preset
- web
flags:
- web-heavy
5) オールインワン
# すべてを一度に実行
bbot -t evilcorp.com -p kitchen-sink
# ほぼ以下と同等:
bbot -t evilcorp.com -p subdomain-enum cloud-enum code-enum email-enum spider web paramminer webbrute web-screenshots
kitchen-sink.yml
description: Everything everywhere all at once
include:
- subdomain-enum
- cloud-enum
- code-enum
- email-enum
- spider
- web
- paramminer
- webbrute
- web-screenshots
- baddns-heavy
config:
modules:
dnsbrute:
recursive_mutations: true
dnscommonsrv:
recursive_mutations: true
webbrute:
avoid_wafs: False
wayback:
urls: True
parameters: True
archive: True
仕組み
以下のグラフをクリックして、BBOT の内部動作を見てみましょう。
出力モジュール
...その他 もっと あります!
Python ライブラリとしての BBOT
同期
from bbot.scanner import Scanner
if __name__ == "__main__":
scan = Scanner("evilcorp.com", presets=["subdomain-enum"])
for event in scan.start():
print(event)
非同期
from bbot.scanner import Scanner
async def main():
scan = Scanner("evilcorp.com", presets=["subdomain-enum"])
async for event in scan.async_start():
print(event.json())
if __name__ == "__main__":
import asyncio
asyncio.run(main())
機能概要
- 複数ターゲットのサポート
- Web スクリーンショット
- オフェンシブな Web モジュール群
- NLP を活用したサブドメインミューテーション
- Neo4j(など)へのネイティブ出力
- Ansible による自動依存関係インストール
- カスタム YARA ルールで攻撃対象領域全体を検索
- Python API + 開発者向けドキュメント
ターゲット
BBOT は -t で無制限のターゲットを受け付けます。ターゲットはコマンドラインで直接指定するか、ファイルで指定できます(両方も可!)。
bbot -t evilcorp.com evilcorp.org 1.2.3.0/24 -p subdomain-enum
ターゲットは次のいずれかです:
- DNS 名 (
evilcorp.com) - IP アドレス (
1.2.3.4) - IP レンジ (
1.2.3.0/24) - オープン TCP ポート (
192.168.0.1:80) - URL (
https://www.evilcorp.com) - メールアドレス (
[email protected]) - 組織 (
ORG:evilcorp) - ユーザー名 (
USER:bobsmith) - ファイルシステム (
FILESYSTEM:/tmp/asdf) - モバイルアプリ (
MOBILE_APP:https://play.google.com/store/apps/details?id=com.evilcorp.app)
詳細は Targets を参照してください。BBOT がスコープをどのように処理するかについては、Scope を参照してください。
API キー
Amass や Subfinder と同様に、BBOT は SecurityTrails などのサードパーティサービス向けの API キーをサポートしています。
標準的な方法は、API キーを ~/.config/bbot/secrets.yml に入力することです。複数の API キーを指定することも可能です。
modules:
shodan_dns:
api_key: 4f41243847da693a4f356c0486114bc6
c99:
# 複数の API キー
api_key:
- 21a270d5f59c9b05813a72bb41707266
- ea8f243d9885cf8ce9876a580224fd3c
- 5bc6ed268ab6488270e496d3183a1a27
virustotal:
api_key: dd5f0eee2e4a99b71a939bded450b246
securitytrails:
api_key: d9a05c3fd9a514497713c54b4455d0b0
必要に応じて、コマンドラインで指定することもできます:
bbot -c modules.virustotal.api_key=dd5f0eee2e4a99b71a939bded450b246
詳細は Configuration を参照してください。
モジュール、フラグなどの完全なリスト
ドキュメント
- ユーザーマニュアル
- 基本
- スキャン
- モジュール
- 移行
- その他
- 開発者マニュアル
コントリビューション
BBOT のモジュールの中には、コミュニティによって作成された素晴らしいものもあります。BBOT は常に改善されており、日々より強力になっています!
コントリビューションを歓迎します。コードだけでなく、アイデアも歓迎です!新機能のアイデアがあれば、Discussions でお知らせください。実際に手を動かしたい方は、Contribution をご覧ください。セットアップ手順と BBOT モジュールの書き方に関する簡単なチュートリアルがあります。また、充実した開発者ドキュメントもあります。
BBOT に貢献してくださったこれらの素晴らしい人々に感謝します!❤️
特別な感謝を:
- @TheTechromancer - BBOT の作成
- @liquidsec - badsecrets や baddns を含む BBOT の Web ハッキング機能への多大な貢献
- Steve Micallef (@smicallef) - Spiderfoot の作成
- @kerrymilan - Neo4j と Ansible の専門知識
- @domwhewell-sage - 強力なコード略奪モジュール群
- @aconite33 と @amiremami - 執拗なテスト
- Aleksei Kornev (@alekseiko) - bbot の Pypi リポジトリの所有権を譲渡していただいたこと <3


