跳到主内容
@wquguru
精选88GitHub 新爆发仓库(GitHub)产品发布/更新

ARTEX:百度Agent+攻防赛冠军的AI自主渗透测试系统

mhtsec/ARTEX: AI 自主渗透测试系统 | 百度“agent+”攻防挑战赛冠军项目

原文
发到 X
推荐理由

这是近期GitHub上极具影响力的AI安全工具,作为百度Agent+攻防赛冠军项目,其双图架构和多Agent协作逻辑对做Security Agent的同学有极高的参考价值,建议关注并试用。

AI 自主渗透测试系统 | 百度“agent+”攻防挑战赛冠军项目

GitHub repository created 2026-10-08 · 4062 stars in 6.5 days (about 623 a day) · Go

ARTEX

AI 自主渗透测试系统(Go 后端 + Next.js 前端)

🌐 在线 Demo(模拟数据): https://artex-demo.mhtsec.com

📦 **该仓库为ARTEX最后一个版本纯源码备份。原 Docker 镜像源 `autumn27/artex` 已失效,现由本仓库自维护镜像 `mianhuatang11/artex`(Docker Hub);拉取失败时可 `docker compose build` 从纯源码本地构建,无任何外部预编译依赖。**

截图预览

> 完整交互见在线 Demo(纯前端 + Mock 数据,无需后端)。

仪表盘(总览 / Token 消耗 / 活动流)任务列表
任务 · 执行过程(会话 / 工具调用)探索链路
发现资产
资产覆盖图(力导向布局 · 已测高亮 · 节点折叠展开)
流量录制人在环路对话
Agent 管理LLM 配置
拦截审批后端日志

审批记录详情

全局「审批记录」、任务内「拦截审批」及对话中的审批卡片均支持展开查看详情。展示结构参考 AegisHook 的审批详情组件,沿用 ARTEX 的组件和主题:

资产同步(ScopeSentry)

支持从 ScopeSentry 直接同步资产数据,免去重复收集:

  • 在「资产同步」页填 ScopeSentry 的地址与 API Key,接入数据源; - 按**项目**或**任务**维度选择要同步的目标与资产类型(域名 / 子域 / IP / 端口 / 站点 / 端点…); - 一键导入并按公司资产范围归并,直接进入 ARTEX 的资产图供 agent 探索使用。

安装

> 依赖数据库 PostgreSQL;探索需配置 **LLM**(`ANTHROPIC_API_KEY` 或 `OPENAI_API_KEY`,也可在 UI 里配)。

方式一:一键安装脚本(推荐)

脚本会:检测 / 自动安装 Docker → 让你选 **① 全部 Docker** 或 **② 本地编译运行**:

  • **① 全部 Docker**:填一个 Postgres 密码(可回车随机)→ 自动写 `.env` → `docker compose up -d`。 - **② 本地运行**:选数据库(连已有 / 用 Docker 起一个)→ 生成 `config.json` → `go` 编译内嵌单二进制 → 启动。

装好后打开 **http://localhost:8787**(首次进入 `/setup` 设置管理员密码)。

方式二:Docker Compose(手动)

> 原镜像源 `autumn27/artex` 已从 Docker Hub 删除,镜像现由本仓库自维护为 **`mianhuatang11/artex`**。 > 镜像源不可用(或想自行改代码)时,本地从纯源码构建即可:`docker compose build && docker compose up -d`。 > Dockerfile 为多阶段构建(前端静态导出 → Go 静态编译 → 运行镜像),默认走国内友好依赖源,可加 `--build-arg GOPROXY=... / --build-arg NPM_REGISTRY=...` 覆盖。

镜像已含常用工具(ripgrep/curl/vim/npm/nmap…);`./skills` 与 `./data` 以绑定挂载持久化。

远程 MCP 可在系统设置中选择 `http`(Streamable HTTP)或 `sse`(旧版 SSE)。 旧版 SSE 服务通常使用 `GET /sse` 建立事件流,再通过服务返回的 `/message?sessionId=...` 接收 JSON-RPC 请求;配置时将 URL 填为 `/sse`,请求头按 `Authorization=Bearer ` 填写。

方式三:下载预编译二进制(Releases)

到原仓库 Releases 下载对应平台的 zip(**本备份仓库不托管二进制**,若原 Releases 也失效请用方式二或方式四):解压后得到 `artex` + `start.sh`(Windows 为 `start.bat`)+ `skills/` + `config.example.json`:

> 请用 `start.sh` / `start.bat` 启动,而不是直接跑 `./artex`。它是个守护脚本:程序退出后按退出码决定是否重新拉起,页面上的一键更新靠它完成换装。直接运行 `./artex` 时更新完就不会被拉起了。 > 后台常驻:`nohup ./start.sh >artex.log 2>&1 &`。

方式四:从源码编译单二进制

方式五:构建跨平台 Release 压缩包

`build.sh` 会先构建并嵌入前端,再使用 Go linker 去除调试信息,并将发布文件压缩为 zip。Release 模式默认生成 Linux amd64/arm64、macOS amd64/arm64 和 Windows amd64 的 zip 包:

UPX 自解压二进制可能与部分 Linux 内核、虚拟化环境或安全策略不兼容,因此默认不启用。可用 `ARTEX_TARGETS` 自定义目标;确认目标运行环境兼容时,可显式传入 `--upx` 进一步缩小二进制:

更新升级

> 升级只换程序、不动数据:Postgres 数据卷 `pgdata`、`./data`(jwt.key / SQLite 等)、`./skills` 都会保留。数据库迁移无需手动执行——`artex` 每次启动会幂等重跑 `schema.sql`(含 `ADD COLUMN` / `CREATE INDEX IF NOT EXISTS`),即“重启即迁移”。升级前仍建议先备份 `./data` 与数据库。

方式一:页面一键更新(推荐)

在 系统配置 页(侧边栏「系统配置」→ `/system/settings`)的**版本与更新**卡片里,可以直接检查并安装新版本,无需登录服务器。

点「更新」后:下载当前平台的发布包 → 比对 Release 的 `SHA256SUMS` → 用 `-h` 冒烟测试新二进制 → 暂存为 `artex.new` → 程序退出,由 `start.sh` / `start.bat` 重新拉起并完成换装。页面会自动等到新版本上线后刷新。

  • 失败不会留下坏程序:校验或冒烟不通过就丢弃暂存件、继续跑当前版本;换装后的新版若连续 3 次启动失败,会自动回滚到 `artex.old`(失败的那个留作 `artex.failed` 供排查)。 - 随时可回退:上一版本保留为 `artex.old`,卡片上有「回滚到上一版本」。注意数据库结构不会回退。 - 更新会中断正在运行的任务——更新即重启,请在空闲时进行。 - 开发构建不给更新:版本号是 `dev` 或 `git describe` 带后缀时禁用,避免正式版覆盖掉本地调试的二进制。 - Docker 下只换程序、不换镜像:镜像里的 playwright / nmap 等工具链不会跟着升级,且 `docker compose up -d` 重建容器后会退回镜像自带的版本。要连镜像一起升级仍请用 `docker compose pull artex && docker compose up -d artex`。 - 访问 GitHub 需要代理时,在同一页面配置**全局代理**即可,更新链路会走它。更新只从 GitHub 域名下载并强制 HTTPS。

方式二:一键更新脚本

脚本先可选 `git pull` 拉取最新代码,再让你选 **① Docker 更新** 或 **② 本地编译更新**(与 `install.sh` 对应):

  • **① Docker**:可指定目标镜像 tag(回车沿用 `.env` 的 `ARTEX_TAG`,缺省 `latest`)→ `docker compose pull` → `docker compose up -d`(换新镜像重启即自动迁移)。 - **② 本地**:重建前端静态产物 → 重新编译 `./artex`(完成后重启进程生效)。

方式三:Docker Compose(手动)

方式四:预编译二进制(Releases)

到 Releases 下载新版本 zip,停掉旧进程后覆盖 `artex` 与 `skills/`(保留你的 `config.json` 与 `data/`),重启即可:

方式五:从源码编译

配置

**数据库**(`config.json`,或用环境变量 `ARTEX_PG_DSN` 覆盖):

LLM:`export ANTHROPIC_API_KEY=sk-...`(或 `OPENAI_API_KEY`),也可在 UI 的「LLM 配置」页填写。 可选:`ARTEX_LLM_PROVIDER` / `ARTEX_LLM_MODEL` / `ARTEX_LLM_BASE_URL` / `ARTEX_LLM_PROXY`。

并发:每个任务的 work agent 数在「系统设置」里配置(默认 3)。

常用参数:`./start.sh -addr :8787 -proxy :8788`(`-addr` 前端+API,`-proxy` 流量录制代理)。启动脚本会把参数原样透传给 `artex`。

反向代理部署(HTTPS / 只开放 443)

前端和 API/SSE 都由同一个后端端口(默认 `:8787`)提供,实时活动流默认走**同源**地址,因此**无需配置 `NEXT_PUBLIC_SSE_BASE`**,公网只开放 443、把 8787 留在内网即可。

SSE 是长连接 + 持续推送,反代**必须关闭缓冲**,否则浏览器能连上却收不到事件(表现为活动流一直转圈)。Nginx 示例:

> 仅当 SSE 需要走与页面不同的来源(如独立子域)时,才在**构建期**设置 `NEXT_PUBLIC_SSE_BASE`(该变量在 `next build` 时固化进静态包,容器运行时再设无效)。

开发

手动漏洞复测

任务详情的「复测」页签可分页选择本任务的漏洞、查看历次结论和证据,并手动发起复测。启动后保留当前页签,显示转圈图标和「复测中」;确认修复后同步更新漏洞状态。

在漏洞列表每行操作区点击「复测」,或在漏洞详情的「漏洞复测」区域点击「发起复测」,填写可选的修复版本、测试条件或限制,系统会创建独立的复测 Agent 会话,启动后保留当前页面。列表的平铺、按任务分组和资产视图均支持该入口;复测运行时显示转圈图标和「复测中」,需要查看时点击进入对应会话,结束后恢复「复测」。复测无需重新启动原扫描任务,结论分为「仍可复现」「已修复」「无法确认」,每次的结论、证据和会话链接保存在漏洞详情中。

新版后端首次启动会预置可编辑的「漏洞复测」(`retester`)Agent,可在 Agent 管理中配置提示词、LLM、运行预算和工具。默认使用其绑定的 LLM,未绑定则使用全局激活配置。复测会话成功完成且结论为「已修复」时,系统自动将漏洞处置状态改为「已修复」;执行中、失败、停止或其他结论保留原状态。原始证据和报告始终保留。也可在状态下拉菜单中手动选择「已修复」。同一漏洞正在复测时复用已有会话,停止、失败或服务重启后可重新发起。

本版历史记录通过漏洞详情和会话查看,暂未纳入漏洞报告导出或任务归档包,也未自动关联流量包。演示模式只生成明确标注的模拟记录,不请求真实目标。

本地运行与测试

  • 后端:`go run ./cmd/artex`(不带 `-tags embedui` 则不内嵌前端) - 前端:`cd web && npm run dev`(`/api` 反代到后端,带热更新) - 测试:`go test ./...` - Mock 预览(无后端):`cd web && NEXT_PUBLIC_MOCK=1 npm run dev` - 在线 Demo 重新部署(Cloudflare Pages,静态导出 + Mock 数据):

系统技术架构

ARTEX 是一套 LLM 多 agent 驱动的自主渗透系统:Go 单体后端(内嵌 Next.js 前端)+ PostgreSQL,agent 能力由 `norma` SDK 提供(`agentcore` / `tool` / `permission` / `harness` / `memory` / `transcript`)。核心是**双图架构**,以及围绕它的两条自主性机制:**worker 间过程级信息交换**与 planner 多轮共享 todolist 稳定攻击链路。

总体分层

层职责
前端Next.js 静态导出,`go:embed` 内嵌进单二进制;可视化任务/资产/探索链路/覆盖图,人在环路对话
server`net/http` 路由 + JWT 鉴权 + SSE;`Manager` 托管任务、引擎、DB store 的生命周期
engine每任务一个 `plannerLoop` + N 个 worker goroutine;意图领取、超时/暂停/drain
agentgoals / planner / worker / mainagent,`ToolSet` 把双图暴露成 LLM 工具
db双图的 Postgres 落地(pgx);schema 随 `go:embed` 每次启动幂等建表
支撑记录型 MITM 代理、审批门、异步补全、MCP/技能/记忆/报告

双图架构:探索图 + 资产图

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →

相似阅读

关联信息,但可能不是同一事件