
brutus v1.15.0
快速、零依赖的凭据测试工具,使用Go语言编写。支持SSH、MySQL、PostgreSQL、Redis、MongoDB、SMB等20多种协议的暴力破解。Hydra的替代品,并原生集成nerva/naabu管道。
Brutus
"Et tu, Brute?" —— 凭证沦陷前的最后遗言。
纯Go编写的现代凭证测试工具
安装 • 快速开始 • 流水线 • 协议 • 枚举 • 代理 • 库
概述
Brutus 是一个多协议认证测试工具,旨在解决攻击性安全工具中的一个关键缺口:跨多种网络服务的高效凭证验证。虽然专注于HTTP的工具比比皆是,但渗透测试人员和红队操作员经常会遇到数据库、SSH、SMB 以及其他需要专门认证测试能力的网络服务。
Brutus 使用 Go 构建为单个二进制文件,零外部依赖,能够与 Nerva 无缝集成以实现自动化服务发现,使操作员能够快速识别并测试整个网络范围内的身份验证向量。
主要功能:
- 零依赖: 单一二进制文件,跨平台(Linux、Windows、macOS)
- 27种协议: SSH、RDP、MySQL、PostgreSQL、MSSQL、Oracle、Redis、SMB、LDAP、WinRM、SNMP、HTTP Basic Auth 以及更多
- SOCKS5代理支持: 通过
--proxy将所有流量路由至 SOCKS5 代理 - 侵略性模式:
--mode cautious|default|aggressive用于调整覆盖率与安全性之间的平衡 - 流水线集成: 原生支持 Nerva、naabu、nmap 和 masscan 工作流
- 内置不良密钥: 内置已知 SSH 密钥集合(Vagrant、F5、ExaGrid 等)
- 账户枚举: 账户存在性 oracle 枚举、Kerberos 用户枚举、电子邮件生成、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
---
## 使用场景
### 渗透测试
- 在内部评估期间,验证跨多个服务发现的凭证
- 测试数据库和文件共享服务中的密码重用模式
- 识别新部署基础设施上的默认凭证
### 红队行动
- 密码泄露或钓鱼活动后快速验证凭证
- 测试跨网络服务的横向移动机会
- 验证异构环境中泄露的凭证
### 私钥喷射
在受损系统上找到私钥?在网络中喷射它,以找到它还能在哪些地方授予访问权限:```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识别它们,并针对常见用户名测试泄露的密钥——从而在几秒内揭示横向移动机会。
Web管理面板测试
发现HTTP服务,并使用AI驱动的检测或手动凭据列表测试凭据:```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
快速开始
子命令
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)
每个子命令都有用于发现性的别名:
| 子命令 | 别名 |
|------------|---------|
| `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
### 输出示例```
$ 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 output for pipeline integration (outputs only successful credentials):```
$ 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