
大規模言語モデル搭載の自動ペネトレーションテストエージェントフレームワーク
自律型CTFパイプラインは、Claude CodeおよびCodex向けにバックエンドプラグイン可能です。対話型の 近代化されたレガシーモード(
pentestgpt-legacy)は、OpenAI、Anthropic、 Google Gemini、DeepSeek、xAI、Qwen、Moonshot、ローカルOllamaなど、より多くのプロバイダをサポートしています。詳細は 対話型マルチLLMモードを参照してください。
claude) - ローカルClaude実行のためにインストールおよび認証済みであること。詳細はClaude Codeドキュメントを参照codex) - ローカルCodex実行のためにインストールおよび認証済みであること。以下のDockerフローでは両方のCLIがバンドルされています。git clone https://github.com/GreyDGL/PentestGPT.git
cd PentestGPT
make install # uv syncを実行
| コマンド | 説明 |
|---|---|
make install | 依存関係をインストール |
make test | すべてのテストを実行 |
make check | lint + 型チェックを実行 |
make build | 配布可能パッケージをビルド |
# ターゲットに対して実行(デフォルトはCTFモード)
pentestgpt --target 10.10.11.234
# チャレンジのコンテキスト付き
pentestgpt --target 10.10.11.50 --instruction "WordPressサイト、プラグインの脆弱性に焦点を当てる"
# 侵入テストモード(資産発見 → 脆弱性 → レポート)
pentestgpt --target 10.10.11.234 --mode pentest
# 以前に保存したセッションを一覧表示
pentestgpt --list-sessions
エージェントはマルチステージパイプラインで動作し、各段階の結果を次の段階に渡します。CTFでは偵察→脆弱性調査→攻略、侵入テストでは資産発見→脆弱性特定→レポートの順です。
自己完結型イメージには、ツールとClaude CodeおよびCodex CLIの両方がバンドルされています。一度ログインすると、 セッションは名前付きボリュームに永続化されます。以降の実行で再ログインは不要です。
make docker-build # ツールイメージをビルド
make docker-login # 一度だけの冪等な操作:ログインを確認し、不足しているものだけログイン
make docker-auth-status # 両方のログイン状態を確認(ROUNDTRIP=1で1トークンのライブチェック)
# ターゲットに対してパイプラインを実行(任意のバックエンド/モデル/モード):
make docker-run TARGET=http://127.0.0.1:8000 BACKEND=codex MODEL=gpt-5.5 MODE=ctf
make docker-run TARGET=10.10.11.234 BACKEND=claude MODEL=opus MODE=pentest
make docker-loginはClaude(setup-token→トークンをボリュームに保存)とCodex(独自のコンテナ内codex login、socat経由でOAuthコールバックを転送。ChatGPTリフレッシュトークンは使い捨てのためシードはなし)にログインします。冪等です:再実行すると、まだ有効なものはスキップされます。ログインはコンテナ再作成後も保持されます。make docker-downで保持、make docker-nukeでログインボリュームを削除(強制的に新しいログイン/トークンローテーション)。設計と詳細:docs/docker-dev-plan.md
USENIX 2024論文のクラシックなヒューマンインザループPentestGPTはpentestgpt-legacyとして保存・近代化されています。これは3つの連携するLLMセッション(推論/生成/解析)を実行し、侵入テストタスクツリー(PTT)を維持しながら、ユーザーが対話的にセッションを操作します(next、more、todo、discuss)。自律型固定ステージパイプラインはClaudeおよびCodexバックエンドをサポートします。このレガシーモードは、公式SDKを介して多くのプロバイダにネイティブに接続します。
使用したいプロバイダのAPIキーを(環境変数または.envファイルに。.env.exampleを参照)設定します。設定したプロバイダのみが有効になります。
OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GEMINI_API_KEY=... # または GOOGLE_API_KEY
DEEPSEEK_API_KEY=... GROK_API_KEY=... QWEN_API_KEY=... KIMI_API_KEY=...
# 各セッションに最適な利用可能モデルを自動選択
pentestgpt-legacy
# セッションごとにモデルを選択
pentestgpt-legacy --reasoning-model claude-opus-4-8 --parsing-model gemini-3.5-flash
# Ollama経由のローカルモデル(OpenAI互換)
pentestgpt-legacy --reasoning-model ollama:qwen3 --base-url http://localhost:11434/v1
# サポートされているすべてのモデルを一覧表示(設定済みプロバイダを表示)
pentestgpt-legacy --list-models
# 設定済みの各モデルでライブラウンドトリップを実行し、合格/不合格マトリックスを表示
pentestgpt-legacy --smoke-test
pentestgpt-legacy --list-modelsは常にライブレジストリを表示します。モデルIDが変更された場合は--smoke-testを再実行してください。現在のスナップショット:
| プロバイダ | 現在のモデル | レガシー(維持) | 環境変数キー |
|---|---|---|---|
| OpenAI | gpt-5.5, gpt-5.5-pro, gpt-5.4-mini, gpt-5.4-nano, gpt-5.2, gpt-5.3-codex | gpt-4o, gpt-4o-mini, o3, o4-mini | OPENAI_API_KEY |
| Anthropic | claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5-20251001 | — | ANTHROPIC_API_KEY |
| Google Gemini | gemini-3.1-pro, gemini-3.5-flash, gemini-3-pro, gemini-3.1-flash-lite | gemini-2.5-pro, gemini-2.5-flash | GEMINI_API_KEY / GOOGLE_API_KEY |
| DeepSeek | deepseek-v4-flash, deepseek-v4-pro | deepseek-chat, deepseek-reasoner | DEEPSEEK_API_KEY |
| xAI Grok | grok-4.3 | — | GROK_API_KEY / XAI_API_KEY |
| Alibaba Qwen | qwen3.7-max, qwen3.5-flash | qwen3-max | QWEN_API_KEY / DASHSCOPE_API_KEY |
| Moonshot Kimi | kimi-k2.6 | — | KIMI_API_KEY(デフォルト.cn;.aiの場合はMOONSHOT_BASE_URLを設定) |
| ローカル(Ollama) | ollama:<model>(例:ollama:qwen3) |
レジストリは
pentestgpt_legacy/llm/registry.py(単一の信頼できるソース)にあります。 モデル追加はModelSpecエントリ1つで行えます。OpenAI互換プロバイダは1つのコネクタを再利用します。
PentestGPTは匿名の使用データを収集し、ツールの改善に役立てています。このデータはLangfuseプロジェクトに送信され、以下を含みます:
機密データは収集されません - コマンド出力、認証情報、実際のフラグ値は決して送信されません。
# コマンドラインフラグを使用
pentestgpt --target 10.10.11.234 --no-telemetry
# 環境変数を使用
export LANGFUSE_ENABLED=false
PentestGPTは2025年12月のXBOW検証スイート実験で86.5%の成功率(104ベンチマーク中90)を達成しました。これは歴史的な研究結果であり、現在のpentestgpt-agentの回帰保証ではありません。
XBOWハーネスと結果アーカイブは、参照専用の研究成果物としてこの製品リポジトリの外部で管理されています。サポートされているPentestGPT CLI、Makefile、CI、DockerランタイムはXBOWランナーを公開していません。将来の評価では、別途所有するアダプターを通じてそのコーパスを再利用する可能性がありますが、製品依存関係にはしません。
研究でPentestGPTを使用する場合は、以下の論文を引用してください:
@inproceedings{299699,
author = {Gelei Deng and Yi Liu and Víctor Mayoral-Vilches and Peng Liu and Yuekang Li and Yuan Xu and Tianwei Zhang and Yang Liu and Martin Pinzger and Stefan Rass},
title = {{PentestGPT}: Evaluating and Harnessing Large Language Models for Automated Penetration Testing},
booktitle = {33rd USENIX Security Symposium (USENIX Security 24)},
year = {2024},
isbn = {978-1-939133-44-1},
address = {Philadelphia, PA},
pages = {847--864},
url = {https://www.usenix.org/conference/usenixsecurity24/presentation/deng},
publisher = {USENIX Association},
month = aug
}
MITライセンスの下で配布されています。詳細はLICENSE.mdを参照してください。
免責事項:このツールは教育目的および許可されたセキュリティテスト専用です。著者はいかなる違法行為も容認しません。自己責任で使用してください。
(トップに戻る)
| — |
なし(OLLAMA_BASE_URL) |