基于 AI Agent 的渗透测试自动化框架,严格遵循 PTES(Penetration Testing Execution Standard) 标准,覆盖渗透测试全生命周期。Agent 自动拉起 Kali Linux 容器,按阶段规范完成信息收集、漏洞分析、漏洞利用、后渗透和报告生成。
- macOS / Linux
- pi coding agent(已安装:
pi --help) - Docker
如果宿主机本身就是 Kali Linux,无需容器,直接启动 Agent:
cd pentester
piAgent 会在本地直接执行渗透测试工具。
宿主机不是 Kali 时,pi 自动使用 Docker 容器执行测试命令:
cd pentester
pipi 会自动拉起 Docker 容器,所有工具在容器内运行,target/ 数据直接写到宿主机。首次启动会构建镜像(约需 5-10 分钟)。
docker compose up -d # 后台启动容器
docker exec -it pentester-kali bash # 进入容器 shell容器内已预装 nmap、masscan、gobuster、ffuf、sqlmap、metasploit-framework 等全套工具,可直接执行渗透测试命令。
一般情况下无需手动触发,Agent 按流程自动调用。特殊场景可用:
| 命令 | 用途 |
|---|---|
/pentester:gen-report |
强制生成报告 |
/pentester:update-solution |
手动合并方案至知识库 |
/pentester:knowledge-base |
查询/创建/更新/整理知识库 |
/pentester:init-target |
初始化目标目录与容器 |
/pentester:enum-services |
执行服务枚举 |
/pentester:mcp |
手动调用 MCP 工具 |
/obscura-cdp |
无头浏览器自动化(SPA/复杂前端页面分析) |
| 规则 | 说明 |
|---|---|
| 一问一答 | 每次只问一个问题,带编号选项(1. 2. 3. ... N. ... 自定义输入) |
| 阶段内并行 | 同 PTES 阶段独立操作(TCP+UDP 扫描、Web+SMB+DNS 枚举)自动派发多 sub-agent 并行执行 |
| 长任务不超时 | 字典攻击、爆破、模糊测试等长时间操作不设默认 timeout,等跑完或报错;>10 分钟无输出才上报 |
mise(/miːz/) 源自法语 mise en place("把一切放在该放的位置"),是一种厨师备餐哲学——在开始烹饪之前,刀具磨好、洋葱切好、高汤热好、操作台整洁。mise 把同样的哲学带到开发环境中:在写代码之前,把工具版本、环境变量、项目任务都准备就绪。
镜像已预装 mise(https://mise.jdx.dev),用于统一管理语言运行时和工具链。`mise.toml` 位于项目根目录。
涉及语言运行时,优先使用 mise 管理的版本 + 虚拟环境:
| 语言 | 操作 |
|---|---|
| Python | mise use python@3.12 → python -m venv .venv → source .venv/bin/activate → pip install -r requirements.txt |
| Node.js | mise use node@22 → npm install |
| Rust | mise use rust@stable → cargo build |
| Go | mise use go@1.22 → go build |
| Java | mise use java@21 → mvn compile |
编译 Rust/Go/C 扩展、npm C++ addon、Python C extension 时:
mise use <tool>@<version>确保正确编译工具链- 编译依赖(gcc、make、pkg-config、libssl-dev)已通过
build-essential提供 cmake等编译工具也可用mise use cmake@latest管理- 工具链版本问题 → 先检查 mise 配置
docker exec kali-target-${IP} mise use node@22
docker exec kali-target-${IP} mise x python@3.12 -- script.py
docker exec kali-target-${IP} mise run build完整参考:.pentester/knowledge/tooling/mise-dev-tools.md
对于 SPA(React/Vue/Angular)、前后端分离、复杂页面(重 JS、反爬、多步骤交互)等需渲染的场景,Agent 自动使用 obscura-cdp skill 启动轻量无头浏览器进行页面分析,替代传统的 curl/whatweb 静态抓取。
| 场景 | 动作 |
|---|---|
| 复杂页面初次访问 | check <url> 判断兼容性 → md <url> 获取结构化 Markdown |
| SPA / 重 JS 页面 | eval <target> "JSON.stringify(window.__INITIAL_STATE__)" 提取客户端状态 |
| 表单测试(XSS/SQLi) | fill + click 模拟用户填表提交 |
| 认证后页面分析 | nav 跳转到登录页 → fill 输入凭据 → click 登录 → md 查看仪表盘 |
| 无限滚动/分页 | loadall <target> ".load-more" 加载全部内容 |
# 检查站点兼容性(所有 SPA 第一步)
pi@skills/obscura-cdp/scripts/obscura-cdp.mjs check https://target.com
# 获取页面结构化 Markdown
pi@skills/obscura-cdp/scripts/obscura-cdp.mjs md https://target.com
# 获取原始 DOM
pi@skills/obscura-cdp/scripts/obscura-cdp.mjs html https://target.com
# 执行 JS 取客户端数据
pi@skills/obscura-cdp/scripts/obscura-cdp.mjs eval https://target.com "document.title"完整参考:skills/obscura-cdp/SKILL.md
pentester/ # 项目根目录
├── README.md # 项目说明(当前文件)
├── README_EN.md # English version
├── AGENTS.md # Agent 框架规则
├── mise.toml # Mise 配置(Dev tool & version manager)
├── LICENSE # MIT License
├── Makefile # 构建/运行/测试目标
├── Dockerfile # Kali 容器镜像定义(预装工具链 + mise)
├── docker-compose.yml # Kali 容器编排
├── pi # 启动入口脚本
├── examples/ # 示例与用法
├── .pentester/ # 框架核心
│ ├── ROLE.md # Agent 角色与行为规则
│ ├── PTES.md # 7 阶段路由表 + 切换检查清单
│ ├── REPORT-TEMPLATE.md # 报告模板
│ ├── PTES-GuideLine.md # PTES 技术参考(369KB)
│ ├── sections/ # 各阶段详细流程
│ │ ├── 00-Pre-engagement.md
│ │ ├── 01-Intelligence Gathering.md
│ │ ├── 02-Threat Modeling.md
│ │ ├── 03-Vulnerability Analysis.md
│ │ ├── 04-Exploitation.md
│ │ ├── 05-Post Exploitation.md
│ │ └── 06-Reporting.md
│ ├── skills/ # 可调用技能
│ │ ├── gen-report/ # 报告生成(含 6 维检查清单)
│ │ ├── knowledge-base/ # 知识库管理(查/增/改/整理/提炼)
│ │ ├── init-target/ # 目标初始化(目录+容器)
│ │ ├── enum-services/ # 服务枚举
│ │ ├── update-solution/ # 方案沉淀(去重合并)
│ │ └── mcp-manager/ # MCP 工具发现与调用
│ ├── knowledge/ # 可复用知识库
│ │ ├── README.md # 知识库规范(中文)
│ │ ├── README_EN.md # 知识库规范(English)
│ │ ├── INDEX.md # 主索引
│ │ ├── TEMPLATE.md # 新条目模板
│ │ ├── PTES-INDEX.md # 按 PTES 阶段聚合
│ │ ├── TAGS.md # 标签索引
│ │ ├── DIRECTORIES.md # 目录说明
│ │ ├── recon/ # 信息收集方法
│ │ ├── vuln-analysis/ # 漏洞分析专题
│ │ │ └── topics/ # SQL注入、SSRF、XXE、SSTI、文件上传等
│ │ ├── exploitation/ # 利用方法
│ │ ├── post-exploitation/ # 后渗透
│ │ ├── tooling/ # 工具/字典/资料导航
│ │ │ └── mise-dev-tools.md # Mise 使用手册
│ │ ├── reporting/ # 报告模板
│ │ │ └── templates/ # 各漏洞类型模板
│ │ ├── defensive/ # 防御/应急
│ │ ├── ctf-lab/ # CTF/靶场/训练
│ │ ├── github-references/ # P0/P1 仓库原文(101MB,离线可用)
│ │ ├── refined-corpus/ # 精炼专题桶(29 桶,24MB)
│ │ └── deep-refined-corpus/ # 深度去重聚类(174K 聚类,77MB)
│ ├── wordlists/ # Fuzz/爆破字典(Agent 优先使用)
│ │ └── PentesterSpecialDict/ # 专项字典集(来自 evilc0deooo/PentesterSpecialDict)
│ │ ├── sql-injection/ # SQL注入 payload
│ │ ├── xss-attacks/ # XSS payload
│ │ ├── ssrf-attacks/ # SSRF payload
│ │ ├── ssti-attacks/ # SSTI payload
│ │ ├── web-directory-attacks/ # 目录/文件/参数枚举
│ │ ├── password-attacks/ # 密码字典
│ │ ├── dns-wordlist/ # 子域名枚举
│ │ └── ...
│ ├── mcp/ # MCP 工具注册表
│ │ ├── README.md
│ │ └── INDEX.md
│ ├── solutions.md # 累积解决方案库
│ └── _archive/ # 历史归档
| 时机 | 动作 |
|---|---|
| 阶段开始前 | 查 PTES-INDEX.md 获取方法论 + mcp/INDEX.md 获取可用工具 |
| 阶段执行中 | 同阶段独立任务并行派发 sub-agent;按 sections/ 对应阶段文件操作 |
| 阶段结束后 | 执行 PTES.md 的 Phase Transition Checklist(8 项) |
| Checklist 通过 | 进入下一阶段 |
| Checklist 未通过 | 修正后重试 |
Agent 在每个阶段开始前会根据上一阶段产出定向查询:
| 当前阶段 | 查什么 | 驱动因素 |
|---|---|---|
| Intelligence Gathering | PTES-INDEX.md IG 条目 | 初始目标 |
| Threat Modeling | PTES-INDEX.md TM 条目 | IG 发现的端口/服务 |
| Vulnerability Analysis | PTES-INDEX.md + topics/ 专题 | TM 标注的资产类型 |
| Exploitation | deep-refined-corpus/ 对应聚类 | VA 确认的 CVE/漏洞类型 |
| Post Exploitation | 提权/AD 聚类 | 已获权限级别 |
| Reporting | REPORT-TEMPLATE.md + templates/ | 全部已有数据 |
生成报告后必须执行 6 维度 24 项检查:
- 结构完整性 — 9 章齐全,附录完整
- 内容填充 — 零占位符,日期已替换
- 数据一致性 — CVSS × 严重程度 × 修复时限 一致
- 证据路径 — 截图存在,PoC 格式正确
- 修复建议 — 具体可操作,优先级矩阵填写
- 合规脱敏 — 敏感数据脱敏,授权边界不越界
未通过必须修正后重新生成。
| 指标 | 优化前 | 优化后 |
|---|---|---|
| 原始导入体积 | 1.9 GB | 101 MB(P0/P1 仓库) |
| Git 对象 | 566 MB | 936 KB |
| 知识库总量 | >2.5 GB | 206 MB |
| INDEX.md 覆盖 | 残缺 | 285 条,missing: 0 |
| TAGS.md | 8 标签 | 30+ 标签全覆盖 |
| PTES-INDEX.md | 仅精华入口 | 7 阶段全部关联 |
| Agent 自动查询 | 无 | 3 链路完整 |
- 所有测试操作在 Docker 容器内执行,不影响宿主机
- 高风险操作(写文件、命令执行、端口扫描大范围)需要用户确认
- 原始 GitHub 资料全量备份在
/Volumes/External HD/References/github - 精炼聚类包含摘要和修复建议,不包含完整 PoC 代码
- CTF 靶场内容与真实渗透知识严格分离(
ctf-lab/) - Long-running 操作(字典、爆破、fuzz)不设 timeout,跑完或报错为止