快速、零依赖的凭据测试工具,使用Go语言编写。支持SSH、MySQL、PostgreSQL、Redis、MongoDB、SMB等20多种协议的暴力破解。Hydra的替代品,并原生集成nerva/naabu管道。
"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 安全工具中。构建自定义自动化,无需调用外部进程。
# 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
在受感染的系统上发现了私钥?将其喷洒到网络中,以找出它还能在哪些地方授予访问权限:
# 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 驱动的检测或手动凭据列表测试凭据:
# 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 下载:
# 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/
# 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 install github.com/praetorian-inc/brutus/cmd/brutus@latest
Brutus 将其功能组织为以下专注的子命令:
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)
部分子命令带有别名以便于发现:
| 子命令 | 别名 |
|---|---|
badkeys | keys、ssh-keys、badkey |
creds | services、defaults、credentials |
snmp | community |
web | http、panels |
完整参考——包括每个子命令、别名和标志,以及从 --help 中隐藏的那些——已生成到 docs/CLI.md。
# 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
# 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"}