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

admin 2026-10-17 08:31:33 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

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 算法处理这个问题:

  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

点个“在看”表示朕

已阅


GAT+社区发现识别\"跑分\"洗钱网络,从单点拦截到犯罪拓扑整体捕获" 网络安全文章

GAT+社区发现识别\"跑分\"洗钱网络,从单点拦截到犯罪拓扑整体捕获"

针对洗钱团伙转向高频小额分散的跑分模式,传统规则风控已失效。本文提出流批一体的混合图计算架构,结合Flink实时提取拓扑特征与T+1离线图算法。通过构建包含账户、设备等节点的异构图,引入GAT图注意力机制解决特征稀释,并利用三角计数识别环状洗钱与Louvain算法挖掘高内聚团伙。结论强调金融机构反洗钱必须从单点拦截转向基于图计算的网络化识别路径,以实现犯罪拓扑的整体捕获。
Trezor物流服务商数据泄露事件导致13689名客户的个人数据曝光" 网络安全文章

Trezor物流服务商数据泄露事件导致13689名客户的个人数据曝光"

Trezor第三方物流服务商ShipMonk发生数据泄露,导致13689名客户个人信息曝光,包括姓名、地址、邮箱等。Trezor内部系统及加密货币资产未受影响。泄露数据可能被用于针对加密货币用户的网络钓鱼和社会工程攻击。Trezor已通知受影响用户,并建议用户警惕未经请求的通信,切勿透露钱包备份助记词。
【CVSS9.4】GitLabGraphQL未授权代码注入漏洞(CVE-2026-19478)" 网络安全文章

【CVSS9.4】GitLabGraphQL未授权代码注入漏洞(CVE-2026-19478)"

CVE-2026-19478是GitLabCE/EE中一个CVSS9.4的未授权代码注入漏洞,影响18.2至19.2.4之前版本。攻击者无需认证即可通过构造的GraphQL查询,利用fallback字段注入调用public\\_send方法,远程修改或删除公开项目与用户数据。PoC已公开,存在批量利用风险。建议立即升级至18.11.11、19.0.8、19.1.6或19.2.4修复版本,并审计GraphQL端点日志。
评论:0   参与:  0