原文标题:PENTESTGPT: An LLM-empowered Automatic Penetration Testing Tool
原文作者:Gelei Deng, Yi Liu, V ́ıctor Mayoral-Vilches, Peng Liu, Yuekang Li, Yuan Xu, Tianwei Zhang, Yang Liu, Martin Pinzger, and Stefan Rass发表状态:preprint原文链接:https://arxiv.org/abs/2308.06782项目地址:https://github.com/GreyDGL/PentestGPT主题类型:渗透测试笔记作者:tmylla主编:黄诚@安全学术圈
0 速览
论文主要介绍了一个基于大型语言模型(LLM)的自动化渗透测试工具PENTESTGPT以及它的设计和实现过程。作者通过对GPT-3.5、GPT-4和Bard三种LLM的评估,发现它们具有一定的渗透测试能力,但难以保持长期记忆和解决复杂问题。为了解决这些问题,作者设计了三个自交互的模块,分别解决渗透测试的不同子任务,并提出了一些有效的提示和策略。评估显示,PENTESTGPT比原始LLM的任务完成率提高了228.6%,并且在实际应用中也取得了良好的效果。
1 研究背景
背景:渗透测试是一种主动的攻击性技术,旨在识别、评估和减轻尽可能多的安全漏洞,使得组织能够在恶意实体开发之前识别和抵消其网络和系统中的潜在漏洞。同时,LLMs的强大能力为渗透测试的自动化提供了可能。
挑战:①现今的渗透测试较依赖人工操作和专业知识,限制了高效安全评估的进化需求;②现有的渗透测试基准测试不够全面,无法全面评估渗透测试进展。
Motivation: 鉴于渗透测试当前限制和LLMs的能力,作者希望探究LLMs在渗透测试任务中的应用价值,提高自动化渗透测试的效率和有效性。为此,作者①构建了一个渗透测试任务的基准测试,并②设计PENTEST框架使用典型LLMs进行交互测试,③通过比较LLMs结果与基准解决方案和认证渗透测试人员的解决方案,理解LLMs在渗透测试中的能力,并揭示LLMs与人类专家解决策略的差异。
2 研究方法
首先,作者设计了一个全面的全自动渗透测试工具MALISM;然后,针对该框架中的PentestGPT模块(重点),论文展开详细介绍与讨论;最后,在提出的渗透测试基准上对典型LLMs的渗透测试应用效果进行评估。
2.1 MALISM框架
MALISSM是作者提出的一个完全自动化的渗透测试工具,将其命名为网络安全认知引擎,主要包括以下三个模块:
EXPLOITFLOW:通过捕获每个离散动作后的系统状态来生成安全开发路线(利用流);
PENTESTGPT:利用LLMs为每个给定的离散状态启发式生成测试指导;
PENTESTPERF:一个综合渗透测试基准,用于评估渗透测试器和自动化工具在广泛的测试目标上的性能。
2.2 PENTESTGPT
为了更好设计PENTESTGPT,论文首先对LLMs在渗透测试中的“能力”和“与人类的不同策略”两个问题,对LLMs的渗透测试应用潜能进行探索性分析;然后根据探索结果针对性的实现PENTESTGPT框架。
2.2.1 PENTESTGPT先验研究
RQ1(Capability): 法学硕士可以在多大程度上执行渗透测试任务?
RQ2(Comparative Analysis): 人类渗透测试员和法学硕士的问题解决策略有何不同?
设计LLMs渗透测试流程如下:
针对RQ1,发现如下:
Finding 1: LLM熟练执行端到端渗透测试任务,但难以应对更困难的目标;
Finding 2: LLMs可以有效地使用渗透测试工具,识别常见漏洞,并解释源代码以识别漏洞。
针对RQ2,发现如下:
Finding 3: LLMs很难维持长期记忆,而这对有效链接漏洞和制定利用策略至关重要;
Finding 4: LLMs倾向最近的任务和深度优先搜索,这会导致过度关注某一任务并忘记之前的发现;
Finding 5: LLMs可能会产生不准确的操作或命令。
2.2.2 PENTESTGPT实现
先验研究表明LLMs具有一定的渗透测试能力,但难以保持长期记忆和解决复杂问题。针对该发现,设计了交互式系统PENTESTGPT,一方面优化LLMs在渗透测试中的使用,另一方面利用LLMs的优势提高自动渗透测试的效率和有效性。
PENTESTGPT框架如上图所示,通过从现实世界的人类渗透测试团队中汲取灵感,PENTESTGPT包括推理、生成和解析三个子模块,每个子模块都反映渗透测试团队中的特定角色。
推理子模块:类似渗透测试任务的团队领导,从用户那里获取测试结果或意图,并为下一步准备测试策略。论文针对渗透测试引入了一种新的表示Pentesting Task Tree(见下图),该结构持续对测试过程的状态进行编码并引导后续动作。
生成子模块:类似初级测试人员的角色,采用CoT策略将推理模块中的特定子任务转换为具体的操作命令或指令,确保精确且可操作的步骤来提高测试过程的准确性。
解析子模块:充当支持接口,能够有效地处理用户与其他两个核心子模块之间交换的自然语言信息。
此外,作者在PENTESTGPT中引入了一个交互式句柄,称为主动反馈,它允许用户直接与推理模块交互,以主动修改LLM在推理模块中的“失误”。
2.3 测试基准
数据集:本研究利用HackTheBox和VulnHub构建了一个渗透测试基准,该基准包括13个目标和182个子任务,涵盖了OWASP十大漏洞列表中出现的所有漏洞。
LLMs模型:本研究使用GPT-3.5和GPT-4作为代表性的LLMs(Bard无提供API,仅在前文探索性研究试验),将它们与PENTEST集成交互,完成对基准目标的渗透任务。
3 实验分析
性能评估:LLMs在渗透测试的特定子任务中表现出色,与GPT-3.5和GPT-4的直接使用相比,应用PENTESTGPT架构在子任务完成方面取得显着提升。
策略评估:PENTESTGPT以类似于人类专家的方式分解渗透测试任务,成功实现总体目标。不同于直接使用LLM过度关注最近的子任务,PENTESTGPT会为实现目标关联相关信息。
消融分析:PENTESTGPT中推理、生成和解析三个子模块对于成功的渗透测试都有所帮助。
实用性分析:将PENTESTGPT应用于HackTheBox挑战,以131.5美元成本完成10个选定目标中的4个,低于人类渗透测试员的成本。
4 作者
Gelei Deng:南洋理工大学,研究兴趣包括Cybersecurity、System security、Robotics Security、Web security、Software testing。
个人主页:https://geleideng.github.io/
Google Scholar主页:https://scholar.google.com/citations?view_op=list_works&hl=en&hl=en&user=NuzUkMEAAAAJ
研究团队页:https://personal.ntu.edu.sg/yangliu/team.html
安全学术圈招募队友-ing
有兴趣加入学术圈的请联系 secdr#qq.com
声明:本文来自安全学术圈,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。