PentestGPT 部署指南:完整上手 AI 驱动的自动化渗透测试工具
【免费下载链接】PentestGPTAutomated Penetration Testing Agentic Framework Powered by Large Language Models项目地址: https://gitcode.com/GitHub_Trending/pe/PentestGPT
手动渗透一个目标要多久?端口扫描、漏洞探测、payload 构造、报告撰写,一轮流程走下来半天起步。PentestGPT 把这套工作交给大语言模型(LLM):自动分析目标、调度安全工具、跑完整个渗透测试流程并输出结果。本文以 Docker 方式为例,说明如何从零部署这套 AI 渗透测试工具、接入本地模型,并实际跑起来。
认识 PentestGPT
一句话定位:由 LLM 驱动的自动化渗透测试代理框架(Automated Penetration Testing Agentic Framework)。
三条核心能力:
- 自动目标识别:分析目标系统类型,圈出潜在攻击面
- 实时进度跟踪:AI 处理挑战时,每一步操作可见
- 多类别挑战支持:Web 应用、密码学、逆向工程、取证分析、PWN、权限提升
适用场景:CTF 实战,以及真实环境中的授权渗透测试。
部署前 🧰 检查清单
| 检查项 | 要求 | 说明 |
|---|---|---|
| Docker | 已安装并运行 | 部署前提,未安装可执行下方官方脚本 |
| 内存 | ≥ 4 GB 可用 | 支撑 LLM 推理过程 |
| 网络 | 稳定连接 | 拉取镜像与调用 LLM API |
| LLM 接入:Anthropic | API 密钥 | 需提前申请密钥 |
| LLM 接入:Claude OAuth | OAuth 登录 | 前提是有可用的 Claude 订阅 |
| LLM 接入:OpenRouter | 替代模型 | 三选一即可 |
Docker 未安装时,Ubuntu/Debian 系统可用官方脚本装好并验证:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl start docker sudo systemctl enable docker docker --version docker run hello-world预期:hello-world容器运行并打印成功信息;若报 daemon 未启动,先sudo systemctl start docker。
从零到跑起来
获取代码
git clone --recurse-submodules https://gitcode.com/GitHub_Trending/pe/PentestGPT.git cd PentestGPT预期:本地生成PentestGPT目录,且基准测试子模块一并就位。
构建与配置
make install make config预期:make install构建出包含全部安全工具的 Docker 镜像;make config进入首次配置界面,让你选择 LLM 提供商并填写凭据。
连接容器
make connect预期:进入容器的交互式终端界面。
提示:
--recurse-submodules负责下载完整的基准测试套件。如果克隆时漏了它,执行git submodule update --init --recursive补齐。
第一次实测
在容器内跑一个基准测试样例,验证整条链路是否就绪:
cd benchmark/standalone-xbow-benchmark-runner python3 run_benchmarks.py --range 1-1 --pattern-flag判断标准:输出中出现了 flag 匹配结果,说明 LLM 连接、工具链、基准环境三者都通了;若报连接错误或工具缺失,直接翻到文末的常见坑一节。
架构拆解
项目采用模块化设计,三个核心模块分工如下:
- pentestgpt/core/:核心引擎,负责 AI 推理与任务调度
- pentestgpt/tools/:工具集成,预置各类安全测试工具
- pentestgpt/interface/:界面组件,提供用户交互体验
日常使用姿势
三种启动模式
pentestgpt --target 10.10.11.234 pentestgpt --target 10.10.11.100 --non-interactive pentestgpt --target 10.10.11.50 --instruction "WordPress站点,重点关注插件漏洞"分别对应:交互式 TUI(推荐)、非交互模式、带上下文的定向测试。
快捷键速查
| 按键 | 功能 |
|---|---|
F1 | 显示帮助信息 |
Ctrl+P | 暂停 / 恢复操作 |
Ctrl+Q | 退出程序 |
接入本地模型
先用make config选择本地模型,再启动本地 LLM 服务后重连容器:
make config # 配置界面选择选项 4:Local LLM # 本地 LLM 服务器启动完成后 make connect关键配置项都在 scripts/ccr-config-template.json 里:
localLLM.api_base_url:LLM 服务器地址,默认host.docker.internal:1234localLLM.models:服务器上可用的模型名称- 路由配置:指定不同模型处理特定操作
性能数据 ⚡ 说话
PentestGPT 在 104 个 XBOW 验证基准上的表现:
| 指标 | 数值 |
|---|---|
| 总用例 / 成功率 | 104 个用例 / 86.5% |
| 每成功一个的成本 | 平均 $1.11,中位数 $0.42 |
| 每成功一个的耗时 | 平均 6.1 分钟,中位数 3.3 分钟 |
| 难度级别 1 成功率 | 91.1% |
| 难度级别 2 成功率 | 74.5% |
| 难度级别 3 成功率 | 62.5% |
常用跑测命令(run_benchmarks.py):
python3 run_benchmarks.py --range 1-10 --pattern-flag python3 run_benchmarks.py --all --pattern-flag python3 run_benchmarks.py --retry-failed python3 run_benchmarks.py --dry-run --range 1-5常见坑 🩺 与解法
- 连接被拒绝怎么办?确认 LLM 服务器正在运行并监听配置的端口,再检查 Docker 网络配置;两项都正常仍失败时查日志(见下条)。
- 容器里能用
localhost访问宿主机服务吗?不能。从 Docker 访问宿主机要用host.docker.internal,这是本地模型连不上时最常见的误配。 - 想看详细日志?在容器内执行
cat /tmp/ccr.log即可。
首次使用建议从简单的 CTF 挑战入手,熟悉流程后再上真实目标;按实际测试需求选择目标,并给推理过程留足内存。PentestGPT 仅限用于授权的安全测试与教育目的,请始终针对有明确权限的目标运行,并遵守所在地区的法律法规。
【免费下载链接】PentestGPTAutomated Penetration Testing Agentic Framework Powered by Large Language Models项目地址: https://gitcode.com/GitHub_Trending/pe/PentestGPT
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考