
AIを活用したペネトレーションテストMCPサーバー
"日本神話において、天狗は荒々しい山の精霊であり、戦略家、戦士、そして侍の師範です。サイバーセキュリティの世界では、ハントのあらゆるフェーズを導きます。"
偵察から報告書まで — AI支援のペネトレーションテストをひとつのコマンドで。
Tengu は、Claudeをペネトレーションテストのコパイロットに変えるMCPサーバーです。NmapからMetasploitまで80のセキュリティツールを統括し、組み込みの安全制御、監査ログ、プロフェッショナルなレポート作成を備えています。
Claudeをインタラクティブなペンテストコパイロットとして使用 — あなたがエンゲージメントを指揮し、Claudeが適切なツールを選択し、自動的に連鎖させます。
git clone https://github.com/rfunix/tengu.git && cd tengu make docker-build make docker-up
Claude Codeを実行中のサーバーに接続する:```bash
claude mcp add --transport sse tengu http://localhost:8000/sse
次にClaudeに依頼してください: Do a full pentest on http://192.168.1.100
Claudeはツールを自動的に連鎖させます: validate_target → whatweb → nmap → nikto →
nuclei → sqlmap → correlate_findings → generate_report
| Command | 起動内容 |
|---|---|
make docker-up |
ファイルを編集せずにカスタムターゲットをスキャンする:```bash TENGU_ALLOWED_HOSTS="192.168.1.0/24,10.0.0.0/8" make docker-up
### イメージ階層
ユースケースに合ったサイズを選択してください:
| 階層 | サイズ | MCP Tools | ユースケース |
|------|------|-----------|----------|
| `minimal` | ~480MB | 17 | 軽量解析、CVE調査、レポート作成 |
| `core` | ~7GB | 47 | 完全なペンテストツールキット(デフォルト) |
| `full` | ~8GB | 80 | すべて + AD、ワイヤレス、ステルス/OPSEC |```bash
TENGU_TIER=minimal make docker-build # lightweight
TENGU_TIER=core make docker-build # default
TENGU_TIER=full make docker-build # everything
全てのティアには35のプロンプトと20のリソースが含まれています — 異なるのはバイナリツールのみです。
前提条件: Python 3.12+, uv, Kali Linux(推奨)```bash
git clone https://github.com/rfunix/tengu.git && cd tengu
uv sync
make install-tools
uv run tengu
Claude Code に接続:```bash
claude mcp add --scope user tengu -- uv run --directory /path/to/tengu tengu
許可されたターゲットを tengu.toml で設定してください:```toml
[targets]
allowed_hosts = ["192.168.1.0/24", "example.com"]
For Claude Desktop、VM/SSE リモートセットアップ、高度な設定については、[docs/deployment-guide.md](https://github.com/rfunix/tengu/blob/HEAD/docs/deployment-guide.md) を参照してください。
</details>
### 設定リファレンス```toml
[targets]
# REQUIRED: Only these hosts will be scanned
allowed_hosts = ["192.168.1.0/24", "example.com"]
blocked_hosts = [] # Always blocked, even if in allowed_hosts
[stealth]
enabled = false # Route traffic through Tor/proxy
[stealth.proxy]
enabled = false
type = "socks5h"
host = "127.0.0.1"
port = 9050
[osint]
shodan_api_key = "" # Required for shodan_lookup
[tools.defaults]
scan_timeout = 300 # seconds
Tengu MCPサーバー(:8000) |
make docker-lab | + Juice Shop, DVWA(安全な練習用ターゲット) |
make docker-pentest | + Metasploit, OWASP ZAP(実世界のターゲット) |
make docker-full | + Metasploit、ZAP、およびラボターゲット |
完全なリファレンスは docs/configuration-reference.md を参照してください。
手動でツールを呼び出すことなく、完全に自律的なペンテストを実行します。このエージェントは、戦略的思考部としてClaude、実行ツールセットとしてTenguを使用し、PTES手法に従って偵察から報告までを行います。
cp .env.example .env
**ラボターゲット (Juice Shop, DVWA):**```bash
make docker-lab
make docker-agent # default model (sonnet)
make docker-agent-haiku # cheaper — claude-haiku-4-5, max_tokens=1024
make docker-agent-sonnet # balanced — claude-sonnet-4-6, max_tokens=4096
実世界のペンテスト (Tengu + MSF + ZAP, ラボコンテナなし):```bash make docker-pentest make docker-agent
**ブラウザでレポートを表示:**```bash
make docker-report-view # http://localhost:8888 — styled HTML, all reports
make docker-report-browse # same, auto-opens browser
REPORT_PORT=9999 make docker-report-view # custom port
Dockerなしの場合:```bash uv sync --extra agent python autonomous_tengu.py 192.168.1.100 --scope 192.168.1.0/24 --type blackbox
python autonomous_tengu.py 192.168.1.100 --model claude-haiku-4-5 --max-tokens 1024 --timeout 30
**コスト管理** — 3つの環境変数 / CLIフラグ:
| フラグ | 環境変数 | デフォルト |
|---|---|---|
| `--model` | `TENGU_AGENT_MODEL` | `claude-sonnet-4-6` |
| `--max-tokens` | `TENGU_AGENT_MAX_TOKENS` | `2048` |
| `--timeout` | `TENGU_AGENT_TIMEOUT` | `60` (分, `0`=無制限) |
### 動作の仕組み```
START → initializer → strategist ─┬─→ executor → analyst ─┬─→ strategist (loop)
│ └─→ reporter → END
├─→ human_gate → executor
└─→ reporter → END
主な動作:
msf_run_module, hydra_attack, impacket_kerberoast, sqlmap_scan (level≥3)) の実行前に割り込む--max-iterations に達するまで実行correlate_findings + score_risk + generate_report を呼び出す| フェーズ | 名称 | Tenguの動作 | 主要ツール |
|---|---|---|---|
| 1 | 事前契約 | validate_target でスコープ確認、check_tools で準備状況確認 | validate_target, check_tools |
| 2 | 情報収集 | OSINT、DNS偵察、サブドメイン列挙、技術フィンガープリンティング | nmap, subfinder, amass, shodan, whatweb |
| 3 | 脅威モデリング | Claudeが収集したインテリジェンスを分析し、攻撃対象領域を優先付け、脅威シナリオを構築 | (AI駆動 — 外部ツールなし) |
| 4 | 脆弱性分析 | テンプレートスキャン、Webアプリテスト、SSL/TLS分析、パラメータファジング | nuclei, nikto, ffuf, sqlmap, testssl |
| 5 | 悪用 | 確認された脆弱性を人間が介入する形で制御された悪用 | msf_run_module, sqlmap, hydra, searchsploit |
| 6 | ポストエクスプロイテーション | 認証情報収集、水平移動の評価、権限昇格 | impacket_kerberoast, nxc_enum, enum4linux |
| 7 | 報告 | すべての発見事項を相関付け、リスクスコアを計算し、専門的なレポートを生成 | correlate_findings, score_risk, generate_report |
minimal(17ツール, ~480MB) ·core(47ツール, ~7GB, デフォルト) ·full(80ツール, ~8GB) ビルド:TENGU_TIER=<tier> make docker-build。すべてのティアに35のプロンプトと20のリソースが含まれます。
| カテゴリ | ツール | 数 |
|---|---|---|
| 偵察 | Nmap, Masscan, Amass, Subfinder, Gowitness, HTTrack, Katana, httpx, SNMPwalk, RustScan | 10 |
| Webスキャン | Nikto, Nuclei, FFUF, Gobuster, WPScan, Feroxbuster, OWASP ZAP, wafw00f | 8 |
| SSL / TLS | sslyze, testssl.sh, HTTPヘッダー分析, CORSテスター | 4 |
| DNS | DNS Enumerate, DNSRecon, Subjack, WHOIS | 4 |
| OSINT | theHarvester, Shodan, WhatWeb, DNStwist | 4 |
| インジェクションテスト | SQLMap, Dalfox (XSS), Commix, CRLFuzz, GraphQL Security Check, Arjun | 6 |
| ブルートフォース | Hydra, John the Ripper, Hashcat, CeWL | 4 |
| エクスプロイト | Metasploit (search, info, run, sessions, cmd), SearchSploit | 6 |
| ソーシャルエンジニアリング | SET credential harvester, QR code attack, payload generator | 3 |
| シークレット&コード | TruffleHog, Gitleaks | 2 |
| コンテナ&クラウド | Trivy, Checkov, ScoutSuite, Prowler | 4 |
| Active Directory | NetExec, Enum4linux, Impacket (Kerberoast, secretsdump, psexec, wmiexec, smbclient), BloodHound, Responder, SMBMap | 10 |
| ワイヤレス | aircrack-ng / airodump-ng | 1 |
| 匿名性&ステルス | Tor check/rotate, proxy check, identity rotation | 5 |
| 分析&報告 | 発見事項の相関付け, CVSSリスクスコアリング, レポート生成 | 3 |
| CVEインテリジェンス | CVE lookup (NVD), CVE search by keyword/product/severity | 2 |
| ユーティリティ | ツールチェッカー, ターゲットバリデーター | 2 |
| ツール | 説明 |
|---|---|
nmap_scan | ポートスキャンとサービス/OSの検出 |
masscan_scan | 大規模ネットワーク向け高速ポートスキャナー |
subfinder_enum | パッシブサブドメイン列挙 |
amass_enum | 攻撃対象領域のマッピングとDNSブルートフォース |
dnsrecon_scan | DNS偵察 (ゾーン転送, ブルートフォース, PTR) |
dns_enumerate | DNSレコード列挙 (A, MX, NS, TXT, SOA…) |
whois_lookup | WHOISドメインとIPのルックアップ |
subjack_check | サブドメイン乗っ取りの検出 |
gowitness_screenshot | 文書化のためのWebスクリーンショットキャプチャ |
httrack_mirror | オフライン分析とフォレンジックのための完全なWebサイトミラー |
katana_crawl | リンク発見とエンドポイントマッピングのための高速Webクローラー |
httpx_probe | HTTPプローブ — ステータスコード、テクノロジースタック、リダイレクト |
snmpwalk_scan | SNMP列挙とMIBウォーキング |
rustscan_scan | 超高速ポートスキャン (Nmapフォローアップ用にオープンポートを発見) |
| ツール | 説明 |
|---|---|
theharvester_scan | 公開情報源からのメール、サブドメイン、ホストの列挙 |
shodan_lookup | Shodanホストとアセットの検索 |
| ツール | 説明 |
|---|---|
set_credential_harvester | Webサイトを複製し、送信された認証情報を取得 (許可されたフィッシングシミュレーション) |
set_qrcode_attack | QRコードを生成してURLをポイントし、物理的なソーシャルエンジニアリング評価用 |
set_payload_generator | 許可されたキャンペーン用のソーシャルエンジニアリングペイロード (PowerShell、HTA) を生成 |
| ツール | 説明 |
|---|---|
hydra_attack | ネットワークログインブルートフォース (SSH、FTP、HTTP、SMB…) |
hash_crack | 辞書ハッシュクラッキング (Hashcat / John the Ripper) |
| ツール | 説明 |
|---|---|
zap_spider | OWASP ZAP Webスパイダー |
zap_active_scan | OWASP ZAPアクティブ脆弱性スキャン |
zap_get_alerts | ZAPスキャン結果の取得 |
| ツール | 説明 |
|---|---|
trufflehog_scan | Gitリポジトリ内の漏洩したシークレットの検出 |
gitleaks_scan | Git履歴内の認証情報スキャン |
| ツール | 説明 |
|---|---|
trivy_scan | Dockerイメージ、IaC、SBOMの脆弱性スキャン |
| ツール | 説明 |
|---|---|
scoutsuite_scan | クラウドセキュリティ監査 (AWS、Azure、GCP) |
prowler_scan | AWS/GCP/Azureセキュリティのベストプラクティスとコンプライアンス監査 |
| ツール | 説明 |
|---|---|
aircrack_scan | パッシブワイヤレスネットワークスキャン (airodump-ng) |
| ツール | 説明 |
|---|---|
checkov_scan | IaC設定ミススキャン (Terraform、K8s、Dockerfile) |
Claudeが完全なエンゲージメントをガイドするための、あらかじめ構築されたワークフローテンプレート。
| カテゴリ | プロンプト |
|---|---|
| ペネトレーションテストワークフロー | full_pentest, quick_recon, web_app_assessment |
| 脆弱性評価 | assess_injection, assess_access_control, assess_crypto, assess_misconfig |
| OSINT | osint_investigation |
| レポート | executive_report, technical_report, full_pentest_report, finding_detail, risk_matrix, remediation_plan, retest_report, save_report |
| ステルス/OPSEC | stealth_assessment, opsec_checklist |
| 専門分野 | ad_assessment, api_security_assessment, container_assessment, cloud_assessment, wireless_assessment, bug_bounty_workflow, compliance_assessment |
| クイックアクション | explore_url, map_network, hunt_subdomains, find_vulns, find_secrets, go_stealth, crack_wifi, pwn_target, msf_exploit_workflow |
| ソーシャルエンジニアリング | social_engineering_assessment |
エンゲージメント中にClaudeによって読み込まれる静的参照データ。
| URI | 内容 |
|---|---|
owasp://top10/2025 | OWASP Top 10:2025 完全リスト |
owasp://top10/2025/{A01..A10} | カテゴリ別詳細 + テストチェックリスト |
owasp://api-security/top10 | OWASP API Security Top 10 (2023) |
owasp://api-security/top10/{API1..API10} | カテゴリ別詳細 |
ptes://phases | PTES 7フェーズメソドロジー概要 |
ptes://phase/{1..7} | フェーズ詳細 (目的、ツール、成果物) |
checklist://web-application | Webアプリペネトレーションテストチェックリスト (OWASPテストガイド) |
checklist://api | APIペネトレーションテストチェックリスト |
checklist://network | ネットワークインフラストラクチャチェックリスト |
mitre://attack/tactics | MITRE ATT&CK Enterprise 戦術 + 技術 |
mitre://attack/technique/{T1xxx} | ID別技術詳細 |
creds://defaults/{product} | デフォルト認証情報データベース |
payloads://{type} | タイプ別キュレートされたペイロードリスト (xss, sqli, lfi, ssti など) |
stealth://techniques | 運用セキュリティ技術のためのリファレンスガイド |
stealth://proxy-guide | 段階的なプロキシとTor設定ガイド |
tools://catalog | ライブツールの利用可能性ステータス |
tools://{tool}/usage | nmap、nuclei、sqlmap、metasploit、trivy、amass の使用ガイド |
prompts://list | 利用可能なすべてのプロンプトと説明のリスト |
prompts://category/{category} | カテゴリでフィルタリングされたプロンプト |
┌─────────────┐ MCP ┌─────────────────┐ subprocess ┌─────────────────┐ │ Claude │◄────────────►│ Tengu │─────────────────►│ Nmap, SQLMap, │ │ (Desktop / │ stdio/SSE │ MCP Server │ (never shell=T) │ Metasploit... │ │ Code) │ │ │ └─────────────────┘ └─────────────┘ └────────┬─────────┘ │ Every tool call passes through: │ ┌────────▼─────────┐ │ Safety Pipeline │ │ │ │ 1. sanitizer │ ← strip metacharacters, validate format │ 2. allowlist │ ← check target against tengu.toml │ 3. rate_limiter │ ← sliding window + concurrent slots │ 4. audit logger │ ← JSON log to ./logs/tengu-audit.log └──────────────────┘
---
## 設定ファイル
Tenguは3つの設定ファイルを使用します。ローカルとDockerのワークフローを切り替える際、間違ったファイルを編集することが最も一般的な混乱の原因です。
| ファイル | 使用時期 | 制御内容 |
|------|-------------|------------------|
| `tengu.toml` (ルート) | ローカルで実行: `uv run tengu`, `uv run python autonomous_tengu.py` | MCPサーバー設定: `allowed_hosts`, ツールパス, レート制限, ステルス |
| `docker/tengu.toml` | Docker経由で実行: `make docker-up`, `make docker-agent` | ルートと同じ設定ですが、Dockerネットワーキング用に事前設定されています(`172.16.0.0/12`、サービスDNSエイリアス)。ビルド時にイメージに組み込まれています。変更後は**リビルドが必要**です(`make docker-rebuild-tengu`) |
| `.env` | ローカルとDockerの両方 | シークレットとランタイム変数: `ANTHROPIC_API_KEY`, `TENGU_AGENT_TARGET`, `TENGU_AGENT_MODEL`, `TENGU_AGENT_MAX_TOKENS` など。 `docker compose` と `load_dotenv()` によって読み込まれます。 |
| `.env.example` | 参照のみ | 利用可能なすべての環境変数をリストしたテンプレート |
**クイック設定(コパイロットモード・ローカル):** プロジェクトルートの `tengu.toml` を編集し、ターゲットを `[targets] allowed_hosts` に追加します。
**クイック設定(エージェントモード・Docker):** `docker/tengu.toml` を編集し、`make docker-agent` の前に `make docker-rebuild-tengu` を実行します。
> **よくある落とし穴:** Docker内でスキャンが `TargetNotAllowedError` で失敗する場合、おそらく `tengu.toml`(ルート)ではなく `docker/tengu.toml` を編集する必要があります。Dockerはイメージに組み込まれた独自のコピーを使用します。編集後は `make docker-rebuild-tengu` を実行してください。
---
## 安全設計
Tenguは**人間のペネトレーションテスターの力を増幅するもの**として構築されており、自律型攻撃ツールではありません。
| 制御 | 説明 |
|---------|-------------|
| **ターゲット許可リスト** | `tengu.toml` で事前に承認されたターゲットのみがスキャンされます。 |
| **入力サニタイズ** | すべての入力は、ツールに渡される前に厳格なパターンに対して検証されます。 |
| **レート制限** | スライディングウィンドウと同時スロット制限により、偶発的なDoSを防止します。 |
| **監査ログ** | すべてのツール呼び出しは JSON 形式で `./logs/tengu-audit.log` に記録されます。 |
| **ヒューマンインザループ** | `msf_run_module`、`hydra_attack`、`impacket_kerberoast` は明示的な確認が必要です。 |
| **shell=True は絶対に使用しない** | すべてのサブプロセス呼び出しは `asyncio.create_subprocess_exec` を使用します。 |
---
## 開発```bash
make install-dev # Install Python deps + dev extras
make test # Run unit + security tests
make lint # ruff check
make typecheck # mypy strict
make check # lint + typecheck
make coverage # pytest --cov
make inspect # Open MCP Inspector
make doctor # Check which pentest tools are installed
Tenguは、ユニットロジック、セキュリティ(コマンドインジェクション、入力検証)、および統合シナリオをカバーする2643以上のテストを備えています。完全なコントリビューターガイドはCLAUDE.mdを参照してください。
Tenguは認可されたセキュリティテスト専用に設計されています。所有するシステム、または明示的な書面によるテスト許可を得たシステムのみをスキャンしてください。無許可のスキャンはほとんどの法域で違法です。著者は誤用に対する一切の責任を負いません。
| ツール | 説明 |
|---|
nuclei_scan | テンプレートベースの脆弱性スキャナー (CVE、設定ミス) |
nikto_scan | Webサーバーの設定ミスと古いソフトウェアのスキャナー |
ffuf_fuzz | ディレクトリ、パラメータ、vhostファジング |
gobuster_scan | ディレクトリ、DNS、vhostのブルートフォース |
wpscan_scan | WordPress脆弱性スキャナー |
testssl_check | 包括的なSSL/TLS設定分析 |
analyze_headers | HTTPセキュリティヘッダーの分析と評価 |
test_cors | CORS設定ミスの検出 |
ssl_tls_check | SSL/TLS証明書と暗号のチェック (sslyze) |
wafw00f_scan | Webアプリケーションファイアウォールの検出とフィンガープリンティング |
feroxbuster_scan | ブルートフォースによる高速かつ再帰的なコンテンツ発見 |
whatweb_scan| Webテクノロジーのフィンガープリンティング (CMS、WAF、フレームワーク) |
dnstwist_scan | ドメインパーミュテーションとタイポスクワッティングの検出 |
| ツール | 説明 |
|---|
sqlmap_scan | 自動SQLインジェクションの検出と悪用 |
xss_scan | DalfoxによるXSS検出 |
commix_scan | 自動コマンドインジェクションの検出と悪用 |
crlfuzz_scan | ヘッダーインジェクション脆弱性のためのCRLFインジェクションファジング |
graphql_security_check | GraphQLイントロスペクション、バッチング、深さ制限、フィールド提案 |
arjun_discover | 隠れたHTTPパラメータの発見 |
| ツール | 説明 |
|---|
msf_search | Metasploitモジュールの検索 |
msf_module_info | 詳細なMetasploitモジュール情報の取得 |
msf_run_module | Metasploitモジュールの実行 (明示的な確認が必要) |
msf_sessions_list | アクティブなMetasploitセッションの一覧表示 |
msf_session_cmd | アクティブセッション上でのコマンド実行 (シェル/Meterpreter) |
searchsploit_query | Exploit-DBオフラインデータベースの検索 |
hash_identify | ハッシュタイプの識別 |
cewl_generate | ターゲットWebサイトからのカスタムワードリスト生成 |
| ツール | 説明 |
|---|
enum4linux_scan | SMB/NetBIOS列挙 |
nxc_enum | NetExecによるActive Directory列挙 |
impacket_kerberoast | Impacket GetUserSPNsによるKerberoasting |
impacket_secretsdump | ImpacketによるリモートSAM/LSA/NTDSシークレットダンプ |
impacket_psexec | SMB経由のリモートコマンド実行 (PsExecスタイル) |
impacket_wmiexec | WMI経由のリモートコマンド実行 |
impacket_smbclient | SMB共有の列挙とファイルアクセス |
bloodhound_collect | BloodHound ADデータ収集 (SharpHound/bloodhound-python) |
responder_capture | LLMNR/NBT-NS/MDNSポイズニングによる認証情報キャプチャ |
smbmap_scan | SMB共有の列挙とアクセステスト |
| ツール | 説明 |
|---|
tor_check | Tor接続と出口ノードIPの確認 |
tor_new_identity | 新しいTor回線の要求 (NEWNYM) |
check_anonymity | 露出したIP、DNSリーク、匿名性レベルの確認 |
proxy_check | プロキシのレイテンシー、出口IP、匿名性タイプの検証 |
rotate_identity | Tor回線とUser-Agentを同時にローテーション |
| ツール | 説明 |
|---|
check_tools | インストールされている外部ツールの確認 |
validate_target | 許可リストに対するターゲットの検証 |
correlate_findings | 複数スキャンにわたる発見事項の相関付け |
score_risk | CVSSベースのリスクスコアリング |
cve_lookup | NVDからのCVE詳細 (CVSS、CWE、影響を受ける製品) |
cve_search | キーワード、製品、または深刻度によるCVEの検索 |
generate_report | Markdown/HTML/PDF形式のペネトレーションテストレポートの生成 |