18K Star,让AI自己跑渗透测试,这个开源项目把安全工程师的活全包了
原创
大白
大白
知白守黑1024
2026年7月3日 07:33
北京
在小说阅读器读本章
去阅读
渗透测试的流程很固定:信息收集 → 漏洞发现 → 利用验证 → 出报告。但每一步都要手动切换工具——nmap 扫端口、sqlmap 测注入、metasploit 打 exploit、最后 Word 拼报告。工具切换和结果汇总占掉了大量时间。
PentAGI 把这个流程交给 AI Agent 自主完成。给它一个目标,它自己规划攻击路径、调用安全工具、在 Docker 沙箱中执行命令、记录结果、生成报告。
多 Agent 架构
PentAGI 的核心设计是一个 Orchestrator(编排器) 协调三个专家 Agent:
- Researcher(研究员):收集目标信息、查询已知漏洞来源、用 Web Scraper 爬取情报
- Developer(开发者):规划攻击策略、设计漏洞利用链、选择合适的工具组合
- Executor(执行器):在隔离 Docker 容器中运行 nmap、metasploit 等工具,执行实际攻击命令
工作组织为 Flow → Task → SubTask → Action 的层级结构。一个 Flow(渗透测试流程)包含多个 Task,每个 Task 拆成 SubTask 分派给不同 Agent,每个 SubTask 执行若干 Action(命令/搜索/分析),产出 Artifact(报告/日志)和 Memory(观察/结论)。
下面是一组实测截图,来源是对 Pikachu 漏洞靶场的一次完整渗透测试。用户在 Automation 对话框中输入目标地址和测试需求,Agent 自动将任务拆解为信息收集、目录枚举、SQL 注入检测、XSS 检测、文件上传漏洞检测、认证测试、权限提升等 12 个子任务,分派给 Researcher / Developer / Executor 逐个执行。
三层记忆系统
每种 Agent 都有三层记忆,底层由 PostgreSQL + pgvector 提供语义检索:
| 记忆类型 | 内容 | 作用 |
|---|---|---|
| 长期记忆 | 向量存储、领域知识库、工具使用模式 | 跨会话复用历史经验 |
| 工作记忆 | 当前上下文、活动目标、系统状态 | 维持任务连贯性 |
| 情景记忆 | 历史动作记录、执行结果、成功模式 | 避免重复踩坑 |
Agent 每次执行 Action 前先查向量库找相似场景,执行后把结果存回去。同一个目标第二次扫描时,Agent 会基于上次的发现继续,而不是从零开始。
如果启用知识图谱模块(Graphiti + Neo4j,默认关闭),Agent 还能构建实体间的语义关系网络——比如\"这个 CMS 版本关联了哪些 CVE,这些 CVE 又关联了哪些利用工具\"。注意:即使主 Agent 用其他 Provider,Graphiti 的实体抽取仍需要 OpenAI Key。
Chain Summarization:控制对话 token
渗透测试是长对话过程——工具输出动辄几百行,一个 Flow 可能涉及上百轮 LLM 交互。PentAGI 的 Chain Summarization 算法处理这个问题:
- 检测对话链是否超过 token 阈值
- 转换为 ChainAST(结构化表示,保留消息类型包括工具调用及响应)
- 对旧消息分段摘要,保留关键信息
- 对问答对执行 QA 摘要,压缩冗余
- 重建对话链,用摘要替换原始消息
- 验证新链确实更小,否则回退
摘要不会丢失工具调用上下文。nmap 的扫描结果会被压缩为\"发现 3 个开放端口:22/SSH、80/HTTP、443/HTTPS\",而不是被完全丢弃。.env 中有一组 SUMMARIZER_* 参数可以调节这个行为。
20+ 安全工具,沙箱化执行
Executor Agent 的每个工具调用都在独立 Docker 容器中执行,默认使用 Kali Linux 镜像:
| 类别 | 工具 | 说明 |
|---|---|---|
| 网络扫描 | nmap | 端口扫描、服务检测、OS 指纹、NSE 漏洞检测 |
| 漏洞利用 | metasploit | 漏洞利用框架 |
| SQL 注入 | sqlmap | 自动化 SQL 注入检测与利用 |
| Web 扫描 | nikto | Web 服务器漏洞扫描 |
| 暴力破解 | hydra | 多协议密码爆破 |
| 目录扫描 | ffuf, gobuster | 目录/文件 fuzzing |
| 情报收集 | Web Scraper | 隔离浏览器爬取 |
| 外部搜索 | Tavily, DuckDuckGo, Google, Sploitus, Searxng, Perplexity | 7 个外部搜索 API |
\"智能容器管理\"根据任务类型自动选择 Docker 镜像——Web 工具用含浏览器的镜像,网络工具用精简镜像。这些工具容器与主服务隔离,执行完毕后销毁。
以下是实测中 Executor Agent 调用安全工具的几个界面。Agent 先用 nmap + whatweb 完成目标指纹识别,识别出 Apache/2.4.41 + PHP + MySQL 技术栈和 Pikachu 漏洞靶场,随后自动规划 SQL 注入专项测试,通过 Terminal 面板可以看到 sqlmap 的实际执行过程,同时 Web Scraper 在后台自动截取 nikto、Apache 漏洞文档等参考页面。左侧对话区显示信息收集子任务的完成报告(nmap 端口扫描 + whatweb 指纹识别结果),右侧 Tasks 面板第一个子任务已标记完成
Agent 自动规划 SQL 注入测试方案,生成 sqlmap 命令并标注重点关注模块和测试技术
Terminal 面板实时展示 sqlmap 安装和执行过程,Agent 自动构造命令参数并运行
Screenshots 面板展示 Web Scraper 自动截取的参考页面:nikto 包搜索、Apache 漏洞文档、Kali 工具列表
12+ LLM 提供商
PentAGI 通过自定义 fork 的 LangChainGo 抽象层支持 12+ LLM 提供商:
| 类型 | 提供商 | 说明 |
|---|---|---|
| 云端 | OpenAI | GPT-5+ |
| 云端 | Anthropic | Claude 4+ |
| 云端 | Google Gemini | 多模态 |
| 云端 | AWS Bedrock | 企业级多模型 |
| 云端 | DeepSeek | 国产 |
| 云端 | GLM / Kimi / Qwen | 国产多模型 |
| 聚合 | OpenRouter / DeepInfra | 多模型路由 |
| 本地 | Ollama | 零 API 成本、数据不出基础设施 |
| 自定义 | 任何 OpenAI 兼容端点 | vLLM / 自建模型 |
通过 Ollama 跑本地模型可以实现零 API 成本、零数据外泄。项目提供了 vLLM + Qwen3.5-27B-FP8 的生产部署指南。不过本地模型的推理能力与 GPT-5/Claude 4 有差距,复杂渗透测试场景下效果会受限。
容器架构
核心 docker-compose.yml 定义了 4 个必需服务:
| 服务 | 镜像 | 端口 | 说明 |
|---|---|---|---|
| pentagi | vxcontrol/pentagi:latest | 8443 | 主应用(前端 + 后端 API + Agent) |
| pgvector | vxcontrol/pgvector:latest | 5432 | PostgreSQL + pgvector 向量存储 |
| pgexporter | postgres-exporter v0.16.0 | 9187 | Prometheus 指标导出 |
| scraper | vxcontrol/scraper:latest | 9443 | 隔离浏览器(情报收集) |
可选服务通过独立 compose 文件启用:
docker-compose-observability.yml:Grafana + VictoriaMetrics + Jaeger + Loki + OpenTelemetrydocker-compose-langfuse.yml:Langfuse + ClickHouse + Redis + MinIO(LLM 成本追踪)docker-compose-graphiti.yml:Graphiti + Neo4j(知识图谱)
技术栈
| 组件 | 技术选型 | 说明 |
|---|---|---|
| 后端语言 | Go 1.24 | 高并发、编译型 |
| HTTP 框架 | Gin | 路由 + 中间件 |
| ORM | GORM v1.9.16 | 数据库操作 |
| SQL 生成 | sqlc | 类型安全 SQL |
| LLM 抽象 | LangChainGo (自定义 Fork) | 多 Provider 统一接口 |
| 数据库迁移 | Goose v3 | Schema 版本管理 |
| 向量存储 | pgvector | PostgreSQL 扩展 |
| 前端 | React + TypeScript (pnpm) | 2026年4月迁移到 pnpm |
| API | REST + GraphQL | Bearer Token 认证 |
| 部署 | Docker Compose | 编排所有服务 |
部署实操
环境要求
- Docker 24+ 和 Docker Compose v2+
- 最低 2 vCPU、4GB RAM、20GB 磁盘
- 至少一个 LLM API Key(OpenAI / Anthropic / Ollama 任选其一)
第一步:克隆项目
git clone https://github.com/vxcontrol/pentagi.git
cd pentagi
第二步:配置环境变量
cp .env.example .env
用编辑器打开 .env,必须配置以下项:
# === 必须配置 ===
# 安全相关——改掉默认值
COOKIE_SIGNING_SALT=你的随机字符串
PENTAGI_POSTGRES_PASSWORD=你的数据库密码
# LLM 提供商——至少配一个
# 方案A:用 OpenAI
OPEN_AI_KEY=sk-你的key
# 方案B:用 Anthropic
# ANTHROPIC_API_KEY=你的key
# 方案C:用本地 Ollama(零成本,需要单独跑 Ollama 服务)
# OLLAMA_SERVER_URL=http://ollama-server:11434
# OLLAMA_SERVER_MODEL=qwen3:32b
# 同时需要配置 Embedding:
# EMBEDDING_PROVIDER=ollama
# EMBEDDING_URL=http://ollama-server:11434
# EMBEDDING_MODEL=nomic-embed-text
# === 访问相关 ===
# 如果需要从其他机器访问(非 localhost),修改以下两项:
# PENTAGI_LISTEN_IP=0.0.0.0
# PUBLIC_URL=https://你的服务器IP:8443
# CORS_ORIGINS=https://你的服务器IP:8443
第三步:启动服务
# 启动核心服务(pentagi + pgvector + pgexporter + scraper)
docker compose up -d
# 查看启动状态
docker compose ps
# 查看日志(确认没有报错)
docker compose logs -f pentagi
等待 pgvector 健康检查通过,pentagi 服务启动完成。首次启动会拉取 Docker 镜像,耐心等待。
第四步:访问 Web 界面
启动成功后,浏览器访问:
https://localhost:8443
第五步:启动一次渗透测试
- 登录后点击 New Flow 创建新的渗透测试流程
- 输入目标信息(域名或 IP)
- 选择 Agent 模式(自主模式 / 助手引导模式)
- 描述你的测试需求,例如:\"Perform a full penetration test on target 10.10.10.1\"
- 点击启动,Agent 开始自动执行
执行过程中可以实时查看:
- Agent 日志:Researcher/Developer/Executor 各自的思考和决策
- 工具输出:nmap、sqlmap 等工具的实时输出
- 知识图谱:Agent 构建的实体关系(如果启用了 Graphiti)
测试完成后,Flow 报告支持 Web 查看、Markdown 下载、PDF 下载。
可选:启用监控和 LLM 分析
# 启动可观测性栈(Grafana + VictoriaMetrics + Jaeger + Loki)
docker compose -f docker-compose-observability.yml up -d
# 启动 Langfuse(LLM 调用分析和成本追踪)
docker compose -f docker-compose-langfuse.yml up -d
# 启动知识图谱(需要 OpenAI Key 做实体抽取)
docker compose -f docker-compose-graphiti.yml up -d
Langfuse 启动后,在 .env 中配置:
LANGFUSE_BASE_URL=http://langfuse:3000
LANGFUSE_PROJECT_ID=(启动后从 Langfuse 界面获取)
LANGFUSE_PUBLIC_KEY=(同上)
LANGFUSE_SECRET_KEY=(同上)
生产部署建议
生产环境建议双节点架构:将 pentagi 主服务和 scraper 部署在控制节点,将 Docker 工具执行隔离到专用 Worker 节点。Executor 里跑的是不可信代码(可能是目标系统的反弹 shell),与控制平面物理隔离更安全。
API 支持 REST 和 GraphQL,Bearer Token 认证,可以集成进 CI/CD 流水线。
自适应攻击路径规划
Executor 执行命令后,结果反馈给 Orchestrator,Orchestrator 根据实时反馈调整下一步策略——比如 nmap 发现 22 端口开放,Agent 会决定是否尝试 SSH 爆破;sqlmap 发现注入点,Agent 会规划数据提取路径。
这不是预定义的 if-else 规则树,而是 LLM 根据上下文实时推理的决策。Agent 的表现直接受 LLM 能力影响——用 GPT-5 和用 7B 本地模型,效果差距明显。.env 中的 MAX_GENERAL_AGENT_TOOL_CALLS 和 MAX_LIMITED_AGENT_TOOL_CALLS 可以限制 Agent 的工具调用次数,防止失控。
能力边界
README 明确写了当前能力边界:
- PentAGI 是自主和助手引导的渗透测试平台,不是 CALDERA 式的突破与攻击模拟(BAS)
- 不支持预定义战役或攻击计划
- Agent 编写的攻击脚本应视为概念性或未来工作
- Flow 报告支持 Web 查看、Markdown 下载、PDF 下载,JSON 导出暂不支持
谁该关注
- 企业安全团队:自动化渗透测试替代定期人工评估,持续验证防御有效性
- 渗透测试工程师:把重复性信息收集交给 Agent,聚焦高价值利用链挖掘
- 安全工具开发者:多 Agent 协作 + 三层记忆 + Chain Summarization 的架构设计有参考价值
- AI Agent 研究者:Agent 在真实安全场景中的落地实践
PentAGI 的定位是把安全工程师从工具操作中解放出来——Agent 跑工具、记结果、出初版报告,人类负责审关键决策和做最终判断。它不替代安全工程师,而是让安全工程师聚焦在更高价值的判断上。
项目地址:
https://github.com/vxcontrol/pentagi
end
点个“在看”表示朕
已阅
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论