
"Et tu, Brute?" —— 凭证沦陷前的最后遗言。
纯Go编写的现代凭证测试工具
安装 • 快速开始 • 流水线 • 协议 • 枚举 • 代理 • 库
Brutus 是一个多协议认证测试工具,旨在解决攻击性安全工具中的一个关键缺口:跨多种网络服务的高效凭证验证。虽然专注于HTTP的工具比比皆是,但渗透测试人员和红队操作员经常会遇到数据库、SSH、SMB 以及其他需要专门认证测试能力的网络服务。
Brutus 使用 Go 构建为单个二进制文件,零外部依赖,能够与 Nerva 无缝集成以实现自动化服务发现,使操作员能够快速识别并测试整个网络范围内的身份验证向量。
主要功能:
--proxy 将所有流量路由至 SOCKS5 代理--mode cautious|default|aggressive 用于调整覆盖率与安全性之间的平衡传统工具(如 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
naabu -host 10.0.0.0/24 -p 22,3306,5432,6379 -silent | nerva --json | brutus creds --json
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识别它们,并针对常见用户名测试泄露的密钥——从而在几秒内揭示横向移动机会。
发现HTTP服务,并使用AI驱动的检测或手动凭据列表测试凭据:```bash
naabu -host 10.0.0.0/24 -p 80,443,3000,8080,9090 -silent |
nerva --json |
brutus web --experimental-ai --json
naabu -host 10.0.0.0/24 -p 80,443,8080 -silent |
nerva --json |
brutus web -c "admin:admin,root:password" --json
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
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
brutus creds --target 192.168.1.100:22 --protocol ssh
brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p toor
brutus creds --target 192.168.1.100:22 --protocol ssh -U users.txt -P passwords.txt
brutus creds --target 192.168.1.100:3306 --protocol mysql -u root -p password
brutus creds --target 192.168.1.100:22 --protocol ssh -u deploy -k /path/to/id_rsa
brutus creds --target 192.168.1.100:22 --protocol ssh -t 20
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 无缝集成,实现完整的网络侦察。
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