自主AI渗透测试智能体,可编排多智能体侦察、漏洞利用、后渗透及报告生成,并具备持久化交战状态。
终端中的 AI 渗透测试代理。
多代理架构 • 渗透任务状态跟踪 • 20+ LLM 提供商
PentestCode 是运行在终端中的自主渗透测试代理。 把它指向目标,它就会运行工具、读取输出、更新对网络的认知,并决定下一步行动——就像操作员那样。它是 OpenCode(MIT)的硬分叉,剥离了代码编辑的定位,专为攻击性安全重建。
Beta — 它在真实渗透任务和 CTF 中表现稳定,但可能会有粗糙之处。遇到问题时请提交 issue;正是这些反馈让它变得更好。
输入一条指令,输出完整攻击链:
you: "pentest 10.10.10.5, goal is domain admin"
| 阶段 | 代理执行的操作 |
|---|---|
| 扫描 | nmap -sS -p- 发现 7 个开放端口,并将 XML 直接解析进任务状态 |
| 识别 | 端口 88 + 389 → 域控制器。并行展开三个枚举器(SMB、LDAP、HTTP) |
| 枚举 | 空 SMB 会话 → 可写共享。LDAP → 用户列表。Gobuster → Web 目录 |
| 攻击 | AS-REP Roast → 可破解哈希 → 首个有效凭据 |
| 喷洒 | 将该凭据喷洒到所有已知主机的 SMB、WinRM、LDAP 和 RDP 上 |
| 利用 | WinRM 立足点 → 后渗透代理转储 SAM / LSA / DPAPI |
| 结果 | 域管理员哈希到手——每一步都带有证据链记录 |
它会在人们容易偷懒的地方保持严谨:它把每个凭据喷洒到每台主机的每个服务上,并且不会忘记核查。它学到的所有内容都会存入结构化状态,你可以在运行过程中用 /status、/vulns 或 /creds 查询。
npm install -g pentestcode-ai
# via curl
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
# binary at packages/opencode/dist/pentestcode-<os>-<arch>/bin/pentestcode
pentestcode auth login # connect your LLM provider
pentestcode # interactive session
pentestcode --prompt "scan 10.10.10.0/24 and enumerate all services" # one-shot
通过 ai-sdk 支持 20+ 提供商——Anthropic、OpenAI、Google、Azure、AWS Bedrock、Ollama 等。
有两件事让 PentestCode 区别于粘贴到聊天窗口中的渗透测试提示词:一个代理团队和它们共享的记忆。
该设计遵循 HPTSA 研究 中的策略师-协调员模型——比单个代理提升 4.3 倍:
┌─────────────┐
│ pentest │ strategist / coordinator
│ (lead) │ plans, dispatches, tracks state
└──────┬──────┘
┌───────┬───────┼───────┬───────┐
▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│recon ││scan- ││explo-││iden- ││post- │
│ ││ner ││iter ││tity ││explo │ ... + 7 more
└──────┘└──────┘└──────┘└──────┘└──────┘
主代理(pentest)将任务拆解为多个子任务,并并行调度专业子代理——每个子代理都有自己的系统提示词、工具权限和领域知识。共 13 个代理: recon(侦察)、scanner(扫描)、enumerator(枚举)、exploiter(利用)、identity(身份,AD/Kerberos)、infrastructure(基础设施,SNMP/IPMI/数据库)、webapp(Web 应用,OWASP Top 10)、post-exploit(后渗透)、exploit-dev(漏洞利用开发)、critic(审查,误报检查器)、reporter(报告),外加用于上下文压缩和会话管理的隐藏代理。
当扫描器发现一个端口时,枚举器能立即看到——因为每个代理都从同一个结构化的任务状态中读写:
状态在会话结束后依然存在:关闭终端,第二天回来,代理会从上次停止的地方继续。与此同时,一份人类可读的 findings.md 会记录每个漏洞、凭据和访问权限的获取,并带有时间戳——用 tail -f 跟随查看任务如何展开。
除 bash 外,还有 18 个内置渗透测试工具。解析器工具是强制性的:运行 nmap 后,代理必须将输出通过管道传给 nmap_parse,而不是手动 grep XML,这样才能确保每个发现都进入任务状态。
19 个精选知识包,按需加载,因此只在相关时消耗上下文:
技能包就是纯 Markdown。将你自己的 SKILL.md 放入技能目录即可添加——无需修改任何代码。
使用斜杠命令驱动实时会话:
还可以设置代理能获得多大的自由度:
模式可与暂停行为组合使用——auto + pause always 可让你获得自主执行能力,并在每个发现处停下来供审查。
一个工具包覆盖整个攻击性安全领域:
配置文件位于 .pentestcode/pentestcode.jsonc:
{
"provider": {
"anthropic": {
"model": "claude-sonnet-4-20250514"
}
}
}
提供商:Anthropic、OpenAI、Google、Azure、AWS Bedrock、Ollama、Together、Groq、Fireworks、DeepSeek、Mistral 等,均通过 ai-sdk 支持。
来自真实使用场景的 bug 报告是你最有价值的贡献。在 CTF 靶机、HTB 机器或授权的渗透测试中运行 PentestCode,当出现问题——陷入循环、遗漏明显路径、无法处理工具输出或浪费 token——请提交 issue,并附上:
findings.md 和/或相关的会话输出同样欢迎功能请求和 PR。代码库是基于 Effect 库的 TypeScript——架构说明见 CLAUDE.md。
MIT — 见 LICENSE。
OpenCode 的硬分叉 • 为攻击性安全而生 • 自托管且开源
| 工具 | 功能 |
|---|
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+ 查询类型) |
| 命令 | 功能 |
|---|
/status | 任务仪表盘——主机、漏洞、凭据、阶段 |
/targets | 主机与服务表 |
/vulns | 按严重性查看发现 |
/creds | 已发现的凭据 |
/scope | 查看/编辑目标范围 |
/phase | 阶段管理 |
/mode | 切换 auto / free / guided 模式 |
/pause | 在发现时暂停(从不 / 总是 / 检查点) |
/report | 生成渗透测试报告 |