PR - Getting pwn'd by AI: Penetration Testing with Large Language Models

原文作者:A Happe, J Cito

原文标题:Getting pwn'd by AI: Penetration Testing with Large Language Models

原文链接:https://dl.acm.org/doi/pdf/10.1145/3611643.3613083

原文来源:ESEC/FSE 2023

笔记作者:outx

0x01 Introduction

渗透测试人员需求与实际年增量不符的现实情况,催生了LLM辅佐式渗透,即AI增强渗透测试能力,使得新手渗透测试人员也能够发起更高层次的攻击,而非仅脚本小子。

研究问题

本文提出了一个RQ:如何合理地使用LLM进行自动化的渗透测试?

为了回答这一问题,作者使用ATT&CK矩阵作为安全领域威胁行为(渗透测试)人员的知识策划数据库,以此提供相应指导。并根据指导的层级不同分为高维度指导和低维度指导:在高维度指导中,通过人工“询问”的方式,解决通用场景和具体目标组织的渗透测试设计问题;在低维度指导中,作者集成了GPT3.5和脆弱的虚拟机(存在一定量的漏洞),然后允许GPT接入分析主机存在风险,提出攻击面并实施。

范围限定

除了上述场景,作者还给出了两个场景:

  1. 利用LLM生成网络钓鱼或网络钓鱼信息(存在伦理性争议)
  2. 自动化生成渗透测试报告

0x02 Background

ATT&CK、LLM、GPT3.5这类基本概念此处不再赘述

0x03 Implement

首先,再来区分本文的两大用例:

  • 高维度指导:渗透测试人员以“询问”的方式请求LLM,这类问题应当产生策略以及实施策略的潜在技术,如”如何攻击Active Diretory?“
  • 低维度指导:渗透人员试图获取针对特定目标的具体技术手段,如”我想实施权限提升,针对Ubuntu16.04有什么合适的方法?“

High-Level: Task-Planning Systems

在这一用例中,作者要求GPT生成“如何成为Active Directory中的域管理员?”。在GPT的回答中,生成的文档包含非常真实的攻击面,如password spraying, Kerberoasting, AS-REP roasting等。这些攻击都是真实、可行的,也确实在真实场景下的渗透测试中非常常用。

同时,作者在获取到目标公司的批准后,让GPT为该公司设计了一个外部渗透测试计划,该计划包括了网络漏洞扫描、爆破弱口令等操作,所有这些操作也迎合实际外部渗透测试期间渗透测试人员的惯用手段。在进一步利用的场景中,涉及伦理性争议的场景,作者并没有继续深究,但读者认为的确是可行的。

Low-Level: Attack-Execution System

在这一用例中,作者编写了一个Python脚本,使用SSH链接到一个脆弱的Linux虚拟机中,该脚本由一个循环组成,在该循环中,持续告诉GPT想象自己是一个想要成为root用户的低权限用户,然后告知其可以声明一个linux shell命令并执行,随后该脚本会在虚拟机中执行命令,并将结果返回给GPT,过程如下图

image-20240109202342390

0x04 Conclusion

作者预研了LLM与渗透测试相结合的可能性,并分别从高维度指导和低维度指导两种场景提出了相应的可行性研究思路(受制于伦理性争议,部分场景没有深入)。读者在阅读这篇文章后认为有几点是可以发散的:

  1. 提示词工程的精进,对于LLM来说,结果反馈的准确性和模型输出的标准化是实现自动化的充要条件,如何通过提示词提高模型输出准确率是实现自动化渗透测试绕不开的一大问题;
  2. LLM的幻觉问题也是一大需要解决的问题,在作者提出的低维度指导用例中,一旦模型产生幻觉(生成现实中没有的命令),并因此执行了导致系统错误的一些命令后,如何还原?
  3. 伦理性争议也是在利用LLM解决安全问题过程中需要注意的一个问题,尤其是企业在接入LLM后,如何保障数据隐私、数据安全,还需进一步限制。