Skip to content

Recon frameworks

BBOT

Recursive Python scanner with presets for subdomains, emails, cloud assets, web spidering and web scanning, inspired by SpiderFoot.

11k stars · last push November 11, 2026 · v3.0.2 · AGPL-3.0

GitHub repositoryOfficial docs

What it finds

BBOT runs modules that feed discovered events back into the scan, so each new subdomain, URL or IP can trigger further modules. Presets such as subdomain-enum, email-enum, spider, web and kitchen-sink pick module sets, and a passive-only flag limits a run to third-party sources. Output modules write to files, databases like Neo4j or Postgres, SIEMs and chat webhooks.

  • subdomains
  • IP addresses
  • open ports
  • URLs
  • emails
  • cloud buckets
  • code repositories
  • web screenshots
  • technologies
  • vulnerabilities

Does it touch the target?

Has a passive mode and active modes. The active modes need the owner's permission.

README: "# passive sources only" bbot -t example.com -p subdomain-enum -rf passive. The default subdomain-enum preset adds "a recursive DNS brute-force"; the web-heavy preset is described as "Aggressive web scan".

API keys: README: "Similar to Amass or Subfinder, BBOT supports API keys for various third-party services such as SecurityTrails", stored in ~/.config/bbot/secrets.yml or passed with -c.

Install

Install with pipx
pipx install bbot

From the project's documentation

Install with docker
docker run -it blacklanternsecurity/bbot --help

From the project's documentation

How to run it

Examples use reserved documentation hosts such as example.com. Replace them with a domain you own or are authorised to test.

Subdomain enumeration with brute force
bbot -t example.com -p subdomain-enum

From the project's documentation

Passive-only subdomain enumeration
bbot -t example.com -p subdomain-enum -rf passive

From the project's documentation

Email gathering from free APIs and scraping
bbot -t example.com -p email-enum

From the project's documentation

Output formats: txt, csv, json, neo4j, postgres, mysql, sqlite, splunk, elasticsearch, http, websocket

Runs these tools under the hood: nuclei, gowitness, blastdns, baddns, badsecrets, FingerprintX

Limits the project documents

  • Docs: "Only Linux is supported at this time. Windows and macOS are not supported"; Docker is suggested for those platforms.
  • README: BBOT 3.0 has breaking changes to the CLI, presets, modules, events and Python API versus 2.x.
  • Docs: the nuclei module uses ALL templates by default on directory URLs, is tagged loud and invasive, and "no special flag is needed to enable it" (BBOT warns first).
  • README: scan speed depends on the DNS resolvers in /etc/resolv.conf.

Deepak's take

Analysis, not documentation

Use it when
Use it for subdomain and asset discovery where recursion matters, and when you want results streamed into Neo4j, a SIEM or a database.
Skip it when
Skip it on native Windows or macOS without Docker, or when you need a team web UI with scheduled scans, which reNgine provides.
What it will miss
In passive mode it sees only what third-party sources have indexed, so new or unlinked hosts stay hidden until active modules run.

Facts read from the project's README and docs on November 10, 2026. Repository data as of November 11, 2026. Licence: AGPL-3.0. BBOT is a trademark or project name of its owners; this library is not affiliated with it.