文章总结: 本文围绕Artex与Cairn项目探讨PentestAgentic未来方向,核心是意图驱动渗透测试理念,即基于起点与目标进行有向搜索。文章对比了ARTEX、Cairn、PentAGI、Shannon、XBOW等主流架构,并详述Cairn与Artex的架构设计,包括状态模型、规划方式、验证方式及风险,为渗透测试智能体发展提供参考。 综合评分: 82 文章分类: 渗透测试,AI安全,安全工具,红队
从Artex_Cairn AI For Pentest 对Agentic未来调用方向的思考
原创
ice ice
Ice ThirdSpace
2026年9月16日 10:00 广东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
一、前言
本次文章的最初思绪的来源是在先知上看到了一篇文章
https://xz.aliyun.com/news/92778
于是去搜索了一下Pentest Agentic相关的项目,接着看到了对看到了对Artex的讨论,使用Codex分析了一下Artex项目的架构,想起来了之前的一款项目 Cairn ,顺藤摸瓜,看了大量的针对Pentest Agentic相关的文章,最后得出来对这个话题的一些感受。
二、意图渗透
Cairn和Artex都是基于意图渗透的,也就是用户输入基础信息(Origin)和目标(Goals),其核心设计理念是渗透测试的本质是在近乎无限的状态空间中进行有向搜索:
- 起点明确:已知的目标 IP 或目标系统。
- 终点明确:获取 Shell、拿到 Flag 或拿下权限。
- 路径未知:中间的攻击路径充满未知数
有的同学会认为这一套逻辑可能会消耗大量的Token,因为过程是未知的。
这一套逻辑在作者的文章里也有提到一个类似的方法论,就是破案思路,就像案件一样在正常情况下,基于现有的信息不断铺路在黑板上进行节点分析,看哪些地方和哪些地方能够串联起来,最终达到一个目的,就是案件侦破。
而渗透测试也是,只要能挖出漏洞(获得Flag),过程怎么耗费都是无所谓的(理想情况),渗透测试本身就不是一套完全固定的流程。测试人员通常先确定目标和授权范围,然后进行信息收集,根据发现的资产、端口、接口和异常结果不断调整后面的测试方向,本质是信息收集。
而很多高风险的问题也是多个低危漏洞组合起来的,如果高风险漏洞是goal,那么低风险的漏洞和一些不安全的配置也是其实信息收集的一部分。
三、图驱使渗透从何而来
这一套逻辑似乎在Pentest Agentic 里几乎没有任何问题。
回顾历史,才会发现从AI的利用来说,一直还是在围绕的”意图”驱动这个方向发展的,这种设计并不是灵机一动或者是碰巧得来。
这里就不谈论一些遥远的历史,主要是从我个人的认知的角度来想到的一些节点来去思考。
1、提示词
最开始AI出现,大家先研究的是提示词优化,告诉AI该扮演什么样的角色,然后完成什么任务,按照什么格式输出,这一套现在也依旧还在用,适合解决简单的问题, 只负责当前这一轮回答。
#
2、Goal模式和Plan模式
在绝大多数AI Agent架构中,Goal(目标)不仅能生成Plan(计划),而且“plan”本身就是Agent大脑(大语言模型)最核心的职责之一。在之前参加的墨菲+安克的安全议题分享里,也有嘉宾分享了goal驱动的渗透,例如挖掘苹果接受的漏洞,例如挖SRC,然后挖到一个SSRF最后打到了内网触发了SRC企业的大量告警等。
#
3、MCP和Tool Call /Function Call
模型拥有规划能力,再到能够调用连接各种真实世界的软件,实际上也是这种方向。例如”下周一要订一张去往北京的机票”,在配置好了各种MCP/或者Tool后,你只会向大模型发出这种指令,而不会告诉他,在携程上看,在哪些APP看,是不是最便宜的,因为大模型会自动识别你需要的是一张便宜的机票。
#
4、 AutoGPT和 ReAct
这两个都是围绕着”意图”驱动而出现的。
ReAct 全称是 Reasoning + Acting(推理 + 行动),是一种让模型边思考、边使用工具的方法。
而AutoGPT是AI围绕着目标的一个产品化开源项目, 它把大模型、任务规划、记忆和工具调用组合起来,让 AI 根据目标自动拆解并执行任务: 用户目标 Goal
↓
AutoGPT(完整 Agent)
├── 制定计划 Plan
├── 调用工具 Action
├── 读取结果 Observation
├── 保存记忆 Memory
└── 修改计划并继续执行
#
5、Openclaw的风靡
还记得Openclaw的出现的时候,全网都在养龙虾,
那个时候在网上经常出现一种类型的文章:我给Openclaw布置了一个任务,让他一晚上给我赚钱,于是它开始自动开发xxx,自动交易xxx….最终获得了多少盈利。
这同样是意图驱动达到目的的一种方向,虽然那些文章可能大部分都是噱头。
#
四、Pentest Agentic 主流架构
目前市场上存在几条实质不同的技术路线:
| | | | | — | — | — | | 路线 | 代表 | 主要关注点 | | 动态探索与任务编排 | ARTEX、Cairn、PentAGI | 怎样围绕目标持续探索、管理状态、派发工作 | | Web/API 验证流程 | Shannon、XBOW、AWS Security Agent | 从代码和应用行为产生候选,再执行验证、形成证据 | | 持续应用安全平台 | Aikido、Keygraph、Strix | 把测试与代码变更、问题管理、修复和复测连接起来 | | 网络与攻击路径验证 | NodeZero、Pentera | 网络、身份、云权限和确定性执行组件 |
ARTEX / Cairn
主要状态:使用 Goal、Fact、Intent、Finding 等节点描述测试过程。
规划方式:根据当前事实动态产生 Intent。Worker 执行后写回新事实,再触发下一轮规划。
主要目标:适合没有固定攻击路径的开放式探索。
验证方式:当前较依赖 Worker 自己记录和判断结果,缺少完全独立的漏洞验证层。
主要风险:如果错误结论被写成 Fact,后续 Planner 和其他 Worker 可能沿着错误前提继续执行。
PentAGI / Strix
主要状态:使用 Task、Subtask、Agent、Tool Result 等对象管理过程。
规划方式:由主管 Agent 拆解任务,再委派给侦察、渗透、搜索、编码等专业 Agent。
主要目标:自动完成从信息收集、漏洞探索、利用验证到报告的完整流程。
验证方式:通过 PoC、工具结果和报告 Agent 整理证据。不同版本可能还会安排额外 Agent 检查结果。
主要风险:Agent 数量增加后,上下文传递、任务重复、结果冲突和模型调用成本都会上升。
Shannon / Codex Security
主要状态:保存代码结构、威胁模型、漏洞候选、验证证据和修复结果。
规划方式:先理解代码和攻击面,再对高价值候选执行动态验证。
主要目标:面向代码仓库、Web 应用和 API,发现能够结合源码证明的真实漏洞。
验证方式:在隔离环境触发漏洞,生成可复现步骤或 PoC,然后再生成修复方案。
主要风险:对源码、依赖和运行环境要求较高。测试环境无法正确启动时,可能无法确认真实漏洞。
XBOW / Aikido / RunSybil
主要状态:保存应用地图、端点、参数、认证流程、测试任务、漏洞和验证状态。
规划方式:Coordinator 将攻击面拆成大量短任务,交给多个专项 Agent 并行测试。
主要目标:面向 Web 应用和 API 提供商业化、持续化的自动渗透服务。
验证方式:使用独立 Validator 重新执行攻击。只有能够独立复现的漏洞才进入正式报告。
主要风险:内部代码和调度算法不公开,外部只能通过测试结果判断覆盖率、误报率和稳定性。
NodeZero / Pentera
主要状态:保存资产、服务、身份、凭据、弱点、权限和攻击路径。
规划方式:根据当前获得的访问能力,把漏洞、配置错误和凭据连接成完整攻击链。
主要目标:企业内部网络、外部暴露面、Active Directory、云和横向移动验证。
验证方式:使用受控、可重复的攻击模块执行实际验证,并保存每一步结果。
主要风险:对网络和基础设施攻击路径很强,但面对复杂 Web 业务流程、租户权限和应用特有逻辑时,通常需要额外上下文或人工协助。
五、Cairn和Artex
| | | |
| — | — | — |
| 维度 | Cairn | ARTEX |
| 定位 | 通用黑板式问题求解内核 | 面向渗透测试的完整 Agent 平台 |
| 外层循环 | Reason → Intent → Explore → Fact | Planner → Intent → Worker → Fact/Finding/Asset |
| 内层 ReAct | 交给 Claude Code、Codex、Pi CLI
1-Cairn:使用ReAct式反馈、黑板和Fact/Intent图构成的具体项目,从代码设计思路来说,cairn更像是一个通用的黑板,意图驱使做事,而不单单只是面对渗透测试这个场景,它是一种通用化的解决方案。
架构分析:
Fact(“origin”) = 起点
Fact(“goal”) = 终点
简单的来说流程如下:
Cairn 生成任务 Prompt
↓
启动 codex / claude / pi 命令
↓
CLI Agent 内部自行多轮思考和调用 Bash、读文件等工具
↓
CLI 最后输出 JSON
↓
Cairn 解析 JSON 并写回 Fact/Intent
2-ARTEX:使用ReAct式工具循环、Goal/Intent编排和任务管理构成的具体项目,则ARTEX更像是面向渗透测试的完整控制面与执行平台,架构如下
主要功能说明:
1、仪表板:展示整个系统的运行状态:
- 活动任务
- 已确认漏洞
- 资产节点
- HTTP 流量
- Token 使用量
- 缓存命中
- Worker 活动流
- LLM 和系统异常
2、对话,主要功能
- 查询任务状态
- 添加 Hint
- 新增或修改 Goal
- 直接添加高优先级 Intent
- 查看 Worker 输出
- 对正在运行的 Worker 进行纠偏
- 管理工具、Skill、MCP 等平台资源
主要是用于进行一些简单的指令,例如侦查:
访问一下xxxx.com 不用进行渗透
转变攻击思路….
创建新 Intent..使用低权限和管理员账号比较订单详情接口
3、 任务是最高层运行单位,保存:
- 用户描述
- Goal
- Scope
- Constraint
- LLM 配置
- Planner 状态
- Worker 数量
- Deadline
- Intent
- Fact
- Finding
- Activity
- 流量和工作文件
例如可以输入
任务描述:
- 只测试 test-mis.testtest.com。 2. 只访问 HTTPS 443 端口。 3. 不扫描其他端口、子域名、根域或关联 IP。 4. 不访问页面中发现的其他域名。 5. 如果跳转到其他域名或端口,停止访问并记录。 6. 禁止删除数据、拒绝服务、密码爆破等高风险操作。 7. 无需调用复杂的安全漏洞利用工具和侦查工具,重点在于功能逻辑安全漏洞..
目标:
尽可能的发现安全问题 对 https://test.testtest.com:443 的页面和同源 API 进行安全测试,检查认证、会话、越权、注入、文件处理和业务逻辑问题。 只有取得可复现请求和响应的漏洞才记录为已确认发现。最终输出漏洞证据、复现步骤、修复建议和未覆盖范围
4、发现:发现是跨任务的漏洞管理模块
每条 Finding 包含:被 Agent 判定为已经确认的漏洞
- 漏洞名称
- 漏洞分类
- 严重程度
- 摘要
- 影响
- 证据
- PoC
- 来源 Task
- 来源 Intent
- 关联资产
- Worker
- 处理状态
- 详细报告
5、流量:全局录制代理 · 所有 HTTP 往来
Worker 的:
- WebFetch
- 浏览器 MCP
- curl
- Python HTTP 客户端
- 其他遵循代理变量的 HTTP 工具
可以通过该代理访问目标。
Worker 启动时会获得类似环境变量:
HTTP_PROXY=http://127.0.0.1:8788 HTTPS_PROXY=http://127.0.0.1:8788 SSL_CERT_FILE=
但 dig @8.8.8.8、原始 TCP/UDP、部分自己管理网络栈的程序不会自动走 HTTP 代理。
6、工具执行
这里展示所有 Agent 的工具调用记录,包括参数,结果,时间等
最常见的工具就是Bash命令行,或者其他的例如:WebFetch这种网络请求工具等等Bash WebFetch WebSearch Read Write report_finding record_fact insert_assets search_all_worker_traces
#
7、LLM录制
保存模型调用过程:
- 使用哪个 LLM Profile
- 模型名称
- 请求消息
- System Prompt
- Tool Schema
- 模型输出
- tool_use
- stop_reason
- input/output Token
- cache read/write
- Provider 错误
- 故障转移过程
它主要用于:
- 排查 Agent 为什么做出某个决定
- 分析 Prompt 效果
- 比较模型
- 统计成本
- 检查工具调用是否丢失
- 复现模型异常
8、资产
适合针对集团类型或者批量范围内的自动化信息收集(内网渗透):工具调用insert_assets,等待后续复用渗透
Company
├─ Root Domain 根域名
├─ Subdomain 子域名
├─ IP
├─ CIDR 网段
├─ Service 服务
├─ App
└─ Endpoint
9、资产同步
从外部数据源同步资产入库
scope Sentry是一款具有分布式资产测绘、子域名枚举、信息泄露检测、漏洞扫描、目录扫描、子域名接管、爬虫、页面监控功能的工具,通过构建多个节点,自由选择节点运行扫描任务。当出现新漏洞时可以快速排查关注资产是否存在相关组件。
https://github.com/Autumn-27/ScopeSentry
https://www.scope-sentry.top/guide/subdomain/
10、工作空间
保存 Agent 执行时产生的文件: 每个 Intent 拥有自己的工作目录,这样大型工具输出不会全部塞进 LLM 上下文,而是: 保存完整输出到文件→ 给模型返回头部摘要和文件路径→ 模型需要时再使用 Read/Grep, 这可以降低 Token 消耗
#
#
11、系统配置
可以在这里进行一些系统级别的配置,包括新增skill ,工具和mcp,以及多agent的配置,拦截规则(禁止agent调用的动作)
可能会有人跟我一样的问题,意图驱动,AI能完成所有的任务,而不需要设定任何的预设,为什么还需要不同的Agent预设?
但是实际上并不冲突,渗透测试里存在着大量的重复的工作,实际上流程变成了,核心还在Work Agent,一部分功能例如渗透测试报告编写则使用专门的渗透测试报告Agent生成
Goal = 项目目标
Intent = 工作单
Agent = 负责开单、执行或管理工作单的人
| | | | — | — | | Agent | 作用 | | Goals Agent | 把用户的大目标拆成可判断的 Goal、范围和约束 | | Planner Agent | 观察全局状态,决定下一步 Intent | | Worker Agent | 领取一条 Intent,调用工具执行 | | Main Agent | 接收用户对话,添加 Hint、Intent 或纠偏 Worker |
#
#
六、LLM执行调用逻辑
整体调用逻辑:用户提出目标
→ Goals Agent 整理目标
→ Planner 生成 Intent
→ Worker 领取 Intent
→ LLM 调用工具
→ 写回事实、资产、漏洞
→ Planner 根据新结果继续规划
→ Goal 达成后结束
1、Goal:把用户目标结构化
/D:/artex/artex-0.3.7-windows-amd64/artex-0.3.7-windows-amd64/ARTEX-source/agent/goals.go 里有写
2、传递到planner
D:/artex/artex-0.3.7-windows-amd64/artex-0.3.7-windows-amd64/ARTEX-source/agent/planner.go
Planner 会把这些内容交给 LLM Goal 状态+ Fact/Finding+ 已运行和正在运行的 Intent+ 资产和覆盖率+ Planner Todo
3、planner会生成工作单intent,让worker认领
D:/artex/artex-0.3.7-windows-amd64/artex-0.3.7-windows-amd64/ARTEX-source/agent/tools.go
add_intent的能力会把大模型已经想出来的探索方向,保存成数据库节点 ,方便后续worker认领
生成Intent的思路为:不断地探索和变化思考:
当前已知什么?
→ 距离 Goal 还缺什么?
→ 有哪些尚未覆盖的探索方向?
→ 创建 Intent
→ Worker 执行
→ 产生新 Fact/Finding
→ Planner 再看一次
→ 继续产生更具体的 Intent
关键代码在于提示词和不断的循环能力调用已有的fact,所以能源源不断产生新的intent, 它构造了一个让大模型可以持续观察、发散、验证、收敛的运行环境 。
const plannerDefaultTmpl = onst plannerDefaultTmpl =你是一个授权渗透测试系统的”规划者”。你被频繁唤醒(图一变就唤醒)。你的职责:读取态势、判定目标、并且**只在确有未被覆盖的新方向时**才补充探索意图。任务目标:{{.Goal}}….
所以为什么能发散生产这么多的Intent,是因为:大模型已有的安全知识+用户设定的 Goal+ARTEX 提供的当前态势+Planner Prompt 的探索要求
所以大模型能力越强,Intent的能力就越强,而Intent决定了Worker会做什么渗透测试行为
4、队列Worker 领取 Intent
上面的add_intent能力会把Intent保存到数据库当中,此时就需要被Worker领取
UPDATE exploration_nodes SET state = ‘running’, owner = $1 WHERE id = $2 AND kind = ‘intent’ AND state = ‘open’
5、Worker 开始工作: 针对一条 Intent 创建 LLM 会话
进行一些准备,例如工具,运行环境,工作目录..轮次等
base := append(tsx.WorkerTools(), w.extraTools…) base = append(base, actool.DefaultTools()…) opts := agentcore.Options{ Provider:w.prov, Tools:tools, WorkingDir:runDir, BashEnv:proxyEnv(…), MaxTurns:w.maxTurns, MaxDuration:maxDur, PermissionMode: permission.ModeBypass, }
创建真正的 Agent Session
一个 Worker
≈ 一条 Intent
≈ 一个独立 LLM 工具会话
≈ 一个独立工作目录
6、 LLM 如何调用真实工具进行渗透测试
Cairn 的核心做法就是调用现成的 Agent CLI:
·Codex:codex exec
argv=[ “codex”, “exec”, “–dangerously-bypass-approvals-and-sandbox”, “–“, prompt, ]
·Claude Code:claude -p
argv=[ “claude”, “–session-id”, session, “–dangerously-skip-permissions”, “-p”, “–“, prompt, ]
·Pi:pi -p
所以 Cairn 的代码显得更加简洁,是因为工具执行、会话管理、上下文压缩、ReAct 循环等复杂能力,已经由 Codex CLI、Claude Code 或 Pi 帮它完成了。
和Cairn调用Codex Claude不同,作者自己写了一个harness:Norma,项目地址:https://github.com/Autumn-27/Norma 会在Norma里进行寻找工具,ToolCall,返回 tool_result 进行 ReAct 式闭环
模型思考
→ 调用工具
→ 获得结果
→ 继续思考
→ 再调用工具
7、 结果:写回平台形成下一轮决策依据 fact
Worker可以调用record_fact ,report_finding ,insert_assets
其中对应的是 Fact事实 ,Finding 漏洞,Asset 资产包括子域名端口等
最终达到目的
#
七、其他
tsecbench
https://tsecbench.zc.tencent.com/
https://tsecbench.zc.tencent.com/resources
#
#
参考文章
https://mp.weixin.qq.com/s/yEmkDmdLOaOE3yhCU2LU_w
https://xz.aliyun.com/news/92778
https://mp.weixin.qq.com/s/cF7sl8-Z2TrEKqt_qcQLtg
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Ice ThirdSpace ice ice《从Artex_Cairn AI For Pentest 对Agentic未来调用方向的思考》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论