首页 网络安全 渗透测试 查看内容

18K Star,让AI自己跑渗透测试,这个开源项目把安全工程师的活全包了

2026-7-9 14:12 79 0

摘要: 多 Agent 架构PentAGI 的核心设计是一个 Orchestrator(编排器) 协调三个专家 Agent:Researcher(研究员):收集目标信息、查询已知漏洞来源、用 Web Scraper 爬取情报Developer(开发者):规划攻击策略、设计漏洞利用链、选择合适的工具组合Executor(执行器)...
关键词:Agent, PoS, LLaMA, PentAGI, Executor, Docker, Scraper, Metasploit, Graphiti, Researcher

渗透测试的流程很固定:信息收集 → 漏洞发现 → 利用验证 → 出报告。但每一步都要手动切换工具——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 算法处理这个问题:

  1. 检测对话链是否超过 token 阈值
  2. 转换为 ChainAST(结构化表示,保留消息类型包括工具调用及响应)
  3. 对旧消息分段摘要,保留关键信息
  4. 对问答对执行 QA 摘要,压缩冗余
  5. 重建对话链,用摘要替换原始消息
  6. 验证新链确实更小,否则回退

摘要不会丢失工具调用上下文。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 + OpenTelemetry
  • docker-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

第五步:启动一次渗透测试

  1. 登录后点击 New Flow 创建新的渗透测试流程
  2. 输入目标信息(域名或 IP)
  3. 选择 Agent 模式(自主模式 / 助手引导模式)
  4. 描述你的测试需求,例如:"Perform a full penetration test on target 10.10.10.1"
  5. 点击启动,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



点个“在看”表示朕

已阅

本文出处: https://mp.weixin.qq.com/s/hA3BavWq6OQL3Cgoi3SuFQ
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部