s0ld13rr/pentestcode
GitHub: s0ld13rr/pentestcode
一个基于多代理架构的终端 AI 渗透测试代理,通过策略协调和持久化状态实现从侦察到报告的自动化安全评估。
Stars: 50 | Forks: 7
# PentestCode
-/bin/pentestcode 的 binary
```
## 快速开始
```
# 通过您的 LLM provider 进行身份验证
pentestcode auth login
# 启动
pentestcode
# 或者使用 prompt 进行一次性执行
pentestcode --prompt "scan 10.10.10.0/24 and enumerate all services"
```
支持 20+ 提供商:Anthropic、OpenAI、Google、Azure、Ollama 等。
## 架构
基于 [HPTSA 研究](https://arxiv.org/abs/2410.02246)(相比单代理提升了 4.3 倍)的策略协调器模型:
```
┌─────────────┐
│ pentest │ strategist / coordinator
│ (lead) │ plans, dispatches, tracks state
└──────┬──────┘
┌───────┬───────┼───────┬───────┐
▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│recon ││scan- ││explo-││iden- ││post- │
│ ││ner ││iter ││tity ││explo │ ... + 7 more
└──────┘└──────┘└──────┘└──────┘└──────┘
```
协调器 (`pentest`) 将任务分解,并并行生成专家子代理。每个子代理都有自己专属的 system prompt、工具权限和领域知识。它们共享同一个测试任务状态 —— 当 scanner 发现一个端口时,enumerator 可以立即看到。
**总共 13 个代理:** recon、scanner、enumerator、exploiter、identity (AD/Kerberos)、infrastructure (SNMP/IPMI/databases)、webapp (OWASP Top 10)、post-exploit、exploit-dev、critic (误报检查器)、reporter,以及用于上下文压缩和会话管理的隐藏代理。
## 测试任务状态
这就是 PentestCode 与“在 ChatGPT 里输入渗透测试提示词”的根本区别。代理发现的所有内容都会被记录在结构化的状态中:
- **Hosts & services** —— IP、主机名、OS、端口、服务版本、Banner
- **Vulnerabilities** —— 严重程度、状态 (suspected/confirmed/exploited)、证据链、置信度评分
- **Credentials** —— 用户名、哈希/密码、类型、域、权限范围
- **Access** —— 谁在哪台主机上拥有 shell/RDP/DB 访问权限、特权级别
- **Relationships** —— 实体关系图 (EXPLOITED_VIA, CREDENTIAL_FROM, ADMIN_OF, PIVOT_TO 等)
- **AD domain model** —— 域控、信任关系、管理员、密码策略、GPO
- **Network segments** —— VLAN、可达网络、Pivot 主机
- **Attack path** —— 基于成本计算的 Dijkstra + Yen's K 条最短路径算法穿越关系图
状态跨会话持久化。关闭终端,明天回来,代理会从你离开的地方继续。
代理还会维护一个 `findings.md` —— 这是一个人类可读的日志,记录了每个漏洞、凭证和获取的访问权限,附带时间戳和证据。你可以在会话期间使用 `tail -f` 实时查看最新发现。
## 工具
除了 bash 之外,还有 18 个内置的渗透测试工具:
| 工具 | 功能描述 |
|------|-------------|
| `nmap_parse` | 解析 nmap XML → 自动填充主机/服务 |
| `nuclei_parse` | 解析 Nuclei JSON → 创建带有严重程度的漏洞信息 |
| `cme_parse` | 解析 NetExec 输出 → 更新凭证/权限/主机 |
| `gobuster_parse` | 解析目录爆破输出 → 分类整理发现 |
| `bloodhound_parse` | 解析 SharpHound JSON → 填充 AD 模型 |
| `sqlmap_parse` | 解析 sqlmap 输出 → 提取注入点 |
| `xss_detect` | 分析响应以检测反射型/存储型 XSS |
| `jwt_analyze` | 解码 JWT,检查 alg:none/弱 HMAC/过期时间 |
| `cred_spray` | 规划针对所有已发现服务的凭证碰撞 |
| `scope_check` | CIDR/通配符授权范围验证 |
| `attack_path_suggest` | 通过关系图寻找基于成本的攻击路径 |
| `tunnel_manage` | 规划 SSH/chisel/ligolo 隧道,追踪活跃会话 |
| `phase_control` | 带有质量门控的阶段管理 |
| `report_gen` | 生成 Markdown/JSON 格式的渗透测试报告 |
| `state_update` | 记录发现 (30+ 变更类型,支持批量模式) |
| `state_query` | 查询测试任务状态 (20+ 查询类型) |
解析器工具是强制性的 —— 运行 nmap 后,代理必须将输出通过 `nmap_parse` 处理,而不是手动去 grep XML。这确保了每一项发现都能进入测试任务状态中。
## 技能
19 个按需加载的精选知识包:
- **阶段检查清单** (6) —— 每个渗透测试阶段需要做什么
- **服务知识** (9) —— SMB, SSH, FTP, DNS, 数据库, Web 服务器, 邮件, Docker/K8s, CI/CD
- **剧本** (4) —— 基础设施、Active Directory、Web 应用、云
技能都是普通的 Markdown 文件。只需在技能目录中放入一个 `SKILL.md` 即可添加你自己的技能 —— 无需修改代码。
## 斜杠命令
| 命令 | 功能描述 |
|---------|-------------|
| `/status` | 测试任务仪表盘 —— 主机、漏洞、凭证、阶段 |
| `/targets` | 主机与服务表 |
| `/vulns` | 按严重程度排列的发现 |
| `/creds` | 已发现的凭证 |
| `/scope` | 查看/编辑目标授权范围 |
| `/phase` | 阶段管理 |
| `/mode` | 切换 auto/free/guided |
| `/pause` | 发现时暂停 (never/always/checkpoint) |
| `/report` | 生成渗透测试报告 |
## 模式
- **auto** —— 代理自主完成渗透测试各个阶段,并根据需要生成子代理
- **free** —— 无阶段结构,代理直接响应你的请求(绕过范围检查)
- **guided** —— 逐步进行,代理提出操作建议并等待批准
你可以将模式与暂停行为结合使用:`auto` + `pause always` = 自主执行,但会在发现新内容时暂停以供你审查。
## 使用场景
PentestCode 旨在全面覆盖攻击性安全领域:
- **渗透测试** —— 从侦察到报告的完整方法论
- **CTF 比赛** —— Flag 追踪、目标管理、多目标协调
- **Bug bounty** —— Web 应用测试、API 安全、侦察自动化
- **漏洞研究** —— 系统性枚举和验证
- **基础设施安全** —— 网络服务审计、默认凭证检查
## 诚实的局限性
- **极度消耗 Token。** 根据授权范围和模型的不同,一次真实的测试可能会消耗 5 到 50 美元的 API 调用费用。带有详细输出的大型扫描会使情况更糟。
- **会重复工作。** 尽管有字典追踪和状态差异对比,代理有时仍会重新运行它已经执行过的工具。我们正在改进这一点。
- **无 GUI。** 仅支持终端。没有 Burp Suite 集成、没有浏览器自动化、没有代理拦截。
- **依赖 Prompt。** 不同 LLM 提供商之间的结果质量差异很大。在多代理协调方面:Claude Opus/Sonnet >> GPT-4o > 本地模型。
- **不具备隐蔽性。** 代理默认不考虑 OPSEC。适用于授权测试,但不适用于红队的隐蔽行动。
- **Alpha 阶段软件。** API 可能会更改,测试状态格式可能会更改,不同版本之间可能会出现问题。
## 配置
配置文件位于 `.pentestcode/pentestcode.jsonc`:
```
{
"provider": {
"anthropic": {
"model": "claude-sonnet-4-20250514"
}
}
}
```
通过 [ai-sdk](https://github.com/vercel/ai) 支持:Anthropic、OpenAI、Google、Azure、AWS Bedrock、Ollama、Together、Groq、Fireworks、DeepSeek、Mistral 等。
## License
MIT —— 详见 [LICENSE](LICENSE)。
终端内的 AI 渗透测试代理。
多代理架构 • 测试任务状态追踪 • 20+ LLM 提供商
其他选项
**指定版本:** ``` PENTESTCODE_VERSION=0.1.7 curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash ``` **自定义目录:** ``` PENTESTCODE_INSTALL=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash ``` **从源码构建:** ``` bun install bun run build --single --skip-embed-web-ui # 位于 packages/opencode/dist/pentestcode-OpenCode 的硬分叉版本 • 为攻击性安全而生 • 自托管 & 开源
标签:DLL 劫持, PyRIT, 人工智能, 多智能体系统, 大语言模型, 插件系统, 模拟器, 用户模式Hook绕过, 自动化攻击