pentestagent
PentestAgent 是一款专为黑盒安全测试打造的 AI 智能体框架,旨在辅助漏洞赏金猎人、红队成员及渗透测试人员高效完成工作流程。它通过引入人工智能,解决了传统手动测试中信息搜集繁琐、工具调用复杂以及多步骤攻击难以自动编排的痛点,让安全评估更加智能化和自动化。
该工具特别适合具备一定网络安全基础的专业人士使用,如安全研究员、渗透测试工程师以及希望探索 AI 在安全领域应用的开发者。普通用户若无相关安全知识,可能难以充分发挥其价值。
PentestAgent 的技术亮点在于其灵活的多模式协作机制:既支持单指令快速执行的“协助模式”,也能启动完全自主的“智能体模式”,更拥有独特的“团队模式”,可协调多个专用智能体分工合作,模拟真实攻击团队的组织架构。此外,它原生兼容 Docker 环境,能够直接调用 Nmap、Metasploit、SQLMap 等经典渗透工具,并支持通过 LiteLLM 接入各类主流大模型。内置的预设攻击剧本(Playbooks)进一步降低了复杂测试场景的门槛,帮助用户系统化地执行黑盒测试任务。
使用场景
某安全团队正在对一家金融客户的新上线 Web 系统进行黑盒渗透测试,需在有限时间内全面评估其外部攻击面。
没有 pentestagent 时
- 测试人员需手动编写并执行大量重复脚本(如 nmap 扫描、SQL 注入探测),耗时且容易遗漏边缘案例。
- 面对复杂的业务逻辑漏洞,单人思维受限,难以系统性覆盖所有攻击路径,依赖个人经验导致测试深度不均。
- 发现漏洞后,需人工整理截图、命令输出和复现步骤来编写报告,占用大量原本可用于深入测试的时间。
- 团队协作时,信息同步依靠口头或分散的文档,缺乏统一的上下文记忆,导致多人测试时出现重复劳动或盲区。
使用 pentestagent 后
- 通过
/agent模式下达“全面扫描目标端口并识别潜在注入点”指令,pentestagent 自动调用 Docker 内的 nmap、sqlmap 等工具链完成全流程探测,效率提升数倍。 - 启用
/crew多智能体模式,pentestagent 自动协调“侦察员”、“攻击手”和“审计员”角色,系统性地模拟红队攻击,覆盖了人工容易忽略的逻辑漏洞。 - 测试结束后,只需输入
/report,pentestagent 即刻基于会话记忆生成包含漏洞详情、复现步骤及修复建议的专业报告。 - 利用内置的记忆机制和交互式
/interact模式,团队成员可随时与 pentestagent 对话,回顾之前的测试路径和发现,确保协作无缝衔接。
pentestagent 将安全专家从繁琐的工具操作中解放出来,使其能专注于高阶策略分析,实现了自动化与智能化的完美融合。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
https://github.com/user-attachments/assets/a67db2b5-672a-43df-b709-149c8eaee975
系统要求
- Python 3.10+
- OpenAI、Anthropic 或其他 LiteLLM 支持的提供商的 API 密钥
安装
# 克隆
git clone https://github.com/GH05TCREW/pentestagent.git
cd pentestagent
# 设置(创建虚拟环境,安装依赖)
.\scripts\setup.ps1 # Windows
./scripts/setup.sh # Linux/macOS
# 或手动
python -m venv venv
.\venv\Scripts\Activate.ps1 # Windows
source venv/bin/activate # Linux/macOS
pip install -e ".[all]"
playwright install chromium # 浏览器工具所需
配置
在项目根目录下创建 .env 文件:
ANTHROPIC_API_KEY=sk-ant-...
PENTESTAGENT_MODEL=claude-sonnet-4-20250514
或对于 OpenAI:
OPENAI_API_KEY=sk-...
PENTESTAGENT_MODEL=gpt-5
任何 LiteLLM 支持的模型 均可使用。
运行
pentestagent # 启动 TUI
pentestagent -t 192.168.1.1 # 指定目标后启动
pentestagent --docker # 在 Docker 容器中运行工具
Docker
通过 Docker 容器运行工具,以实现隔离并预装渗透测试工具。
方法一:拉取预构建镜像(最快)
# 基础镜像,包含 nmap、netcat、curl
docker run -it --rm \
-e ANTHROPIC_API_KEY=your-key \
-e PENTESTAGENT_MODEL=claude-sonnet-4-20250514 \
ghcr.io/gh05tcrew/pentestagent:latest
# Kali 镜像,包含 metasploit、sqlmap、hydra 等
docker run -it --rm \
-e ANTHROPIC_API_KEY=your-key \
ghcr.io/gh05tcrew/pentestagent:kali
方法二:本地构建
# 构建
docker compose build
# 运行
docker compose run --rm pentestagent
# 或使用 Kali
docker compose --profile kali build
docker compose --profile kali run --rm pentestagent-kali
容器内运行 PentestAgent,并可访问 Linux 渗透测试工具。代理可通过终端工具直接使用 nmap、msfconsole、sqlmap 等。
需已安装并运行 Docker。
模式
PentestAgent 提供三种模式,可通过 TUI 中的命令访问:
| 模式 | 命令 | 描述 |
|---|---|---|
| 辅助 | /assist <task> |
单次执行指令,包含工具调用 |
| 代理 | /agent <task> |
自主执行单个任务。 |
| 团队 | /crew <task> |
多代理模式。协调者会派生出专门的工作者。 |
| 交互 | /interact <task> |
交互模式。与代理聊天,它会在渗透测试过程中提供帮助和指导 |
TUI 命令
/assist <task> 单次执行指令。
/agent <task> 自主代理执行任务
/crew <task> 多代理团队执行任务
/interact <task> 引导模式下与代理聊天
/target <host> 设置目标
/tools 列出可用工具
/notes 显示保存的笔记
/report 生成会话报告
/memory 显示令牌/内存使用情况
/prompt 显示系统提示词
/mcp <list/add> 可视化或添加新的 MCP 服务器。
/clear 清除聊天记录和历史
/quit 退出(也可使用 /exit、/q)
/help 显示帮助(也可使用 /h、/?)
按 Esc 键可停止正在运行的代理。Ctrl+Q 键可退出。
演练剧本
PentestAgent 包含用于黑盒安全测试的预构建 攻击演练剧本。这些剧本定义了针对特定安全评估的结构化方法。
运行演练剧本:
pentestagent run -t example.com --playbook thp3_web

工具
PentestAgent 内置多种工具,并支持 MCP(模型上下文协议)以实现扩展性。
内置工具: terminal、browser、notes、web_search(需设置 TAVILY_API_KEY)、spawn_mcp_agent
代理自衍生(spawn_mcp_agent)
spawn_mcp_agent 是一个内置工具,允许正在运行的代理通过 stdio 连接创建一个子代理作为下属 MCP 服务器。子进程完全隔离——拥有独立的运行时、LLM 客户端、对话历史和笔记存储——并在衍生完成后将其完整的工具集注入到父代理的可用工具中。
这使得无需任何外部编排即可实现分层的多代理工作流:代理可以根据需要自行派生子代理来委派特定范围的任务。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
target |
string | — | 传递给子代理的渗透测试目标 |
scope |
string[] | — | 子代理的范围内目标/CIDR |
model |
string | 环境变量 | 模型标识符,覆盖子代理上的 PENTESTAGENT_MODEL |
no_rag |
boolean | false |
跳过子代理的 RAG 引擎初始化 |
no_mcp |
boolean | true |
跳过子代理的外部 MCP 服务器连接(推荐) |
spawn_mcp_agent 返回后,子代理的工具(run_task、run_task_async、await_tasks 等)将在下一次调用工具时可用。子代理的名称会自动分配(例如 child_agent_1),并在结果中返回。
示例——协调者将并行侦察任务委派给两个子代理:
# 第一轮:派生两个隔离的子代理
spawn_mcp_agent target="10.0.1.0/24" scope=["10.0.1.0/24"]
spawn_mcp_agent target="10.0.2.0/24" scope=["10.0.2.0/24"]
# 第二轮:子代理的工具现已可用——异步委派工作
child_agent_1__run_task_async task="全面端口扫描及服务枚举"
child_agent_2__run_task_async task="全面端口扫描及服务枚举"
# 第三轮:等待并收集结果
child_agent_1__await_tasks task_ids=["<id1>"] timeout_seconds=600
child_agent_2__await_tasks task_ids=["<id2>"] timeout_seconds=600
child_agent_1__get_task_result task_id="<id1>"
child_agent_2__get_task_result task_id="<id2>"
MCP RAG 工具优化器
当 MCP 服务器暴露超过 128 个工具时,PentestAgent 会自动将完整目录替换为单个 mcp_<server>_rag_optimizer 工具。这个元工具利用嵌入相似度(通过 LiteLLM,默认使用 text-embedding-3-small)来检索与当前任务最相关的工具,并将其注入到智能体的下一轮对话中——从而在不丢失对完整工具集访问的情况下,保持上下文窗口的可控性。
优化器对智能体是透明的:它会用聚焦的自然语言查询来调用 RAG 工具,描述所需的内容,匹配的工具将在下一轮直接可供调用。
智能体使用指南:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
queries |
字符串数组 | (必填) | 每个所需能力对应一个聚焦查询。越具体,准确性越高 |
top_k |
整数 | 20 |
每个查询要检索的工具数量(最多 128 个)。结果会被合并并去重 |
嵌入向量在启动时计算一次并缓存,因此重复查询速度很快。优化器是按服务器构建的,因此每个拥有大型工具目录的 MCP 服务器都会有自己的独立索引。
提示: 每个独立的能力传递一个查询,而不是将所有内容合并成一个查询。例如,
["列出主机上的开放端口", "获取进程内存占用"]比["列出端口、内存和 CPU 使用情况"]能得到更好的结果。
MCP 集成
PentestAgent 支持 MCP(模型上下文协议),可以从两个方向进行集成:消费外部 MCP 服务器作为工具源,以及暴露自身作为 MCP 服务器,以便外部客户端(Claude Desktop、Cursor 等)能够以编程方式驱动 PentestAgent。
消费外部 MCP 服务器(客户端模式)
通过配置 mcp_servers.json 文件,可以将 PentestAgent 连接到任何外部 MCP 服务器。示例配置如下:
{
"mcpServers": {
"nmap": {
"command": "npx",
"args": ["-y", "gc-nmap-mcp"],
"env": {
"NMAP_PATH": "/usr/bin/nmap"
}
}
}
}
将 PentestAgent 暴露为 MCP 服务器(服务器模式)
PentestAgent 可以作为 MCP 服务器运行,允许任何兼容 MCP 的客户端提交任务、检查结果并远程控制智能体。支持两种传输方式:
STDIO — 适用于本地客户端(如 Claude Desktop、Cursor):
pentestagent mcp_server --type stdio
pentestagent mcp_server --type stdio --target 192.168.1.1 --scope 192.168.1.0/24
pentestagent mcp_server --type stdio --model claude-sonnet-4-20250514 --docker
SSE(HTTP) — 适用于远程或网络客户端:
pentestagent mcp_server --type sse
pentestagent mcp_server --type sse --host 0.0.0.0 --port 8080
pentestagent mcp_server --type sse --target 10.0.0.1 --scope 10.0.0.0/24 --docker
SSE 传输方式会暴露一个 /mcp 端点,支持 POST(请求)、GET(用于服务器发起推送的持久化 SSE 流)和 DELETE(会话终止)。会话通过 Mcp-Session-Id 头部进行跟踪。
所有 mcp_server 标志:
| 标志 | 默认值 | 描述 |
|---|---|---|
--type |
(必填) | 传输方式:stdio 或 sse |
--host |
0.0.0.0 |
SSE 绑定主机 |
--port |
8080 |
SSE 绑定端口 |
--target |
无 | 主要渗透测试目标(IP 地址或主机名) |
--scope |
[] |
在范围内的目标/CIDR(用空格分隔) |
--model |
环境变量 | 模型标识符,覆盖 PENTESTAGENT_MODEL |
--docker |
false | 使用 DockerRuntime 而不是 LocalRuntime |
--no-rag |
false | 跳过 RAG 引擎的初始化 |
--no-mcp |
false | 跳过与外部 MCP 服务器的连接 |
示例:Claude Desktop 配置(claude_desktop_config.json)
{
"mcpServers": {
"pentestagent": {
"command": "pentestagent",
"args": ["mcp_server", "--type", "stdio"]
}
}
}
MCP 服务器工具参考
当作为 MCP 服务器运行时,PentestAgent 会暴露以下工具:
服务器状态与配置
| 工具 | 描述 |
|---|---|
get_server_status |
实时服务器状态:就绪情况、按状态划分的任务数量、主要目标/范围、内存存储大小 |
get_config |
主要智能体配置:目标、范围、最大迭代次数、工具列表 |
update_config |
更新目标、范围或最大迭代次数,应用于后续所有任务 |
任务执行
| 工具 | 描述 |
|---|---|
run_task |
提交任务并阻塞直至完成。返回完整结果、使用的工具及笔记快照 |
run_task_async |
提交任务并立即返回一个 task_id。可通过 get_task_status 轮询 |
任务检查
| 工具 | 描述 |
|---|---|
list_tasks |
列出所有任务及其状态、目标和摘要。可按状态筛选 |
get_task_status |
轮询任务的当前状态和结果预览 |
get_task_result |
完整任务结果:最终输出、思考步骤、所有工具调用及结果、笔记快照 |
await_tasks |
阻塞直至一组异步任务 ID 全部完成(每 500 毫秒轮询,可配置超时时间) |
任务控制
| 工具 | 描述 |
|---|---|
cancel_task |
根据任务 ID 取消正在运行或待处理的任务 |
工具管理
| 工具 | 描述 |
|---|---|
list_tools |
列出智能体可用的所有工具 |
enable_tool |
在主智能体上启用指定工具 |
disable_tool |
在主智能体上禁用指定工具 |
对话历史
| 工具 | 描述 |
|---|---|
get_conversation_history |
返回某个任务或主智能体的消息历史。支持 limit 参数 |
reset_conversation |
清除某个任务或主智能体的对话历史 |
内存
| 工具 | 描述 |
|---|---|
store_memory |
将键值对持久化到进程内内存存储中 |
retrieve_memory |
可按精确键检索、按子字符串搜索,或列出所有键 |
clear_memory |
删除特定键,或使用 scope='all' 清空全部内存 |
可观测性
| 工具 | 描述 |
|---|---|
get_logs |
返回最近的执行日志,可选择按级别过滤(info / warning / error) |
get_metrics |
运行时指标:任务数量、成功率、工具总调用次数、内存和日志大小 |
异步任务工作流示例
对于长时间运行的侦察任务,可以使用异步模式:
# 1. 提交任务而不阻塞
run_task_async 任务="枚举 example.com 的子域名" 目标="example.com"
run_task_async 任务="对 example.com 执行 nmap SYN 扫描" 目标="example.com"
# 2. 阻塞直至两者完成(最长 5 分钟)
await_tasks 任务 IDs=["<id1>", "<id2>"] 超时时间=300 秒
# 3. 获取完整结果
get_task_result 任务 ID="<id1>"
get_task_result 任务 ID="<id2>"
CLI 工具管理
pentestagent tools list # 列出所有工具
pentestagent tools info <name> # 显示工具详情
pentestagent mcp list # 列出 MCP 服务器
pentestagent mcp add <name> <command> [args...] # 添加 MCP 服务器
pentestagent mcp test <name> # 测试 MCP 连接
知识库
- RAG: 将方法论、CVE 漏洞或字典文件放置在
pentestagent/knowledge/sources/目录下,以实现上下文的自动注入。 - 笔记: 代理会将发现结果保存到
loot/notes.json文件中,并按类别(credential、vulnerability、finding、artifact)进行分类。这些笔记会在会话之间持久化,并被注入到代理的上下文中。 - 影子图谱: 在 Crew 模式下,编排器会根据笔记构建知识图谱,从而得出战略性的洞察(例如:“我们已获取主机 X 的凭据”)。
项目结构
pentestagent/
agents/ # 代理实现
config/ # 配置和常量
interface/ # TUI 和 CLI 界面
knowledge/ # RAG 系统和影子图谱
llm/ # LiteLLM 封装
mcp/ # MCP 客户端和服务器配置
playbooks/ # 攻击剧本
runtime/ # 执行环境
tools/ # 内置工具
开发
pip install -e ".[dev]"
pytest # 运行测试
pytest --cov=pentestagent # 带覆盖率
black pentestagent # 格式化代码
ruff check pentestagent # 代码检查
法律声明
仅可在获得明确授权的情况下对目标系统进行测试。未经授权的访问属违法行为。
许可证
MIT
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备