
bbot v3.0.1
Le scanner internet récursif pour les hackers. 🧡
BEE·bot est un scanner polyvalent inspiré de Spiderfoot, conçu pour automatiser vos Recon, Bug Bounties et 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, y compris Docker, voir Démarrage
Vous mettez à jour depuis la 2.x ? BBOT 3.0 contient des changements cassants pour 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 à jour.
Astuce vitesse : Le résolveur DNS de BBOT (blastdns) lance plusieurs threads par résolveur dans
/etc/resolv.conf. Ajouter plus de résolveurs non filtrés accélère considérablement les scans. Voir l'exemple resolv.conf et Astuces pour plus de détails.
Exemples de commandes
1) Découverte de sous-domaines
Sources API passives plus un brute-force DNS récursif avec 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 grand, plus la différence est importante. Pour comprendre comment cela est possible, voir Fonctionnement.

2) Araignée 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'emails
# 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) Scanneur 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, tout Ă 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 fonctionne
Cliquez sur le graphique ci-dessous pour explorer le fonctionnement interne de BBOT.
Modules de sortie
...et plus !
BBOT en tant que 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 malfaisant
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 plusieurs cibles
- Captures d'écran web
- Suite de modules web offensifs
- Mutations de sous-domaines basées sur le NLP
- Sortie native vers Neo4j (et plus)
- Installation automatique des dépendances avec Ansible
- Rechercher 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 soit directement en ligne de commande, soit dans des fichiers (ou les deux !) :
bbot -t evilcorp.com evilcorp.org 1.2.3.0/24 -p subdomain-enum
Les cibles peuvent ĂŞtre l'un des types suivants :
- 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 Cibles. Pour apprendre comment BBOT gère le périmètre, voir Périmètre.
Clés API
Similaire à Amass ou Subfinder, BBOT prend en charge les clés API pour divers services tiers tels que SecurityTrails, etc.
La manière standard de le faire est de 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, drapeaux, etc.
- Liste complète des Modules.
- Liste complète des Drapeaux.
- Liste complète des Presets.
- Liste complète des Options de configuration globales.
- Liste complète des Options de configuration des modules.
Documentation
- Manuel utilisateur
- Bases
- Scanning
- Modules
- Migration
- Divers
- Manuel 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 les contributions. Non seulement du code, mais aussi des idées ! Si vous avez une idée pour une nouvelle fonctionnalité, faites-le nous savoir dans Discussions. Si vous voulez vous salir les mains, voir Contribution. Vous y trouverez des instructions de configuration et un tutoriel simple sur la façon d'écrire un module BBOT. Nous disposons également d'une Documentation développeur complète.
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 piratage 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 badass
- @aconite33 et @amiremami pour leurs tests impitoyables
- Aleksei Kornev (@alekseiko) pour nous avoir accordé la propriété du dépôt bbot Pypi <3

