PentestCode 是一个多智能体 AI 渗透测试系统,可在终端中自主运行
PentestCode 是一个多智能体 AI 渗透测试系统,可在终端中自主运行。它采用“战略师-协调员”架构,通过 13 个协同工作的专业智能体,对目标进行系统化的信息收集、漏洞识别、利用和报告生成,整个过程的状态和发现都会被持久化记录。
本教程将指导您完成 PentestCode 的安装、配置和基本使用。
1. 项目概览与核心价值
核心设计理念
- 多智能体协作 (Multi-Agent):由一个总控智能体 (
pentest) 负责任务分解和调度,并分发任务给 13 个专业子智能体(如侦察、扫描、利用、身份认证、Web应用等)并行执行,效率远高于单智能体。 - 持久化状态 (Persistent State):所有扫描结果、发现的漏洞、凭据、访问权限和攻击路径都存储在一个结构化的“交战状态”中。会话关闭后,下次启动可从中断处继续。
- 结构化工具 (Structured Tools):提供了 18 个专门的解析和操作工具(如
nmap_parse,nuclei_parse),确保工具输出被正确解析并录入状态,而非依赖智能体猜测。
适用场景
- 渗透测试:遵循完整方法论,从侦察到报告。
- CTF 竞赛:管理多目标、跟踪 Flag。
- 漏洞赏金:自动化 Web 应用测试、API 安全审查。
- 基础设施安全审计:网络服务扫描、默认凭据检查。
2. 环境准备
PentestCode 设计为单一自包含二进制文件,无需 Node.js、Bun 等运行时环境,极大简化了部署。
2.1 基础要求
- 操作系统:Linux 或 macOS (支持 x64 和 ARM64 架构)。Windows 目前不在官方支持列表中。
- 权限:运行渗透测试工具(如 nmap)通常需要管理员/root 权限。
- 网络:能够访问目标系统和 LLM API 端点。
2.2 安装 PentestCode
您可以通过以下两种方式安装:
方式一:使用官方安装脚本 (推荐)
1 | curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash |
该脚本会自动下载适合您系统架构的二进制文件并安装。
方式二:使用 npm (如果已安装 Node.js 环境)
1 | npm install -g pentestcode-ai |
其他安装选项:
- 指定版本:
PENTESTCODE_VERSION=0.1.7 curl -fsSL ... | bash - 自定义安装目录:
PENTESTCODE_INSTALL=/usr/local/bin curl -fsSL ... | bash
2.3 验证安装
安装完成后,在终端中运行以下命令,确认安装成功并查看版本信息:
1 | pentestcode --version |
3. 配置与初始设置
3.1 配置 LLM 提供商
PentestCode 本身不包含 AI 模型,需要连接外部 LLM API。支持 20 多种提供商,包括 Anthropic、OpenAI、Google、Azure、Ollama 等。
登录/认证:使用命令连接您的 LLM 提供商。例如,使用 Anthropic 的 Claude:
1
pentestcode auth login
该命令会引导您设置 API 密钥。您也可以通过配置文件手动设置。
配置文件:配置文件位于
~/.pentestcode/pentestcode.jsonc。您可以在此指定默认模型等设置。示例:1
2
3
4
5
6
7{
"provider": {
"anthropic": {
"model": "claude-sonnet-4-20250514"
}
}
}支持的提供商包括:Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama, Together, Groq, Fireworks, DeepSeek, Mistral 等。
4. 使用 PentestCode
4.1 启动交互式会话
在终端中直接输入 pentestcode 并回车,即可启动一个交互式会话。您会看到一个类似 Shell 的提示符,可以输入自然语言指令或斜杠命令。
1 | pentestcode |
4.2 核心操作模式
您可以通过 /mode 命令在三种操作模式间切换:
| 模式 | 描述 |
|---|---|
auto (自动) |
智能体自主运行,按渗透测试阶段推进,自动生成并执行任务。这是最核心的模式。 |
guided (引导) |
智能体每执行一步都会提出建议,并等待您批准后再执行。适合学习和谨慎操作。 |
free (自由) |
无阶段结构,智能体直接响应您的具体请求(如“扫描 80 端口”),并绕过范围检查。 |
暂停行为:结合 /pause 命令,您可以设置在特定条件下暂停执行:
never:从不暂停。always:每一步都暂停,等待确认。checkpoint:仅在关键发现(如漏洞)时暂停。
例如,auto 模式 + pause always 可实现“自动执行,但每个重要发现都需人工审核”的流程。
4.3 关键斜杠命令 (Slash Commands)
在交互式会话中,使用以下命令查看和管理渗透测试进程:
| 命令 | 功能 |
|---|---|
/status |
显示交战状态仪表盘:主机、漏洞、凭据、当前阶段总览。 |
/targets |
列出发现的主机和服务详细信息。 |
/vulns |
按严重程度列出所有发现的漏洞。 |
/creds |
显示所有已获取的凭据(用户名/密码/哈希)。 |
/scope |
查看或修改测试目标范围(CIDR、IP、域名)。 |
/phase |
管理当前所处的渗透测试阶段(侦察、扫描、利用等)。 |
/report |
根据当前状态生成一份 Markdown 格式的渗透测试报告。 |
/pause / /resume |
手动暂停或恢复智能体的活动。 |
/exit |
退出当前会话(状态会自动保存)。 |
4.4 单次任务模式
您也可以不进入交互式会话,直接执行一条指令:
1 | pentestcode --prompt "对 10.10.10.0/24 网段进行扫描并枚举所有服务" |
5. 理解工作流与状态
PentestCode 的核心优势在于其结构化的流程和共享状态。一个典型的攻击链如下:
- 您发出指令:例如
pentest 10.10.10.5。 - 总控智能体规划:将目标拆解为侦察任务。
- 侦察智能体执行:调用
nmap扫描端口,并将结果传给nmap_parse工具。 - 状态自动更新:
nmap_parse解析输出,将发现的主机、端口、服务版本写入“交战状态”数据库。所有智能体都能立即查询到这些信息。 - 专业化推进:其他智能体(如 Web 应用智能体、AD 智能体)根据新数据,并行启动更深入的服务枚举或漏洞检查。
- 利用与后渗透:一旦发现有效凭据或漏洞,利用智能体会尝试获得访问权限,并更新状态中的“访问”和“凭据”部分。
- 路径规划:系统会基于实体关系图(如
ADMIN_OF,PIVOT_TO),使用 Dijkstra 算法计算最短攻击路径。
您可以通过 /status 或直接查看项目目录下的 findings.md 文件(tail -f findings.md)来实时跟踪整个过程的进展和发现。
6. 高级功能:技能 (Skills) 与自定义
PentestCode 内置了 19 个技能包,它们是按需加载的 Markdown 知识文档,不会占用常规上下文。这些技能包括阶段检查清单、具体服务知识、操作手册等。
- 自定义技能:您可以通过添加自己的
SKILL.md文件到技能目录(~/.pentestcode/skills/)来扩展其知识库,无需修改代码。这非常适合添加内部流程、特定应用知识或自定义检查列表。
7. 常见问题与排查
| 问题 | 可能原因与解决方案 |
|---|---|
pentestcode 命令未找到 |
安装目录未加入 PATH 环境变量。找到安装位置(如 /usr/local/bin)并添加到您的 ~/.bashrc 或 ~/.zshrc 中。 |
| API 认证失败 | API 密钥未正确设置或已过期。请重新运行 pentestcode auth login 设置正确的 API 密钥,并检查您的网络能否正常访问 API 端点。 |
| 工具(如 nmap)执行失败 | 系统未安装目标工具。PentestCode 会调用系统工具(如 nmap, nuclei),请确保它们已安装且在 PATH 中。建议在运行前用 which nmap 等命令确认。 |
| 智能体行为循环或低效 | 这是 beta 版本的可能缺陷。请收集相关的 findings.md 和终端输出,并在 GitHub 仓库中提交 Issue,这能帮助项目变得更好。 |
| 如何完全重置测试状态? | 删除项目目录下的 .pentestcode 文件夹(这是一个隐藏文件夹)。注意,此操作将清除所有进度和数据。 |
通过以上步骤,您已经成功部署了 PentestCode。请务必注意:该工具应仅用于您拥有合法授权测试的目标。未经授权的扫描和利用活动是违法的。现在,您可以开始体验 AI 驱动的自动化渗透测试了。



