Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
brutus — 高速で依存関係ゼロのGo製認証情報テストツール。SSH、MySQL、PostgreSQL、Redis、MongoDB、SMB、および20以上のプロトコルへのブルートフォース攻撃。Hydraの代替で、nerva/naabuパイプラインとのネイティブ統合を特徴とする。 | Kitploit
ツール/GitHubGitHub/praetorian-inc/brutus
脆弱性スキャナーパスワード攻撃エクスプロイト横移動情報収集ネットワークセキュリティペネトレーションテストユーティリティとフレームワーク認証レッドチーミング
GitHubpraetorian-inc/brutus

brutus

30741588日前Kitploit レビュー済み

高速で依存関係ゼロのGo製認証情報テストツール。SSH、MySQL、PostgreSQL、Redis、MongoDB、SMB、および20以上のプロトコルへのブルートフォース攻撃。Hydraの代替で、nerva/naabuパイプラインとのネイティブ統合を特徴とする。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
<img width="2752" height="1536" alt="Brutus - Social" src="https://assets.kitploit.com/production/public/readmes/11715/32309a4ca6e7282c8dcd718e2b275a392b73a81f51cbd5d1738464eb3933fd22.png" />
<h1 align="center">Brutus</h1>

<p align="center">
  <em>「ブルータス、お前もか?」 — 認証情報が崩れ落ちる前の最後の言葉。</em>
</p>

<p align="center">
  <strong>純粋なGoで書かれたモダンな認証情報テストツール</strong>
</p>

<p align="center">
  <a href="#installation">インストール</a> •
  <a href="#quick-start">クイックスタート</a> •
  <a href="#pipeline-integration">パイプライン</a> •
  <a href="#supported-protocols">プロトコル</a> •
  <a href="#account-enumeration">列挙</a> •
  <a href="#socks5-proxy-support">プロキシ</a> •
  <a href="#library-integration">ライブラリ</a>
</p>

---

## 概要

Brutusは、オフェンシブセキュリティツールにおける重大なギャップに対処するために設計されたマルチプロトコル認証テストツールです。そのギャップとは、多様なネットワークサービスにわたる効率的な認証情報の検証です。HTTPに特化したツールは豊富に存在しますが、ペネトレーションテスターやレッドチームオペレーターは、データベース、SSH、SMB、その他のネットワークサービスに頻繁に遭遇し、それらには専用の認証テスト機能が求められます。

Goで構築された単一バイナリで外部依存関係が一切ないBrutusは、自動サービス検出のために[Nerva](https://github.com/praetorian-inc/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](https://github.com/praetorian-inc/nerva)、[naabu](https://github.com/projectdiscovery/naabu)、[nmap](https://nmap.org)、[masscan](https://github.com/robertdavidgraham/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 Install

```bash
go install github.com/praetorian-inc/brutus/cmd/brutus@latest
```

---

## クイックスタート

### サブコマンド

<!-- BEGIN generated: cli-subcommands -->
Brutusはその機能を以下のような焦点を絞ったサブコマンドに整理しています:

```bash
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)
```
<!-- END generated: cli-subcommands -->

<!-- BEGIN generated: cli-aliases -->
一部のサブコマンドには、発見しやすさのためにエイリアスが設定されています:

| サブコマンド | エイリアス |
| --- | --- |
| `badkeys` | `keys`, `ssh-keys`, `badkey` |
| `creds` | `services`, `defaults`, `credentials` |
| `snmp` | `community` |
| `web` | `http`, `panels` |

完全なリファレンス — すべてのサブコマンド、エイリアス、フラグ(`--help` から隠されているものを含む)— は [docs/CLI.md](https://github.com/praetorian-inc/brutus/blob/main/docs/CLI.md) に生成されます。
<!-- END generated: cli-aliases -->

```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)
```

With verbose mode (`-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"}
```

---

## パイプライン統合

Brutus は **[Nerva](https://github.com/praetorian-inc/nerva)** および **[naabu](https://github.com/projectdiscovery/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

# Same pipeline using Nerva's default URI output (no --json needed)
naabu -host 10.10.10.0/24 -p 22,23,21,3306,5432,6379,27017,445 -silent | \
  nerva | brutus creds -o results.json

# Review findings (all output is successful credentials)
cat results.json | jq '.'
```

#### シナリオ2: 対象ドメインでのバグバウンティ偵察

```bash
# Full pipeline against a single target
naabu -host target.example.com -top-ports 1000 -silent | \
  nerva --json | \
  brutus creds

# Or scan a list of subdomains
cat subdomains.txt | naabu -silent | nerva --json | brutus creds
```

#### シナリオ3:内部アセスメントにおけるデータベース探索

```bash
# Find and test all databases in a range
naabu -host 192.168.0.0/16 -p 3306,5432,1433,27017,6379,9042 -silent | \
  nerva --json | \
  brutus creds -t 5 --json | \
  tee database-findings.json

# Extract credentials in readable format
jq -r '"\(.target) \(.username):\(.password)"' database-findings.json
```

#### シナリオ4:インフラストラクチャ全体でのSSHキーテスト

```bash
# Test embedded bad keys (Vagrant, F5 BIG-IP, ExaGrid, etc.) across a range
naabu -host 10.0.0.0/8 -p 22 -rate 1000 -silent | \
  nerva --json | \
  brutus badkeys --json -o ssh-key-findings.json

# Find systems using compromised SSH keys (key field is true)
cat ssh-key-findings.json | jq 'select(.key == true)'
```

#### シナリオ5:標的型サービス試験

```bash
# Test only Redis instances found in the network
naabu -host 172.16.0.0/12 -p 6379 -silent | \
  nerva --json | \
  brutus creds

# Test only MongoDB with custom credentials
naabu -host 10.0.0.0/24 -p 27017 -silent | \
  nerva --json | \
  brutus creds -u admin,root,mongodb -p admin,password,mongodb
```

### スキャンツールのインポート(Nmap & Masscan)

Brutus は **nmap** および **masscan** のスキャン出力ファイルから直接ターゲットをインポートできるため、フォーマット変換や中間ツールが不要になります。

#### Nmap XML インポート(`--nmap-file`)

nmap の XML 出力(`-oX`)からターゲットをインポートします。Nmap はサービスフィンガープリンティングを提供するため、Brutus は検出されたサービスを自動的に正しいプロトコルにマッピングします:

```bash
# Run an nmap service scan
nmap -sV -oX scan.xml 10.0.0.0/24 -p 22,3306,5432,6379,445,3389

# Feed nmap results directly to Brutus
brutus creds --nmap-file scan.xml -P passwords.txt

# Test web services from nmap scan
brutus web --nmap-file scan.xml -c "admin:admin,root:password"

# Test SNMP from nmap scan
brutus snmp --nmap-file scan.xml --mode aggressive

# JSON output for scripting
brutus creds --nmap-file scan.xml --json -o results.json
```

Nmapのサービス名は自動的にBrutusプロトコルにマッピングされます(例: `ms-wbt-server` → `rdp`、`microsoft-ds` → `smb`)。TLSはnmapの`tunnel="ssl"`属性から検出されます。up状態のホストのオープンポートのみがインポートされます。

#### Masscan JSONインポート (`--masscan-file`)

masscanのJSON出力 (`-oJ`) からターゲットをインポートします。masscanはポートスキャナのみ(サービスフィンガープリンティングなし)であるため、`--protocol`を指定するか、NervaによるBrutusの自動フィンガープリンティングを使用する必要があります:

```bash
# Run a masscan port scan
masscan 10.0.0.0/24 -p 22,3306,5432,6379 -oJ scan.json --rate 10000

# Test all discovered ports as SSH (when you know what's running)
brutus creds --masscan-file scan.json --protocol ssh -u root -P passwords.txt

# Auto-fingerprint with Nerva (when services are unknown)
brutus creds --masscan-file scan.json -P passwords.txt
```

#### 他のワークフローとの組み合わせ

`--nmap-file` と `--masscan-file` フラグはすべてのサブコマンドで動作し、`--target`、`--targets-file`、stdin とは相互に排他的です:

```bash
# Scan for RDP backdoors from nmap results
brutus logon --nmap-file scan.xml

# Test SSH bad keys from nmap results
brutus badkeys --nmap-file scan.xml

# Override protocol for all masscan targets
brutus creds --masscan-file scan.json --protocol redis -p "redis,password"
```

### パイプライン入力形式

Brutus は stdin から複数の入力形式を受け付けます:

**Nerva JSON** (`nerva --json`):
```bash
{"ip":"192.168.1.100","port":22,"protocol":"ssh","tls":false,"transport":"tcp","version":"OpenSSH_8.9p1"}
{"ip":"192.168.1.101","port":3306,"protocol":"mysql","tls":false,"transport":"tcp","version":"8.0.32"}
```

**Nerva URI**(デフォルトのNerva出力、`--json`は不要):
```bash
# Nerva outputs URI-scheme lines by default
$ echo "github.com:22" | nerva
ssh://github.com:22 (20.205.243.166)

# Pipe directly to Brutus — protocol is extracted from the URI scheme
echo "10.0.0.1:22" | nerva | brutus creds
echo "10.0.0.0/24:3306" | naabu -silent | nerva | brutus creds
```

**ベアターゲット**(Nervaで自動フィンガープリント):
```bash
echo "192.168.1.100:22" | brutus creds
```

Brutusは自動的に以下を行います:
- JSON、URIスキーム、およびベアターゲット形式を解析します
- サービスをプロトコルにマッピングします
- 適切なデフォルト認証情報をテストします
- 一致するJSON形式で結果を出力します

### パイプライン出力形式

Brutusは成功した認証情報のみをJSONL形式(1行につき1つのJSONオブジェクト)で出力します:

```bash
# Brutus JSON output (with --json flag) - only successful authentications
{"protocol":"ssh","target":"192.168.1.100:22","username":"root","password":"toor","duration":"1.234567ms","banner":"SSH-2.0-OpenSSH_8.9p1"}
{"protocol":"mysql","target":"192.168.1.101:3306","username":"root","password":"","duration":"890.123µs"}
{"protocol":"ssh","target":"192.168.1.103:22","username":"vagrant","key":true,"duration":"2.345678ms","banner":"SSH-2.0-OpenSSH_9.6"}
```

**注記:** 認証失敗の試行は JSON 出力には含まれません。`key` フィールドは、認証にパスワードではなく SSH キーが使用された場合に(`true` として)表示されます。`llm_suggested` フィールドは、認証情報が AI システム(`--experimental-ai`)によって提案された場合に(`true` として)表示されます。

---

## 比較

| 機能 | Hydra | Medusa | Ncrack | **Brutus** |
|---------|:-----:|:------:|:------:|:----------:|
| 単一バイナリ | ❌ | ❌ | ❌ | ✅ |
| 依存関係ゼロ | ❌ | ❌ | ❌ | ✅ |
| SOCKS5 プロキシ | ✅ | ❌ | ❌ | ✅ |
| Nerva パイプライン | ❌ | ❌ | ❌ | ✅ |
| Nmap/Masscan インポート | ❌ | ❌ | ❌ | ✅ |
| JSON ストリーミング | ⚠️ | ❌ | ❌ | ✅ |
| クロスプラットフォーム | ⚠️ | ⚠️ | ⚠️ | ✅ |
| 一貫したエラー | ⚠️ | ⚠️ | ⚠️ | ✅ |
| 活発な開発 | ✅ | ⚠️ | ❌ | ✅ |
| 埋め込み Bad Keys | ❌ | ❌ | ❌ | ✅ |
| Go ライブラリインポート | ❌ | ❌ | ❌ | ✅ |

---

## 対応プロトコル

Brutus は **43 のプロトコル**をサポートしています:

### ネットワークサービス
| プロトコル | ポート | 認証方式 | 用途 |
|----------|------|--------------|----------|
| SSH | 22 | パスワード、秘密鍵 | サーバー、ネットワーク機器 |
| FTP | 21 | パスワード | ファイルサーバー、NAS デバイス |
| rsync | 873 | モジュールシークレット、匿名 | ファイル同期 |
| Telnet | 23 | パスワード | レガシーシステム、IoT デバイス |
| VNC | 5900 | パスワード | リモートデスクトップ |
| RDP | 3389 | NLA/CredSSP、パスワード | Windows サーバー、ワークステーション |
| SNMP | 161 | コミュニティ文字列 | ネットワーク機器、プリンター |
| IPMI | 623/udp | RMCP | BMC / ライツアウト |
| OPC UA | 4840 | ユーザートークン、匿名 | ICS/SCADA |

### Web サービス
| プロトコル | ポート | 認証方式 | 用途 |
|----------|------|--------------|----------|
| HTTP | 80 | Basic 認証 | 管理パネル(Grafana、Jenkins など) |
| HTTPS | 443 | Basic 認証 | セキュアな管理パネル |
| ブラウザ | 80/443 | フォーム | ブラウザベースの Microsoft/Entra ログイン |

### エンタープライズインフラ
| プロトコル | ポート | 認証方式 | 用途 |
|----------|------|--------------|----------|
| SMB | 445 | パスワード、NTLM | Windows ネットワーク、ファイル共有 |
| LDAP | 389/636 | Bind DN | Active Directory、アイデンティティ |
| WinRM | 5985/5986 | NTLM | Windows リモート管理 |

### データベース
| プロトコル | ポート | 認証方式 | 用途 |
|----------|------|--------------|----------|
| MySQL | 3306 | パスワード | Web アプリケーション |
| PostgreSQL | 5432 | パスワード | モダンアプリケーション |
| MSSQL | 1433 | パスワード | エンタープライズアプリケーション |
| MongoDB | 27017 | パスワード | NoSQL バックエンド |
| Redis | 6379 | パスワード | キャッシュ、セッション |
| Memcached | 11211 | SASL、匿名 | キャッシュ |
| Neo4j | 7687 | パスワード | グラフデータベース |
| Cassandra | 9042 | パスワード | 分散データベース |
| CouchDB | 5984 | HTTP Basic | ドキュメントストア |
| Elasticsearch | 9200 | HTTP Basic | 検索エンジン |
| InfluxDB | 8086 | HTTP Basic | 時系列データ |
| Oracle | 1521 | パスワード | エンタープライズデータベース |
| DB2 | 50000 | パスワード | エンタープライズデータベース |
| Firebird | 3050 | パスワード | 組み込みデータベース |

### コンテナとオーケストレーション
| プロトコル | ポート | 認証方式 | 用途 |
|----------|------|--------------|----------|
| Docker | 2375/2376 | 未認証 | 露出した Docker デーモン |
| Kubernetes | 6443/10250 | 未認証 | 露出した K8s API/kubelet |

### コミュニケーション
| プロトコル | ポート | 認証方式 | 用途 |
|----------|------|--------------|----------|
| SMTP | 25/587 | パスワード | メールリレー |
| IMAP | 143/993 | パスワード | メールボックスアクセス |
| POP3 | 110/995 | パスワード | メールボックスアクセス |
| ActiveMQ | 61616 | パスワード | OpenWire ブローカー |
| SIP | 5060/5061 | Digest | VoIP |
| TURN | 3478 | パスワード | TURN リレー |
| ZooKeeper | 2181 | Digest、匿名 | コーディネーション |
| NATS | 4222 | パスワード、匿名 | メッセージング |
| XMPP | 5222 | SASL PLAIN | チャット |
| MQTT | 1883/8883 | パスワード、匿名 | IoT ブローカー |
| AMQP | 5672/5671 | SASL PLAIN | RabbitMQ |
| Kafka | 9092 | SASL/PLAIN | ブローカー |
| SOCKS5 | 1080 | SOCKS5 プロキシ認証 | プロキシ |

---

## 埋め込み SSH Bad Keys

外部キーファイルを必要としない単一バイナリデプロイ。各キーはスマートな認証情報マッピングのためにデフォルトのユーザー名とペアになっており、CVE トラッキングによりコンプライアンスクエリが可能です。

Brutus は **[rapid7/ssh-badkeys](https://github.com/rapid7/ssh-badkeys)** および **[Vagrant](https://github.com/hashicorp/vagrant)** のキーコレクションをバイナリに埋め込んでいます:

```bash
# Test bad keys against a single target
brutus badkeys --target 192.168.1.100:22

# Pipeline mode: scan a range for compromised SSH keys
naabu -host 10.0.0.0/24 -p 22 -silent | nerva --json | brutus badkeys

# Test credentials (bad keys are NOT included in creds mode)
brutus creds --target 192.168.1.100:22 --protocol ssh -u root -p "password"
```

### 組み込み鍵コレクション

| 製品 | CVE | デフォルトユーザー | 説明 |
|---------|-----|--------------|-------------|
| Vagrant | - | vagrant, root | HashiCorp Vagrant の安全でない鍵 |
| F5 BIG-IP | CVE-2012-1493 | root | 静的な SSH ホスト鍵 |
| ExaGrid | CVE-2016-1561 | root | バックアップアプライアンスのバックドア |
| Monroe DASDEC | CVE-2013-0137 | root | 緊急警報システム |
| Barracuda | CVE-2014-8428 | cluster | ロードバランサー VM |
| Ceragon FibeAir | CVE-2015-0936 | mateidu | ワイヤレスバックホール |
| Array Networks | - | sync | vAPV/vxAG アプライアンス |
| Quantum DXi | - | root | 重複排除アプライアンス |
| Loadbalancer.org | - | root | エンタープライズロードバランサー |

---

## アグレッシブネスモード

グローバルな `--mode` フラグ (`-m`) は、すべてのサブコマンドにわたってアグレッシブネスを制御します。これは、カバレッジと安全性のバランスを取るパフォーマンスチューニングプリセットを設定します:

| モード | スレッド | タイムアウト | レート制限 | ジッター | リトライ | ユースケース |
|------|---------|---------|------------|--------|---------|----------|
| `cautious` | 5 | 15s | 2 req/s | 500ms | 1 | 本番環境、ロックアウトを回避 |
| `default` | 10 | 10s | 無制限 | なし | 2 | 標準的なテスト |
| `aggressive` | 20 | 10s | 無制限 | なし | 3 | ラボ/CTF 環境、最大カバレッジ |

モードプリセットが最初に適用され、その後、明示的な CLI フラグがそれらを上書きします:

```bash
# Safe mode for production Active Directory (low concurrency, rate-limited)
brutus creds --target dc.corp.local:445 --protocol smb -m cautious -U users.txt -P passwords.txt

# Maximum coverage for a CTF
brutus creds --target 10.10.10.100:22 --protocol ssh -m aggressive -U users.txt -P rockyou.txt

# Cautious mode but override threads
brutus creds --target 192.168.1.100:22 --protocol ssh -m cautious --threads 20
```

SNMP の場合、モードは組み込みのワードリストの深さも制御します([SNMP コミュニティ文字列テスト](#snmp-community-string-testing)を参照)。

---

## SOCKS5 プロキシサポート

`--proxy` フラグは、すべての接続を SOCKS5 プロキシ経由でルーティングします。これはすべてのプロトコルとサブコマンドで機能します:

```bash
# Route SSH testing through a SOCKS5 proxy
brutus creds --target 10.0.0.100:22 --protocol ssh --proxy socks5://127.0.0.1:1080

# Proxy with authentication
brutus creds --target 10.0.0.100:3306 --protocol mysql --proxy socks5://user:[email protected]:1080

# DNS resolution on the proxy side (socks5h)
brutus creds --target internal.corp:22 --protocol ssh --proxy socks5h://127.0.0.1:1080

# Combine with pipeline input
naabu -host 10.0.0.0/24 -p 22,3306 -silent | nerva --json | brutus creds --proxy socks5://127.0.0.1:1080

# Works with all subcommands
brutus web --target 192.168.1.1:8080 --proxy socks5://127.0.0.1:1080
brutus snmp --target 192.168.1.1:161 --proxy socks5://127.0.0.1:1080
```

サポートされるスキーム:
- `socks5://` — 標準SOCKS5プロキシ(クライアント側DNS解決)
- `socks5h://` — リモートDNS解決付きSOCKS5(内部ホスト名を対象とする場合に便利)

---

## SNMPコミュニティストリングテスト

`snmp`サブコマンドは、グローバル`--mode`フラグで制御される階層化されたワードリストを使用した、専用のSNMP v1/v2cコミュニティストリングテストを提供します:

| モード | ストリング数 | カバレッジ |
|------|---------|----------|
| `cautious` | ~25 | 一般的なストリング(public、private、communityなど) |
| `default` | ~25 | cautiousと同じ |
| `aggressive` | 200+ | 包括的(ベンダー固有、SCADA、IPカメラ、ストレージなど) |

```bash
# Test with default community strings (~25)
brutus snmp --target 192.168.1.1:161

# Aggressive mode for comprehensive testing (200+)
brutus snmp --target 10.0.0.1:161 --mode aggressive

# Custom community strings
brutus snmp --target 192.168.1.1:161 -c "mycommunity,secretstring"

# Custom community string file
brutus snmp --target 192.168.1.1:161 -C community-strings.txt

# Pipeline mode
naabu -host 10.0.0.0/24 -p 161 -silent | nerva --json | brutus snmp --mode aggressive
```

---

## ライブラリ統合

セキュリティ自動化ツールを開発する開発者向けに、BrutusはGoライブラリとしてインポートすることもできます:

```bash
go get github.com/praetorian-inc/brutus
```

```go
package main

import (
    "fmt"
    "time"

    "github.com/praetorian-inc/brutus/pkg/brutus"
    _ "github.com/praetorian-inc/brutus/pkg/builtins" // registers all protocols and analyzers
)

func main() {
    config := &brutus.Config{
        Target:        "192.168.1.100:22",
        Protocol:      "ssh",
        Usernames:     []string{"root", "admin"},
        Passwords:     []string{"password", "admin", "toor"},
        Timeout:       5 * time.Second,
        Threads:       10,
    }

    results, err := brutus.Brute(config)
    if err != nil {
        panic(err)
    }

    for _, r := range results {
        if r.Success {
            fmt.Printf("[+] Valid: %s:%s\n", r.Username, r.Password)
        }
    }
}
```

---

## 実験的機能: AI による認証情報検出

> **⚠️ 実験的機能:** AI 機能には外部 API キーが必要であり、現在活発に開発中です。

### `--experimental-ai` フラグ

`--experimental-ai` フラグは、HTTP サービスに対する自動認証情報検出を有効にします:

```bash
# Set up API keys
export ANTHROPIC_API_KEY="your-anthropic-key"    # Required: Claude Vision for device identification
export PERPLEXITY_API_KEY="your-perplexity-key"  # Optional: additional web search

# AI-powered credential testing against HTTP services
naabu -host 192.168.1.0/24 -p 80,443,8080 -silent | \
  nerva --json | \
  brutus web --experimental-ai
```

**仕組み:**

1. **検出** — Brutus は HTTP ターゲットをプローブして認証タイプ (Basic 認証かフォームベースか) を検出します
2. **デバイス識別** — Claude Vision がスクリーンショットを分析してデバイス/アプリケーションを識別します
3. **認証情報の提案** — Claude がトレーニングデータからデフォルト認証情報を提案します
4. **オプションの Web 検索** — Perplexity (設定されている場合) が追加の認証情報をオンラインで検索します
5. **テスト** — 発見された認証情報をターゲットに対してテストします

**HTTP Basic 認証ターゲットの場合:**
- `/` をプローブして HTTP ヘッダーをキャプチャします
- Server ヘッダー、WWW-Authenticate レルムなどからデバイスを識別します
- Claude が可能性の高いデフォルト認証情報を提案します
- 認証情報のペアを自動的にテストします

**HTTP フォームベース認証ターゲットの場合:**
- ヘッドレス Chrome を使用してページをレンダリングしスクリーンショットを撮影します
- Claude Vision がログインフォームとデバイスタイプを識別し、認証情報を提案します
- Perplexity (オプション) が追加のデフォルト認証情報を検索します
- ブラウザ自動化がフォームに入力して送信します

**要件:**
- `ANTHROPIC_API_KEY` — Claude Vision (デバイス識別 + 認証情報の提案) に**必須**

---

[Read more](https://github.com/praetorian-inc/brutus)
ツールをダウンロード