本文叙述网路安全业界如何利用GPT-3(ChatGPT架构背後的语言模型)当作辅助来协助击败攻击者的最新研究。以Sophos X-Ops开发的专案为例,使用GPT-3的大型语言模型简化在安全软体的资料集中搜寻恶意活动,更准确地过滤垃圾邮件,并加快对「就地取材」(LOLBin)攻击的分析。
来自OpenAI的自然语言处理架构最近受到了很多关注。生成式预训练模型(Generative pre-trained transformer;GPT)新版GPT-3.5(ChatGPT的演算法大脑)引起了既惊奇又关注的浪潮。这些问题包括它如何被用於恶意目的,包括生成令人信服的网络钓鱼电子邮件,甚至是恶意软体。
Sophos X-Ops研究人员,包括Sophos AI首席数据科学家Younghoo Lee,一直在研究如何使用早期版本GPT-3作为一种永久性的力量。2022年8月,Lee提出一些关於如何使用GPT-3生成人类可读的攻击者行为解释和类似任务的见解。Lee一直领导三个专案,这些专案可以帮助防御者使用GPT-3系列的大型语言模型更有效地发现和阻止恶意活动:
· 用於在XDR遥测中搜索恶意活动的自然语言查询介面;
· 基於GPT的垃圾邮件检测器;
· 用於分析潜在的就地取材二进位(LOLBin)命令行的工具。
自然语言XDR搜索的一些镜头
第一个项目是一个原型自然语言查询介面,用於通过安全遥测进行搜索。该介面基於GPT,采用纯英语编写的命令(显示所有名为powershell.exe并由root用户执行的处理程序)并从中生成XDR-SQL查询用户无需了解底层数据库结构,或SQL语言本身。
例如,在图一中,提供的例示资讯及以简单数据库模式形式提供的提示工程,让GPT-3可以确定诸如“显示所有时间,一个名为 'admin ' run PowerShell.exe”翻译成SQL查询,“SELECT * FROM Process_Table WHERE user='admin' AND process='PowerShell.exe”。
Lee为两个不同的GPT-3系列模型(称为Curie和Davinci)提供一系列训练例示,包括有关数据库模式和自然语言命令对以及完成它们所需的SQL语句的信息。使用例示作为指南,该模型会将新的自然语言查询转换为SQL命令:
![图一 : 小样本学习如何用於创建自然语言查询的例示](/art/2023/03/271353335380/p1S.JPG)
图一 : 小样本学习如何用於创建自然语言查询的例示 |
|
为了从「小样本学习」中获得更好的准确性,可以在提交任务时不断添加更多例示。但这有一个实际限制,因为GPT-3对数据输入可以消耗多少内存有限制。为了在不增加工作负载的情况下提高准确性,还可以微调GPT-3模型以通过使用更大的样本对集来提高准确性,例如用作少样本引导输入来训练增强模型的样本对越大样本数量越多越好。随着更多数据的可用,GPT-3模型可以随着时间的推移继续进行微调。这种调整是累积的;每次应用更多训练数据时,没有必要从头开始重新运行所有内容。
在使用2、8和32个例示集使用少样本方法进行初始运行後,很明显,使用比 Curie更大、更复杂的Davinci模型进行的实验更成功,如图表二所示。使用小样本学习,Davinci模型在处理自然语言问题时准确率刚刚超过80%,而在处理自然语言问题时使用的数据是训练集的一部分,而在处理包括模型数据在内的问题时准确率达到70.5%以前没见过。通过引入微调,这两个模型都有很大改进,但较大的模型由於其大小可以更好地推断,并且在实际应用中会更有用。使用512个样本进行微调,然後使用1024个样本进行微调,进一步提高分类性能:
![图二 : SQL匹配准确率结果(source:Sophos)](/art/2023/03/271353335380/p2.jpg)
图二 : SQL匹配准确率结果(source:Sophos) |
|
GPT-3的这种使用目前是一个实验,但它探索的功能计划用於Sophos产品的未来版本。
将坏的过滤掉
在另一组实验中使用类似的少样本方法,Lee将GPT-3应用於垃圾邮件分类和检测恶意命令字符串的任务。
过去,机器学习已被应用於垃圾邮件检测,使用不同类型的模型。但Lee发现,当训练数据量较小时,GPT-3明显优於其他更传统的机器学习方法。与生成SQL的实验一样,需要一些「即时工程」。
文本补全任务的输入文本格式是重要的一步。如图三所示,在提示中包含一条指令和一些例示及其标签作为支持集,并附加一个查询例示。(此资料作为单个输入发送到模型)然後,要求GPT-3从输入生成响应作为其标签预测:
![图三 : GPT-3垃圾邮件检测如何工作的例示,从指令和支持集转移到查询和返回的响应。](/art/2023/03/271353335380/p3S.JPG)
图三 : GPT-3垃圾邮件检测如何工作的例示,从指令和支持集转移到查询和返回的响应。 |
|
破译LOLBins
应用GPT-3查找针对LOLBins(就地取材的二进位档)的命令是一个稍微不同的问题。人类很难对命令行条目进行逆向工程,对於LOLBin命令更是如此,因为它们通常包含混淆、冗长且难以解析。幸运的是,当前形式的GPT-3精通多种形式的代码。
如果您看过ChatGPT,可能已经知道GPT-3可以在设定所需功能的自然语言输入时使用多种脚本和编程语言编写工作代码;但也可以训练它做相反的事情从命令行或代码块生成分析描述。
再次使用了小样本方法。在提交每个命令行字符串进行分析後,GPT-3获得一组24个常见的LOLBin风格的命令行,这些命令行带有标识其一般类别的标签和叁考描述,如图四所示。
![图四 : 用於训练命令行分析器的一些JSON格式的例示(source:Sophos)](/art/2023/03/271353335380/p4S.JPG)
图四 : 用於训练命令行分析器的一些JSON格式的例示(source:Sophos) |
|
使用样本数据,GPT-3被配置为提供多个可能的命令行描述。为了从GPT-3中获得最准确的描述,SophosAI团队决定使用一种称为反向翻译的方法从命令字符串到自然语言的翻译结果被反??到GPT-3中进行翻译的过程再次进入命令字符串并与原始字符串进行比较。
首先,从输入命令行生成多个描述。接下来,从每个生成的描述中依次生成命令行。最後,将生成的命令行与原始输入进行比较,以找到最匹配的命令行,并选择相应的生成描述作为最隹答案,如图五所示:
为可疑活动类型的输入提供标签可以提高分析的准确性,在某些情况下,第一和第二好的回译结果可以提供补充资讯有助於进行更复杂的分析。
虽然并不完美,但这些方法展示使用GPT-3作为网路防御??驾驶的潜力。垃圾邮件过滤和命令行分析工作的结果都发布在SophosAI的GitHub页面上,作为 Apache 2.0许可下的开源代码,欢迎有兴趣尝试或调整它们以适应自己的分析环境的人在工作基础上进行建构。
(本文作者Sean Gallagher为Sophos公司资深威胁研究员)
**刊头图(source:Sophos)