Назад к обновлениям
New releaseAug 24, 2026

bbot v3.0.2

Рекурсивный интернет-сканер для хакеров. 🧡

Поделиться

bbot_banner

Python Version License PyPi Downloads Ruff Tests Codecov Discord

BEE·bot — это многоцелевой сканер, вдохновлённый Spiderfoot, созданный для автоматизации вашего Recon (разведки), Bug Bounties (баг-баунти) и ASM (управления поверхностью атаки)!

https://github.com/blacklanternsecurity/bbot/assets/20261699/e539e89b-92ea-46fa-b893-9cde94eebf81

Скан BBOT в реальном времени - визуализация с помощью VivaGraphJS

Установка

# stable version
pipx install bbot

# bleeding edge (dev branch)
pipx install --pip-args '\--pre' bbot

Другие способы установки, включая Docker, см. в разделе Начало работы

Обновляетесь с 2.x? BBOT 3.0 содержит критические изменения в CLI, пресетах, модулях, событиях и Python API. Перед обновлением ознакомьтесь с руководством по миграции 2.x → 3.0 (исходник).

Совет по скорости: DNS-резолвер BBOT (blastdns) запускает несколько потоков на каждый резолвер из /etc/resolv.conf. Добавление дополнительных нефильтрованных резолверов значительно ускоряет сканирование. Подробности см. в примере resolv.conf и в разделе Советы и хитрости.

Примеры команд

1) Поиск поддоменов

Пассивные API-источники плюс рекурсивный DNS-брутфорс с мутациями поддоменов, специфичными для цели.

# 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 стабильно находит на 20-50% больше поддоменов, чем другие инструменты. Чем крупнее домен, тем заметнее разница. Чтобы узнать, как это возможно, см. раздел Как это работает.

subdomain-stats-ebay

2) Веб-паук

# 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) Сбор email-адресов

# 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) Веб-сканер

# 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) Всё везде и сразу

# 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

Как это работает

Нажмите на график ниже, чтобы изучить внутреннее устройство BBOT.

image

Модули вывода

...и другие!

BBOT как Python-библиотека

Синхронный

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())
СМОТРИТЕ: Этот зловещий Discord-бот

Discord-бот на базе BBOT, который отвечает на команду /scan. Сканируйте интернет, не покидая своего Discord-сервера!

bbot-discord

Обзор возможностей

  • Поддержка нескольких целей
  • Веб-скриншоты
  • Набор наступательных веб-модулей
  • Мутации поддоменов на основе NLP
  • Нативный вывод в Neo4j (и не только)
  • Автоматическая установка зависимостей с помощью Ansible
  • Поиск по всей поверхности атаки с помощью пользовательских YARA-правил
  • Python API + документация для разработчиков

Цели

BBOT принимает неограниченное количество целей через -t. Цели можно указывать как непосредственно в командной строке, так и в файлах (или и там, и там!):

bbot -t evilcorp.com evilcorp.org 1.2.3.0/24 -p subdomain-enum

Целями могут быть следующие объекты:

  • DNS-имя (evilcorp.com)
  • IP-адрес (1.2.3.4)
  • IP-диапазон (1.2.3.0/24)
  • Открытый TCP-порт (192.168.0.1:80)
  • URL (https://www.evilcorp.com)
  • Email-адрес ([email protected])
  • Организация (ORG:evilcorp)
  • Имя пользователя (USER:bobsmith)
  • Файловая система (FILESYSTEM:/tmp/asdf)
  • Мобильное приложение (MOBILE_APP:https://play.google.com/store/apps/details?id=com.evilcorp.app)

Дополнительную информацию см. в разделе Цели. О том, как BBOT обрабатывает область сканирования (scope), см. в разделе Scope.

API-ключи

Как и Amass или Subfinder, BBOT поддерживает API-ключи для различных сторонних сервисов, таких как SecurityTrails и другие.

Стандартный способ — указать API-ключи в файле ~/.config/bbot/secrets.yml. Обратите внимание, что допускается несколько API-ключей:

modules:
  shodan_dns:
    api_key: 4f41243847da693a4f356c0486114bc6
  c99:
    # multiple API keys
    api_key:
      - 21a270d5f59c9b05813a72bb41707266
      - ea8f243d9885cf8ce9876a580224fd3c
      - 5bc6ed268ab6488270e496d3183a1a27
  virustotal:
    api_key: dd5f0eee2e4a99b71a939bded450b246
  securitytrails:
    api_key: d9a05c3fd9a514497713c54b4455d0b0

При желании их можно указать и в командной строке:

bbot -c modules.virustotal.api_key=dd5f0eee2e4a99b71a939bded450b246

Подробности см. в разделе Конфигурация.

Полные списки модулей, флагов и т.д.

Документация

Вклад в проект

Некоторые из лучших модулей BBOT были написаны сообществом. BBOT постоянно совершенствуется; с каждым днём он становится всё мощнее!

Мы приветствуем вклад в проект. Не только код, но и идеи! Если у вас есть идея новой функции, пожалуйста, сообщите нам в Discussions. Если вы хотите приложить руки к делу, см. раздел Вклад в проект. Там вы найдёте инструкции по настройке и простое руководство по написанию модуля BBOT. У нас также есть обширная документация для разработчиков.

Спасибо этим замечательным людям за вклад в BBOT! ❤️

Особая благодарность:

  • @TheTechromancer за создание BBOT
  • @liquidsec за его обширную работу над веб-хакерскими функциями BBOT, включая badsecrets и baddns
  • Стиву Микаллефу (@smicallef) за создание Spiderfoot
  • @kerrymilan за его экспертизу в Neo4j и Ansible
  • @domwhewell-sage за его семейство крутых модулей для «добычи» кода
  • @aconite33 и @amiremami за их безжалостное тестирование
  • Алексею Корневу (@alekseiko) за передачу нам прав на репозиторий bbot на PyPI <3

Категории