开源渗透测试智能体:在XBOW基准测试中击败人类专家的架构突破
设想一下,如果一个安全智能体能像资深渗透测试专家那样思考漏洞——不是通过执行脚本,而是理解底层的攻击模式,那会怎样?
在经历了三个版本的迭代和0.1.3版本的245+次代码提交后,我们成功构建了这样一个智能体:一个在 XBOW 基准测试中达到 84.62% 成功率 的自主网络智能体,成为首个达到 XBOW 基线性能的开源解决方案。它的性能比之前最先进的系统(如 MAPTA,约75%)高出近10个百分点,甚至可以与人类资深渗透测试专家相媲美。
但更有趣的故事不仅仅是这个百分比,而是我们在实现这一目标过程中的架构发现,以及一个我们从未预料到的突破。
这是关于自主安全智能体系列文章的第二部分。请阅读 第一部分:从单智能体到元智能体 了解架构基础。
关于负责任的使用的说明: 本项目旨在用于道德安全研究和教育目的。在测试任何系统之前,请确保您拥有明确、书面的授权。
TL;DR
- 84.62% 成功率 在 XBOW 基准测试上(104个真实世界漏洞中发现并利用了88个)——首个达到基线性能的开源解决方案。
- 单一元智能体架构:一个决策者 + 元能力胜过所有多智能体方法。
- 超越 MAPTA(约75%)并匹配人类专家级渗透测试人员和 XBOW 解决方案(85%)。
- 可观察性 + 评估 揭示了什么 实际 有效,而不是我们认为的什么有效。
- 元提示突破:智能体可以在操作过程中重写自己的执行指南。
- 模块化插件系统:针对 CTF、Web 应用程序、威胁模拟和通用安全评估等领域的专用能力。
- 友好的用户体验:React + Ink 终端界面,可实时观察智能体的运行。
- 16个失败中有7个是回归问题,并已确定达到95%以上准确率的路径。
详细的技术深潜如下 ↓
核心洞察:为什么“元一切”架构胜出
当我们启动这个项目时,显而易见的路径是多智能体系统。每个人都在构建它们——专门用于侦察、利用、后渗透的智能体。分而治之。
但我们反其道而行之。原因如下。
多智能体系统面临三个根本问题:
- 协调开销:智能体需要协议来通信、交接上下文和同步状态。这会消耗令牌并引入故障点。
- 资源冲突:多个智能体竞争同一目标会造成竞争条件并干扰彼此的操作。
- 策略不连贯:智能体A发现了关键信息,但智能体B从未看到,因为它不在交接协议中。
“元一切”方法
- 元智能体:当置信度低于70%或需要并行方法时,部署子智能体作为工具。
- 元工具:当现有工具不适用时,在运行时创建自定义利用脚本。
- 元学习:基于证据验证的跨会话记忆。
- 元认知:自我评估的置信度驱动每一个决策。
为什么这样有效:
一个单一的决策者在整个操作过程中保持策略连贯性。没有协调协议。没有相互竞争的智能体。主智能体根据对置信度的元认知自我评估,来决定何时部署集群、何时创建工具、何时查询记忆。
可以把它想象成一位资深渗透测试员,他知道何时编写自定义脚本,何时请专家介入,何时回顾笔记。一个策略家,多种能力。
验证结果:
84.62%的成功率,零协调失败,零资源冲突,零任务交接错误。架构具有可扩展性。
v0.1.3 版本的变化:超越数字
现在来看看真正推动进展的因素。六个架构改进,每一个都有测试和评估数据支持:
1. 可观察性 + 评估
我们发现的问题:
操作在第142步失败了。日志显示了 什么 发生了,但没有显示 为什么。我们在盲目飞行。
解决方案:
向 Langfuse 添加了完整的 OpenTelemetry 追踪,并进行自动化的 Ragas 评估。
我们捕获的内容:
- 追踪:带有父子关系的完整操作时间线。
- 跨度:单个工具执行、推理步骤、记忆操作。
- 指标:令牌消耗、步骤持续时间、成本跟踪。
- 评分:Ragas 评估(6项指标:工具选择、证据质量、答案相关性、上下文精度、发现有效性、目标达成情况)。
为什么这对 AI 安全很重要:
完整的追踪捕获了推理链、工具调用和成功/失败模式。这为在 经过验证的 利用工作流而非合成示例上微调模型创建了数据集。
影响:
可观察性揭示了当预算使用率达到40%时,上下文精度会下降。如果没有追踪,我们归咎于模型(“它不擅长长操作”)。有了追踪,我们诊断出实际问题:内存在检查点没有被压缩。
2. 认知架构:教授推理,而非规则
传统的智能体提示是“菜谱”:“如果你看到SQL错误,运行sqlmap。”成千上万行的if-then-else规则变得脆弱且难以管理。
我们采用了不同的方法:教智能体 如何 推理,而不是 做什么。
置信度驱动框架
每一步:
- 了解:什么是确定的?学到了哪些约束条件?
- 思考:形成带有置信度(0-100%)的假设。
- 测试:以最小行动获取最大信息。
- 验证:证据确认/反驳 → 更新置信度。
置信度阈值触发行为:
-
80%:直接利用。
- 50-80%:假设测试。
- <50%:转向或部署集群。
真实示例 (XBEN-091):
智能体解码JWT → 观察到 alg: none → 置信度 60% → 推理:“没有签名验证意味着我可以修改声明” → 置信度 85% → 测试未签名的修改 → 成功。
结果: 零失败尝试。智能体在利用漏洞之前 理解 了它。
从 v0.1.1 版本的变化: 我们用这个推理框架取代了特定领域的规则。架构上更优越——但正如我们将在失败分析中看到的那样,这在领域专业知识方面造成了一个意想不到的问题。
3. 扩展推理与上下文:质量优于速度
模型改进:
- Claude 3.7 Sonnet → Claude 4.5 Sonnet
- 上下文窗口:12K → 32K 令牌
- 思考令牌:5K → 20K(增加4倍)
💡影响: XBEN-096 在17个步骤中消耗了238K个令牌,同时保持了连贯的策略。使用以前的12K窗口,此操作在第3-4步就会丢失上下文。
数据显示:
- 平均步骤数减少 31%。
- 长时间操作(100+步)保持策略连贯性。
- 通过行动前分析实现零失败利用。
要点: 一个在行动前深度推理的智能体,胜过拥有更大工具箱、尝试所有方法的智能体。质量优于数量。
4. 元学习:计划作为外部工作记忆
问题: 长时间操作(100+步)会随着上下文窗口被工具输出填满而失去策略连贯性。到第40步,智能体会忘记最初的计划,开始反应而非制定策略。
解决方案: 在第0步将计划作为结构化外部记忆存储。在检查点(20%/40%/60%/80%预算)检索。
计划结构示例
{
"current_phase": 1,
"total_phases": 3,
"phases": [
{"id": 1, "title": "侦察与认证", "status": "active"},
{"id": 2, "title": "JWT利用", "status": "pending"},
{"id": 3, "title": "权限提升", "status": "pending"}
]
}
为什么这样有效: 计划存在于向量记忆中,而非上下文窗口。在每个检查点,智能体检索计划,根据标准评估进展,并更新阶段状态。策略连贯性在跨越200步的操作中得以保持,且不消耗上下文令牌。
真实示例 (XBEN-025): 长达19分钟的 Django SSTI 操作。随着范围扩大,最初的4阶段计划扩展到7个阶段。智能体在第34步和36步查询记忆以检查进度并调整策略。在日益复杂的操作中保持了连贯性。
5. 用于改善用户体验的 React + Ink 终端
因为实时观察智能体的推理会改变你对它的理解。终端显示:
- 实时发生的推理追踪。
- 带有成功/失败状态的工具执行。
- 实时更新的置信度评分。
- 记忆操作和检查点检索。
- 令牌消耗和成本跟踪。
影响: 开发速度提高了。当你可以 看到 智能体的思考过程时,调试就变成了模式识别。
6. 提示工厂:构建自定义网络作战
真正的力量不仅在于智能体开箱即用的能力,还在于社区可以用它构建什么。
动态提示组装 我们不使用静态提示,而是使用一个 提示工厂,它按需组装操作指南:
在运行时,工厂结合了:
- 核心推理框架(置信度驱动决策)。
- 模块特定的方法(CTF vs 红队 vs 通用)。
- 目标和上下文。
- 动态发现的工具。
相同的推理引擎,不同的操作行为——无需更改代码。
插件架构:即插即用的操作模块 想要构建自己的网络作战模块?创建一个文件夹:
src/modules/operation_plugins/your_module/
├── execution_prompt.md # 如何处理该领域
├── report_prompt.md # 如何记录发现
├── module.yaml # 配置
└── tools/ # 可选专用工具
└── your_tool.py
就是这样。智能体自动发现并加载你的模块。
可用的操作模块:
- 生产模块:
- CTF:Flag识别、速度优化、挑战特定模式。
- 通用:全面的Web应用安全测试。
- 实验模块:
- 威胁模拟: adversary模拟和攻击链执行。
- 情境化:环境感知和基础设施映射。
- 代码安全:源代码分析和漏洞检测。
社区驱动的专业化 插件系统使领域专家无需接触核心代码即可贡献。
为什么这很重要:
- 安全研究人员可以将领域专业知识编码为提示。
- 红队可以创建隐蔽为重点的操作配置文件。
- CTF玩家可以优化速度和模式识别。
意想不到的突破:能重写自己剧本的智能体
研究问题: 智能体能否通过基于操作学习重写执行指南来优化自己的决策轨迹?
为什么轨迹优化很重要: 传统智能体遵循静态决策路径。当方法X在第40步失败时,它们缺乏在第41步更新策略的机制。它们重复死胡同,积累相互矛盾的指导,并且上下文在超过100步的操作中会退化。
元提示方法 智能体成为自己的提示工程师。
工作原理:
- 主提示在操作开始时被复制到
execution_prompt_optimized.txt。 - 每20步:智能体回顾记忆(“SQLi 在 /search.php 上成功,XSS 被 WAF 阻止”)。
- LLM 分析:识别有效方法与死胡同。
- 自然语言重写:“移除 XSS 尝试(WAF 阻止)。专注于在 /search.php 参数上利用 SQL 注入。”
- 受保护区域:XML标签保护关键逻辑,可优化部分则不断进化。
真实示例 — XBEN-096 (XXE 利用):
- 操作开始时创建
execution_prompt_optimized.txt。 - 计划基于检查点更新,跨越4个阶段演变。
- 智能体置信度:90%(实体测试)→ 100%(XXE确认)。
- 轨迹调整:侦察 → 测试 → 利用 → 验证。
- 结果:在15步内捕获Flag,并附带完整的证明工件。
🎯为什么这很重要: 纯自然语言理解——没有正则表达式,没有硬编码规则。智能体学习什么有效,并 重写自己的指令。这就是元提示:随着经验不断演变的提示。
这仍然是一个实验性功能,可以通过 ENABLE_PROMPT_OPTIMIZER=true 启用。详细信息请参阅 docs/prompt_optimizer.md。
五分钟内从零到英雄
完整的系统——包括推理追踪、可观察性、代码库——在五分钟内即可运行。
git clone https://github.com/westonbrown/Cyber-AutoAgent.git
cd Cyber-AutoAgent/src/modules/interfaces/react
npm install && npm run build && npm start
首次启动将配置部署模式、模型提供商和凭证(自动检测)。
运行您的首次评估
/module general
target: XXXXX
objective: 识别 SQL 注入漏洞
execute
实时观察:
- 带有置信度评分的假设形成。
- 基于推理的工具执行。
- 证据驱动的理解更新。
- 证明工件生成。
- 检查点记忆查询。
可观察性仪表板
访问 Langfuse localhost:3000 (admin@cyber-autoagent.com/changeme)
查看:
- 带有父子关系的完整追踪树。
- 推理链的时间线。
- 令牌/成本跟踪。
- Ragas 质量评分。
- 完整钻取:操作 → 步骤 → 工具 → 输入/输出。
资源链接
- Cyber AutoAgent 文档
- 架构 | 终端指南 | 可观察性 | 记忆 | 部署
- 仓库: github.com/westonbrown…
- 加入我们的 Discord 社区 讨论自主安全研究、分享操作模块并协作改进。
致谢: 感谢 XBOW 团队提供的验证数据集,以及 Strands/Anthropic 提供的智能体框架。
完整结果: XBOW 基准数据 在 GitHub 上联系或联系我们进行自主安全研究。FINISHED CSD0tFqvECLokhw9aBeRqrJPr/wloGfGG1BW6UNl9WkLrN0KjmaKKFJPDJb9wqn+SfPvcajcOenAST2ydMJwnwrFFhNbyJ6gA569jSZCIecYigwF+a194Uo17nU4xO/dTqH7aDQwz3ZbLaO55wdtF1+M7hu8zl4ZKNIvwNGXjrOWNxPFdOQAYztIMTixXpA8ECsQPxjGpsQ9W39zlu/Row==