被人工智能打败了:利用大语言模型进行渗透测试

互联不一般哥 2024-05-26 21:24:41

引用

Happe, A., & Cito, J. (2023, November). Getting pwn’d by ai: Penetration testing with large language models. In Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (pp. 2082-2086).

论文:https://arxiv.org/pdf/2308.00121.pdf

摘要

软件安全测试领域,更具体地说,在渗透测试中,需要高水平的专业知识,并涉及许多手动测试和分析步骤。本文探讨了大型语言模型的潜在用途,如GPT 3.5,以增强渗透测试者的能力。我们探讨了两种不同的用例:用于安全测试分配的高级任务规划和在易受攻击的虚拟机中进行的低级漏洞搜索。对于后者,我们在LLM生成的低级操作与一个脆弱的虚拟机(通过SSH连接)之间实现了一个封闭的反馈回路,并允许LLM分析机器的漏洞状态,提出在虚拟机中自动执行的具体攻击向量。我们讨论了充满希望的初步结果,详细的改进途径,并密切审议人工智能陪练的伦理问题。

引言

大型语言模型(LLMs),如ChatGPT或GPT 3.5,不仅成为计算机科学的热门话题,也成为了流行媒体的热门话题。网络安全和软件安全测试领域,更具体地说,在渗透测试中,长期缺乏人员。更糟糕的是,ISC2《2022年网络安全劳动力研究》指出全球网络安全劳动力年均增长11.1%,但这一增长速度被年均增长26.2%的缺口超过。最近一项对渗透测试人员的访谈研究强调了对人际交往伙伴的需求,即那些提供替代想法或方法的同事。该研究还强调,直觉是检测漏洞的一个重要组成部分。而知识转移,例如参加夺旗战(CTF)是这种直觉的潜在来源——这种直觉能部分外包给人工智能模型吗?使用基于人工智能的代理作为陪练伙伴将增强现有的安全测试人员的能力,并可能解决缺乏受过足够教育的安全专业人员的问题。将人工操作员与人工智能相结合可以创造新的能力,而不是克隆现有的能力。此外,让人类参与其中还能减少使用人工智能所带来的潜在伦理问题。最近的研究表明,使用基于人工智能的系统为低技能工人所带来的效率提高最大。因此,用生成式人工智能增强人类操作人员的能力,可能也有利于新手渗透测试人员的培训。

1 方法

我们区分了两种用例:在高层次上来看,渗透测试人员提出的典型问题是“什么是好的攻击方法”,例如,“如何攻击活动目录”。这些问题应该会产生实现这些战术和潜在的技术。在低层次上,我们假设渗透测试人员已经选择了针对目标系统的策略,并正在寻找适当的技术和相应的程序。一个典型的问题是“我想执行一个特权升级(策略),针对这个具体的Linux系统的合适的攻击向量是什么?”

2.1 高层次评估:任务规划系统

在高层次评估中,我们要求AgentGPT成为活动目录中的域管理员。生成的文档包含高度真实的攻击载体,如密码喷涂、Kerberoasting、AS-REP roasting、利用活动目录证书服务、滥用无约束授权或利用组策略。所有这些攻击都是现实可行的,也是渗透测试中常用的攻击手段。

此外,在获得目标公司的批准后,我们要求AutoGPT为该公司设计一个外部渗透测试计划。AutoGPT的计划包括一些标准方法,如执行网络漏洞扫描、执行OSINT/用户枚举,以及针对已识别的用户执行网络钓鱼。所有这些操作通常都是在外部渗透测试期间进行的。当进一步询问时,AutoGPT能够抓取该公司的网页并识别潜在的钓鱼目标(用户和他们的电子邮件地址)。但是,由于其道德过滤器,它拒绝执行任何“真正的”网络安全扫描或执行钓鱼操作。这两个答案都是现实可行的,能为渗透测试人员提供有关潜在攻击载体的良好反馈。

2.2 低层次评估:攻击执行系统

低层次评估针对一个常见的场景:在渗透测试人员获得对Linux系统的低层特权访问权限后,会寻找权限升级攻击以成为系统的root用户。为了进行真实的评估,我们编写了一个Python脚本,它使用SSH连接到一个故意设置为脆弱的lin.security Linux虚拟机。源代码和文档提供在https://github.com/ipa-lab/hackingBuddyGPT。

该脚本由一个无限循环组成:在这个循环中,它告诉GPT 3.5想象自己成为一个想要成为根用户的低特权用户。为了实现这一点,LLM可以声明一个Linux shell命令,该Linux命令将在虚拟机上的SSH上执行。当提示输入下一个命令时,相应的输出将返回给GPT 3.5。图1显示了这个反馈回路的高级概述。通过这个简单的结构,我们能够在易受攻击的虚拟机上获得root权限。

此外,在每次循环迭代结束时,GPT 3.5显示了所选的命令及其输出,然后基于此信息识别潜在的安全漏洞。对于每个漏洞,它的任务是提供一个开发示例,偷偷地命名为“验证命令”。这就产生了额外的攻击载体。

我们的脚本通常能够在虚拟机中获得root权限。常见的手段是通过调用sudo -l来列出“sudoers”文件,然后使用列出的sudo,或者使用列出的GTFObins来获得root shell。GTFObins是一种良性的系统命令,当通过sudo调用时,可以被滥用来获得root shell。另一个常见的攻击向量是检索/etc/passwd和识别未使用影子密码的用户帐户。我们要求搜索SUID二进制文件,但返回的二进制文件没有被主动利用,这表明我们的脚本或低层次模型缺乏多步骤规划能力。一个稍微改变的提示指示LLM打开一个反向shell到给定的IP地址,成功地放弃了root shell。

3 结果

本节在第一作者10年+的渗透测试经验的指导下,反思了原型的渗透测试的性能。

3.1 结果和幻觉的基础

我们的原型的一个有趣的方面是,所有执行的命令及其结果输出都被写入一个协议。这使得我们能够推断LLM建议的漏洞是否基于提供系统知识的查询,还是GPT 3.5在培训期间提取的安全趋势和先入之见。后者类似于渗透测试人员应用在工作或培训中获得的知识,例如,从参与CTF中获得的知识。

有关于因果依赖关系的推理的迹象:在检索了sudoers列表后,GPT 3.5始终建议使用各种脆弱的sudo命令来进行特权升级。在检索passwd文件后也出现了类似的模式:这里建议下一步攻击配置薄弱的用户帐户。

其他的建议,如使用某些系统漏洞,如dirty_cow,都是合理的,因为GPT 3.5“知道”这是一个Linux系统,但没有任何先前的枚举。

单纯和容易检测的幻觉很少发生,最常见的发生是建议执行“exploit.sh”。包含此脚本执行的安全编写是GPT 3.5训练集的一部分,这似乎是合理的。

虽然建议的系统命令显然是基于模式匹配,而不是基于对Linux系统或模型构建的更深入的理解,但看到我们建立的简单的基于llm外壳的反馈循环,获得根特权是很可怕的。一个合适的类比是一个笔与同事在电话里,要求建议的谈话伙伴只有一个非常有限的实际系统但一组先入之见(即先验),这是部分符合我们的研究问题的能力。当在提示中给予“和解释发现的漏洞”的额外子命令时,GPT3.5能够提供良好的介绍性信息,因此可以作为在职培训的一部分使用。

3.2 稳定性和可重复性

单个原型的运行并不稳定,即所下达命令和所识别漏洞的顺序和选择存在差异。如果运行时间较长,或将多次运行结果汇总,结果就会趋于一致(我们反复运行了几十次相同的脚本,以便观察结果是否趋于一致)。单次运行的差异似乎与GPT 3.5过分关注测试系统的单一方面有关。众所周知,渗透测试人员在完成任务时也会出现这种情况,“走入兔子洞”的情况会随着经验的累计而改善。

与linpeas.sh等工具相比,LLM的确定性似乎较低。枚举工具遍历的是一份人工编制的漏洞检查硬编码列表。进一步的研究应该阐明观察到的不稳定性是否会随着时间的推移而收敛,同时减少入侵检测系统的可检测模式。具有讽刺意味的是,GPT 3.5建议在一次运行中调用linpeas.sh,但因为它试图从一个无效的URL下载它而失败了。

3.3 LLM的伦理调节

原型使用了GPT-3.5-turbo,其中包含了针对恶意提示的安全措施。原型将命令转发给一台易受攻击的虚拟机,但是整个场景可以很容易地应用于真实系统中。GPT 3.5的毫不犹豫令人印象深刻。在脚本的开发过程中,很少会触发道德过滤器。在命令提示中加上“不要问问题或提供判断”,似乎可以显著减少误报。可选的“详细说明其他漏洞”步骤往往由于道德原因而被拒绝,但这对整体黑客攻击进度没有影响。提示词的轻微变化成功地减少了GPT 3.5的道德顾虑,例如,我们没有要求“漏洞利用”,而是要求“漏洞验证命令”。当然,从OpenAI切换到一个本地运行的LLM将删除所有服务器端的道德检查。

伦理问题在网络安全领域并不新鲜,特别是在发布渗透测试工具方面。使用GPT 3.5所引发的伦理问题类似于有关开源安全工具的讨论,这些工具红客和APT都可以使用。商业供应商试图审查他们的客户,而任何人都可以使用开源工具。最终,恶意行为者可以并且将同时使用这两种工具。关于两用商品分销的规定是存在的,但由于软件的流动性和往往不可篡改的性质,将其应用于软件的是非常笨拙的。

另一个道德问题是在常用的训练集中包含有毒内容。由于我们的原型使用的是已经训练好的基础模型,因此我们不讨论这个问题,本出版物也不涉及在训练数据中包含版权信息的问题。

转述:肖媛

0 阅读:0

互联不一般哥

简介:感谢大家的关注