
ブラックボックスのセキュリティテストのためのAIエージェントフレームワーク。自律型マルチエージェントオーケストレーション、組み込みのペンテストツール、バグバウンティ・レッドチーム・ペネトレーションテストのワークフロー向けMCP統合を備えています。
https://github.com/user-attachments/assets/a67db2b5-672a-43df-b709-149c8eaee975
# Clone
git clone https://github.com/GH05TCREW/pentestagent.git
cd pentestagent
# Setup (creates venv, installs deps)
.\scripts\setup.ps1 # Windows
./scripts/setup.sh # Linux/macOS
# Or manual
python -m venv venv
.\venv\Scripts\Activate.ps1 # Windows
source venv/bin/activate # Linux/macOS
pip install -e ".[all]"
playwright install chromium # Required for browser tool
プロジェクトルートに .env を作成します:
ANTHROPIC_API_KEY=sk-ant-...
PENTESTAGENT_MODEL=claude-sonnet-4-20250514
または OpenAI の場合:
OPENAI_API_KEY=sk-...
PENTESTAGENT_MODEL=gpt-5
LiteLLM がサポートするモデル であれば何でも動作します。
OPENAI_API_BASE を使うと、OpenAI 互換の任意のエンドポイントに PentestAgent を向けられます:
OPENAI_API_KEY=your-relay-token
OPENAI_API_BASE=https://relay.example/v1
PENTESTAGENT_MODEL=openai/<model-name-on-your-relay>
Anthropic 互換エンドポイントの場合は、代わりに ANTHROPIC_API_BASE を使用します。
プロバイダーに関する完全なメモと埋め込みオプションは .env.example を参照してください。
pentestagent # Launch TUI
pentestagent -t 192.168.1.1 # Launch with target
pentestagent tui --docker # Run tools in Docker container
分離とプリインストールされたペンテストツールのために、Docker コンテナ内でツールを実行します。
# Base image with nmap, netcat, curl
docker run -it --rm \
-e ANTHROPIC_API_KEY=your-key \
-e PENTESTAGENT_MODEL=claude-sonnet-4-20250514 \
ghcr.io/gh05tcrew/pentestagent:latest
# Kali image with metasploit, sqlmap, hydra, etc.
docker run -it --rm \
-e ANTHROPIC_API_KEY=your-key \
ghcr.io/gh05tcrew/pentestagent:kali
# Build
docker compose build
# Run
docker compose run --rm pentestagent
# Or with Kali
docker compose --profile kali build
docker compose --profile kali run --rm pentestagent-kali
コンテナは Linux のペンテストツールにアクセスできる状態で PentestAgent を実行します。エージェントはターミナルツール経由で nmap、msfconsole、sqlmap などを直接使用できます。
Docker がインストールされ、実行されている必要があります。
PentestAgent には、TUI のコマンドからアクセスできる3つのモードがあります:
| モード | コマンド | 説明 |
|---|---|---|
| Assist | /assist <task> | ツール実行を伴う1回限りの指示 |
| Agent | /agent <task> | 単一タスクの自律実行 |
| Crew | /crew <task> | マルチエージェントモード。オーケストレーターが専門のワーカーを生成します |
| Interact | /interact <task> | インタラクティブモード。エージェントとチャットすると、ペンテスト手順中に支援・ガイドしてくれます |
/assist <task> One single-shot instruction.
/agent <task> Run autonomous agent on task
/crew <task> Run multi-agent crew on task
/interact <task> Chat with the agent in guided mode
/target <host> Set target
/tools List available tools
/notes Show saved notes
/report Generate report from session
/memory Show token/memory usage
/prompt Show system prompt
/conversations Browse and restore saved conversations
/mcp <list/add> Visualizes or adds a new MCP server.
/spawn [target] [--scope CIDR] [--model M] [--no-rag] [--no-mcp]
Manually spawn a child MCP agent from the TUI.
/despawn <server_name>
Terminate and remove a previously spawned child agent.
/clear Clear chat and history
/quit Exit (also /exit, /q)
/help Show help (also /h, /?)
Esc を押すと実行中のエージェントを停止します。Ctrl+Q で終了します。
PentestAgent には、ブラックボックスセキュリティテスト用のビルド済みアタックプレイブックが含まれています。プレイブックは、特定のセキュリティ評価に対する体系的なアプローチを定義します。
プレイブックの実行:
pentestagent run -t example.com --playbook thp3_web

PentestAgent には組み込みツールが含まれ、拡張性のための MCP(Model Context Protocol)をサポートしています。
組み込みツール: terminal、browser、notes、web_search(TAVILY_API_KEY が必要)、spawn_mcp_agent
spawn_mcp_agent)spawn_mcp_agent は、実行中のエージェントが stdio 経由で接続された従属 MCP サーバーとして自身の子コピーを生成できるようにする組み込みツールです。子プロセスは完全に分離されており、独自のランタイム、LLM クライアント、会話履歴、ノートストアを持ちます。生成後は、その完全なツールセットが親エージェントの利用可能なツールに注入されます。
これにより、外部オーケストレーションなしで階層的なマルチエージェントワークフローが可能になります。エージェントは、必要に応じて生成した子エージェントにスコープ付きサブタスクを委任することで自己組織化します。
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
target | string | — | 子エージェントに渡すペンテストターゲット |
scope | string[] | — | 子エージェントのスコープ内ターゲット/CIDR |
model | string | env var | モデル識別子。子エージェントの PENTESTAGENT_MODEL を上書きします |
no_rag | boolean | false | 子エージェントで RAG エンジンの初期化をスキップ |
no_mcp | boolean | true | 子エージェントで外部 MCP サーバー接続をスキップ(推奨) |
spawn_mcp_agent が戻ると、子エージェントのツール(run_task、run_task_async、await_tasks など)が次のツール呼び出しで利用可能になります。子エージェントのサーバー名は自動的に割り当てられ(例: child_agent_1)、結果に返されます。
例 — オーケストレーターが2つの子エージェントに並列偵察を委任する場合:
# Turn 1: spawn two isolated child agents
spawn_mcp_agent target="10.0.1.0/24" scope=["10.0.1.0/24"]
spawn_mcp_agent target="10.0.2.0/24" scope=["10.0.2.0/24"]
# Turn 2: children's tools are now available — delegate work asynchronously
child_agent_1__run_task_async task="Full port scan and service enumeration"
child_agent_2__run_task_async task="Full port scan and service enumeration"
# Turn 3: wait and collect
child_agent_1__await_tasks task_ids=["<id1>"] timeout_seconds=600
child_agent_2__await_tasks task_ids=["<id2>"] timeout_seconds=600
child_agent_1__get_task_result task_id="<id1>"
child_agent_2__get_task_result task_id="<id2>"
/spawn と /despawn)自動の spawn_mcp_agent ツールに加えて、TUI は実行中のエージェントループとは独立して子エージェントを手動で生成・終了できる2つのコマンドを提供します。
/spawn/spawn [target] [--scope CIDR ...] [--model MODEL] [--no-rag] [--no-mcp]
新しい子 MCP エージェントを stdio 経由で生成し、現在のセッションに接続します。子エージェントは TUI サイドバーの折りたたみ可能なターミナルパネルとして表示され、次のツール呼び出しで親エージェントがそのツールを利用できるようになります。
| 引数 | 説明 |
|---|---|
target | 子エージェントに渡すペンテストターゲット(位置引数または --target) |
--scope CIDR | スコープ内 CIDR を1つ以上(繰り返し指定可) |
--model MODEL | 子エージェントのモデルを上書き |
--no-rag | 子エージェントで RAG エンジンの初期化をスキップ |
--no-mcp | 子エージェントで外部 MCP サーバー接続をスキップ |
例:
/spawn 10.0.1.1
/spawn 10.0.1.1 --scope 10.0.1.0/24 --model claude-sonnet-4-20250514
/spawn --target 10.0.1.1 --scope 10.0.1.0/24 --no-rag
/despawn/despawn <server_name>
server_name(例: child_agent_1)で識別される子エージェントを終了し、TUI からそのターミナルパネルを削除し、親セッションからツールを切断します。現在アクティブな子エージェントの名前を確認するには /mcp list を使用します。
例:
/despawn child_agent_1
MCP サーバーが128個を超えるツールを公開している場合、PentestAgent は完全なカタログを単一の mcp_<server>_rag_optimizer ツールに自動的に置き換えます。このメタツールは、埋め込み類似度(LiteLLM 経由、デフォルトは text-embedding-3-small)を使用して、現在のタスクに最も関連するツールを取得し、次のターンでエージェントに注入します。これにより、完全なツールセットへのアクセスを失うことなく、コンテキストウィンドウを管理しやすいサイズに保ちます。
オプティマイザーはエージェントからは透過的です。必要なものを説明する焦点を絞った自然言語クエリで RAG ツールを呼び出し、一致したツールは次のターンで直接呼び出せるようになります。
エージェント向けの使用ガイダンス:
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
queries | string[] | (required) | 必要な機能ごとに1つの絞り込んだクエリ。具体的なほど精度が高くなります |
top_k | integer | 20 | クエリごとに取得するツール数(最大128)。結果はマージされ、重複排除されます |