アップデート一覧に戻る
New releaseAug 24, 2026

bbot v3.0.2

ハッカーのための再帰的インターネットスキャナー。🧡

共有

bbot_banner

Python Version License PyPi Downloads Ruff Tests Codecov Discord

BEE·botSpiderfoot に触発された多目的スキャナーで、あなたの 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 移行ガイド(ソース)を参照してください。

速度向上のヒント: BBOTのDNSリゾルバー(blastdns)は、/etc/resolv.conf内のリゾルバーごとに複数のスレッドを起動します。フィルタリングされていないリゾルバーを追加すると、スキャンが劇的に高速化されます。詳細は、サンプル resolv.confヒントとコツを参照してください。

コマンド例

1) サブドメイン検出

パッシブAPIソースと、ターゲット固有のサブドメインミューテーションを用いた再帰的DNSブルートフォース。

# find subdomains of evilcorp.com
bbot -t evilcorp.com -p subdomain-enum

# passive sources only
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%多くのサブドメインを発見します。ドメインが大きいほど、その差は顕著になります。なぜそれが可能なのかについては、仕組みを参照してください。

subdomain-stats-ebay

2) Webスパイダー

# crawl evilcorp.com, extracting emails and other goodies
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) メール収集

# quick email enum with free APIs + scraping
bbot -t evilcorp.com -p email-enum

# pair with subdomain enum + web spider for maximum yield
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スキャナー

# run a light web scan against www.evilcorp.com
bbot -t www.evilcorp.com -p web

# run a heavy web scan against www.evilcorp.com
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) エブリシング・エブリウェア・オール・アット・ワンス

# everything everywhere all at once
bbot -t evilcorp.com -p kitchen-sink

# roughly equivalent to:
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の内部構造を探索してください。

image

出力モジュール

...およびその他!

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())
参照: この極悪非道なDiscordボット

/scan コマンドに応答するBBOT Discordボット。Discordサーバーにいながら、手軽にインターネットをスキャンできます!

bbot-discord

機能概要

  • 複数ターゲットのサポート
  • 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)

詳細については、ターゲットを参照してください。BBOTがスコープをどのように処理するかについては、スコープを参照してください。

APIキー

AmassやSubfinderと同様に、BBOTはSecurityTrailsなどの様々なサードパーティサービス向けのAPIキーをサポートしています。

標準的な方法は、APIキーを**~/.config/bbot/secrets.yml**に入力することです。複数のAPIキーを指定できることに注意してください:

modules:
  shodan_dns:
    api_key: 4f41243847da693a4f356c0486114bc6
  c99:
    # multiple API keys
    api_key:
      - 21a270d5f59c9b05813a72bb41707266
      - ea8f243d9885cf8ce9876a580224fd3c
      - 5bc6ed268ab6488270e496d3183a1a27
  virustotal:
    api_key: dd5f0eee2e4a99b71a939bded450b246
  securitytrails:
    api_key: d9a05c3fd9a514497713c54b4455d0b0

必要であれば、コマンドラインで指定することもできます:

bbot -c modules.virustotal.api_key=dd5f0eee2e4a99b71a939bded450b246

詳細は設定を参照してください。

モジュール、フラグなどの完全なリスト

ドキュメント

貢献

最高のBBOTモジュールのいくつかはコミュニティによって書かれました。BBOTは絶えず改良されており、日々より強力になっています!

私たちは貢献を歓迎します。コードだけでなく、アイデアも歓迎します! 新機能のアイデアがあれば、ディスカッションでお知らせください。実際に手を動かしたい方は、貢献を参照してください。そこには、セットアップ手順とBBOTモジュールの書き方に関する簡単なチュートリアルがあります。また、充実した開発者向けドキュメントもあります。

BBOTに貢献してくれた素晴らしい人々に感謝します! ❤️

特に感謝します:

  • BBOTを生み出した @TheTechromancer
  • badsecretsbaddnsを含む、BBOTのWebハッキング機能に多大な貢献をした @liquidsec
  • Spiderfootを生み出した Steve Micallef (@smicallef)
  • Neo4jとAnsibleの専門知識を提供してくれた @kerrymilan
  • 素晴らしいコード収集モジュール群を生み出した @domwhewell-sage
  • 容赦ないテストをしてくれた @aconite33 と @amiremami
  • bbot Pypiリポジトリの所有権を譲渡してくれた Aleksei Kornev (@alekseiko) <3

カテゴリ