
高速で依存関係ゼロのGo製認証情報テストツール。SSH、MySQL、PostgreSQL、Redis、MongoDB、SMB、および20以上のプロトコルへのブルートフォース攻撃。Hydraの代替で、nerva/naabuパイプラインとのネイティブ統合を特徴とする。
"Et tu, Brute?" — 認証情報が陥落する前の最後の言葉。
純粋なGoで書かれた最新の認証情報テストツール
インストール • クイックスタート • パイプライン • プロトコル • 列挙 • プロキシ • ライブラリ
Brutusは、攻撃的セキュリティツールにおける重要なギャップ、つまり多様なネットワークサービスにわたる効率的な認証情報検証に対処するために設計された、マルチプロトコル認証テストツールです。HTTPに特化したツールは豊富にありますが、ペネトレーションテスターやレッドチームオペレーターは、データベース、SSH、SMB、その他のネットワークサービスに頻繁に直面し、それらには専用の認証テスト機能が必要です。
Goで単一バイナリとして、外部依存関係ゼロで構築されたBrutusは、Nervaとシームレスに統合し、自動サービスディスカバリを実現することで、オペレーターがネットワーク全体の認証ベクターを迅速に特定・テストできるようにします。
主な機能:
--proxyですべてのトラフィックをSOCKS5プロキシ経由でルーティング--mode cautious|default|aggressiveTHC 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/
# 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はその機能を6つの特化したサブコマンドに整理しています:```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)
```
各サブコマンドには発見性のためのエイリアスがあります:
| Subcommand | Aliases |
|------------|---------|
| `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
```