基于 AI Agent 的渗透测试自动化框架,严格遵循 PTES(Penetration Testing Execution Standard) 标准,覆盖渗透测试全生命周期。
Agent 通过 subagent chain 编排 8 个 PTES 阶段(Phase 1 拆为扫描 + Web 预检),每个阶段有独立的干净上下文,阶段间通过 manifest 文件传递产出清单。
- macOS / Linux
- Pi coding agent(
pi --help) - Docker(可选,仅当宿主机不是 Kali 时需要)
cd pentester
pi在 AI 对话中告知目标即可:
对 192.168.1.100 做渗透测试
# 或
测试 http://target.com
用户输入目标
↓
Phase 0 (Pre-engagement) — 初始化目录、创建容器、确认授权
↓ ← manifest-phase-0.md
Phase 1a (扫描 + OSINT) — nmap 全端口、UDP、DNS、被动 OSINT
↓ ← manifest-phase-1.md
Phase 1b (Web 预检) — Playwright 截图 + 功能地图 + src-hunter 漏洞预检
↓ ← manifest-phase-1-web.md
Phase 2 (Threat Modeling) — STRIDE 威胁建模(读两份 manifest)
↓ ← manifest-phase-2.md
Phase 3 (Vulnerability Analysis) — src-hunter playbook 深度测试 + CVSS
↓ ← manifest-phase-3.md
Phase 4 (Exploitation) — Playwright PoC 执行 + 截图取证
↓ ← manifest-phase-4.md
Phase 5 (Post Exploitation) — 提权、横向移动、凭证收集
↓ ← manifest-phase-5.md
Phase 6 (Reporting) — 按 REPORT-TEMPLATE.md 生成报告
↓ ← manifest-phase-6.md
生成报告 ✅
URL 目标快捷路径:目标为 http://... 或 https://... 时,跳过 Phase 0,直接从 Phase 1 开始。
| 模式 | 适用场景 | 说明 |
|---|---|---|
| 宿主机已是 Kali | 本地测试 | Agent 直接在宿主机执行命令 |
| macOS + Docker | 推荐 | Agent 自动创建 kali-target-${IP} 容器,工具在容器内运行 |
| 交互式容器 | 手动操作 | docker compose up -d → docker exec -it pentester-kali bash |
| 命令 | 用途 |
|---|---|
/pentester:gen-report |
强制生成渗透测试报告 |
/pentester:update-solution |
将 target/${IP}/solutions.md 合并到全局知识库 |
/pentester:knowledge-base |
查询/创建/更新/整理知识库 |
/pentester:init-target |
初始化目标目录与 Docker 容器 |
/pentester:enum-services |
执行服务枚举 |
/pentester:mcp |
发现和调用 MCP 工具 |
/playwright |
Playwright 浏览器自动化(URL 目标时自动触发) |
/run-chain ptes <target> |
手动启动 PTES 编排链 |
/skill:setup-pentester-tools |
初始化 Playwright、Docker、Pi skill 引用等依赖 |
框架同时支持三种 AI agent,共享同一份 .pentester/skills/ 技能库:
| Agent | 入口文件 | Skills 位置 |
|---|---|---|
| Pi | AGENTS.md |
.pentester/skills/(通过 .pi/settings.json 引用) |
| Codex CLI | AGENTS.md |
.codex/skills/ → 符号链接 |
| Claude Code | CLAUDE.md |
.claude/skills/ → 符号链接 |
启动方式取决于你用哪个 agent:
cd pentester && pi # Pi
cd pentester && codex # Codex CLI
cd pentester && claude # Claude CodePlaywright 在链中 3 个位置有不同的角色,不只是截图工具:
| Phase | Agent | Playwright 用途 |
|---|---|---|
| 1b | ptes-web-pretest |
截图 → 功能地图 → 读 src-hunter playbook → fill+click 预检 XSS/SQLi/IDOR → 截图 PoC |
| 3 | ptes-vulnerability-analysis |
手动验证漏洞时,Playwright 注入 payload、触发 PoC、截图证据 |
| 4 | ptes-exploitation |
利用成功后,Playwright 执行 CSRF/XSS 等 Web 类 EXP → 截图 shell 证明 |
触发条件:发现任何 Web 端口(80/443/8080/8443/3000/5000 等)即自动调用。不管目标是不是 SPA,只要 Web 就用 Playwright。
src-hunter-skill 作为 playbook 库集成在框架中,提供:
- 19 类攻击 playbook — XSS、SQLi、SSRF、RCE、IDOR、CSRF、逻辑漏洞等,每类附真实 HackerOne 案例
- 305 个结构化 payload — 直接可用的测试向量
- 263 个 WAF/EDR 绕过变体 — 被拦截时参考
- 2,887 份 H1 High/Critical 案例 — 真实漏洞验证参考
- 国产组件指纹 + 默认凭据库 — 用友、致远、泛微、海康威视等
src-hunter 的方法论已融入 PTES 阶段(Phase 0 scope 格式、Phase 1 OSINT 工具链、Phase 1 指纹→字典查询、Phase 3 playbook 深度测试)。不执行 src-hunter 自带的 5 阶段流程,流程由 PTES chain 驱动。
安装位置:.pentester/skills/src-hunter/
pentester/
├── AGENTS.md # 项目编排入口(框架图、技能表、chain 引用)
├── ROLE.md # Agent 身份、交互规则、容器环境、合规安全
├── CONTEXT.md # 领域术语表
├── README.md # 本文档
│
├── .pentester/
│ ├── PTES.md # 7 阶段路由表 + 过渡检查清单
│ ├── REPORT-TEMPLATE.md # 报告模板
│ ├── target-schema.md # target/${IP}/ 目录结构契约
│ ├── validate-target-schema.js # 目录结构校验脚本
│ │
│ ├── sections/ # 阶段参考语料(命令模板 + 判断标准)
│ │ ├── 00-Pre-engagement.md ~ 06-Reporting.md
│ │
│ ├── skills/ # 可调用技能
│ │ ├── gen-report / knowledge-base / init-target / enum-services
│ │ ├── update-solution / mcp-manager / playwright-skill
│ │ └── src-hunter/ # SRC 漏洞挖掘 playbook 库
│ │
│ ├── knowledge/ # 可复用知识库(12,000+ 条目)
│ │ ├── INDEX.md # 全量索引
│ │ ├── PTES-INDEX.md # 按 PTES 阶段聚合(自动维护)
│ │ ├── TAGS.md # 标签索引
│ │ ├── github-references/ # 产品漏洞知识库(765 产品)
│ │ └── vuln-analysis/ exploitation/ post-exploitation/ recon/ ...
│ │
│ └── mcp/ # MCP 工具注册表
│
├── .pi/ # subagent 编排
│ ├── agents/ # 8 个 PTES 阶段 agent
│ │ ├── ptes-pre-engagement.md
│ │ ├── ptes-intelligence.md # Phase 1a: 扫描 + OSINT
│ │ ├── ptes-web-pretest.md # Phase 1b: Playwright + src-hunter
│ │ ├── ptes-threat-modeling.md
│ │ ├── ptes-vulnerability-analysis.md
│ │ ├── ptes-exploitation.md
│ │ ├── ptes-post-exploitation.md
│ │ └── ptes-reporting.md
│ └── chains/
│ └── ptes.chain.json # 8 步编排链
│
├── docs/adr/
│ └── 0001-subagent-chain.md # 架构决策记录
│
└── wordlists/ # 字典(Agent 优先使用)
Phase N → 写 target/${IP}/ 目录 → 写 manifest-phase-N.md
↓
Phase N+1 → 读 manifest-phase-(N-1).md → 按清单读文件 → 执行
特殊: Phase 2 同时读 manifest-1 + manifest-1-web
Phase 3 同时读 manifest-2 + manifest-1-web
# 校验目标目录结构
node .pentester/validate-target-schema.js 192.168.1.100
# 手动启动 subagent chain
pi# subagent({ chainName: "ptes", task: "IP:192.168.1.100" })
# 单独跑某个阶段
pi# subagent({ agent: "ptes-intelligence", task: "IP:192.168.1.100" })
# 安装 Playwright 浏览器自动化
cd .pentester/skills/playwright-skill && npm run setup && cd ../..- 所有测试操作在 Docker 容器内执行,不影响宿主机
- 高风险操作需要用户确认
- Long-running 操作(字典、爆破、fuzz)不设 timeout
- Playwright 运行在宿主机上(非容器内),含 GUI 依赖
- 知识库索引由
knowledge-baseskill 自动维护 - src-hunter 仅作 playbook 库,不执行其自带流程