Быстрый инструмент для тестирования учетных данных с нулевыми зависимостями на Go. Брутфорс SSH, MySQL, PostgreSQL, Redis, MongoDB, SMB и 20+ протоколов. Альтернатива Hydra с нативной интеграцией конвейера nerva/naabu.
<img width="2752" height="1536" alt="Brutus - Social" src="https://assets.kitploit.com/production/public/readmes/11715/32309a4ca6e7282c8dcd718e2b275a392b73a81f51cbd5d1738464eb3933fd22.png" />
<h1 align="center">Brutus</h1>
<p align="center">
<em>"Et tu, Brute?" — последние слова перед тем, как учётные данные падут.</em>
</p>
<p align="center">
<strong>Современный инструмент тестирования учётных данных на чистом Go</strong>
</p>
<p align="center">
<a href="#installation">Установка</a> •
<a href="#quick-start">Быстрый старт</a> •
<a href="#pipeline-integration">Конвейер</a> •
<a href="#supported-protocols">Протоколы</a> •
<a href="#account-enumeration">Перечисление</a> •
<a href="#socks5-proxy-support">Прокси</a> •
<a href="#library-integration">Библиотека</a>
</p>
---
## Обзор
Brutus — это многопротокольный инструмент тестирования аутентификации, созданный для устранения критического пробела в инструментах наступательной безопасности: эффективной проверки учётных данных в разнообразных сетевых сервисах. В то время как инструментов, ориентированных на HTTP, предостаточно, пентестеры и операторы red team часто сталкиваются с базами данных, SSH, SMB и другими сетевыми сервисами, требующими специализированных возможностей тестирования аутентификации.
Написанный на Go в виде единого бинарного файла без внешних зависимостей, Brutus бесшовно интегрируется с [Nerva](https://github.com/praetorian-inc/nerva) для автоматизированного обнаружения сервисов, позволяя операторам быстро выявлять и тестировать векторы аутентификации по целым диапазонам сетей.
**Ключевые возможности:**
- **Ноль зависимостей:** единый бинарный файл, кроссплатформенный (Linux, Windows, macOS)
- **43 протокола:** SSH, RDP, MySQL, PostgreSQL, MSSQL, Oracle, Redis, SMB, LDAP, WinRM, SNMP, HTTP Basic Auth, MQTT и другие
- **Поддержка SOCKS5-прокси:** маршрутизация всего трафика через SOCKS5-прокси с помощью `--proxy`
- **Режимы агрессивности:** `--mode cautious|default|aggressive` для настройки соотношения покрытия и безопасности
- **Интеграция с конвейером:** нативная поддержка рабочих процессов Nerva, naabu, nmap и masscan
- **Встроенные bad keys:** встроенная коллекция известных 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](https://github.com/praetorian-inc/nerva), [naabu](https://github.com/projectdiscovery/naabu), [nmap](https://nmap.org) и [masscan](https://github.com/robertdavidgraham/masscan). Передавайте обнаруженные сервисы прямо в тестирование учётных данных без преобразования форматов или написания скриптов.
- **Встроенная разведка:** известные SSH bad keys (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
```
## Сценарии использования
### Тестирование на проникновение
- Проверка обнаруженных учётных данных на множестве сервисов в ходе внутренних оценок
- Тестирование шаблонов повторного использования паролей в сервисах баз данных и файловых ресурсов
- Выявление учётных данных по умолчанию на только что развёрнутой инфраструктуре
### Операции 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
```
### Проверка безопасности
- Тестирование учётных данных по умолчанию на новых развёрнутых сервисах
- Проверка соблюдения политики паролей на всех платформах
- Создание журналов аудита для соответствия требованиям и оценки безопасности
---
## Установка
### Готовые бинарные файлы (рекомендуется)
Скачайте со страницы [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/
```
```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
```
### Установка через Go
```bash
go install github.com/praetorian-inc/brutus/cmd/brutus@latest
```
---
## Быстрый старт
### Подкоманды
<!-- BEGIN generated: cli-subcommands -->
Brutus организует свою функциональность в следующие специализированные подкоманды:
```bash
brutus badkeys # Test known weak/compromised SSH keys against targets
brutus creds # Test default credentials on non-HTTP services (SSH, databases, SMB, etc.)
brutus enum # Enumerate accounts against account-existence oracles or Active Directory
brutus logon # Detect Windows logon-screen backdoors (runs both sticky keys and utilman)
brutus snmp # Test SNMP community strings against targets
brutus stickykeys # Detect the Windows sticky-keys (sethc.exe) logon backdoor only
brutus template # Run product-specific default-credential templates
brutus utilman # Detect the Windows utilman (Ease of Access) logon backdoor only
brutus web # Audit HTTP/web panel credentials (AI-powered or credential list)
```
<!-- END generated: cli-subcommands -->
<!-- BEGIN generated: cli-aliases -->
Некоторые подкоманды имеют псевдонимы для удобства обнаружения:
| Подкоманда | Псевдонимы |
| --- | --- |
| `badkeys` | `keys`, `ssh-keys`, `badkey` |
| `creds` | `services`, `defaults`, `credentials` |
| `snmp` | `community` |
| `web` | `http`, `panels` |
Полный справочник — каждая подкоманда, псевдоним и флаг, включая скрытые от `--help` — генерируется в [docs/CLI.md](https://github.com/praetorian-inc/brutus/blob/main/docs/CLI.md).
<!-- END generated: cli-aliases -->
```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
```
### Пример вывода
```
$ 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)
```
Вывод 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](https://github.com/praetorian-inc/nerva)** и **[naabu](https://github.com/projectdiscovery/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 '.'
```
#### Сценарий 2: Разведка для Bug Bounty на целевом домене
```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
```
#### Сценарий 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
```
### Импорт из сканеров (Nmap и Masscan)
Brutus может импортировать цели напрямую из файлов вывода сканеров **nmap** и **masscan**, избавляя от необходимости конвертации форматов или использования промежуточных инструментов.
#### Импорт Nmap XML (`--nmap-file`)
Импорт целей из XML-вывода nmap (`-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
```
#### Комбинирование с другими рабочими процессами
Флаги `--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"}
```
**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
```
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`).
---
## Сравнение
| Функция | Hydra | Medusa | Ncrack | **Brutus** |
|---------|:-----:|:------:|:------:|:----------:|
| Единый бинарный файл | ❌ | ❌ | ❌ | ✅ |
| Ноль зависимостей | ❌ | ❌ | ❌ | ✅ |
| SOCKS5-прокси | ✅ | ❌ | ❌ | ✅ |
| Конвейер Nerva | ❌ | ❌ | ❌ | ✅ |
| Импорт Nmap/Masscan | ❌ | ❌ | ❌ | ✅ |
| Потоковая передача JSON | ⚠️ | ❌ | ❌ | ✅ |
| Кроссплатформенность | ⚠️ | ⚠️ | ⚠️ | ✅ |
| Согласованные ошибки | ⚠️ | ⚠️ | ⚠️ | ✅ |
| Активная разработка | ✅ | ⚠️ | ❌ | ✅ |
| Встроенные плохие ключи | ❌ | ❌ | ❌ | ✅ |
| Импорт как библиотеки Go | ❌ | ❌ | ❌ | ✅ |
---
## Поддерживаемые протоколы
Brutus поддерживает **43 протокола**:
### Сетевые службы
| Протокол | Порт | Методы аутентификации | Вариант использования |
|----------|------|--------------|----------|
| SSH | 22 | Пароль, приватные ключи | Серверы, сетевое оборудование |
| FTP | 21 | Пароль | Файловые серверы, NAS-устройства |
| rsync | 873 | Секреты модулей, анонимный доступ | Синхронизация файлов |
| Telnet | 23 | Пароль | Устаревшие системы, IoT-устройства |
| VNC | 5900 | Пароль | Удалённые рабочие столы |
| RDP | 3389 | NLA/CredSSP, пароль | Серверы Windows, рабочие станции |
| SNMP | 161 | Строка сообщества | Сетевые устройства, принтеры |
| IPMI | 623/udp | RMCP | BMC / удалённое управление |
| OPC UA | 4840 | Токен имени пользователя, анонимный доступ | ICS/SCADA |
### Веб-службы
| Протокол | Порт | Методы аутентификации | Вариант использования |
|----------|------|--------------|----------|
| HTTP | 80 | Basic Auth | Панели администратора (Grafana, Jenkins и т. д.) |
| HTTPS | 443 | Basic Auth | Защищённые панели администратора |
| Browser | 80/443 | Форма | Вход Microsoft/Entra через браузер |
### Корпоративная инфраструктура
| Протокол | Порт | Методы аутентификации | Вариант использования |
|----------|------|--------------|----------|
| SMB | 445 | Пароль, NTLM | Сети Windows, общие файловые ресурсы |
| LDAP | 389/636 | Bind DN | Active Directory, управление идентификацией |
| WinRM | 5985/5986 | NTLM | Удалённое управление Windows |
### Базы данных
| Протокол | Порт | Методы аутентификации | Вариант использования |
|----------|------|--------------|----------|
| MySQL | 3306 | Пароль | Веб-приложения |
| PostgreSQL | 5432 | Пароль | Современные приложения |
| MSSQL | 1433 | Пароль | Корпоративные приложения |
| MongoDB | 27017 | Пароль | NoSQL-бэкенды |
| Redis | 6379 | Пароль | Кэширование, сессии |
| Memcached | 11211 | SASL, анонимный доступ | Кэширование |
| Neo4j | 7687 | Пароль | Графовые базы данных |
| Cassandra | 9042 | Пароль | Распределённые базы данных |
| CouchDB | 5984 | HTTP Basic | Хранилища документов |
| Elasticsearch | 9200 | HTTP Basic | Поисковые системы |
| InfluxDB | 8086 | HTTP Basic | Данные временных рядов |
| Oracle | 1521 | Пароль | Корпоративные базы данных |
| DB2 | 50000 | Пароль | Корпоративные базы данных |
| Firebird | 3050 | Пароль | Встраиваемые базы данных |
### Контейнеры и оркестрация
| Протокол | Порт | Методы аутентификации | Вариант использования |
|----------|------|--------------|----------|
| Docker | 2375/2376 | Без аутентификации | Открытые демоны Docker |
| Kubernetes | 6443/10250 | Без аутентификации | Открытые API K8s/kubelet |
### Коммуникации
| Протокол | Порт | Методы аутентификации | Вариант использования |
|----------|------|--------------|----------|
| SMTP | 25/587 | Пароль | Почтовый релей |
| IMAP | 143/993 | Пароль | Доступ к почтовому ящику |
| POP3 | 110/995 | Пароль | Доступ к почтовому ящику |
| ActiveMQ | 61616 | Пароль | Брокеры OpenWire |
| SIP | 5060/5061 | Digest | VoIP |
| TURN | 3478 | Пароль | Релей TURN |
| ZooKeeper | 2181 | Digest, анонимный доступ | Координация |
| NATS | 4222 | Пароль, анонимный доступ | Обмен сообщениями |
| XMPP | 5222 | SASL PLAIN | Чат |
| MQTT | 1883/8883 | Пароль, анонимный доступ | Брокеры IoT |
| AMQP | 5672/5671 | SASL PLAIN | RabbitMQ |
| Kafka | 9092 | SASL/PLAIN | Брокеры |
| SOCKS5 | 1080 | Аутентификация прокси SOCKS5 | Прокси |
---
## Встроенные плохие SSH-ключи
Развёртывание одним бинарным файлом без необходимости во внешних файлах ключей. Каждый ключ сопоставлен со своим именем пользователя по умолчанию для умного сопоставления учётных данных, а отслеживание CVE позволяет выполнять запросы на соответствие требованиям.
Brutus содержит коллекции ключей **[rapid7/ssh-badkeys](https://github.com/rapid7/ssh-badkeys)** и **[Vagrant](https://github.com/hashicorp/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"
```
### Встроенный сбор ключей
| Продукт | 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 | Виртуальная машина балансировщика нагрузки |
| Ceragon FibeAir | CVE-2015-0936 | mateidu | Беспроводная транспортная сеть |
| Array Networks | - | sync | Устройства vAPV/vxAG |
| Quantum DXi | - | root | Устройства дедупликации |
| Loadbalancer.org | - | root | Корпоративные балансировщики нагрузки |
---
## Режимы агрессивности
Глобальный флаг `--mode` (`-m`) управляет агрессивностью во всех подкомандах. Он задаёт предустановки настройки производительности, которые балансируют покрытие и безопасность:
| Режим | Потоки | Таймаут | Ограничение скорости | Джиттер | Повторы | Сценарий использования |
|------|---------|---------|------------|--------|---------|----------|
| `cautious` | 5 | 15s | 2 req/s | 500ms | 1 | Производственные среды, избегать блокировок |
| `default` | 10 | 10s | Unlimited | None | 2 | Стандартное тестирование |
| `aggressive` | 20 | 10s | Unlimited | None | 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](#snmp-community-string-testing)).
---
## Поддержка прокси SOCKS5
---
[Read more](https://github.com/praetorian-inc/brutus)