PentestGPT:基于LLM的智能渗透测试工具项目

Automated Penetration Testing Agentic Framework Powered by Large Language Models

分支24Tags11
文件最后提交记录最后更新时间
1 个月前
1 个月前
1 个月前
1 个月前
2 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
7 个月前
1 个月前
1 个月前
1 个月前
3 年前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前

贡献者 分支数 星标数 问题数 MIT 许可证 Discord


PentestGPT

人工智能驱动的自主渗透测试代理
发表于 USENIX Security 2024

官方网站:pentestgpt.com »

研究论文 · 报告漏洞 · 请求功能

GreyDGL%2FPentestGPT | Trendshift


演示

安装

安装演示

在 YouTube 上观看

PentestGPT 实际应用

PentestGPT 演示

在 YouTube 上观看


v1.0(智能代理升级)新特性

  • 多阶段工作流 - 代理按阶段执行任务(CTF 场景:信息收集 → 漏洞利用 → 渗透报告;渗透测试场景:资产发现 → 漏洞识别 → 报告生成),每个阶段的成果将作为下一阶段的输入。
  • 自主代理 - 驱动 Claude Code 或 Codex 运行工具并进行推理,无需人工干预。
  • 会话持久化 - 保存和恢复渗透测试会话。

自主 CTF 工作流支持后端接入 Claude Code 和 Codex。交互式现代化 legacy模式(pentestgpt-legacy)支持更多提供商:OpenAI、Anthropic、Google Gemini、DeepSeek、xAI、Qwen、Moonshot 以及本地 Ollama。详见交互式多 LLM 模式


功能特点

  • AI驱动的挑战解决器 - 利用LLM的高级推理能力执行渗透测试和CTF竞赛
  • 实时操作演示 - 在智能体解决挑战的过程中实时跟踪步骤
  • 多类别支持 - Web、密码学、逆向工程、取证分析、PWN、权限提升
  • 实时反馈 - 通过实时活动更新观察AI的工作过程
  • 可扩展架构 - 简洁的模块化设计,为未来增强功能做好准备

快速开始

前提条件

  • Python 3.12+
  • uv - Python包管理器
  • Claude Code CLI (claude) - 已安装并通过身份验证,用于本地Claude运行。参见Claude Code文档
  • Codex CLI (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场景下为侦察→漏洞利用→通关指南,渗透测试场景下为资产发现→漏洞识别→报告生成。

在Docker中运行(安装一次,登录一次)

一个独立的镜像捆绑了工具 + Claude Code Codex 命令行界面。您只需登录一次,会话便会保存在命名卷中——后续运行无需重新登录。

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 将令牌存储在卷中)和 Codex(通过容器内自带的 codex login 命令,OAuth 回调通过 socat 转发——由于 ChatGPT 刷新令牌为一次性使用,因此不进行预配置)。该命令具有幂等性:重新运行时会跳过仍然有效的登录步骤。登录状态在容器重建后仍然保留;make docker-down 会保留登录状态,make docker-nuke 则会删除登录卷(以强制重新登录或轮换令牌)。设计与详细信息:docs/docker-dev-plan.md


交互式多LLM模式(现代化的旧版本)

USENIX 2024 论文中经典的、人机协作的 PentestGPT 被保留下来,并作为 pentestgpt-legacy 进行了现代化处理。它运行三个协作的 LLM 会话——推理/生成/解析——在您通过交互方式(nextmoretododiscuss)驱动会话时,维护一个渗透测试任务树(PTT)。自主固定阶段的流水线支持 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

支持的模型(2026年6月网络验证)

pentestgpt-legacy --list-models 始终会显示最新的注册表。当模型ID发生变化后,请重新运行 --smoke-test。当前快照:

提供商 当前模型 保留的旧模型 环境变量键
OpenAI gpt-5.5gpt-5.5-progpt-5.4-minigpt-5.4-nanogpt-5.2gpt-5.3-codex gpt-4ogpt-4o-minio3o4-mini OPENAI_API_KEY
Anthropic claude-opus-4-8claude-sonnet-4-6claude-haiku-4-5-20251001 ANTHROPIC_API_KEY
Google Gemini gemini-3.1-progemini-3.5-flashgemini-3-progemini-3.1-flash-lite gemini-2.5-progemini-2.5-flash GEMINI_API_KEY / GOOGLE_API_KEY
DeepSeek deepseek-v4-flashdeepseek-v4-pro deepseek-chatdeepseek-reasoner DEEPSEEK_API_KEY
xAI Grok grok-4.3 GROK_API_KEY / XAI_API_KEY
Alibaba Qwen qwen3.7-maxqwen3.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 无(OLLAMA_BASE_URL

注册表位于 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

基准测试历史

在2025年12月的XBOW验证套件实验中,PentestGPT取得了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

免责声明:本工具仅用于教育目的和获得授权的安全测试。作者不鼓励任何非法使用行为。使用本工具的风险由使用者自行承担。


致谢

(返回顶部)

项目介绍

一款搭载GPT技术的渗透测试工具【此简介由AI生成】

定制我的领域
35715.16 K2.64 K访问 GitHub