Updated Jul 15, 2026

Recon

Chain OSINT modules from a seed into a surface map

Modular OSINT recon that chains modules from a seed target.

Agent

overview

What bbot does

Seed bbot with --targets. Modules feed each other: a subdomain find becomes DNS input, hosts feed port checks, ports feed web modules. One seed expands into connected subdomains, IPs, ports, and exposures.

Dial aggression with --flags, --require-flags, or a --preset. --whitelist, --blacklist, and --strict-scope keep recursion inside cleared assets. --output-modules and --json shape how results land.

Broad by design next to a single-step tool like subfinder. The managed recon node takes --targets and writes a folder of scan data for downstream triage.

source github.com/blacklanternsecurity/bbot

use cases

Where bbot fits

Sweep an attack surface in one run

Seed bbot with a domain and let its modules chain from subdomains to hosts to ports to web exposures for a connected surface map.

Dial scan aggression with flags

Require the passive flag for a quiet pass, or allow aggressive and deadly modules for a deeper authorized sweep, all from the flag set.

Keep recursion in scope

Use whitelist, blacklist, and strict-scope so module-to-module expansion stays within the assets you are cleared to test.

Emit structured results for triage

Turn on JSON output and the relevant output modules so findings land as structured data the rest of a workflow can query and route.

reference

bbot inputs and flags

39 inputs
NameTypeFlagDescription
targetsFILE--targetsTargets to seed the scan.
presetSTRING--presetEnable one or more BBOT presets.
flagsSTRING--flagsEnable modules by flag.
modulesSTRING--modulesModules to enable.
whitelistSTRING--whitelistWhat is considered in scope (defaults to --targets).
blacklistSTRING--blacklistTargets to never touch.
output-modulesSTRING--output-modulesOutput modules, e.g. json, csv, subdomains, http, neo4j.
jsonBOOLEAN--jsonOutput scan data in JSON format.

Showing key inputs. bbot exposes 39 inputs in total.

Full flag reference (39 inputs)
NameTypeFlagDescription
jsonBOOLEAN--jsonOutput scan data in JSON format
nameSTRING--nameName of scan (default: random)
briefBOOLEAN--briefOutput only the data itself
debugBOOLEAN--debugEnable debugging
flagsSTRING--flagsEnable modules by flag.
forceBOOLEAN--forceRun scan even if module setups fail
proxySTRING--proxyUse this proxy for all HTTP requests
configSTRING--configconfiguration options in key=value format: 'modules.shodan.api_key=1234'
presetSTRING--presetEnable BBOT preset(s)
silentBOOLEAN--silentBe quiet
dry-runBOOLEAN--dry-runAbort before executing scan
modulesSTRING--modulesModules to enable.
no-depsBOOLEAN--no-depsDon't install module dependencies
targetsFILE--targetsTargets to seed the scan
verboseBOOLEAN--verboseBe more verbose
blacklistSTRING--blacklistDon't touch these things
whitelistSTRING--whitelistWhat's considered in-scope (by default it's the same as --targets)
force-depsBOOLEAN--force-depsForce install all module dependencies
list-flagsBOOLEAN--list-flagsList available flags.
retry-depsBOOLEAN--retry-depsTry again to install failed module dependencies
user-agentSTRING--user-agentSet the user-agent for all HTTP requests
event-typesSTRING--event-typesChoose which event types to display
exclude-cdnBOOLEAN--exclude-cdnFilter out unwanted open ports on CDNs/WAFs (80,443 only)
allow-deadlyBOOLEAN--allow-deadlyEnable the use of highly aggressive modules
list-modulesBOOLEAN--list-modulesList available modules.
list-presetsBOOLEAN--list-presetsList available presets.
strict-scopeBOOLEAN--strict-scopeDon't consider subdomains of target/whitelist to be in-scope
exclude-flagsSTRING--exclude-flagsDisable modules with these flags. (e.g. -ef aggressive)
require-flagsSTRING--require-flagsOnly enable modules with these flags (e.g. -rf passive)
current-presetBOOLEAN--current-presetShow the current preset in YAML format
custom-cookiesSTRING--custom-cookiesList of custom cookies as key value pairs (cookie=value).
custom-headersSTRING--custom-headersList of custom headers as key value pairs (header=value).
output-modulesSTRING--output-modulesOutput module(s). Choices: asset_inventory,csv,discord,emails,http,json,mysql,neo4j,nmap_xml,postgres,python,slack,splunk,sqlite,stdout,subdomains,teams,txt,web_parameters,web_report,websocket
exclude-modulesSTRING--exclude-modulesExclude these modules.
install-all-depsBOOLEAN--install-all-depsInstall dependencies for all modules
custom-yara-rulesFILE--custom-yara-rulesAdd custom yara rules to excavate
ignore-failed-depsBOOLEAN--ignore-failed-depsRun modules even if they have failed dependencies
current-preset-fullBOOLEAN--current-preset-fullShow the current preset in its full form, including defaults
list-module-optionsBOOLEAN--list-module-optionsShow all module config options

example

Run bbot

bbot · command
# passive preset against a seed domain, JSON eventsbbot --targets example.com --preset subdomain-enum --require-flags passive --json --name example-scan
sample output
[INFO] Scan example-scan started against example.com[DNS_NAME] example.com (TARGET)[DNS_NAME] www.example.com[DNS_NAME] api.example.com[DNS_NAME] mail.example.com[DNS_NAME] staging.example.com[OPEN_TCP_PORT] api.example.com:443[URL] https://api.example.com/[TECHNOLOGY] nginx on api.example.com[INFO] Scan finished: 48 events

guidance

Choosing bbot

Reach for bbot when one seed should fan out through many recon modules into a connected surface map. Scope with --whitelist and --flags. For a single passive subdomain step, subfinder is leaner.

amass

Deep OSINT focused on subdomain and infrastructure mapping. bbot chains a wider mix of module types from one seed.

spiderfoot

Another modular OSINT automation framework. Same goal, different module ecosystem and UI.

subfinder

Passive subdomain discovery only. Prefer it when you need one lean step, not a full module chain.

faq

bbot questions

Use --flags to enable module groups, --require-flags or --exclude-flags to gate them, or load a --preset. Require passive for quiet OSINT; add --allow-deadly only on authorized scopes that need highly aggressive modules.

Run bbot yourself

A seed target feeds bbot, which chains its OSINT modules to expand the surface and writes the connected scan data as a queryable output folder.

Facts on this page come from the live Trickest tool library.