AI驱动的自主渗透测试代理
发表于USENIX Security 2024
官方网站:pentestgpt.com »
研究论文
·
报告错误
·
请求功能
自主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 # runs uv sync
| 命令 | 描述 |
|---|---|
make install | 安装依赖 |
make test | 运行所有测试 |
make check | 运行代码检查 + 类型检查 |
make build |
# Run against a target (CTF mode by default)
pentestgpt --target 10.10.11.234
# With challenge context
pentestgpt --target 10.10.11.50 --instruction "WordPress site, focus on plugin vulnerabilities"
# Penetration-test mode (asset discovery → vulnerabilities → report)
pentestgpt --target 10.10.11.234 --mode pentest
# List previously saved sessions
pentestgpt --list-sessions
代理通过多阶段流水线工作,将每个阶段的发现传递到下一阶段——对CTF而言是侦察→利用→复盘;对渗透测试而言是资产发现→漏洞识别→报告。
一个自包含镜像打包了工具以及Claude Code和Codex CLI。您只需一次登录, 会话会持久保存在命名卷中——后续运行无需重新登录。
make docker-build # build the tool image
make docker-login # ONE-TIME, idempotent: checks logins, logs in only what's missing
make docker-auth-status # check both are logged in (ROUNDTRIP=1 for a live 1-token check)
# Run the pipeline against a target (any backend / model / mode):
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 → token存储在卷中)和 Codex(容器内自身的codex login,通过socat转发OAuth回调——不使用种子,因为ChatGPT刷新令牌是一次性的)。它是幂等的:重新运行会跳过仍然有效的部分。登录状态在容器重建后依然保持;make docker-down保留它们,make docker-nuke删除登录卷(以强制全新登录/轮换令牌)。设计与细节:docs/docker-dev-plan.md。
经典的人机协作版PentestGPT(来自USENIX 2024论文)已作为pentestgpt-legacy保留并现代化。它运行三个协作的LLM会话——
推理/生成/解析——维护一个渗透测试任务树(PTT),同时您以交互方式驱动会话(next、more、todo、discuss)。自主固定阶段流水线支持Claude和Codex后端;此遗留模式原生通过官方SDK与众多提供商通信。
为您想使用的任何提供商设置API密钥(在环境变量或.env文件中——参见.env.example)。只有您配置的提供商才会启用。
OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GEMINI_API_KEY=... # or GOOGLE_API_KEY
DEEPSEEK_API_KEY=... GROK_API_KEY=... QWEN_API_KEY=... KIMI_API_KEY=...
# Auto-pick the best available models for each session
pentestgpt-legacy
# Choose models per session
pentestgpt-legacy --reasoning-model claude-opus-4-8 --parsing-model gemini-3.5-flash
# Local model via Ollama (OpenAI-compatible)
pentestgpt-legacy --reasoning-model ollama:qwen3 --base-url http://localhost:11434/v1
# List every supported model (shows which providers are configured)
pentestgpt-legacy --list-models
# Live round-trip every configured model and print a pass/fail matrix
pentestgpt-legacy --smoke-test
pentestgpt-legacy --list-models 始终显示实时注册表。模型ID更改后请重新运行--smoke-test。当前快照:
注册表位于
pentestgpt_legacy/llm/registry.py(单一权威来源)。添加模型只需一条ModelSpec记录;兼容OpenAI的提供商复用同一个连接器。
PentestGPT收集匿名使用数据以帮助改进工具。这些数据会发送到我们的Langfuse项目,包括:
不收集任何敏感数据——命令输出、凭据或实际标志值绝不会被传输。
# Via command line flag
pentestgpt --target 10.10.11.234 --no-telemetry
# Via environment variable
export LANGFUSE_ENABLED=false
PentestGPT在2025年12月的XBOW验证套件实验中实现了86.5%的成功率(90/104个基准测试)。这是一个历史研究结果,不是当前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。
免责声明:此工具仅用于教育目的和授权安全测试。作者不纵容任何非法使用。请自行承担风险。
(回到顶部)
| 构建可分发包 |
| 提供商 | 当前模型 | 遗留(保留) | 环境变量键 |
|---|
| 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;设置MOONSHOT_BASE_URL 以使用.ai) |
| Local (Ollama) | ollama:<model> (如 ollama:qwen3) | — | 无 (OLLAMA_BASE_URL) |