当LLM Agent遇上真实渗透测试:从失败分类到难度感知规划的系统性突破

张开发
2026/5/30 16:14:01 15 分钟阅读
当LLM Agent遇上真实渗透测试:从失败分类到难度感知规划的系统性突破
文章目录当LLM Agent遇上真实渗透测试从失败分类到难度感知规划的系统性突破1. 引言一个被忽视的根本性问题2. 从28个系统中提炼的核心发现2.1 架构趋同现象创新的保质期正在缩短2.2 两类失败模式通向不同解决方案的分岔路2.3 根因追溯缺失的难度评估能力3. PentestGPT V2围绕双重失败设计的系统3.1 工具与技能层消除Type A失败的工程实践3.2 任务难度评估TDA为Agent赋予直觉3.3 证据引导攻击树搜索EGATS将难度感知融入树搜索3.4 记忆子系统跨攻击阶段的状态持久化4. 评估结果全方位的性能验证4.1 HTB Falafel案例TDA如何改变攻击策略4.2 真实竞赛验证5. 深层思考作为渗透测试研究者的分析与展望5.1 对这篇论文的核心评价5.2 被论文留下的关键问题5.3 对未来研究方向的指引6. 结语当LLM Agent遇上真实渗透测试从失败分类到难度感知规划的系统性突破深度解读论文《What Makes a Good LLM Agent for Real-world Penetration Testing?》——一篇真正回答了我们离自动化渗透测试还有多远的研究1. 引言一个被忽视的根本性问题过去两年LLM驱动的渗透测试系统如雨后春笋般涌现。从PentestGPT到AutoPT从VulnBot到Cochise研究者们不断在架构层面推陈出新——多智能体协作、RAG增强、状态机驱动、记忆树管理——每一个系统都在特定基准上展示了令人振奋的结果。然而当我们把这些系统放在一起审视时一个令人不安的现实浮出水面这些架构创新带来的性能差异正在随着底层模型的升级而迅速消失。这篇来自南洋理工大学等机构的研究正是从这一观察出发提出了一个关键问题现有的LLM渗透测试Agent到底在解决什么问题它们解决的是模型本身的局限性还是渗透测试任务固有的结构性挑战这个问题的答案不仅决定了当前系统的价值存续期更指明了下一代自动化渗透测试系统的设计方向。2. 从28个系统中提炼的核心发现2.1 架构趋同现象创新的保质期正在缩短研究团队系统性地调研了28个LLM渗透测试系统并对其中5个代表性开源系统进行了跨模型、跨基准的全面评估。评估涵盖三个不同复杂度层级的基准XBOW104个CTF风格的Web安全任务、PentestGPT Benchmark13台HTB/VulnHub靶机、以及GOAD5主机多域Active Directory环境。结果揭示了一个深刻的趋势。在XBOW基准上当使用GPT-4o时五个系统的完成率差异高达44%27%到39%而当模型升级到GPT-5后这个差距压缩到了22.5%40%到49%。PentestGPT Benchmark上的趋势更加明显——GPT-4o下2个百分点的差距在GPT-5下收窄到仅1个百分点。这意味着什么意味着现有系统中大量的架构创新本质上是在补偿2023年代模型的局限性而非解决渗透测试本身的困难。PentestGPT的上下文摘要模块是为了弥补有限的上下文窗口——当模型原生支持百万token时这一设计就失去了意义。多智能体角色分离是为了绕过弱指令跟随能力——而前沿模型已经能够处理复杂的多步骤指令。RAG工具文档管道是为了弥补安全工具知识的不足——最新模型对常见漏洞利用技术已经有了相当深厚的参数化知识。换言之这些系统在做补偿而非增强。它们的价值随着模型进化而递减而非叠加。2.2 两类失败模式通向不同解决方案的分岔路如果仅仅停留在现有系统过时了这一层面这篇论文的贡献就不大了。真正的洞察来自对200条失败执行轨迹的深入分析。研究团队由两名研究人员独立编码失败模式然后通过讨论达成一致最终将所有失败清晰地划分为两个类别。Type A失败能力缺口占总失败的42%表现为Agent正确推理出攻击向量但在执行层面失败。例如Agent准确识别出SQL注入漏洞清楚地表述了攻击方案但因为缺少sqlmap工具或不了解正确的工具语法而失败。验证这一分类很直接当研究者向PentestGPT补充缺失的工具文档和使用说明后XBOW完成率从27%提升到38%实现了41%的相对提升。Type A失败响应工具工程这是可预期的。Type B失败复杂性壁垒占总失败的58%表现为Agent拥有足够的工具和知识在同一会话中早期就有成功的工具调用但无法有效导航任务空间。这类失败在轨迹分析中呈现三种反复出现的模式。其一是上下文遗忘——侦查阶段发现的凭证在利用阶段被遗忘导致冗余发现或认证失败。其二是过早承诺——Agent深陷单一攻击路径而未充分侦查错过更简单的替代方案。其三是探索-利用失衡——穷举式侦查却从不转向利用不断积累信息却不采取行动。这些问题还会级联为链式错误Agent成功完成单个攻击阶段却无法将它们整合为连贯的攻击链。两类失败与任务复杂度之间存在系统性关联。在XBOW上任务通常需要1-3步68%的失败是Type A在GOAD上成功攻击需要链接5-10步跨多台主机79%的失败是Type B。当任务深度超过5步时Type B失败开始占主导地位——这就是论文中所说的复杂度阈值。2.3 根因追溯缺失的难度评估能力论文的最关键洞察在于Type B失败共享一个共同的根因——Agent无法在实时执行过程中区分可解任务与不可解任务。过早承诺之所以发生是因为Agent无法估计一条路径需要3步还是30步。没有这个估计它们会无限期地在无效分支上坚持。探索-利用失衡之所以发生是因为Agent缺乏判断侦查何时足够的度量标准。它们无法确定已收集的证据是否足以支持转向利用。链式失败之所以发生部分原因是Agent无法评估其累积的上下文是否仍然足以支撑当前任务——关键信息可能已经丢失或退化而Agent对此毫不知情。人类渗透测试人员通过经验积累的直觉来处理这些问题。一个经验丰富的测试者在一条路径上尝试了五次漏洞利用都失败后知道该换一种方法一个确认了目标服务版本存在已知漏洞的测试者知道应该投入资源进行利用。LLM Agent缺乏等价的难度感知决策机制。研究团队通过受控实验验证了这一诊断为Agent增加难度评估能力后Type B失败率从58%降至27%而Type A失败率保持不变——这证实了难度评估确实在针对性地解决根因。3. PentestGPT V2围绕双重失败设计的系统基于上述分析论文提出了PentestGPT V2内部代号Excalibur一个围绕两类失败模式分别设计对应解决方案的渗透测试Agent。系统采用单Agent架构通过不同组件协同完成渗透测试包含三个核心模块消除Type A失败的工具与技能层、解决Type B失败的TDA-EGATS规划器、以及防止上下文遗忘的记忆子系统。3.1 工具与技能层消除Type A失败的工程实践Type A失败的本质不是能力缺失而是工具使用的不一致性。LLM用错误的参数调用安全工具误解析输出或缺乏对工具功能的领域知识。工具与技能层的设计思路直接而有效不提出新技术而是通过精细的工程实践确保LLM Agent与安全工具之间的交互一致且可靠。系统为38个安全工具实现了类型化接口Typed Tool Interfaces覆盖侦查、Web利用、网络利用、凭证攻击、Active Directory攻击和权限提升六个类别。每个接口明确规定输入模式参数类型、默认值、验证规则、输出模式从命令输出解析的结构化表示以及前置/后置条件调用前的状态要求和完成后的预期效果。这意味着LLM接收的是明确的文档而非依赖参数化知识输入验证在执行前捕获错误结构化输出消除了解析歧义。在工具之上技能组合Skill Composition将多个工具调用编排为高层级的攻击能力编码了专家知识中的常见攻击模式。技能提供回退逻辑首选工具失败时自动尝试替代方案聚合多工具的结果为连贯的发现并编码反映人类测试者链式操作方式的多步骤攻击模式。知识增强模块集成了包含工具文档、漏洞利用数据库按服务版本索引的CVE描述以及攻击手册Kerberoasting、AS-REP Roasting、Pass-the-Hash等常见模式的分步程序的RAG系统。需要特别指出的是知识库仅包含来自MITRE ATTCK、OWASP和工具文档等公共安全资源的通用攻击技术明确排除了CTF Writeup、HTB攻略或基准特定的解决方案以防止评估中的数据泄露。消融实验的结果验证了工具层的价值定位单独的工具层在XBOW上提升了14个百分点从54%到68%但在GOAD上提升为零维持在2台主机。这完美契合了Type A/B框架——CTF任务的失败以能力缺口为主通过更好的工具可以解决而企业AD环境的失败以规划为主工具再好也无济于事。3.2 任务难度评估TDA为Agent赋予直觉TDA是这篇论文最核心的技术创新。它将人类渗透测试者凭经验做出的模糊判断操作化为四个可在执行过程中测量的维度。视野估计Horizon Estimation, H估计从当前位置到达目标还需要多少步跨活跃分支进行归一化。研究团队通过50条独立GOAD部署的执行轨迹进行的先导研究表明虽然绝对估计的校准较差平均绝对误差4.2步但排序相关性很强Spearman ρ 0.71, p 0.001。这一发现指导了TDI公式的设计使用归一化后的视野估计跨活跃分支的最小-最大缩放将绝对估计转化为相对排名——这正是LLM判断可靠的范畴。这体现了一种巧妙的设计哲学不要求LLM做它不擅长的事精确估计步数而是利用它擅长的能力路径间的相对比较。历史成功率Historical Success Rate, S是当前分支上经Laplace平滑的成功率捕获了从失败尝试中的学习。低值意味着重复失败暗示当前路径可能不可解。这个维度直接对抗过早承诺Agent学会放弃无效路径而非无限坚持。上下文负载Context Load, C是已消耗上下文窗口的比例可直接从token计数测量。这一维度的设定基于一项受控研究的发现当上下文负载超过40%时LLM性能开始显著退化94%准确率在60%负载时降至78%在80%负载时降至61%。超过40%阈值后需要进行上下文裁剪以维持推理质量。这个维度解决了上下文遗忘问题通过追踪上下文负载系统能够在累积历史即将压垮模型有效记忆之前发出预警。证据置信度Evidence Confidence, E是从根节点到当前节点路径上各节点置信度分数的均值。分数基于证据类型确定性赋值已验证的漏洞利用和有效凭证为1.0有可用利用的已确认漏洞为0.8合理假设版本匹配的漏洞、错误配置为0.5推测性假设为0.3。这一维度解决探索-利用失衡高置信度发出可以利用的信号低置信度发出需要更多侦查的信号。四个维度被组合为任务难度指数TDIT D I w H ⋅ H ^ w E ⋅ ( 1 − E ) w C ⋅ C w S ⋅ ( 1 − S ) TDI w_H \cdot \hat{H} w_E \cdot (1-E) w_C \cdot C w_S \cdot (1-S)TDIwH​⋅H^wE​⋅(1−E)wC​⋅CwS​⋅(1−S)其中权重w H w E 0.3 w_H w_E 0.3wH​wE​0.3,w C w S 0.2 w_C w_S 0.2wC​wS​0.2通过在30条独立验证轨迹上的网格搜索确定。值得注意的是研究团队测试了256种配置发现只要所有权重保持在[0.1, 0.4]范围内任务完成率的变化仅在±3%以内——这表明该方法对精确权重选择并不敏感具有良好的鲁棒性。TDI驱动三个操作决策首先是模式选择高TDI0.6触发BFS侦查模式收集更多信息再投入低TDI0.3触发DFS利用模式。对于中间值0.3-0.6系统调用LLM-DECIDE——将当前节点状态、TDI值和各维度分数呈现给LLM由其在侦查和利用之间选择并给出简要理由。这一设计承认了中间难度可能需要根据TDI公式无法完全捕获的上下文来决定策略。其次是分支优先级排序TDI在promise分数之外提供了额外的排序依据因为两个promise相似的分支在视野和成功历史方面可能有本质差异。最后是剪枝持续高TDI0.8且尝试次数超过3次的分支会被修剪防止搜索坍缩到无效区域。3.3 证据引导攻击树搜索EGATS将难度感知融入树搜索-EGATS将TDA集成到树结构搜索框架中改编蒙特卡洛树搜索MCTS以适应渗透测试场景。与标准MCTS相比EGATS有三个关键差异显式分离侦查BFS和利用TDI引导阶段用TDA难度评估替代基于模拟的价值估计基于证据修剪不可解分支。EGATS维护一棵攻击树T ( V , E , ϕ , ψ , δ ) T (V, E, \phi, \psi, \delta)T(V,E,ϕ,ψ,δ)其中节点表示攻击状态边表示动作ϕ \phiϕ分配promise分数ψ \psiψ将节点映射到状态快照δ \deltaδ分配TDI分数。节点被分类为观察发现的事实、假设未测试的攻击可能性或动作已执行的步骤及其结果。节点选择使用改进的UCB公式U C B ( n ) ϕ ( n ) c ln ⁡ N N n − λ ⋅ δ ( n ) UCB(n) \phi(n) c\sqrt{\frac{\ln N}{N_n}} - \lambda \cdot \delta(n)UCB(n)ϕ(n)cNn​lnN​​−λ⋅δ(n)其中最后一项− λ ⋅ δ ( n ) -\lambda \cdot \delta(n)−λ⋅δ(n)惩罚高难度节点。与PentestGPT基于文本的PTT不同EGATS通过算法操作在外部维护树结构防止腐败并实现系统性搜索引导。当利用成功时系统触发枢纽生成Pivot Spawning被攻陷的主机成为新的子树根发现的凭证传播到树中其他位置的相关假设节点。为避免过早剪枝凭证传播机制会在新凭证被发现时重新评估已修剪的分支检查新凭证是否满足了之前的前提条件。3.4 记忆子系统跨攻击阶段的状态持久化长上下文遗忘是Type B失败的主要成因之一。记忆子系统通过混合架构解决这一问题将持久状态与对话上下文分离并通过上下文负载维度与TDA集成。状态存储维护一个结构化数据库独立于对话上下文追踪五种实体类型主机IP地址、主机名、OS指纹、服务端口、版本、配置、凭证用户名、密码、哈希、票据、会话活跃Shell、隧道、枢纽和漏洞CVE标识符、利用状态、先决条件。每个条目带有时间戳并链接到攻击树中的发现节点实现来源追踪确保事实不论对话长度如何都能持久保存。选择性上下文注入取代了完整历史维护。当在节点n上操作时上下文从以下四部分组装从根到n的动作路径、n处的完整状态快照、来自状态存储中与n的目标主机或服务相关的事实、以及并行探索路径的压缩摘要。当上下文负载接近40%理想工作窗口阈值时不太相关的上下文通过LLM生成的摘要逐步压缩。超过70%时进行激进裁剪移除较旧的路径段但保留发现结果以防止性能退化。4. 评估结果全方位的性能验证PentestGPT V2在三个基准上展现了一致且显著的提升这些提升不仅表现在数字上更体现在定性的行为模式变化上。在XBOW上系统使用Claude Opus 4.5 thinking模式达到了91%的峰值任务完成率均值89%标准差2.1%比最佳基线PentestAgent61%实现了49%的相对提升。即使比较均值89% vs. 59%差距也超过了15个标准差确认了稳健的架构差异。在PentestGPT Benchmark上系统攻破了13台机器中的12台包括两台Hard级别的机器Joker和Falafel而基线系统在这些机器上都停滞在初始步骤。唯一未攻破的机器PlayerTwo需要利用一个没有公开文档的自定义Protobuf协议——这属于新颖利用类别超出了当前系统的能力边界。在GOAD上系统攻陷了5台主机中的4台而基线系统最多只攻陷2台将攻陷率翻倍80% vs. 40%。基线系统能获得初始立足点但无法推进横向移动PentestGPT V2则利用记忆子系统实现凭证持久化利用TDA进行探索引导执行了连贯的多主机攻击链。4.1 HTB Falafel案例TDA如何改变攻击策略Falafel机器的案例研究最直观地展示了TDA-EGATS的价值。这台Hard级别的HTB机器需要一条多阶段攻击链Web枚举发现登录表单→利用不同的错误消息进行用户名发现→通过SQL注入提取密码哈希→识别哈希以0e开头可被PHP松散比较操作符利用→通过type juggling绕过认证→利用文件名截断漏洞实现代码执行→三阶段权限提升PHP配置中的数据库凭证→video组的帧缓冲区捕获→disk组的debugfs读取root文件。PentestGPT成功提取了密码哈希但随后全力投入hashcat暴力破解。经过47次使用不同字典和规则的失败尝试后上下文退化阻止了模型重新审视哈希格式——type juggling向量从未被考虑过。这是典型的过早承诺和上下文遗忘的级联失败。PentestGPT V2的EGATS树则走出了完全不同的路径。当哈希破解反复失败时上升的TDI触发了对认证替代方案的探索。知识增强组件在查询以0e开头的哈希时检索出了PHP type juggling文档使得绕过认证成为可能。记忆子系统保留了每个权限提升阶段发现的凭证使得从www-data到moshe到yossi到root的完整攻击链得以实现。4.2 真实竞赛验证PentestGPT V2在HTB Season 82025年5-8月的实战部署中完成了13台新发布机器中的10台76.9%在8,036名活跃参与者中排名前100。所有Easy和Medium机器均被成功攻陷100%成功率Hard机器完成2/3Insane机器0/2。这一结果表明系统在典型企业目标上已具备部署就绪性同时也明确了当前能力的边界。5. 深层思考作为渗透测试研究者的分析与展望5.1 对这篇论文的核心评价这篇论文最令人赞赏之处不在于PentestGPT V2的性能数字而在于它对问题的诊断方式。Type A/Type B的失败分类框架为整个领域提供了一个思考工具当你设计一个新的渗透测试Agent时你应该首先问自己——我在解决的是能力缺口还是复杂性壁垒如果是前者做工具工程就够了如果是后者需要架构层面的创新。这个框架的价值将远远超出这篇论文本身。TDA的设计也体现了深刻的工程智慧。将难度这个本质上不可先验知道的量分解为四个可在执行过程中测量的维度并且在LLM擅长的相对判断和不擅长的绝对估计之间做出了正确的取舍使用归一化视野估计而非绝对步数这种设计思路值得所有LLM Agent系统的设计者学习。5.2 被论文留下的关键问题然而作为一个长期渗透测试自动化研究的观察者我认为这篇论文也留下了一些值得深入思考的问题。第一TDA的四维模型是否足够论文指出TDA无法区分困难但可解和需要创造性推理的新颖任务PlayerTwo案例两者都表现为高TDI。这实际上暗示了一个缺失的第五维度——“模式匹配置信度或解空间覆盖度”。当Agent面对一个全新的攻击面时它应该能够感知到我没有见过类似的模式而非仅仅看到多次尝试都失败了。这两种情况需要不同的应对策略前者可能需要退回到更基础的探索甚至请求人类介入后者可能只需要换一条路径。如何将这种元认知能力赋予LLM Agent是一个值得深入研究的方向。第二从MCTS到渗透测试的映射是否完全合理MCTS的前提假设是存在一个可以通过模拟获得回报估计的环境。在棋类游戏中模拟到终局可以给出明确的胜负但在渗透测试中模拟一次攻击尝试是有实际代价的时间、API调用、可能触发防御检测。EGATS用TDA替代了模拟估值这是正确的适配但这也意味着它在信息不充分时的决策质量严重依赖于TDA四个维度的准确性。当这些维度的估计都不准时例如面对全新的攻击场景EGATS可能退化为一个带有随机探索的启发式搜索。探索如何在这种退化场景中保持搜索质量可能需要引入更多的不确定性推理机制。第三对抗性环境中的脆弱性。论文在讨论部分提到了蜜罐和诱饵令牌可能毒化Agent的状态表示。这个问题比论文所描述的更加严峻。TDA的证据置信度评分完全基于工具输出的确定性——成功的SSH认证得到1.0分漏洞扫描器确认的CVE得到0.8分。但在对抗环境中这些证据本身可能是精心构造的。一个高质量的蜜罐可以呈现看似真实的漏洞服务让Agent的证据置信度快速上升到利用阈值然后在利用阶段触发检测。TDA不仅没有防御这种攻击反而可能加速了Agent陷入陷阱——因为高证据置信度会驱动Agent果断转向利用模式。未来的研究需要探索证据可信度验证机制即Agent不仅评估证据的类型还要评估证据来源的可信度。5.3 对未来研究方向的指引基于对这篇论文的深入分析和对领域发展趋势的理解我认为以下几个方向值得研究者重点关注。跨会话学习与持久化策略记忆。论文的记忆子系统解决了单次会话内的状态持久化但真实的渗透测试往往跨越数天甚至数周。更重要的是人类测试者会从历史项目中积累某类目标通常有什么漏洞的元知识。建立一个跨会话的策略记忆系统能够将过去项目中的成功攻击模式抽象为可复用的策略模板同时避免过度拟合到特定目标是一个具有高实用价值的研究方向。这不同于简单的RAG检索——它需要将具体的执行经验抽象为通用的决策启发式。分层任务分解与抽象规划。当前EGATS的规划粒度是单步操作。但在复杂的企业环境中人类测试者会在多个抽象层次上思考战略层“先拿下邮件服务器用它做跳板攻击内部网络”、战术层“使用Kerberoasting获取服务账户凭证”、操作层“运行rubeus kerberoast命令”。将TDA扩展为多层次的难度评估在每个抽象层次上分别评估可行性可能使系统能够处理更长时间跨度的攻击活动。这与论文提到的时间尺度壁垒直接相关也可能是解决它的路径之一。人机协作中的难度感知。TDA不仅对全自动系统有价值在人机协作场景中可能更有价值。一个能够实时向人类测试者展示各攻击路径难度评估的系统可以显著提升测试效率——人类测试者无需亲自探索所有路径就能做出优先级判断。这种难度感知增强的人机协作模式可能比追求完全自动化更容易在短期内产生实际价值。同时人类测试者的反馈也可以用来持续校准TDA的参数形成良性循环。可解释的攻击决策审计。随着LLM Agent在安全测试中的实际部署决策可解释性将变得至关重要。EGATS的树结构天然提供了决策轨迹的可追溯性但目前的设计更侧重于指导搜索而非向人类审计者解释为什么选择了这条路径。将TDI的四个维度作为可解释的决策理由呈现给审计者使其能够理解并评估Agent的每一次战略转向是实现负责任部署的必要条件。对评估方法论的反思。这篇论文的一个重要但容易被忽视的贡献是它对评估方法论的反思。论文指出基准与真实目标之间的差异CTF挑战设计为有单一攻击路径的可解题目而真实系统可能没有可利用的漏洞或需要跨大型攻击面的广泛发现。未来的评估需要能够独立衡量Type A和Type B性能的基准需要包含主动防御和误导性信号的对抗性场景需要跨越数小时甚至数天的长时间跨度测试。只有在这样的评估框架下我们才能准确衡量渗透测试Agent从能解CTF到能做真实渗透测试之间的距离。6. 结语这篇论文传递了一个清晰的信息在LLM Agent的渗透测试领域我们不缺模型能力的提升也不缺工具集成的工程努力我们缺的是对任务本身结构性挑战的深刻理解和针对性设计。TDA-EGATS的成功表明当Agent能够感知这条路走不通并做出调整时它的表现会发生质的飞跃。这种难度感知能力——从某种意义上说是一种人工直觉——可能不仅是渗透测试Agent的关键也是所有需要在复杂、不确定环境中进行长时间决策的LLM Agent系统的共同需求。自动化渗透测试不会一夜之间取代人类专家。但这篇论文让我们更清楚地看到了距离那个目标还有多远以及应该沿着什么方向前进。这或许比任何一个具体的性能数字都更有价值。

更多文章