
bbot v3.0.2
Le scanner internet récursif pour les hackers. 🧡
BEE·bot est un scanner polyvalent inspiré par Spiderfoot, conçu pour automatiser vos missions de Recon, de Bug Bounty et votre ASM !
https://github.com/blacklanternsecurity/bbot/assets/20261699/e539e89b-92ea-46fa-b893-9cde94eebf81
Un scan BBOT en temps réel - visualisation avec VivaGraphJS
Installation
# stable version
pipx install bbot
# bleeding edge (dev branch)
pipx install --pip-args '\--pre' bbot
Pour plus de méthodes d'installation, notamment Docker, consultez Getting Started
Vous migrez depuis la 2.x ? BBOT 3.0 contient des changements majeurs dans la CLI, les presets, les modules, les événements et l'API Python. Consultez le guide de migration 2.x → 3.0 (source) avant de mettre à niveau.
Conseil de rapidité : le résolveur DNS de BBOT (blastdns) lance plusieurs threads par résolveur dans
/etc/resolv.conf. Ajouter davantage de résolveurs non filtrés accélère considérablement les scans. Voir l'exemple de resolv.conf et Tips and Tricks pour plus de détails.
Exemples de commandes
1) Découverte de sous-domaines
Sources API passives ainsi qu'un brute-force DNS récursif avec des mutations de sous-domaines spécifiques à la cible.
# 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 trouve systématiquement 20 à 50 % de sous-domaines en plus que les autres outils. Plus le domaine est gros, plus l'écart est grand. Pour comprendre comment c'est possible, voir How It Works.

2) Spider 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) Collecteur d'e-mails
# 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) Scanner 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) Tout, partout, Ă la fois
# 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
Comment ça marche
Cliquez sur le graphique ci-dessous pour explorer les rouages internes de BBOT.
Modules de sortie
...et plus encore !
BBOT comme bibliothèque Python
Synchrone
from bbot.scanner import Scanner
if __name__ == "__main__":
scan = Scanner("evilcorp.com", presets=["subdomain-enum"])
for event in scan.start():
print(event)
Asynchrone
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())
VOIR : Ce bot Discord peu recommandable
Un bot Discord BBOT qui répond à la commande /scan. Scannez Internet depuis le confort de votre serveur Discord !

Aperçu des fonctionnalités
- Prise en charge de cibles multiples
- Captures d'écran web
- Suite de modules web offensifs
- Mutations de sous-domaines propulsées par NLP
- Sortie native vers Neo4j (et plus)
- Installation automatique des dépendances avec Ansible
- Recherche sur toute la surface d'attaque avec des règles YARA personnalisées
- API Python + documentation développeur
Cibles
BBOT accepte un nombre illimité de cibles via -t. Vous pouvez spécifier les cibles directement en ligne de commande ou dans des fichiers (ou les deux !) :
bbot -t evilcorp.com evilcorp.org 1.2.3.0/24 -p subdomain-enum
Les cibles peuvent ĂŞtre n'importe lesquelles des suivantes :
- Nom DNS (
evilcorp.com) - Adresse IP (
1.2.3.4) - Plage IP (
1.2.3.0/24) - Port TCP ouvert (
192.168.0.1:80) - URL (
https://www.evilcorp.com) - Adresse e-mail (
[email protected]) - Organisation (
ORG:evilcorp) - Nom d'utilisateur (
USER:bobsmith) - Système de fichiers (
FILESYSTEM:/tmp/asdf) - Application mobile (
MOBILE_APP:https://play.google.com/store/apps/details?id=com.evilcorp.app)
Pour plus d'informations, voir Targets. Pour apprendre comment BBOT gère le périmètre, voir Scope.
Clés API
À l'instar d'Amass ou de Subfinder, BBOT prend en charge les clés API pour divers services tiers tels que SecurityTrails, etc.
La méthode standard consiste à saisir vos clés API dans ~/.config/bbot/secrets.yml. Notez que plusieurs clés API sont autorisées :
modules:
shodan_dns:
api_key: 4f41243847da693a4f356c0486114bc6
c99:
# multiple API keys
api_key:
- 21a270d5f59c9b05813a72bb41707266
- ea8f243d9885cf8ce9876a580224fd3c
- 5bc6ed268ab6488270e496d3183a1a27
virustotal:
api_key: dd5f0eee2e4a99b71a939bded450b246
securitytrails:
api_key: d9a05c3fd9a514497713c54b4455d0b0
Si vous le souhaitez, vous pouvez également les spécifier en ligne de commande :
bbot -c modules.virustotal.api_key=dd5f0eee2e4a99b71a939bded450b246
Pour plus de détails, voir Configuration.
Listes complètes des modules, flags, etc.
- Liste complète des Modules.
- Liste complète des Flags.
- Liste complète des Presets.
- Liste complète des Options de configuration globales.
- Liste complète des Options de configuration des modules.
Documentation
- Manuel de l'utilisateur
- Bases
- Scan
- Modules
- Migration
- Divers
- Manuel du développeur
Contribution
Certains des meilleurs modules BBOT ont été écrits par la communauté. BBOT est constamment amélioré ; chaque jour, il devient plus puissant !
Nous accueillons volontiers les contributions. Pas seulement le code, mais aussi les idées ! Si vous avez une idée de nouvelle fonctionnalité, faites-nous-en part dans Discussions. Si vous voulez vous retrousser les manches, voir Contribution. Vous y trouverez les instructions d'installation et un tutoriel simple sur la façon d'écrire un module BBOT. Nous disposons également d'une vaste Documentation développeur.
Merci à ces personnes formidables pour leur contribution à BBOT ! ❤️
Remerciements particuliers Ă :
- @TheTechromancer pour avoir créé BBOT
- @liquidsec pour son travail considérable sur les fonctionnalités de hacking web de BBOT, notamment badsecrets et baddns
- Steve Micallef (@smicallef) pour avoir créé Spiderfoot
- @kerrymilan pour son expertise Neo4j et Ansible
- @domwhewell-sage pour sa famille de modules de pillage de code redoutables
- @aconite33 et @amiremami pour leurs tests impitoyables
- Aleksei Kornev (@alekseiko) pour nous avoir accordé la propriété du dépôt PyPI bbot <3

