0xSteph/pentest-ai · 上手攻略
- 仓库:0xSteph/pentest-ai
- 链接:https://github.com/0xSteph/pentest-ai
- 分类:安全工具 · AI 渗透测试 · MCP
- 作者:Tom
- 更新:2026-07-18
这是什么
pentest-ai(CLI 入口 ptai)是一个 AI 驱动的渗透测试框架。核心创新不是"发现更多漏洞",而是每个漏洞都必须被机器 Oracle 重复验证才能进入最终报告。思路借鉴 TruffleHog:TruffleHog 发现泄露密钥后实际登录验证,ptai 发现 Web 漏洞后实际重新触发一遍。一个 finding 停留在"候选"状态,直到 Oracle 对目标重放成功 N 次,才标记为 VERIFIED——假阳性在 Oracle 层被直接过滤,不进报告,不浪费分析师的时间。
这与传统 AI 渗透工具的逻辑恰好相反:大多数工具追求高检出率,代价是假阳性爆炸;ptai 追求高精度,代价是验证覆盖率受探针库限制。官方认为这是一个正确的取舍——"假阳性训练团队忽略工具"比"漏报"更伤害安全团队。
官方基准数据(均可自行 replay 验证): - OWASP Juice Shop(标准靶场):单次扫描 12 个 VERIFIED,100% 精度,零假阳性 - 自建 Honeypot(含人工植入漏洞):23 个 VERIFIED,跨越 14 个漏洞类,100% 精度 - 覆盖:205+ 工具封装,60+ SPA 感知探针,17 个专项 Agent,MIT 协议,本地运行,无遥测数据外发
解决什么问题
安全团队在实际渗透测试中面临三个常见痛点,ptai 分别对应解决:
痛点一:扫描器噪音导致警报疲劳。nuclei、nikto、ZAP 这些扫描器输出几十上百条 findings,分析师逐条判断真假,效率低下。ptai 把所有第三方扫描器输出按住,直到 Oracle 验证成功才放行,最终报告只呈现经过机器证明的高置信度发现。
痛点二:认证劫持和多步攻击链难以自动化。大多数扫描工具遇到登录页就卡住。ptai 内置会话维持机制,持有登录 Cookie 并在工具链中向下传递;同时维护 Findings 数据库,支持多步攻击链分析(IDOR → 提权 → RCE)。
痛点三:内网隔离和离线环境无法使用云端 LLM。ptai 支持 Ollama 完全离线运行,也支持接入任何 OpenAI 兼容端点(DeepSeek、Groq、Together AI、vLLM 等),不绑定任何云服务商的密钥体系。
快速安装
pip install ptai
Python ≥ 3.10。无需 API Key 即可运行(MCP 路径使用 Claude 订阅,Ollama 路径完全免费)。
核心用法
路径一:MCP 集成(Claude Code 用户,零额外配置)
MCP 是 ptai 最推荐的用法。Claude Code(Pro/Max/Team 订阅)用户不需要任何 API Key,ptai 通过 MCP 协议调用你的 Anthropic 订阅:
# 添加 MCP Server
claude mcp add pentest-ai -- ptai mcp
# 重启 Claude Code,然后直接对话:
# "Run an authenticated pentest against staging.acme.com.
# Login page is at /login, credentials in $APP_PASS."
ptai 提供 47 个 MCP 工具对 LLM 可见:
- list_tools / run_tool:列出并调用 200+ 封装安全工具
- list_probes / run_probe:运行 60+ SPA 感知探针,覆盖 OWASP Top 10
- http_request:原始 HTTP 请求,在严格 scope 保护下发送
- start_engagement / get_findings / get_attack_chains:Engagement 生命周期管理
- test_web_app / test_api_security / test_active_directory / test_cloud:专项测试入口
其他 MCP 客户端(Claude Desktop、Cursor、Codex):
ptai setup --mcp
# 自动检测本机已安装的 MCP 客户端,写入对应配置文件
MCP 路径不消耗
PTAI_PRICE_LIMIT费用上限,计费由 Claude Code 等客户端自行处理。
路径二:独立 CLI(自带 LLM 编排)
这个路径需要自备 LLM,支持四种方式,优先级从高到低:
A. Anthropic Claude(推荐,效果最好)
export ANTHROPIC_API_KEY=sk-ant-...
ptai start https://target.com
# 默认模型 claude-sonnet-4-20250514
# 指定模型:export PENTEST_AI_MODEL=claude-opus-4-5
B. OpenAI 或 OpenAI 兼容端点(DeepSeek / Groq / Together AI / vLLM / LM Studio)
# 真实 OpenAI
export OPENAI_API_KEY=sk-...
# 第三方 OpenAI 兼容端点(必须设置 BASE_URL + MODEL)
export OPENAI_API_KEY=<your-deepseek-key>
export OPENAI_BASE_URL=https://api.deepseek.com/v1
export PENTEST_AI_MODEL=deepseek-chat # 必须指定,第三方默认 gpt-4o 会 404
# Groq 示例
export OPENAI_BASE_URL=https://api.groq.com/openai/v1
export PENTEST_AI_MODEL=llama-3.3-70b-versatile
# 本地 vLLM / LM Studio
export OPENAI_BASE_URL=http://localhost:8080/v1
export PENTEST_AI_MODEL=<your-server-model-name>
C. Ollama(完全本地,免费)
# 确保 Ollama 已运行(默认 localhost:11434)
ollama serve
ollama pull llama3 # 拉取模型
export PENTEST_AI_LLM_PROVIDER=ollama
export PENTEST_AI_MODEL=llama3
ptai start https://target.com
D. LiteLLM(300+ 模型任意选)
pip install litellm
export PENTEST_AI_LLM_PROVIDER=deepseek # 或 groq / together / azure / openrouter
export OPENAI_API_KEY=<对应key>
费用上限(独立 CLI 路径):默认 $10 USD / engagement,深度扫描 Opus 4.7 模型可能超出。
export PTAI_PRICE_LIMIT=25 # 调高上限
ptai start https://target.com
# 若上限触发,状态标记为 aborted_cost_limit,检查点保留
ptai resume <engagement_id> # 调高后恢复
路径三:REST API
pip install "ptai[api]"
ptai serve --port 8888
# GET /health, /version, /agents, /tools
# POST /engagements → 启动新扫描
# GET /engagements/{id} → 扫描详情
# GET /engagements/{id}/findings
# GET /engagements/{id}/chains
# WS /engagements/{id}/stream # 实时事件流
# 写入端点(POST /engagements 等)需要 Authorization: Bearer $PENTEST_AI_API_TOKEN
零目标演示(2 分钟体验,无需任何目标)
ptai demo
演示流程:扫描内置靶场,报告 4 findings → 4 个全部 oracle-VERIFIED → replay 其中一个证明胶囊(3/3 重放成功)→ 扫描同一靶场的加固版本 → 0 findings。Findings 随漏洞存在/消失,证明验证机制真实有效,而非工具沉默。
工具封装与安装策略
ptai 封装了 205+ 安全工具,涵盖:nmap、sqlmap、nikto、nuclei、ZAP、dirb、ffuf、dalfox、wpscan、paramspider 等。
安装方式分三级:
# 按需安装(推荐):LLM 预测需要哪些工具,一次性提示安装
ptai start https://target.com
# 批量安装
ptai setup --tier core # ~6 核心工具,约 30 秒
ptai setup --tier recommended # + fuzzers、crawlers、密码工具,约 5 分钟
ptai setup --tier full # 全部,约 30 分钟
# 指定工具
ptai setup --per-tool wpscan,dalfox,paramspider
ptai setup --wizard # 交互式选择器
结果验证与 CI 集成
ptai findings <engagement_id> # 列出所有 findings 及状态
ptai replay <finding_id> # TUI 重放攻击步骤,VERIFIED 状态实时翻转
# CI 门禁:只在发现 VERIFIED findings 时失败构建
ptai start https://target.com --fail-on verified
# 导出格式
ptai export --format sarif <engagement_id> # GitHub SAST 兼容
ptai export --format junit <engagement_id> # JUnit XML
Oracle 验证覆盖的 14 个漏洞类
每个 Oracle 类均内置 safe-target 控制测试:如果目标无此漏洞,Oracle 主动放弃而非假阳性通过。
| # | 漏洞类 | 说明 |
|---|---|---|
| 1 | SQLi (Boolean/Blind) | 布尔盲注,基于响应差异判断 |
| 2 | SQLi Login-Bypass | SQL 注入绕过认证 |
| 3 | BOLA / IDOR | 越权读写,跨用户资源访问 |
| 4 | Reflected XSS | 反射型 XSS,输入反射在响应中 |
| 5 | Stored XSS | 存储型 XSS,持久化在服务端 |
| 6 | Open Redirect | 开放重定向,可控 URL 参数 |
| 7 | Path Traversal | 路径穿越,文件读取 |
| 8 | XXE | XML 外部实体,/etc/passwd 泄露 |
| 9 | JWT alg:none | JWT 算法设为 none,允许伪造令牌 |
| 10 | Host Header Poisoning | 主机头注入,可修改 Host 首部 |
| 11 | Trusted-Header Bypass | 可信头绕过(如 X-Forwarded-For) |
| 12 | Type Confusion | 类型混淆,不同数据类型处理错误 |
| 13 | Sequential IDOR | 顺序 ID 枚举越权 |
| 14 | Mass Assignment | 批量赋值,参数绑定到禁止字段 |
| 15 | Non-Blind SSRF | 非盲 SSRF,可从响应中观察结果 |
探针库还检测更多漏洞(SQLi UNION、Auth-Bypass 等),但仅通过 Oracle 验证的 finding 才进入最终报告。
典型使用场景
| 场景 | 推荐用法 |
|---|---|
| 授权 Web 应用渗透测试 | ptai start https://target --auth-profile login,自动维持会话,Cookie 向下传递 |
| CI/CD 安全门禁 | ptai start $TARGET --fail-on verified + SARIF 导入 GitHub Security tab |
| Bug Bounty 快速侦察 | MCP 模式 Claude Code 对话:"Recon this domain, find all interesting endpoints" |
| 内网隔离环境渗透 | Ollama 路径,PENTEST_AI_LLM_PROVIDER=ollama,完全离线 |
| 客户交付报告 | 只提交 VERIFIED findings,每个均含 proof capsule 可 replay |
| 红队评估 | ptai demo 演示 Oracle 验证流程,建立客户信任 |
坑与注意
-
Oracle 验证会真实发包:ptai 在目标上实际触发漏洞做验证,不只是读扫描结果。必须在书面授权范围内使用,项目明确要求接受 AUP(可接受使用政策)。
-
Ollama 端口和环境变量:默认
localhost:11434,远程 Ollama 实例用OLLAMA_HOST环境变量覆盖,如export OLLAMA_HOST=http://your-ollama-server:11434。 -
本地模型质量影响 LLM 编排层:Oracle 验证是确定性算法,不依赖 LLM;但攻击链规划、多步推理、报告生成依赖 LLM 的能力。Llama3 70B vs Sonnet 4 在复杂多步场景有明显差距,有条件优先使用 Claude。
-
费用上限仅对独立 CLI 生效:MCP 路径由 Claude Code 等客户端自行计费,
PTAI_PRICE_LIMIT在该路径下无效。 -
默认 $10 上限可能不足:使用 Opus 4.7 等大模型进行深度扫描时,建议
export PTAI_PRICE_LIMIT=25或更高。 -
--no-llm纯探针模式:跳过 LLM 编排,只运行确定性探针,结果不进入 VERIFIED 报告流程。 -
Scope Safety 机制:sqlmap、dalfox 等主动工具被主机锁定在 engagement 范围内,不会对爬取到的第三方 URL 发包。内网测试时请注意 DNS 解析范围。
与同类工具对比
| 工具 | Oracle 验证机制 | MCP 支持 | 假阳性控制 | 本地离线 |
|---|---|---|---|---|
| pentest-ai | ✅ 14 类机器 Oracle | ✅ MCP Server | ✅ VERIFIED 严格机制 | ✅ Ollama |
| nuclei / nikto | ❌ 无验证 | ❌ | ❌ | ✅ |
| Burp Suite Pro + MCP | ❌ 无 Oracle | ✅ MCP 可用 | ❌ 依赖人工判断 | ❌ |
| OWASP ZAP | ❌ 无验证 | ⚠️ MCP 插件 | ❌ | ✅ |
| HexStrike | ⚠️ 检测,非 Oracle 验证 | ✅ MCP | ⚠️ | ✅ |
| Pentest-Tools.com AI | ❌ 无 Oracle | ❌ | ⚠️ | ❌ |
核心差异在于 Oracle 验证是 ptai 独有的机制。传统工具追求检出率,用人工判断过滤假阳性;ptai 用确定性机器重放替代人工判断,从根本上消除假阳性进入报告的可能性。
一句话推荐结论
授权渗透测试场景下,如果你最头疼假阳性噪音导致团队对工具失去信任、或者客户质疑报告可信度,pentest-ai 的 Oracle 验证机制是当前开源领域里把"每个发现都机器重跑一遍"做得最彻底的方案——报告里每一个 VERIFIED 都附带 proof capsule,可以当场 replay 给客户看。
数据来源:项目 README、docs/llm-providers.md(github.com/0xSteph/pentest-ai),2026-07-18 访问验证。所有用法仅限书面授权的渗透测试环境。