ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

AutoPentester:基于大语言模型智能体的自动化渗透测试框架

AutoPentester:基于大语言模型智能体的自动化渗透测试框架 随着网络攻击规模和复杂度不断增加企业对渗透测试Penetration TestingPentesting和漏洞评估的需求持续增长。然而传统渗透测试高度依赖安全专家需要大量人工操作、工具调用以及对测试结果的分析。与此同时网络安全行业也面临专业人才不足的问题。近年来大语言模型Large Language ModelsLLMs的快速发展为自动化渗透测试提供了新的可能。已有研究例如 PentestGPT已经尝试利用 LLM 帮助安全人员规划攻击路径和生成测试命令但在实际执行过程中仍然需要较多人工干预。针对这一问题论文《AutoPentester: An LLM Agent-based Framework for Automated Pentesting》提出了一个更加自动化的 LLM Agent 框架——AutoPentester。该系统从目标 IP 地址开始能够自主进行侦察、扫描、漏洞评估、漏洞利用并最终生成渗透测试报告。论文作者为 Yasod Ginige、Akila Niroshan、Sajal Jain 和 Suranga Seneviratne。论文AutoPentesterarXiv 论文代码AutoPentester GitHub Repository1. 为什么需要自动化渗透测试传统渗透测试通常需要安全人员按照类似下面的流程工作Reconnaissance → Scanning → Enumeration → Vulnerability Assessment → Exploitation → Privilege Escalation → Reporting在这个过程中测试人员需要不断观察工具输出然后根据发现的信息决定下一步应该做什么。例如通过 Nmap 发现目标开放了 FTP 端口并且运行的是vsftpd 2.3.4测试人员可能进一步判断该版本存在已知漏洞然后使用 Metasploit 搜索相应的 exploit。因此渗透测试并不是简单地执行一组固定命令而是一个根据前一步结果不断调整攻击策略的动态决策过程。论文认为现有自动化方案主要存在三个问题攻击策略能力有限容易生成重复或简单的攻击步骤。自动化程度不足生成的命令仍然需要人来执行和解释结果。工具覆盖范围有限部分系统只支持少数安全工具。例如PentestGPT 可以根据目标环境制定攻击计划并生成命令但实际命令执行和部分结果分析仍然需要安全专家参与。PentestGPTPentestGPT GitHub2. AutoPentester 的核心思想AutoPentester 的核心思想可以概括为让 LLM 不仅负责“思考下一步做什么”还负责驱动真实的安全工具执行并根据执行结果不断调整策略。它采用一个迭代式工作流程观察结果 → 更新攻击状态 → 制定策略 → 生成命令 → 执行命令 → 验证结果 → 再次规划这种设计模拟了人工渗透测试人员的工作方式。论文中的 AutoPentester 主要由以下组件组成Summarizer AgentStrategy AnalyzerGenerator AgentAgent Computer InterfaceACIResults Verifier AgentRepetition IdentifierReport Generator其中核心的 LLM Agent 包括 Summarizer、Strategy Analyzer、Generator、Results Verifier 和 Report Generator而 Repetition Identifier 与 ACI 负责具体的流程控制和工具执行。3. AutoPentester 的整体工作流程假设用户给系统一个目标 IPI want to test the machine with IP x.x.230.28AutoPentester 首先进行基本的网络侦察例如 Nmap 扫描。随后系统不会简单地执行预先定义好的攻击脚本而是Nmap Result ↓ Summarizer ↓ Strategy Analyzer ↓ 选择下一步攻击策略 ↓ Generator ↓ 生成安全工具命令 ↓ ACI ↓ 执行 Nmap / Metasploit / Nikto / ... ↓ Results Verifier ↓ 验证结果 ↓ 更新攻击状态 ↓ 进入下一轮最终系统会将整个测试过程记录下来并生成结构化的渗透测试报告。论文明确将 reconnaissance、scanning、vulnerability assessment、exploitation 和 reporting 纳入同一个自动化流程。4. Strategy Analyzer系统的“大脑”AutoPentester 最重要的组件之一是Strategy Analyzer。它的任务不是直接生成命令而是回答“根据目前已经发现的信息下一步应该做什么”论文设计了一个称为Pentest TreePTT的攻击状态结构。传统的攻击树主要保存Step 1 ↓ Step 2 ↓ Step 3而 AutoPentester 的 PTT 不仅保存已经执行的步骤还保存每一步产生的关键发现findings。例如Port Scan ├── Port 21 │ └── vsftpd 2.3.4 │ ├── Port 22 │ └── OpenSSH │ └── Port 80 └── Apache这样Strategy Analyzer 就可以利用之前获得的信息制定下一步策略。例如发现 FTP → vsftpd 2.3.4 ↓ 策略 检查 vsftpd 2.3.4 是否存在已知漏洞 ↓ 下一步 使用 Metasploit 搜索对应 exploit论文进一步让 Strategy Analyzer 使用基于 findings 的 reasoning并将过去的 PTT 持续提供给 LLM以减少长时间运行过程中出现的上下文遗忘问题。这实际上是 AutoPentester 与简单的LLM tool calling方法之间的重要区别之一。5. RAG帮助 LLM 生成更加可靠的安全命令另一个关键组件是RAGRetrieval-Augmented Generation。论文观察到即使 LLM 对网络安全具有大量知识它仍然可能在某些具体工具和漏洞组合上产生 hallucination。例如LLM 可能知道某个漏洞存在但不知道对应工具的正确参数。因此AutoPentester 为 Generator Agent 建立了一个安全知识库。知识库主要来自Metasploit: The Penetration Tester’s GuidePenetration Testing: A Hands-on Introduction to HackingHackTricks 等在线安全资料论文将知识切分成 500 字符的文本块然后使用 embedding 模型生成向量并存入向量数据库。当 Strategy Analyzer 选择一个攻击步骤之后系统使用该步骤作为查询检索最相关的 10 个知识片段并将这些信息提供给 Generator。因此Strategy ↓ RAG Retrieval ↓ 相关漏洞 / 工具知识 ↓ Generator ↓ 完整命令这使得 Generator 不再完全依赖 LLM 的参数知识而是能够参考更加具体的工具使用信息。6. Results Verifier执行之后再检查自动化系统的另一个问题是LLM 生成的命令即使看起来合理也不一定真的能够得到预期结果。因此 AutoPentester 引入了Results Verifier。例如一个 Nmap 命令可能因为目标端口过滤而没有得到预期结果。系统会分析Generated Command Tool Output ↓ Results Verifier ↓ 是否得到预期结果 ↙ ↘ Yes No ↓ ↓ Summarizer 修改命令如果结果不符合预期Results Verifier 会尝试调整 Generator 生成的命令然后重新执行。论文的消融实验显示Results Verifier 能够显著降低不完整命令的比例。7. Repetition Identifier避免 LLM 陷入循环LLM Agent 在执行复杂任务时非常容易出现一个问题重复尝试已经失败的方法。例如尝试 exploit A ↓ 失败 ↓ 再次尝试 exploit A ↓ 失败 ↓ 再次尝试 exploit A这会浪费大量时间和 API token。AutoPentester 因此设计了Repetition Identifier。系统会把当前步骤描述转换成 embedding并与之前执行过的步骤进行 cosine similarity 比较。如果相似度达到预设条件则认为当前步骤可能是重复操作。检测到重复之后系统提供四种选择ContinueExitInteractive ModeGeneral Input其中 Interactive Mode 允许人工介入例如对 GUI 工具进行操作然后将观察结果反馈给 AutoPentester。8. Agent Computer Interface让 LLM 真正“动手”很多 LLM 安全系统的问题在于LLM 会告诉你应该执行什么但不会真正执行。AutoPentester 通过Agent Computer InterfaceACI解决这一问题。ACI 将 Generator 产生的命令解析出来并调用相应的 Python 函数执行安全工具。论文实验中使用的工具包括NmapMetasploitNetcatNiktoDirbusterJohn the RipperSQLmapSmbclientDnsreconSSLscan其中普通 CLI 工具使用 Pythonsubprocess处理而交互式 CLI例如 Metasploit使用pexpect。这使 AutoPentester 从LLM 给出建议进一步发展为LLM → 生成命令 → 调用工具 → 获取结果 → 再规划这也是论文强调“更高自动化程度”的核心所在。9. 实验AutoPentester 如何被测试论文使用了两类测试环境。9.1 Hack The Box第一类是 Hack The BoxHTB机器用来测试 AutoPentester 的战略渗透测试能力。作者选择了 10 台机器6 台 Easy4 台 Medium其中 5 台来自 PentestGPT 原始实验包括SauPilgrimageTopologyAuthorityJupiter另外加入 5 台机器以测试两个系统在未见过的目标上的表现。HTB 官方资料将其描述为用于网络安全训练的平台其中的 Machines 是包含真实安全问题和漏洞的易受攻击虚拟机。Hack The Box 官方网站10. 自建 Vulnerable VMs第二类实验使用 4 个自建虚拟机用来测试漏洞识别和漏洞覆盖能力。这些虚拟机包含 OWASP Top 10 相关漏洞另外 VM4 使用 Metasploitable II。论文中的测试漏洞包括vsftpd 2.3.4 backdoorOpenSSH username enumerationSamba RCETelnet RCESMTP RCEHTTP default credentialsWordPress SQL injection需要注意的是论文实验使用的是当时实验设置中的 OWASP Top 10 分类目前 OWASP 已发布 2025 版本因此阅读论文实验时应区分论文中的实验分类与当前 OWASP 版本。OWASP Top 10 官方页面11. AutoPentester vs. PentestGPT论文选择 PentestGPT 作为主要 baseline因为两者目标相近而且 PentestGPT 具有公开代码便于复现比较。在 HTB 实验中论文报告的平均结果如下指标PentestGPTAutoPentesterSubtask Completion47.18%59.92%Services Coverage70.28%85.64%Steps11.239.46Loops2.100.30Human Interaction15.361.13Incomplete Commands4.460.13Time20.31 min34.87 minCost$9.61$13.47这些结果来自论文在 10 台 HTB 机器上、每台运行三次后的平均值。其中几个结果尤其值得注意。Subtask CompletionAutoPentester59.92%PentestGPT47.18%论文将其表述为27.0% 的相对提升。Human InteractionAutoPentester1.13 次/机器PentestGPT15.36 次/机器这说明论文所提出的架构最大的变化之一并不是单纯提高 LLM 的“推理能力”而是减少了人在执行环节中的参与。Incomplete CommandsAutoPentester0.13 次/机器PentestGPT4.46 次/机器论文认为 RAG 和 Results Verifier 是降低这一问题的主要原因。12. 自建 VM 的结果在漏洞覆盖实验中两者的平均结果为系统Vulnerability CoveragePentestGPT70.37%AutoPentester98.14%也就是说在作者构建的 4 个 VM 上AutoPentester 能够覆盖绝大多数已知漏洞。与此同时PentestGPT Steps 11.67 Loops 3.25 Human interactions 18.17 Incomplete commands 6.25 AutoPentester Steps 7.17 Loops 0.17 Human interactions 0.25 Incomplete commands 0这进一步说明论文提出的重点并不仅仅是“让 LLM 更聪明”而是通过多个模块把 LLM 放入一个更加完整的perception → reasoning → action → verification闭环中。13. 但 AutoPentester 也有明显代价论文中的一个重要结果是AutoPentester 的自动化程度提高了但运行时间和 token 成本并没有同时降低。在 HTB 实验中PentestGPT 平均约 20.31 分钟AutoPentester 平均约 34.87 分钟AutoPentester 平均运行时间增加约71.9%。同时平均成本PentestGPT$9.61AutoPentester$13.47也就是说AutoPentester 每台机器平均多花约$3.86。原因之一是 AutoPentester 增加了RAGResults VerificationACI多轮 LLM 调用尤其是 Metasploit 等交互式工具需要等待不同操作的响应因此 ACI 为了保证稳定性需要加入额外等待时间。因此这项工作的核心优化目标实际上不是单纯的最短运行时间而更接近减少人工参与同时提高自动化测试覆盖率。14. 消融实验到底哪些模块最重要论文进一步进行了 ablation study。基础系统Summarizer Analyzer Generator然后逐步加入Reasoning-based Strategy AnalyzerRAGRepetition IdentifierResults Verifier在 HTB Lame 上完整系统达到100% subtask completion而基础版本只有33.33%论文发现Strategy Analyzer基于 findings 的 reasoning 将完成率从 33.33% 提升到 41.67%。RAG进一步帮助 Generator 生成更加完整和准确的命令。Repetition Identifier将每一步中的 loop ratio 从0.48 降至 0.05论文报告约90.5% 的降低。Results Verifier将 incomplete-command ratio 从0.43 降至 0.13论文报告约80.1% 的降低。因此AutoPentester 的贡献并不是某一个单独的 prompt而是多个机制组合之后形成的闭环。15. 专业人士怎么看论文还进行了一个小规模用户研究。研究招募了10 名网络安全专业人士其中 7 名 penetration testers3 名其他 cybersecurity professionals每人具有 5 年以上行业经验他们比较 AutoPentester 和 PentestGPT 生成的测试结果和报告。AutoPentester 在问卷中的总体平均得分约为3.93 / 5PentestGPT3.3 / 5论文报告 AutoPentester 的总体评分比 PentestGPT 高约19.8%。参与者尤其关注attack surface coverageinformation gatheredattack-step qualitystrategyefficiencyremediationreport clarity是否可以节省基础渗透测试时间不过有一个值得注意的结果在“系统是否足够接近人类 Pentester”这一问题上PentestGPT 的得分略高。论文解释称一些专家认为人工灵活调整策略在某些情况下仍然具有价值。16. AutoPentester 并不是“完全自动化的黑客”这是理解这项工作的一个非常重要的地方。虽然论文强调 automated pentesting但作者自己也明确讨论了失败案例。10 台 HTB 机器中只有 Lame 和 Bashed 被完整解决另外 8 台至少有一个 subtask 失败主要失败原因包括失败原因次数无法找到正确攻击策略4缺少必要 exploit 知识2无法处理 GUI2例如在 Authority 中系统没有识别出解密后的密码是访问 8443 Web 服务的关键。在 Topology 中系统没有自动获得某个需要额外 Web research 的漏洞知识。另外对于 Web 应用系统主要依赖curl容易因为大量响应内容而丢失重点。因此AutoPentester 当前更准确的定位应该是一个能够显著减少人工基础工作量的 LLM-driven automated pentesting framework而不是能够替代专业 Pentester 的完全自主系统。17. 当前框架的主要局限论文总结了几个重要限制。① GUI 支持不足目前自动化模式主要针对 CLI 工具。对于 Burp Suite 等 GUI 工具需要进入 Interactive Mode。② RAG 知识库可能限制探索空间Generator 主要根据 RAG 提供的知识生成命令。如果知识库没有某个 exploit 或 GitHub 项目系统可能根本不会想到该攻击路径。因此知识库质量和更新频率直接影响系统性能。③ LLM 仍然缺乏复杂攻击策略能力在复杂 HTB 机器上系统最大的失败来源仍然是找不到正确的攻击策略。这说明当前问题并不完全是“命令生成”而是更高层次的strategic reasoning。④ 用户研究样本较小只有 10 名行业专家因此作者也认为未来应该扩大用户研究规模。18. 下一步研究方向论文提出的未来研究方向非常有意思。作者认为如果希望进一步提升自动化渗透测试能力可以考虑对 LLM 进行针对 pentesting strategy 的 fine-tuning。特别提到了Reinforcement LearningRLReinforcement Learning from Human FeedbackRLHFDirect Preference OptimizationDPO目标是让模型不仅学习“这个漏洞对应什么命令”而是学习“在当前攻击状态下哪一种攻击策略最值得继续探索”此外论文还提出增加 GUI interaction module加入 ZAP加入 OpenVAS加强 Web application testing这些方向可以进一步扩大 AutoPentester 的工具覆盖范围。19. 这项工作的核心贡献是什么如果用一句话总结AutoPentester 的主要贡献不是简单地把 LLM 接到 Nmap 或 Metasploit 上而是建立了一个能够“观察结果—维护攻击状态—制定策略—生成命令—执行—验证—避免重复”的闭环 Agent 架构。它把传统的LLM ↓ 建议命令 ↓ Human ↓ 执行 ↓ Human ↓ 告诉 LLM 结果转变为┌──────────────┐ │ Strategy │ │ Analyzer │ └──────┬───────┘ ↓ Generator ↓ ACI ↓ Security Tools ↓ Results Verifier ↓ Summarizer ↓ Update PTT │ └──────────→ 下一轮这也是这项工作的核心研究价值。20. 重要链接 论文AutoPentester — arXiv论文标题AutoPentester: An LLM Agent-based Framework for Automated Pentesting作者Yasod Ginige、Akila Niroshan、Sajal Jain、Suranga Seneviratne。 AutoPentester 源代码GitHub — YasodGinige/AutoPentester论文中明确提供了该代码仓库并将实验日志、问卷及调查结果等材料上传至 GitHub。总结AutoPentester 展示了一种从LLM-assisted pentesting向LLM-agent-based autonomous pentesting转变的思路。它的关键并不是单纯使用一个更强的 LLM而是通过Strategy Analyzer Pentest Tree RAG ACI Results Verifier Repetition Identifier构建一个持续迭代的自动化闭环。在论文实验中AutoPentester 在 10 台 HTB 机器上的平均 subtask completion 为59.92%相比 PentestGPT 的47.18%更高在自建 VM 上的平均 vulnerability coverage 为98.14%相比 PentestGPT 的70.37%更高。同时人机交互次数从15.36降低到1.13。但与此同时它也暴露出一个非常重要的问题自动执行工具并不等于真正理解攻击策略。在复杂 HTB 环境中AutoPentester 仍然会因为无法找到正确攻击路径、缺少 exploit 知识以及 GUI 操作能力不足而失败。论文因此将未来工作重点放在 strategy learning、RL/RLHF/DPO、GUI interaction 和更广泛的 Web security tooling 上。从研究角度来看这项工作体现出的核心趋势是未来的自动化渗透测试可能不再只是“让 LLM 生成安全命令”而是让 LLM Agent维护长期攻击状态、理解环境变化、进行策略规划、调用真实安全工具并根据执行结果自主修正下一步行动。
返回列表