
El escáner recursivo de internet para hackers. 🧡
https://github.com/blacklanternsecurity/bbot/assets/20261699/e539e89b-92ea-46fa-b893-9cde94eebf81
Un escaneo de BBOT en tiempo real - visualización con VivaGraphJS
# versión estable
pipx install bbot
# versión más reciente (rama dev)
pipx install --pip-args '\--pre' bbot
Para más métodos de instalación, incluyendo Docker, consulta Primeros Pasos
¿Actualizando desde 2.x? BBOT 3.0 contiene cambios importantes en la CLI, preajustes, módulos, eventos y API de Python. Consulta la Guía de Migración 2.x → 3.0 (fuente) antes de actualizar.
Consejo de velocidad: El resolvedor DNS de BBOT (blastdns) lanza múltiples hilos por resolvedor en
/etc/resolv.conf. Añadir más resolvedores sin filtrar acelera drásticamente los escaneos. Consulta el resolv.conf de ejemplo y Consejos y Trucos para más detalles.
Fuentes de API pasivas más un ataque de fuerza bruta recursiva de DNS con mutaciones de subdominios específicas del objetivo.
# encontrar subdominios de evilcorp.com
bbot -t evilcorp.com -p subdomain-enum
# solo fuentes pasivas
bbot -t evilcorp.com -p subdomain-enum -rf passive
subdomain-enum.ymldescription: 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 encuentra consistentemente un 20-50% más subdominios que otras herramientas. Cuanto más grande es el dominio, mayor es la diferencia. Para saber cómo es posible, consulta Cómo Funciona.

# rastrear evilcorp.com, extrayendo correos y otras cosas útiles
bbot -t evilcorp.com -p spider
spider.ymldescription: 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
# enumeración rápida de correos con APIs gratuitas + scraping
bbot -t evilcorp.com -p email-enum
# combinar con enumeración de subdominios + spider web para máximo rendimiento
bbot -t evilcorp.com -p email-enum subdomain-enum spider
email-enum.ymldescription: Enumerate email addresses from APIs, web crawling, etc.
flags:
- email-enum
output_modules:
- emails
# ejecutar un escaneo web ligero contra www.evilcorp.com
bbot -t www.evilcorp.com -p web
# ejecutar un escaneo web pesado contra www.evilcorp.com
bbot -t www.evilcorp.com -p web-heavy
web.ymldescription: Quick web scan
include:
- iis-shortnames
flags:
- web
web-heavy.ymldescription: Aggressive web scan
include:
# include the web preset
- web
flags:
- web-heavy
# todo en todas partes a la vez
bbot -t evilcorp.com -p kitchen-sink
# aproximadamente equivalente a:
bbot -t evilcorp.com -p subdomain-enum cloud-enum code-enum email-enum spider web paramminer webbrute web-screenshots
kitchen-sink.ymldescription: 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
Haz clic en el gráfico de abajo para explorar el funcionamiento interno de BBOT.
...y más!
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())
Un Bot de Discord para BBOT que responde al comando /scan. Escanea internet desde la comodidad de tu servidor de Discord.

BBOT acepta un número ilimitado de objetivos mediante -t. Puedes especificar objetivos directamente en la línea de comandos o en archivos (¡o ambos!):
bbot -t evilcorp.com evilcorp.org 1.2.3.0/24 -p subdomain-enum
Los objetivos pueden ser cualquiera de los siguientes:
evilcorp.com)1.2.3.4)1.2.3.0/24)192.168.0.1:80)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)Para más información, consulta Objetivos. Para aprender cómo BBOT maneja el alcance, consulta Alcance.
Al igual que Amass o Subfinder, BBOT soporta claves API para varios servicios de terceros como SecurityTrails, etc.
La forma estándar es introducir tus claves API en ~/.config/bbot/secrets.yml. Ten en cuenta que se permiten múltiples claves API:
modules:
shodan_dns:
api_key: 4f41243847da693a4f356c0486114bc6
c99:
# multiple API keys
api_key:
- 21a270d5f59c9b05813a72bb41707266
- ea8f243d9885cf8ce9876a580224fd3c
- 5bc6ed268ab6488270e496d3183a1a27
virustotal:
api_key: dd5f0eee2e4a99b71a939bded450b246
securitytrails:
api_key: d9a05c3fd9a514497713c54b4455d0b0
Si lo prefieres, también puedes especificarlas en la línea de comandos:
bbot -c modules.virustotal.api_key=dd5f0eee2e4a99b71a939bded450b246
Para más detalles, consulta Configuración.
Algunos de los mejores módulos de BBOT han sido escritos por la comunidad. BBOT se mejora constantemente; ¡cada día se vuelve más poderoso!
Aceptamos contribuciones. ¡No solo código, sino también ideas! Si tienes una idea para una nueva funcionalidad, por favor háznoslo saber en Discusiones. Si quieres ensuciarte las manos, consulta Contribución. Allí encontrarás instrucciones de configuración y un sencillo tutorial sobre cómo escribir un módulo de BBOT. También tenemos una extensa Documentación para Desarrolladores.
¡Gracias a estas increíbles personas por contribuir a BBOT! ❤️
Agradecimientos especiales a: