s0ld13rr/pentestcode

GitHub: s0ld13rr/pentestcode

一个基于多代理架构的终端 AI 渗透测试代理,通过策略协调和持久化状态实现从侦察到报告的自动化安全评估。

Stars: 50 | Forks: 7

# PentestCode

PentestCode

终端内的 AI 渗透测试代理。
多代理架构 • 测试任务状态追踪 • 20+ LLM 提供商

Release License Stars

PentestCode 是一个运行在你的终端中的 AI 渗透测试代理,它能够运行工具、分析结果并做出决策。它是 [OpenCode](https://github.com/anomalyco/opencode) (MIT) 的硬分叉版本,专为攻击性安全(攻防)重构。 ## 它的实际功能 你只需提供一个目标 —— 剩下的交给它: ``` you: "pentest 10.10.10.5, goal is domain admin" ``` | 步骤 | 发生的事情 | |------|-------------| | Scan | `nmap -sS -p-` → 发现 7 个开放端口,自动将 XML 解析到测试状态中 | | Recognize | 端口 88 + 389 → 域控。并行生成 3 个枚举器 (SMB, LDAP, HTTP) | | Enumerate | SMB 空会话 → 可写共享。LDAP → 用户列表。Gobuster → Web 目录 | | Attack | AS-REP roast → 可破解的哈希 → 有效凭证 | | Spray | 将凭证在所有已知主机的 SMB, WinRM, LDAP, RDP 上进行碰撞 | | Exploit | WinRM 访问权限 → 生成后渗透代理 → 导出 SAM/LSA/DPAPI | | Result | 域管哈希。每个步骤及其证据链都被记录在状态中 | 每项发现都会存入 `findings.md`(人类可读)和 `state.json`(结构化)。随时查看进度:`/status`、`/vulns`、`/creds`。 **擅长:** 系统性枚举、凭证碰撞、不遗漏任何检查点。它会在每台主机的每个服务上尝试碰撞每一个凭证 —— 这是人类经常会跳过的繁琐步骤。 **不擅长:** 复杂的漏洞利用链、创造性的直觉、隐蔽性。它无法取代渗透测试员 —— 它是力量的倍增器。 ## 安装 ``` curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash ``` 独立二进制文件 —— 无需 Bun、Node 或其他运行时环境。支持 Linux 和 macOS (x64/arm64)。
其他选项 **指定版本:** ``` 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--/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)。

OpenCode 的硬分叉版本 • 为攻击性安全而生 • 自托管 & 开源

标签:DLL 劫持, PyRIT, 人工智能, 多智能体系统, 大语言模型, 插件系统, 模拟器, 用户模式Hook绕过, 自动化攻击