PENTESTGPT: Evaluating and Harnessing Large Language Models for Automated Penetration Testing
摘要
渗透测试作为一种确保系统安全的关键工业实践, 由于需要人类专家的广泛专业知识,传统上一直难以自 动化。大型语言模型(LLMs)在各个领域取得了显著 进展,其涌现能力表明它们有潜力改变行业。在这项工 作中,我们使用真实的渗透测试目标建立了一个全面的 基准,并进一步使用它来探索LLMs在该领域的功能。 我们的研究结果表明,虽然LLMs在渗透测试过程中的 特定子任务中表现出色,例如使用测试工具、解释输出 和提出后续行动,但它们在维护整体测试场景的整体上 下文中也遇到了困难。
基于这些见解,我们介绍了PENTESTGPT,这是 一个由LLM赋能的自动化渗透测试框架,它利用了 LLMs中固有的丰富领域知识。PENTESTGPT经过精 心设计,具有三个相互作用的模块,每个模块处理渗透 测试的个别子任务,以减轻上下文丢失的挑战。我们的 评估表明,PENTESTGPT不仅在与GPT‑3.5模型相比 时,在基准目标中任务完成率提高了228.6%,而且还 在处理真实世界的渗透测试目标和CTF挑战方面表现出 效。在GitHub上开源后,PENTESTGPT在12个月内 获得了超过6,500个星标,并促进了积极的社区参与, 这证明了它在学术和工业领域中的价值和影响力。
1. 背景
大型语言模型(LLMs)已展现出深刻的能 力,展 示了对类人文本的复杂理解,并在众多任务中取得了显 著成果。LLMs 的一个突出特点是其在训练过程 中培养出的涌现能力。这使它们能够无需针对特定 任务进行微调即可执行推理、摘要和特定领域的问题解决等复杂任务。
尽管LLM取得了显著进展,但完全自动化的渗透测试系统仍然难以实现。这种差距源于对深度漏 洞理解和战略行动计划的需求。通常,测试人员结合深度优先和广度优先搜索技术]。他们首先掌握目标环境的范围,然后深入到特定漏洞。这种方法确保了全面分析,依赖于专业知识和经验。众多专业工具进一步增加了自动化的复杂性。因此,即使使用人工智能,实现无缝自动化的渗透测试解决方案仍然是一项艰巨的任务。
2. 现有的方案和经典文献
- 该领域现有的基准存在多个局限性。首先,它们的范围通常受限,专注于狭窄的潜在漏洞范围,因此无法捕捉现 实世界网络威胁的复杂性和多样性。例如,OWASP juiceshop项目是用于Web漏洞评估最广泛采用的基准。然而,它不包括提权漏洞,而提权是渗透测试的 一个关键方面。
- 其次,现有的基准可能无法认识到渗透 测试不同阶段进展的累积价值,因为它们往往只评估最终的利用成功。这种方法忽略了每个步骤对整体过程的 细微贡献,导致指标可能无法准确反映现实世界场景中的实际性能。
- 没有解决常规的LLM如GPT在应用在渗透测试中复杂的靶标渗透困难,难以维持长期记忆,过度关注一个服务并忘记之前的发现以及不准确性和幻觉导致不准确命令的问题
3. 该文思路
PENTESTGPT包含三个核心模块: 推理模块、生成模块和解析模块。每个模块保留一个 LLM会话及其对话和上下文。用户交互与 PENTESTGPT 无缝集成,其中不同的模块处理不同 类型的消息。这种交互最终形成一个最终决策,建议用户应执行的渗透测试过程的后续步骤。
为了帮助大型语言模型(LLMs)有效地执行渗透测试任务,设计了一系列与用户输入相匹配的提示。在过程中, 采用了思维链(Chain‑of‑Thought, CoT)方法论,可以显著提升LLMs的性能和推理能力。
4. 大致流程和创新
与传统的LLM不同,该模型使用了分块的模式,各个模块担任起不同的职责。
推理模块通过维护一个包含整个渗透 测试过程的任务树,有效地克服了内存丢失问题。
生成模块确保高层计划被转化 为精确且可执行的步骤。这种转换过程显著提升了渗透 测试的整体效率,并提供完整测试过程的人类可读输出。