开源渗透测试智能体:在XBOW基准测试中击败人类专家的架构突破

0 阅读12分钟

开源渗透测试智能体:在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%以上准确率的路径。

详细的技术深潜如下 ↓

核心洞察:为什么“元一切”架构胜出

当我们启动这个项目时,显而易见的路径是多智能体系统。每个人都在构建它们——专门用于侦察、利用、后渗透的智能体。分而治之。

但我们反其道而行之。原因如下。

多智能体系统面临三个根本问题:

  1. 协调开销:智能体需要协议来通信、交接上下文和同步状态。这会消耗令牌并引入故障点。
  2. 资源冲突:多个智能体竞争同一目标会造成竞争条件并干扰彼此的操作。
  3. 策略不连贯:智能体A发现了关键信息,但智能体B从未看到,因为它不在交接协议中。

“元一切”方法

  • 元智能体:当置信度低于70%或需要并行方法时,部署子智能体作为工具。
  • 元工具:当现有工具不适用时,在运行时创建自定义利用脚本。
  • 元学习:基于证据验证的跨会话记忆。
  • 元认知:自我评估的置信度驱动每一个决策。

为什么这样有效:

一个单一的决策者在整个操作过程中保持策略连贯性。没有协调协议。没有相互竞争的智能体。主智能体根据对置信度的元认知自我评估,来决定何时部署集群、何时创建工具、何时查询记忆。

可以把它想象成一位资深渗透测试员,他知道何时编写自定义脚本,何时请专家介入,何时回顾笔记。一个策略家,多种能力。

验证结果:

84.62%的成功率,零协调失败,零资源冲突,零任务交接错误。架构具有可扩展性。

v0.1.3 版本的变化:超越数字

现在来看看真正推动进展的因素。六个架构改进,每一个都有测试和评估数据支持:

1. 可观察性 + 评估

我们发现的问题:

操作在第142步失败了。日志显示了 什么 发生了,但没有显示 为什么。我们在盲目飞行。

解决方案:

向 Langfuse 添加了完整的 OpenTelemetry 追踪,并进行自动化的 Ragas 评估。

我们捕获的内容:

  • 追踪:带有父子关系的完整操作时间线。
  • 跨度:单个工具执行、推理步骤、记忆操作。
  • 指标:令牌消耗、步骤持续时间、成本跟踪。
  • 评分:Ragas 评估(6项指标:工具选择、证据质量、答案相关性、上下文精度、发现有效性、目标达成情况)。

为什么这对 AI 安全很重要:

完整的追踪捕获了推理链、工具调用和成功/失败模式。这为在 经过验证的 利用工作流而非合成示例上微调模型创建了数据集。

影响:

可观察性揭示了当预算使用率达到40%时,上下文精度会下降。如果没有追踪,我们归咎于模型(“它不擅长长操作”)。有了追踪,我们诊断出实际问题:内存在检查点没有被压缩。

2. 认知架构:教授推理,而非规则

传统的智能体提示是“菜谱”:“如果你看到SQL错误,运行sqlmap。”成千上万行的if-then-else规则变得脆弱且难以管理。

我们采用了不同的方法:教智能体 如何 推理,而不是 做什么

置信度驱动框架

每一步:

  1. 了解:什么是确定的?学到了哪些约束条件?
  2. 思考:形成带有置信度(0-100%)的假设。
  3. 测试:以最小行动获取最大信息。
  4. 验证:证据确认/反驳 → 更新置信度。

置信度阈值触发行为:

  • 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步的操作中会退化。

元提示方法 智能体成为自己的提示工程师。

工作原理:

  1. 主提示在操作开始时被复制到 execution_prompt_optimized.txt
  2. 每20步:智能体回顾记忆(“SQLi 在 /search.php 上成功,XSS 被 WAF 阻止”)。
  3. LLM 分析:识别有效方法与死胡同。
  4. 自然语言重写:“移除 XSS 尝试(WAF 阻止)。专注于在 /search.php 参数上利用 SQL 注入。”
  5. 受保护区域: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 质量评分。
  • 完整钻取:操作 → 步骤 → 工具 → 输入/输出。

资源链接

致谢: 感谢 XBOW 团队提供的验证数据集,以及 Strands/Anthropic 提供的智能体框架。

完整结果: XBOW 基准数据 在 GitHub 上联系或联系我们进行自主安全研究。FINISHED CSD0tFqvECLokhw9aBeRqrJPr/wloGfGG1BW6UNl9WkLrN0KjmaKKFJPDJb9wqn+SfPvcajcOenAST2ydMJwnwrFFhNbyJ6gA569jSZCIecYigwF+a194Uo17nU4xO/dTqH7aDQwz3ZbLaO55wdtF1+M7hu8zl4ZKNIvwNGXjrOWNxPFdOQAYztIMTixXpA8ECsQPxjGpsQ9W39zlu/Row==