fb0sh/pentester
GitHub: fb0sh/pentester
基于AI Agent的渗透测试自动化框架。
Stars: 10 | Forks: 1
# Pentester
基于 AI Agent 的渗透测试自动化框架,严格遵循 **PTES(Penetration Testing Execution Standard)** 标准,覆盖渗透测试全生命周期。Agent 自动拉起 Kali Linux 容器,按阶段规范完成信息收集、漏洞分析、漏洞利用、后渗透和报告生成。
## 快速开始
### 环境要求
- macOS / Linux(推荐 Kali Linux)
- Docker(自动拉取 Kali 容器)
- Python 3
- Nmap、Masscan、Go、Feroxbuster 等常用工具
### 启动测试
# 1. 启动 pi
pi
# 2. 输入测试指令(示例)
# Agent 会自动读取 ROLE.md → 逐项确认参数 → 按 PTES 7 阶段执行
> 对目标 192.168.39.3 执行渗透测试
> 对 192.168.39.0/24 做漏洞扫描
> 继续上一次测试
# Agent 会自动:
# 1. 询问测试范围、类型、授权等参数(每次只问一个问题,选项带编号)
# 2. 拉起 Kali 容器(如需要)
# 3. 每个阶段前查询知识库获取方法
# 4. 同阶段独立任务并行派发 sub-agent 提升效率
# 5. 按阶段推进:信息收集 → 漏洞分析 → 利用 → 后渗透 → 报告
# 6. 测试完成自动生成报告
### 手动技能调用
一般情况下无需手动触发,Agent 按流程自动调用。特殊场景可用:
| 命令 | 用途 |
|------|------|
| `/pentester:gen-report` | 强制生成报告 |
| `/pentester:update-solution` | 手动合并方案至知识库 |
| `/pentester:knowledge-base` | 查询/创建/更新/整理知识库 |
| `/pentester:init-target` | 初始化目标目录与容器 |
| `/pentester:enum-services` | 执行服务枚举 |
| `/pentester:mcp` | 手动调用 MCP 工具 |
## Agent 行为约束
| 规则 | 说明 |
|------|------|
| 一问一答 | 每次只问一个问题,带编号选项(1. 2. 3. ... N. ... 自定义输入) |
| 阶段内并行 | 同 PTES 阶段独立操作(TCP+UDP 扫描、Web+SMB+DNS 枚举)自动派发多 sub-agent 并行执行 |
| 长任务不超时 | 字典攻击、爆破、模糊测试等长时间操作不设默认 timeout,等跑完或报错;>10 分钟无输出才上报 |
## 项目结构
pentester/ # 项目根目录
├── README.md # 项目说明(当前文件)
├── README_EN.md # English version
├── AGENTS.md # Agent 框架规则
├── LICENSE # MIT License
├── 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/ # 工具/字典/资料导航
│ │ ├── 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/ # 历史归档
## Agent 工作流
### 每个 PTES 阶段执行流程
| 时机 | 动作 |
|------|------|
| 阶段开始前 | 查 `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/ | 全部已有数据 |
### 报告生成检查清单(gen-report skill Step 4)
生成报告后必须执行 6 维度 24 项检查:
1. **结构完整性** — 9 章齐全,附录完整
2. **内容填充** — 零占位符,日期已替换
3. **数据一致性** — CVSS × 严重程度 × 修复时限 一致
4. **证据路径** — 截图存在,PoC 格式正确
5. **修复建议** — 具体可操作,优先级矩阵填写
6. **合规脱敏** — 敏感数据脱敏,授权边界不越界
未通过必须修正后重新生成。
## 知识库优化成果
| 指标 | 优化前 | 优化后 |
|------|--------|--------|
| 原始导入体积 | 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,跑完或报错为止
标签:Docker, Nmap, PTES 标准, Python, Ruby, XML 请求, 反取证, 威胁模拟, 安全开发, 安全报告, 安全漏洞, 安全漏洞扫描, 安全自动化工具, 安全自动化平台, 安全自动化框架, 安全自动化测试, 安全自动化解决方案, 安全评估, 安全防御评估, 安全防护, 无后门, 日志审计, 服务枚举, 本地模型, 渗透测试生命周期, 知识库, 自动化框架, 虚拟驱动器, 请求拦截, 逆向工具