返回更新列表
新发布Sep 10, 2026

brutus v1.15.0

快速、零依赖的凭据测试工具,使用Go语言编写。支持SSH、MySQL、PostgreSQL、Redis、MongoDB、SMB等20多种协议的暴力破解。Hydra的替代品,并原生集成nerva/naabu管道。

分享
Brutus - Social

Brutus

"Et tu, Brute?" — 凭证沦陷前的最后一句话。

纯 Go 编写的现代凭证测试工具

安装 • 快速开始 • 流水线 • 协议 • 枚举 • 代理 • 库


概述

Brutus 是一款多协议身份验证测试工具,旨在填补攻击性安全工具链中的一个关键空白:跨多种网络服务的高效凭证验证。虽然以 HTTP 为中心的工具比比皆是,但渗透测试人员和红队操作员经常遇到数据库、SSH、SMB 以及其他需要专用身份验证测试能力的网络服务。

Brutus 使用 Go 构建,以单一二进制文件形式发布,零外部依赖,并与 Nerva 无缝集成以实现自动化服务发现,使操作员能够快速识别并测试整个网络范围内的身份验证向量。

主要特性:

  • 零依赖: 单一二进制文件,跨平台(Linux、Windows、macOS)
  • 43 种协议: SSH、RDP、MySQL、PostgreSQL、MSSQL、Oracle、Redis、SMB、LDAP、WinRM、SNMP、HTTP Basic Auth、MQTT 等
  • SOCKS5 代理支持: 通过 --proxy 将所有流量路由至 SOCKS5 代理
  • 激进模式: --mode cautious|default|aggressive 用于调整覆盖范围与安全性
  • 流水线集成: 原生支持 Nerva、naabu、nmap 和 masscan 工作流
  • 内置弱密钥: 内置已知 SSH 密钥集合(Vagrant、F5、ExaGrid 等)
  • 账户枚举: 账户存在性预言机枚举、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 安全工具中。构建自定义自动化,无需调用外部进程。

# 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 对其进行识别,并针对常见用户名测试已泄露的密钥——在数秒内揭示横向移动的机会。

Web 管理面板测试

发现 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 安装

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)

部分子命令带有别名以便于发现:

子命令别名
badkeyskeys、ssh-keys、badkey
credsservices、defaults、credentials
snmpcommunity
webhttp、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"}

流水线集成

分类