大家读完觉得有帮助记得关注和点赞!!!
抽象
端点监控解决方案广泛部署在当今的企业环境中,以支持高级攻击检测和调查。这些监控器持续将系统级活动记录为审计日志,并提供对安全事件的深入可见性。遗憾的是,现有的基于审计日志的语义分析方法颗粒度较低,仅达到系统调用级别,难以对高度隐蔽的行为进行有效分类。此外,现有工作主要将审计日志流与描述行为的规则知识库进行匹配,这些规则知识库严重依赖专业知识,缺乏检测未知攻击和提供解释性描述的能力。在本文中,我们提出了 SmartGuard,这是一种将审计事件语义中的抽象行为与大型语言模型相结合的自动化方法。SmartGuard 从传入的系统日志中提取特定行为(功能级别)并构建知识图谱,按线程划分事件,并将事件摘要与图形嵌入相结合,以实现信息诊断,并通过大型语言模型提供解释性叙述。我们的评估表明,SmartGuard 在评估恶意行为方面取得了 96% 的平均 F1 分数,并在多个模型和未知攻击中表现出良好的可扩展性。它还具有出色的微调功能,允许专家协助及时更新系统。
索引术语:
审计日志分析、网络攻击检测、知识图谱、大型语言模型。第一介绍
大型企业系统中的安全事件在全球范围内呈上升趋势。我们一直在目睹攻击的规模和复杂性。Capital One 报告称,由于未经授权的数据库访问,1.06 亿客户的信用卡信息被泄露[1].最近的 Twitter 攻击导致数十个知名帐户向数千万粉丝展示欺诈信息[2].为了更好地预防和应对此类攻击,端点监控解决方案(例如,安全信息和事件管理 (SIEM) 工具[3]) 被广泛部署以实现企业安全。这些监控器持续将系统级活动记录为审计日志,从而捕获系统执行状态的许多方面。
在响应安全事件时,网络分析师对审计日志执行因果分析,以发现攻击的根本原因及其损害范围[4],[5]. 但是,正常系统生成的审计日志量并不小。即使是台式计算机,每天也可以轻松生成超过 100 万个审计事件[6],[7],更不用说云基础设施中繁忙的服务器了。为了克服这一挑战,最近的研究解决方案通过从审计日志中消除不相关的系统作来扩展因果分析[7,8,9,10,11,12,13].另一个研究方向旨在提高日志查询系统的效率[6,14,15].遗憾的是,数据减少和搜索改进都没有显著减少分析工作量。这些解决方案没有捕获审计数据背后的语义,而是将行为识别留给分析师[16].因此,仍然需要大量的手动工作来评估主导审计日志的相关但良性和复杂的事件。特别是,分析师面临的一个主要问题是如何弥合审计事件和系统行为之间的语义鸿沟,从而在行为检测中实现更高效、更广泛的应用。
现有工作旨在通过将审计事件与描述行为的专家定义规则(例如基于标签的策略)的知识库相匹配来弥合这一差距[17],[18]、查询图表[19],[20]和 TTP(战术、技术和程序)规范[21],[22].从本质上讲,这些解决方案通过标签传播或图形匹配来识别高级行为。但是,预期的瓶颈是域专家手动参与指定此类规则。例如,MORSE[18]需要专家遍历系统实体(例如文件)并初始化其机密性和完整性标记以进行标记传播。TGMiner 公司[20]在挖掘区分行为模式并在测试集中搜索它们之前,需要在训练日志集中手动标记行为。尽管在审计日志分析中起着至关重要的作用,但将事件映射到行为在很大程度上依赖于专业知识,这可能会阻碍其实际应用。
从审计事件中提取代表性行为以供分析师调查可以提供缓解此问题的有效策略。但是,抽象高级行为的准确性取决于模板的匹配程度或相似性算法的通用性。当面对大量的异构审计日志时,无论是模板还是相似度算法都难以实现良好的通用性。
最近,大型语言模型在执行复杂任务方面的成功[3,17]提供了一种很有前途的方法来增强抽象的高级行为分析。具体来说,大型语言模型可用于解析大量数据、识别相关信息并生成简洁而有洞察力的输出。这大大减轻了分析师手动筛选大量数据的负担,帮助他们更快、更有效地解决事件。此外,大型语言模型可以适应新的和不断发展的事件类型,从过去的数据中学习以改进未来的预测。例如,OPT 模型采用了高效的训练方法,成本仅为相同参数的语言模型的 1/7,非常适合大规模推理任务[23].
更具体地说,我们可以使用大型语言模型自动抽象高级行为,并解释和标记语义相似的行为,即使没有标签来解释它们是什么。但是,由于已经标记了重复/可比较的行为,分析师只需查看标签中的代表,从而大大减少了需要调查的事件。除了减少行为分析中的手动工作量外,使用大型语言模型进行自动行为抽象还可以实现主动分析,以检测内部威胁或外部漏洞中的异常行为模式。
虽然采用大型语言模型进行行为抽象分析听起来很有前途,但它也面临着以下挑战:复杂的事件语义区分和行为识别,因为审计事件记录了一般的系统活动,因此缺乏高级语义知识。单个事件(例如,进程创建或文件删除)可以在不同的上下文中表示不同的语义。此外,由于审计事件的规模很大、交错性很高,划分事件和识别行为边界就像大海捞针一样。大型语言模型缺乏特定于领域的固有知识,尤其是在审计日志分析等专业领域。这种对特定上下文的缺乏理解可能会限制他们预测事件根本原因和生成适当解释的准确性。
在本文中,我们提出了 SmartGuard,这是一种自动化行为抽象和检测方法,可弥合审计事件的语义差距并微调大型语言模型以检测良性和恶意行为并提供解释性叙述。它不依赖于事件语义的专业知识来执行行为抽象。语义是从审计日志中使用事件的上下文中自动获取的,我们将其称为事件的上下文语义。 更具体地说,SmartGuard 首先预处理输入审计日志,包括删除冗余和提取行为的主题、对象和关系。与以前的解决方案不同,它强调特定的作行为(例如功能)并将其合并到记录中,并根据线程对日志进行分类。因此,与以前的解决方案相比,它可以获得更详细的深度行为特征。然后,SmartGuard 根据划分的单元为每个单元生成自然语言摘要,并使用基于图形神经网络 (GNN) 的嵌入模型,根据日志和划分单元的上下文生成行为语义的图形嵌入。之后,它识别连接到相关数据对象(即同一线程)的事件,并将其语义聚合到高级行为的表示中。最后,SmartGuard 基于抽象的高级行为表示对大型语言模型进行微调,实现日志行为的信息诊断并提供可解释的叙述。
SmartGuard 提供了一种将大型语言模型与抽象日志高级行为相结合的方法。通过可解释的方法,它可以对行为和事件进行推理,使分析师能够比较和解决行为。利用大型语言模型的特性,它还可以组合多种行为,甚至预测特定行为应该是什么。这些功能可以构成设计新安全解决方案(例如异常行为检测)的基础,或支持现有解决方案选择适当的行为进行深入检查。
我们对 SmartGuard 进行了原型设计,并使用了 DARPA 透明计算计划发布的公共 DARPA TC 数据集[24]评估 SmartGuard 在攻击调查中的准确性和可解释性。我们还对步骤处理进行了比较实验,并注意到与不划分线程和不使用图形嵌入模型语义相比,SmartGuard 取得了更好的结果。实验结果表明,SmartGuard 准确识别了具有相似使用上下文的系统实体,并在行为抽象方面取得了 95.2% 的平均 F1 分数。它展示了良好的可扩展性,在多个模型中取得了有利的结果。
我们的贡献总结如下。
- •
我们提出了 SmartGuard,这是一种将大型语言模型与从日志中提取行为相结合的方法,使其能够有效地检测已知和未知的攻击。我们的方法总结了由信息流指导的行为,并使大型语言模型能够通过聚合上下文语义来执行信息诊断。
- •
我们提出了一种新的方案,用于抽象上下文语义,实现细粒度到特定行为(函数级别),并按线程划分事件。这允许与大型语言模型集成,以便为行为语义提供解释性叙述。
- •
我们对常见的恶意行为进行了系统的评估和可扩展性分析。结果表明,SmartGuard 可以有效地抽象出高级行为并对其进行检测,展示了跨多个模型和未知攻击的良好可扩展性。此外,它可以有效地与专家协作,以进行微调和实时系统更新。
第二背景和动机
在本节中,我们首先通过一个示例介绍审计日志分析及其挑战。然后,我们利用我们的见解分析行为抽象问题,并描述威胁模型。
II-A 型激励示例
II-A1 号场景
考虑 Barephone Micro 的攻击场景。作为攻击者,您编写了一个恶意应用程序 APK,意图窃取数据库文件。受害者用户安装并运行恶意 APK,该 APK 加载了 Micro APT 共享对象。Micro APT 作为 C2 连接到 77.138.117.150:80。地址 128.55.12.114 用作 C1,其中良性 Activity 会安装提升驱动程序,并使用该驱动程序进行权限提升。最后,新权限用于调用 getReadableDatabase 以窃取数据库文件mmssms.db。然后对 removeDeletedContacts 进行多次调用,以从数据库中清除相关信息。 虽然这种策略多次执行高风险功能,但传统方案并没有刻意记录特定的功能行为,导致分析师错误地将其归类为正常事件。图 1 显示了该策略的行为图。
图 1:场景示例。图中的节点是系统实体(矩形表示函数,圆角矩形表示地址和文件,省略号表示套接字,菱形表示数据库)。节点之间的边表示系统调用。为清楚起见,我们对行为中的源数据对象进行颜色编码,其中红色和黄色表示高风险行为。
II-A2 号审计日志分析
系统审计日志使分析师能够通过数据源深入了解网络攻击。每个审计记录都代表一个作系统级别的作(即系统调用),例如流程执行、文件创建和网络连接。具体来说,记录可以定义为三元组(Object、Relation、Object),其中 Object 是系统实体(即进程、文件或网络套接字),而 Relation 是系统调用函数。我们将同一进程中同一线程的记录聚合为事件。每个事件都属于一个特定的线程(标记在事件的开头)。请注意,系统实体与一组标识属性相关联,例如标签(例如 PID)和名称(例如,文件路径和函数)。此外,每条单独的记录(例如,写入文件的作)都表示主题和对象之间的信息流。
II-A3 号大型语言模型对事件推理的承诺
大型语言模型能够推断和分析事件语义。自然语言处理和机器学习的快速发展导致了强大的大型语言模型 (LLM) 的开发。据报道,这些模型在零样本和少数样本学习场景中的各种下游任务中都有效[25,26,27].他们在翻译、摘要和语义理解方面表现出了卓越的表现。利用 LLM 的推理功能可以改变审计日志分析中识别和检测行为的方式。LLM 提供解释性叙述的能力有助于减轻分析师与复杂任务相关的压力和负担,使他们能够更专注于更高级别的工作和决策。
II-B 型挑战
在捕获攻击序列和来源时,分析师不仅必须识别恶意行为(例如数据泄露),还必须识别良性行为(例如文件上传)。尽管来源图提供了直观的表示形式来可视化因果依赖关系并删除不相关的事件,但由于日常活动无处不在,分析师仍然花费过多时间调查相关但良性的事件。
从审计事件中抽象出行为是分析师浏览大量事件并关注特定信息的有效策略。从本质上讲,行为代表了审计数据的抽象。在行为层面工作,可以有效地将分析工作量从整个事件空间减少到特定场景下吸引注意力的有趣行为。但是,要从低级审计事件中自动提取高级行为并对其进行准确分类,分析师面临三大挑战:
- •
优化审核事件的语义。审计记录通常以流程作为最小单位,但它们忽略了在每个行为步骤中执行的特定功能。这会使某些恶意行为难以检测。例如,可能无法识别名称不同但语义相似的两个实体的文件被盗。
- •
推断审计事件的语义并识别行为边界。审计事件记录了详细的系统执行状态,但缺乏对识别行为模式至关重要的高级语义知识。例如,具有相同名称的系统实体可能表示不同的意图。现有工作主要使用专家定义的规则或模型知识库来解析审计事件以揭示事件语义。但是,鉴于审计事件的规模很大,手动规范很容易损害抽象高级行为的可伸缩性,即使在中等规模的系统中也是如此。此外,审计数据量通常非常大,并且审计事件是高度交错的。例如,使用 APT 的单个软件包安装可以生成超过 30,000 个事件。此外,所有个体行为都有因果关系。这使得分析师难以对事件进行细分和区分行为边界。
- •
识别未知攻击并实现及时的系统更新。 虽然现有的解决方案可以识别已知的攻击行为,但未知的攻击在现实中发生的频率更高。与已知的攻击类型不同,学习行为之间的语义关系和识别未知攻击是一项挑战。更重要的是,现实世界的系统应该能够与安全人员互动,并及时更新他们识别的攻击类型。
II-C 型问题分析
鉴于用户登录会话中有大量审计日志,我们的目标是识别高级(良性和恶意)行为,并在没有分析师参与的情况下提供其语义的定量表示。此外,我们的目标是使用大型语言模型来识别抽象的高级行为并提供可解释的叙述。与严重依赖领域知识的传统行为抽象方法相比,我们的目标是使用简单有效的洞察实现自动化行为抽象。
我们的第一个见解是,函数级的行为记录和基于线程的日志划分可以识别出更隐蔽的日志行为。这种洞察来自于:观察到在传统的审计日志分析中,每条审计记录一般都被处理成一个三元组(Subject、Relation、Object),其中 Subject 是流程实体,Object 是系统实体,Relation 是系统功能。此外,Object 还包含一组标识标签。例如,(cp, read, test.txt) 表示复制进程对文件test.txt执行了读取作。这种三元组划分是基于过程的。这种方法可以有效、简洁地提取一个高层次的行为,但它忽略了行为中更详细的部分,比如文件的具体地址和每条记录中的函数使用过程。这是因为函数等参数记录在 Object 标记中,而不是直观地反映在语义中。在恶意行为中,除了敏感和特殊文件外,某些函数使用的语义也应该是重点监控目标。例如,想要窃取 calllog.db 文件内容的攻击者可以使用提升驱动程序提升其权限,然后调用地址为 /android.providers.contacts /databases 的函数 CallLogDatabaseHelper.getReadableDatabase() 来完成恶意行为。同样,窃取其他文件(如 dialer.db)也涉及类似的行为。图 2 显示了事件中的类似行为。 这种类型的攻击很难用传统方法检测到。此外,我们观察到此类行为经常发生在同一个线程空间内,传统的基于进程的划分使得很难反映同一线程内行为的整体特征。因此,线程划分也应该是审计日志分析的重要组成部分。
图 2:用于从不同数据库窃取信息的攻击子图。我们对数据对象进行了颜色编码,黄色表示类似的行为语义。
我们的第二个见解是,审计事件中系统实体和关系的语义可以从它们的使用上下文中揭示出来。同样,对于其他文件(例如 calllog.db),读取作将调用 getReadableDatabase() 函数。即使不同的行为包括其他节点,我们仍然可以从整体上下文中确定它们的相似性。因此,我们可以推断,尽管标识符不同,但这些文件可能具有相似的语义。
其核心思想是从审计事件中的上下文信息中揭示系统实体和关系的语义,例如通过分析它们在事件中的相关性。提取此类上下文语义的通用方法是使用图形嵌入模型。目标是将系统实体和关系映射到图形嵌入空间(即数值向量空间)中,其中向量之间的距离捕获语义关系。同时,从分割的事件生成日志摘要并将其与图形向量集成成为事件语义。现在我们可以解释审计事件的语义信息。下一步是识别属于恶意行为的审计事件。
图 3:SmartGuard 概述。首先,我们从日志中提取特定行为(函数级)并构建知识图谱。其次,我们根据线程划分行为并提取文本摘要。然后,我们对提取的行为子图进行嵌入,并将它们与文本相结合以形成行为语义。最后,我们使用一个大型语言模型来诊断行为语义并提供解释性叙述。
我们的第三个见解是,大型语言模型可用于识别高级日志语义。根据我们的观察,大型语言模型在推理任务中取得了显著的成功。尽管大型语言模型在审计日志领域的知识有限,但它们在微调方面的卓越性能允许通过思维链 (COT) 方法改进语义识别。例如,通过提出“日志行为中的敏感链接有哪些”、“日志行为中的敏感节点是什么”、“日志行为的恶意类型是什么”等引导性问题,我们可以增强大型语言模型识别日志语义的准确性和可扩展性。
II-D 型威胁模型
我们假设底层作系统、审计引擎和监控数据是可信计算基础 (TCB) 的一部分。确保作系统内核、终端节点监控器或审计日志本身的完整性超出了这项工作的范围。此威胁模型在系统审计的相关工作中共享[28],[29],[17],[18],[30],[22].我们还假设在内核级别对行为进行审计,并且其作被捕获为系统调用审计日志。尽管攻击者可能会尝试在不执行任何系统调用的情况下执行恶意作以隐藏其踪迹,但此类行为似乎很少见,并且它们对系统其他部分的影响有限[31].在本文中,我们重点介绍单用户会话中的行为。我们的分析通常适用于跨会话行为。
第三方法论
在本节中,我们将在第 III-A 节中介绍 SmartGuard 的方法概述,然后在第 III-B 节中介绍知识图谱构建。接下来,我们将在 Section III-C 中讨论 Behavior Abstraction。最后,我们将在第 III-D 节中介绍用于事件推理的 LLM。
III-A 系列方法概述
SmartGuard 的总体方法如图 3 所示。它由三个主要阶段组成:知识图谱构建、行为抽象和事件推理的 LLM。SmartGuard 将系统审计数据作为输入,例如 Linux 审计日志[32].它总结了行为实例,抽象了它们的高级语义,并最终输出诊断结果和解释性叙述。
具体来说,以用户会话中的审计日志作为输入,知识图谱构建模块首先将日志解析为三元组,然后按线程划分,然后构建一个基于日志的知识图谱 (KG)。然后,Event Semantic Inference 模块采用图神经模型来推断知识图谱中节点的上下文语义。同时,Behavior Summarization 模块会枚举知识图谱中的子图,以生成日志的文本摘要。结合节点语义,Behavior Semantic Aggregation 模块随后增强了子图以编码行为实例的语义。最后,大型语言模型 (LLM) 模块基于聚合语义进行信息诊断,并提供解释性叙述,可以进一步减少下游任务的工作量。我们将在以下部分中介绍 SmartGuard 的设计细节。
图 4:图形构造示例。我们使用不同的颜色和形状来标记不同的节点,对应表 I 中的节点类型。节点之间的线条表示系统调用。
III-B 型知识图谱构建
为了分析事件的上下文语义,需要一个统一的表示形式,以同质的方式呈现异构事件。我们使用基于知识图谱 (KG) 的表示来集成异构信息。这允许在未来捕获超出来源的关系[33,34](例如,权限和所有者等文件元数据)。
遵循 Färber 等人对 KG 的正式描述。[35],我们将基于日志的 KG 定义为资源描述框架 (RDF) 图[36].更具体地说,基于对数的知识图谱是一组由众多语义三元组组成的。每个 triple 对应一个审计事件,由三个元素组成,以 (Head, Relation, Tail) 的形式编码 Head 和 Tail 之间的语义关系。Head 和 Tail 都可以是任何类型的系统实体,主要包括具体的文件地址、函数、读/写列表等。Relation 可以是在 Tail 上执行的任何系统作,例如 READ、LINK 和 MODIFY_FILE_ATTRIBUTES。表 I 显示了我们对节点类型进行分类的一些示例。此外,我们还按线程划分日志,每个线程子图都以线程 ID 开头,并在创建它们的进程 ID 下连接。线程通过相同的实体(例如相同的地址和函数)互连。图 4 说明了其中一个攻击行为子图的示例。
表 I:节点类型的分类和节点的一些具体示例。
节点类型 | 节点名称 |
---|---|
线程起点 | 线程 ID |
功能 | query(),setThreadPriority(),execTransact() |
文件或地址 | libc.so,dialar.db,/system,/dev/ashmem |
阅读列表 | printlnnative |
写入列表 | writeEvent (写入事件) |
III-C 系列行为抽象
III-C1 号行为摘要
行为抽象的第一步是从用户登录会话中识别行为实例的语义。我们将行为实例定义为一组对相关数据进行作的连贯审计事件。具体来说,准确的理解取决于适当的表示和粒度,从而允许对行为语义进行有效比较。以前作品中的常见做法[37],[38],[39]将每个日志事件表述为分析的基本单位,或使用日志事件中的各个元素作为基本单位。但是,单个审计事件包括三个要素(Head、Relation、Tail),仅从事件或要素本身进行分析,只能得到从 Head to Tail 的一步行为的语义,而较长的行为轨迹的整体语义会碎片化。同时,我们观察到行为主题特征发生在同一个线程内,线程大小相对较小,大多包含不到十个事件,与单个事件的分析方法相比,这也可以反映元素的语义。因此,在线程级别执行语义分析可以提供比单个事件更详细的视图,因为整个线程行为的上下文变得清晰。我们将线程中的事件聚合到线程事件中。因此,总结单个行为实例的问题可以简化为提取会话 KG 中以线程对象为根的因果连接子图。此外,考虑到单个路径可能无法保留代表多分支数据传输行为的完整上下文,我们还判断是否需要考虑多个线程行为分支。
特征向量中心性是一种测量图中节点重要性的方法。它考虑了节点邻居的重要性,并通过迭代方法计算每个节点的中心性值。特征向量中心性的公式为:
CE(v)表示节点的特征向量中心性v.λ是特征值。𝒩(v)是 Node 的邻居集v.一个vu是邻接矩阵中的元素一个表示节点之间的连接v和节点u.如果节点之间有边v和节点u然后一个vu=1;否则一个vu=0.CE(u)表示节点的特征向量中心性u.
对于每个线程,我们首先构造邻接矩阵一个,然后计算特征值λ和 eigenvectors𝐯,最后选择最大特征值对应的特征向量作为关键节点。 然后,我们在k从键节点,如果存在来自其他线程的键节点,则这些线程也包含在行为实例中;否则,行为实例仅包含当前线程。
采用该方法考虑了以下情况:传统方法在提取行为实例的子图时,通常使用深度优先搜索 (DFS) 等搜索方法遍历图。但是,遍历方法受节点出现频率的影响,但频率并不能表示节点的重要性,导致子图中添加了一些冗余部分。例如,libc.so 是一个重要的动态库文件。它是 C 标准库 (libc) 的实现,提供许多基本的系统调用和函数,并经常被引用。因为太常见了,传统方法在遍历过程中经常会给行为子图增加 libc.so,但是这样的节点对行为并不重要,对行为的诊断也没有显著影响,所以不应该被添加到行为子图中。
此外,我们还观察到,恶意行为通常会在几个步骤内结束。因此,我们认为只有当 radiusk的 key 节点包含其他 key 节点,则两个线程的行为密切相关;否则,另一个线程中的行为不会对此线程的行为产生重大影响。
之后,我们首先根据线程划分行为,然后扩展搜索以形成新的行为。如果一个行为是另一个行为的子集,则两个行为将进一步合并。然后,我们根据行为生成相应的自然语言摘要。考虑到我们最终会使用大型语言模型来实现信息诊断,并且图嵌入向量不包含语言模型可识别的文本向量内容,我们需要向大型语言模型提供文本信息。由于 SmartGuard 采用了线程划分方案,每个划分内没有太多的节点信息(一般不超过十个)。GPT 和 Copilot 等大型语言模型可用于将图形信息转换为自然语言摘要。例如,(path1, read, getReadableDatabase(), write, b.txt) 可以组织为 'path1 使用 getReadableDatabase() 实现对 b.txt 的读取、写入”。
综上所述,我们采用一种基于关键节点和线程划分的方法,将会话的 KG 划分为子图,其中每个子图描述一个行为实例,并为每个子图生成自然语言摘要。
III-C2事件语义嵌入
了解审计事件的语义是抽象高级行为的第二步。我们根据划分的行为实例抽象出子图的语义。尽管由于语义分析的粒度不同,可扩展性和准确性之间存在权衡,但选择计算高效的嵌入模型可以让我们在处理日志中发现的大量事件时保持准确性。因此,我们选择行为实例而不是审计事件作为语义推理的基本单位。
由于嵌入模型可以从线程的上下文信息中学习审计事件的语义,因此下一个问题是如何将线程事件映射到向量空间。在自然语言处理中,词嵌入已成功用于提取和表示词的语义[40],[41].受到 NLP 中单词嵌入成功的启发,EKLAVYA[42]演示了如何应用它来根据使用上下文推断二进制指令的语义。Zeng 等人。[43]表明将上下文语义映射到基于翻译的嵌入模型中取得了良好的效果。这表明发生审计事件的上下文与其语义相关。例如,三元组 (path1, read, getReadableDatabase()) 和 (path2, read, getReadableDatabase()) 虽然 path1 和 path2 属于不同的事件,但 (read, getReadableDatabase()) 出现的上下文表明它们可能具有相似的语义。直观地说,我们的目标是将每个线程事件转换为一个向量,并且我们希望相似行为的嵌入彼此接近。为此,我们使用基于图神经网络的 GAT 模型来学习从线程事件到嵌入空间的映射。
图注意力网络 (GAT) 是通过堆叠简单的图注意力层,在传播过程中引入自注意力机制,并通过关注其相邻节点来计算每个节点的隐藏状态来实现的。与一般的 GCN 模型相比,GAT 可以考虑边的特征向量。因此,在 GAT 模型中,图嵌入空间可以描述线程行为之间的语义关系。具体来说,GAT 模型可以考虑节点和边的特征向量,并基于出处图,自主学习并为边和节点分配权重。我们选择 GAT 的指导原则是,其基于图注意力的模型完全符合我们对审计事件上下文语义的理解。例如,(path1, read, getReadableDatabase(), write, a.txt) 和 (path2, read, getReadableDatabase(), write, b.txt) 在 GAT 中表现出类似的语义。从理论上讲,GAT 中的嵌入模型反映了我们对线程事件的语义和相似性的期望。第 IV-B 节通过实验表明,GAT 确实学习了与我们的领域知识相匹配的审计事件的上下文语义。
在嵌入过程中,我们使用了 word2vec 模型。我们使用了 Gensim[44]库生成用于训练图形的节点嵌入向量。Gensim 是一个用于自然语言处理的 Python 库,特别擅长处理大规模文本数据。由于源图中的每个节点都包含两个属性,即 type 和 name,因此输入特征fu的节点u可以按以下方式计算:
哪里wu类型是节点类型的单词的向量表示u,例如函数或地址,以及wu名字是节点名称的单词的向量表示u.表 I 显示了我们对节点类型进行分类的一些示例。
word2vec 的结果是一个嵌入向量,它表示每个节点的特征。我们将其存储为图神经网络的输入。
接下来,我们训练 GAT 模型。考虑到过于复杂的模型带来的困难,我们更愿意用简单的网络结构来实现我们的模型。我们在无监督学习中使用对比学习来训练 GAT 模型。在训练期间,GAT 最小化了到 KG 中发现的相同类型的最近节点的距离,同时最大化了到 KG 中未连接且不属于同一类型的随机采样节点的距离。优化嵌入模型的损失函数为:
哪里公斤是图形中的边集。𝐡我和𝐡j是节点的嵌入向量我和j分别。σ(⋅)表示余弦相似度函数,该函数将余弦相似度映射到范围 [0, 1] 以便于计算。
此外,我们还优化了注意力汇聚模型。这是一个单层全连接层 (FC),它通过对节点嵌入向量进行加权求和来获得整个图的向量表示。我们使用与等式 (2) 相同的损失函数,并在训练期间与 GAT 模型一起对其进行优化。
总之,GAT 的结果是n×membedding 矩阵,该矩阵映射n节点转换为m-维度嵌入空间。在我们的示例中,m是 128 岁。之后,通过池化模型,我们可以获取整个线程事件的图嵌入。
III-C3 号行为语义聚合
总结行为实例后,我们继续提取行为实例的语义。回想一下,每个行为实例都由审计事件组成,其语义已使用嵌入矩阵中的高维向量表示。然后,我们通过组合行为实例的分区来自然地推导出行为实例的语义。此外,还会生成行为实例的自然语言摘要,以便为语义提供文本信息。为了获得最终组合行为实例的语义表示,一种简单的方法是将组成事件的文本摘要与嵌入向量聚合在一起。但是,当文本摘要太长时,这种方法并不适合,因为它会导致摘要和向量对大型语言模型的最终判断产生偏差影响,而它们实际上应该做出同等的贡献。因此,为了进一步简化行为摘要,我们将噪声事件集成到行为中。
Noise 事件。它也称为普通事件,是由作定期执行的文件作。此类事件的示例包括用于文件编辑历史记录缓存(vim、write、.viminfo)和 shell 程序设置(bash、read、/etc/profile)的事件。我们将琐碎事件归类为噪声事件,因为它们与系统例程相关,而不是与特定行为相关。通常,普通事件具有两个特征:(a) 它们总是针对给定的作发生,以及 (b) 它们的发生顺序是固定的。为了识别和过滤它们,我们首先列举程序可以执行的所有可能作。我们发现,绝大多数琐碎的事件主要涉及到读写特定的文件,这些文件本身就毫无意义。因此,我们在每个行为图的开头添加 Read-List 和 Write-List 节点,然后从图中提取琐碎的事件,统一添加到这两个节点的标签中。我们注意到 NODEMERGE[13]首先提出识别常见事件(即数据访问模式)以减少数据。但是,它侧重于进程初始化期间的文件读取作(例如,加载库和检索配置)。相比之下,SmartGuard 在更通用的作中针对所有类型的文件作。
对行为实例进行降噪后,相同的噪声行为将不再出现在事件行为摘要中,从而在不影响关键信息表达的情况下,显著缩短了文本摘要的长度。在行为的 embedding 中,虽然有 Read-List 和 Write-List 节点可以表达某些琐碎的事件语义,但它们并不影响整体行为 embedding 的重要性。
指令:以下描述显示了事件的日志信息。它包含日志文本和行为嵌入的摘要。请关注 Embeddings 以确定此事件是否为恶意事件。如果是,请提供恶意事件的分类。输入:以下是日志摘要:[行为文本摘要],其中关键节点是 [关键节点],后跟行为图 [图形嵌入] 的嵌入。输出:不。/ 是的,类别为 [攻击类型]。
图 5:提示预测事件类别。
接下来,我们将行为文本摘要与嵌入向量聚合在一起。我们构建以下句型:“以下是日志摘要:[行为文本摘要],其中关键点是 [关键节点],然后是行为图的嵌入<图形嵌入>。通过简单的聚合和添加提示语言,我们最终生成了大型语言模型可以理解的日志行为描述。图 5 显示了行为推理期间大型语言模型的输入格式。
综上所述,行为抽象阶段使用基于日志的知识图谱作为输入来生成相应的文本摘要和图嵌入向量,最终聚合成大型语言模型可以推理的描述性信息。
III-D 型用于事件推理的 LLM
最近,LLM 在理解下游任务的上下文和从演示中生成相关信息方面表现出了卓越的能力,使其成为事件推理的潜在选择。但是,推断事件的根本原因并不是一项简单的任务,LLM 可能会在没有任何指导的情况下难以完成长尾或特定于域的任务[45,46].思维链 (CoT) 提示是一种无梯度的技术,可指导 LLM 生成中间推理步骤,从而得出最终答案。在小样本 CoT 提示中,一些手动演示由问题和推理链组成,推理链为每个问题提供答案。受上述思想的启发,SmartGuard 处理行为抽象信息,用作事件推理过程中的组件。
在 CoT 提示中,多个演示包括一个问题和一个带有指导答案的推理链。从推理链的自动提示构造中汲取灵感[47],我们可以将汇总的诊断信息和标记的根本原因类别视为问题和推理。因此,在行为中寻找敏感节点链接是一种自动推理链构建,与 CoT 提示上下文非常契合。请注意,我们使用事件行为的图形嵌入和文本摘要来执行推理过程,并使用相应的汇总信息作为提示中演示的一部分。我们构建如图 5 所示的提示,要求 LLM 判断当前事件的恶性肿瘤和敏感环节,并通过在提示中使用 “give your explanation” 指令显式地推动 LLM 进行推理。
表 II:DARPA TC 数据集中的攻击案例概述及场景描述
攻击案例 | 场景描述 | V|G| | E|G| |
---|---|---|---|
APK Java | Java APT 自动连接到目标网络并运行提权软件以获得 root 访问权限并窃取文件。 | 25 | 36 |
Barephone Micro | 在移动电话上运行的 APT 通常通过加载 libmicroapt.so 连接到目标网络。 | 10 | 16 |
CADETS Nginx | 利用 Nginx 漏洞攻击 CADETS FreeBSD 的攻击者下载了一个文件,提升了它 添加到以 root 身份运行的新进程中,并尝试 将其注入 SSHD 进程。 | 17 | 28 |
火狐龙 | 攻击者利用 Firefox 漏洞,通过畸形的 HTTP 请求攻击 CADETS,下载 libdrakon 植入文件 *.so,并将其注入到 sshd 进程中,导致 CADETS 崩溃。 | 26 | 31 |
Metasploit APK | 攻击者使用 Metasploit 作为恶意软件向目标主机发送恶意可执行文件并攻击 ClearScope。 | 35 | 56 |
微型 BinFmt-Elevate | 攻击者使用 ta1-pivot-2 工具实现 BinFmt 提升并获取对根目录的访问权限。 | 14 | 34 |
应用初学者 APK | 它通常伪装成合法的 AppStarter APK 文件,可以使用良性活动来安装权限提升程序。 | 12 | 19 |
网站外壳 | shell 连接通过 HTTP 连接到作员控制台。攻击者在没有 root 权限的情况下执行了 apt 植入程序。 | 31 | 49 |
Firefox DNS 文件过滤器 | 该攻击触发了 Firefox 后门,通过 DNS 连接到目标网络。通过搜索打开特定不存在文件的进程,攻击者提升了权限。 | 23 | 29 |
综上所述,大型语言模型的推理阶段通过 CoT(Chain of Thought)概念诊断抽象的行为信息并提供解释。
四评估
在本节中,我们使用 DARPA TC EN5 数据集并实验评估 SmartGuard 的四个方面:1) 实施;2) 事件语义推理的可解释性;3) 行为推断的准确性和可扩展性;4) LLM 的可解释性和幻觉的解决方案
IV-A 型实现
SmartGuard 在 Python 3.8 中实现,大约有 2.5K 行代码 (LoC)。 在本节中,我们将讨论实现中的重要技术细节。
审核日志输入接口。SmartGuard 将系统审计数据作为输入。我们为审计日志定义了一个通用接口,并构建了输入驱动程序来支持不同的日志格式,例如 Linux 审计[32]格式(CDM20 和 DARPA 数据集)。
知识图谱构建。为了构建基于日志的知识图谱 (KG),SmartGuard 首先按时间顺序对审计事件进行排序。然后,根据线程 ID 划分不同线程的记录。然后,它将每个事件转换为三元组,使用系统实体作为 Head 和 Tail,使用系统调用函数作为 Relation。为了便于比较不同的节点,我们对每种类型的元素进行分类,例如系统实体中的 file_path 和 function,并在系统调用中执行、链接check_attribute。因此,在图神经网络中,可以根据节点和边的类别分配不同的权重。在将审计事件解析为三元组后,NEO4J[48]工具用于存储和构建 KG。
嵌入生成。我们首先使用 word2vec 模型和 Gensim 库[44]生成用于训练图形的节点嵌入向量。初始节点嵌入向量的长度限制为 100 以减小模型大小。使用两层 GAT 模型聚合图形信息。模型中节点向量的输入和输出维度分别为 100 和 128。我们使用 Adam 优化器优化模型参数。我们训练模型 20 个 epoch,批次大小为 64。学习率以 0.98 的速率呈指数变化,从 0.01 开始。
计算硬件。我们使用 Pytorch[49]作为后端。所有实验均在配备 20.04 核 Intel CPU 和四个 Nvidia GeForce RTX A6000 GPU 卡的 Ubuntu 系统上进行。
数据。DARPA TC 数据集[24]是根据 DARPA 透明计算 (TC) 计划发布的公开可用的 APT 攻击数据集[50].该数据集源自 2018 年 4 月为期两周的红队与蓝队互动 3 期间的主机网络。在参与过程中,企业模拟了各种安全关键型服务,例如 Web 服务器、SSH 服务器、电子邮件服务器和 SMB 服务器[22].红队对目标主机进行了一系列民族国家和常见攻击,同时执行 SSH 登录、网页浏览和电子邮件检查等良性活动。DARPA TRACE 数据集由 726,072,596 个审计事件组成,形成 211 个图表。总体而言,我们使用其中的 9 个攻击场景来评估 SmartGuard 的可解释性和准确性。我们介绍了表 II 中的场景和属性。第一列表示攻击场景的名称,第二列提供场景的简要描述,第三列和第四列表示相应行为图中边缘和节点的平均数量。
针对每种攻击场景,我们都会构建相应的子图,包括良性和恶意的源图。每种类型的可追溯性图(包括良性可追溯性图)的样本量为 4000,其中 90% 用作训练集。
IV-B 型事件语义推理的可解释性
我们以视觉和定量方式测量 SmartGuard 为审计事件学习的语义:在视觉上,我们使用 t-SNE 将采样的行为向量嵌入到 2D 平面中,让我们直观地了解嵌入分布,并且我们构建了五个示例行为来专门演示个体行为之间的相似性;在定量上,对于真实的审计事件,我们分别使用正常行为抽象(日志文本摘要 + 嵌入向量)和仅使用文本摘要的行为抽象,对模型进行微调并比较检测结果。

(一)

(二)

(三)
图 6:行为抽象嵌入的可视化。
嵌入可视化。图向量之间的空间距离对它们的语义相似性进行编码。为了可视化距离,我们应用 t-SNE 将高维嵌入空间投影到二维 (2D) 空间中,同时在很大程度上保留向量之间的结构信息。我们从 9 个场景中随机抽样行为进行可视化,从而得到一个 300 个点的散点图。图 6 (a) 显示了嵌入空间的 2D 可视化。空间中的大多数点都分布在集群中,这表明事件确实是根据某种相似性度量进行分组的。
表 III:嵌入对行为抽象准确性影响的结果。 粗体部分表示每个类别的最佳检测指标 F1 分数。
类别 | 无嵌入的 SmartGuard (%) | 智能卫士 (%) | ||||
精度 | 召回 | F1 分数 | 精度 | 召回 | F1 分数 | |
裸机 | 85.2 | 86.9 | 86.1 | 95.9 | 94.5 | 95.2 |
CADETS Nginx | 89.1 | 87.2 | 88.2 | 100 | 100 | 100 |
Metasploit | 81.5 | 83.2 | 82.4 | 87.6 | 94.9 | 91.1 |
为了更具体地展示行为语义的相似性,我们构建了 5 个行为实例,如图 6 (c) 所示,每个实例由四个节点组成。其中,a 和 b 分别表示从不同地址的 calllog.db 中窃取和清除信息。这两个实例的行为高度相似,可以判断为同一类型的行为。实例 c 和 d 表示对不同地址的不同数据库文件的查询作(libc.so 是一个常见的 C 语言库,通常出现在开头,可以作为 noise 事件删除)。这两个实例具有一定程度的相似性。实例 e 表示启动 APK 文件并将其优先级设置为最高。实例 e 的行为与上述行为的相似度较低。
我们为上述 5 个行为实例构建了一个图向量的散点图,如图 6 (b) 所示。从图中可以看出,相似行为的可视化距离更近。这也证明了 SmartGuard 的行为语义抽象是有效的。
嵌入对行为识别的影响。除了可视化之外,我们还进行了实验,以确定图嵌入向量是否会影响行为抽象检测结果。具体来说,我们在三种攻击场景中使用普通行为抽象和仅具有日志文本摘要内容的行为抽象对大型语言模型进行了微调。在推理阶段,我们使用了相应的行为抽象和大语言模型进行推理,结果如下表 III 所示。我们使用 OPT-1.3b 模型进行实验。
表 III 提供了实验结果的总结。与仅检测日志文本摘要相比,检测正常行为抽象的平均 F1 分数高出 10%。尽管文本摘要可以表达日志的某些行为特征,但摘要的长度和复杂性限制了大型语言模型的上下文理解。因此,仅使用文本摘要不会产生良好的推理结果。相比之下,图嵌入向量可以用固定的输入长度表达行为的整体特征,补充文本摘要并补偿无法表达上下文特征,从而在行为诊断中表现更好。
综上所述,SmartGuard 学习的行为抽象可以表达事件的上下文特征,这对于信息诊断至关重要。
IV-C 型SmartGuard 的准确性和可扩展性
为了评估 SmartGuard 在行为检测方面的准确性,我们使用两个微调的大型语言模型,即 Facebook OPT-1.3b 和 Open LLaMa2-3b,来预测 DARPA 数据集中具有类似恶意行为的会话。为此,我们选择了上述 9 种行为作为行为抽象的候选者。对于每种行为,表 IV 详细介绍了 SmartGuard 在检测会话中行为抽象方面的评估结果。性能指标使用精确率、召回率和 F1 分数来衡量。直观地,它们分别提供真阳性率、假阳性率和整体准确性的度量。我们将真阳性定义为正确预测恶意行为的会话,将误报定义为错误预测正常行为的会话。
表 IV:检测会话中行为抽象的评估结果。粗体部分表示每个类别的最佳检测指标 F1 分数。
类别 | 提取[51](%) | SmartGuard w/ OPT-1.3b(%) | SmartGuard 含 LLaMa2-3b(%) | ||||||
P | R | F1 系列 | P | R | F1 系列 | P | R | F1 系列 | |
爪哇 APK | 91.0 | 97.0 | 93.9 | 94.7 | 93.9 | 94.3 | 95.6 | 94.5 | 95.0 |
裸机 | 88.0 | 100 | 93.6 | 95.9 | 94.5 | 95.2 | 97.2 | 96.8 | 97.0 |
CADETS Nginx | 100 | 84.0 | 91.3 | 100 | 100 | 100 | 100 | 98.9 | 99.4 |
火狐龙 | 100 | 90.0 | 94.7 | 100 | 95.6 | 97.8 | 100 | 95.2 | 97.5 |
Metasploit | 91.0 | 91.0 | 91.0 | 87.6 | 94.9 | 91.1 | 90.2 | 94.6 | 92.3 |
微型 BinFmt | 88.0 | 100 | 93.6 | 100 | 92.3 | 96.0 | 100 | 88.2 | 93.7 |
应用启动器 | 100 | 88.0 | 93.6 | 97.8 | 96.1 | 96.9 | 94.2 | 97.4 | 96.8 |
网站外壳 | 89.0 | 89.0 | 89.0 | 92.4 | 93.3 | 92.8 | 95.4 | 98.2 | 97.1 |
火狐 DNS | - | - | - | 100 | 98.6 | 99.3 | 100 | 91.3 | 95.4 |
表 IV 提供了实验结果的摘要。SmartGuard 在行为抽象检测方面显示出有希望的结果(平均 F1 得分为 95.9%,并且全面超过了基线[51]).即使对于复杂的行为,SmartGuard 也获得了 91.6% 的 F1 分数。这是因为通过利用审计事件的上下文信息,SmartGuard 可以准确地推断行为实例的语义。例如,即使攻击者更改了 calllog.db 的名称,并反复调用 getReadableDatabase 和 removeDeletedContacts 函数,SmartGuard 也会推断它们通过这些上下文关系与 calllog.db 上的恶意作具有相似的语义。因此,SmartGuard 提高了恶意行为的相似性,即使乍一看它们似乎在访问不同的文件。
另一个有趣的观察结果是,在大多数情况下(表 IV 中的 14/18),准确率高于或等于召回率。相对较低的召回率表明,即使在噪声消除之后,行为实例的语义仍可能受到噪声事件的影响。换句话说,高精度表示此类噪声的影响是有限的。Metasploit 和 Webshell 中有两个例外。这主要是因为前者在使用过程中创建了多个内置了 Metasploit 的 APK 变体,而后者与其他攻击场景相比,具有更多的链接和扫描作。这会导致其行为中出现更多的噪声事件,从而影响行为识别。但是,总体而言,SmartGuard 在行为抽象检测中仍然实现了较低的假阳性率。
我们还观察到 SmartGuard 在两种不同的模型上表现出良好的可扩展性。两种模型的平均 F1 分数分别为 95.6% 和 96.3%,均表现出高水平的行为识别。这可以归因于两个原因:行为抽象的准确语义和大型语言模型的理解和推理能力。本章详细介绍了行为抽象语义的必要性。大型语言模型的推理能力受其参数大小和表达能力的影响,这会产生显着差异。我们还在 RoBERTa-Large 上进行了实验(参数约为 350M),平均 F1 分数仅为 82.9%,远低于前两个模型的结果。我们认为主要原因是 RoBERTa 模型的参数和表达能力有限,不足以理解我们的行为抽象语义。因此,SmartGuard 应该部署在具有大量参数(十亿级)的大型语言模型上。总之,SmartGuard 在不同的语言模型上都显示出可扩展性。
我们观察到 SmartGuard 在对恶意行为进行分类方面表现出很高的准确性。对于所有九种攻击场景,SmartGuard 的平均 Precision 和 Recall 分别可以达到 96.7% 和 95.3%。换句话说,90 个恶意会话中有 3 个被错过。SmartGuard 可以识别恶意行为并将其与良性行为区分开来。
为了在数据集上测试 SmartGuard 的可扩展性,我们重新训练了模型。我们使用原始数据集中的 CADETS Nginx 和 Micro BinFmt-Elevate 作为测试集,使用其余 7 种攻击类型作为训练集。这是为了评估 SmartGuard 是否可以通过了解行为之间的关系将看不见的恶意行为归类为攻击。具体实验结果见表 V。在数据集的可扩展性方面,SmartGuard 显示出有希望的结果。两种类型的平均 F1 分数达到 89.4%,接近基线在完整数据集上的识别准确性。这表明 SmartGuard 可以学习不同行为之间的语义关系,在不同数据集上表现出良好的可扩展性。
此外,为了测试 SmartGuard 在检测未知攻击方面的可扩展性,我们重新训练了模型。我们使用原始数据集中的 CADETS Nginx、Metasploit 和 Webshell 作为测试集,而其余 6 种攻击类型则用作训练集。这是因为,根据基线,这三个数据集的表现最差,这表明它们是更复杂的攻击类型,因此更适合检测测试。具体实验结果见表 V。SmartGuard 显示出可喜的结果。三种类型的平均 F1 分数达到 89%,接近基线在完整数据集上的识别准确率。这表明 SmartGuard 可以学习不同行为之间的语义关系,并对训练集中不存在的未知攻击实现良好的识别准确性。
表 V:SmartGuard 对未知攻击的可扩展性结果。结果仅表明确定其是否为“攻击行为”的准确性。 粗体部分表示每个类别的最佳检测指标 F1 分数。
类别 | 选项 1.3b(%) | LLaMa2-3b(%) | ||||
P | R | F1 系列 | P | R | F1 系列 | |
CADETS Nginx | 91.2 | 85.1 | 88.1 | 92.4 | 87.3 | 89.8 |
Metasploit | 87.6 | 88.4 | 88.0 | 88.1 | 89.6 | 88.8 |
网站外壳 | 87.9 | 86.2 | 87.1 | 87.1 | 87.7 | 87.4 |
此外,得益于 LLM 的微调功能,SmartGuard 可以根据专家提供的可追溯性图表对模型进行微调,从而准确识别未知攻击。使用上述模型,我们使用专家提供的三种攻击类型(不同于原始数据)的可追溯性图对其进行微调,并使用原始数据进行检测(检测特定的攻击类型)。表 VI 中的结果表明 SmartGuard 具有灵活的微调能力,平均 F1 分数为 94.3%,超过基线,与在完整数据集上训练的模型相差 2-3% 以内。在实际场景中,SmartGuard 可以灵活地整合新的攻击类型并实现高效检测。
表 VI:SmartGuard 使用专家提供的可追溯性图表对未知攻击进行微调后的检测结果。该模型使用与原始数据不同的专家可追溯性图表进行微调,检测指标是攻击类型。 粗体部分表示每个类别的最佳检测指标 F1 分数。
类别 | 选项 1.3b(%) | LLaMa2-3b(%) | ||||
P | R | F1 系列 | P | R | F1 系列 | |
CADETS Nginx | 98.4 | 97.5 | 97.9 | 98.9 | 97.4 | 98.1 |
Metasploit | 87.9 | 93.6 | 90.7 | 90.2 | 93.7 | 91.9 |
网站外壳 | 92.9 | 92.9 | 92.9 | 95.5 | 97.1 | 96.3 |
总之,SmartGuard 可以识别恶意行为并将其与良性行为区分开来。它还可以学习不同行为之间的语义关系,对训练集中不存在的未知攻击实现良好的识别准确率。分析师可以通过使用说明和专家提供的可追溯性图表对未知恶意行为进行微调,从而进一步增强 SmartGuard 识别特定行为的能力。这为解决实际问题提供了一种新方法。
IV-D 型LLM 的可解释性和幻觉的解决方案
LLM 在理解下游任务的背景和从演示中生成相关信息方面表现出非凡的能力。因此,我们使用 CoT(Chain of Thought)方法使大型语言模型能够解释审计事件。我们设计了一个分层的指令结构,以帮助大型语言模型更好地理解行为总结,做出准确的判断,并提供具体步骤的解释性叙述。 具体来说,我们让大型语言模型对敏感节点、敏感链接以及行为的整体特征进行判断和总结。这是因为此类 CoT 指令为大型语言模型提供了足够的上下文逻辑,使其能够回答分析师所需的大部分行为细节问题并做出准确的判断。最后,我们让大型语言模型确定攻击类别,并为这种攻击类型提供更多解释。
此外,CoT 可以在一定程度上缓解大型模型中的幻觉问题。我们在行为检测阶段,在 OPT-1.3b 模型上测试了单轮响应(SmartGuard 的原始模式,直接判断攻击类型)和多轮响应(遵循图 7 中的模式,首先判断敏感节点和链路,然后判断是否为攻击行为,最后识别具体攻击类型)。表 VII 显示了实验结果。结果表明,基于 CoT 的多轮响应可以有效提高 SmartGuard 的准确性,减少幻觉引起的假阳性。我们观察到,与单轮响应相比,精确率指标显著提高,这主要是由于假阳性样本的减少,即被错误归类为攻击行为的样本较少。
指令:以下描述显示了事件的日志信息。它包含日志文本和行为嵌入的摘要。请确定此事件中是否存在敏感节点。如果是这样,请具体说明。LLM 输出:libmicroapt.so,barephoneinstr.apk,mmssms.db, removeDeletedContacts(),insertUpdateContacts() 的 Contacts。指令:以下描述包含日志文本和行为嵌入的摘要。请根据敏感节点指明敏感行为路径。答案模板为“发件人...到...”。LLM 输出:从 libmicroapt.so 到 insertUpdateContacts()。指令:以下描述包含日志文本和行为嵌入的摘要。请说明敏感行为的整体特征。LLM 输出:加载 libmicroapt,安装 barephoneapk,并在 mmssms.db 数据库上执行多次删除和更新。指令:以下描述包含日志文本和行为嵌入的摘要。请关注 Embeddings 以确定此事件是否为恶意事件。如果是,请提供恶意事件的分类。LLM 输出:是的,该类别是 Barephone Micro。指令:以下描述包含日志文本和行为嵌入的摘要。请提供有关此攻击行为的更多解释。LLM 输出:Barephone Micro Attack 一般通过安装 apk 来加载 Micro APT,攻击的目标通常是窃取数据库信息。
图 7:大型语言模型对行为摘要的解释性叙述。 表 VII:减轻 SmartGuard 幻觉的结果。 粗体部分表示每个类别的最佳检测指标 F1 分数。
类别 | 单圈 (%) | 多圈 (%) | ||||
P | R | F1 系列 | P | R | F1 系列 | |
爪哇 APK | 94.7 | 93.9 | 94.3 | 97.6 | 93.9 | 95.7 |
Metasploit | 87.6 | 94.9 | 91.1 | 93.2 | 95.8 | 94.4 |
火狐龙 | 100 | 95.6 | 97.8 | 100 | 96.1 | 98.0 |
网站外壳 | 92.4 | 93.3 | 92.8 | 94.8 | 94.2 | 94.5 |
综上所述,我们的结果表明,SmartGuard 可以提供一定程度的可解释性,并在一定程度上减轻幻觉引起的误判。
V讨论
在本节中,我们将介绍这项工作的一些设计选择、影响和可能的扩展。
RQ1:为什么使用 DARPA 数据集中的 9 个场景进行评估更好?
DARPA 数据集是广泛认可的测试基准,其数据质量和真实性已得到业界的验证。此外,DARPA 数据集覆盖了多种攻击场景,可以综合评估模型在不同类型攻击行为下的性能。该数据集中的场景复杂且具有挑战性,有助于验证模型在处理复杂多样的攻击行为时的稳定性和准确性。我们使用的 9 种场景是在数据集的地面实况中给出手动可追溯性地图的场景。它们更准确,也是业内常用的选择。
RQ2:这种方法与以前的方法有什么不同?
除了使用 LLM 之外,与以前的流程级行为提取解决方案相比,SmartGuard 将提取的粒度降低到线程级,并添加了函数级行为语义记录,而不仅仅是系统调度。在传统的审计日志分析过程中,三元组(Subject、Relation、Object)是在进程级别记录的。这种方法可以有效简洁地提取一个高层次的行为,但会忽略行为背后更详细的部分,提高检测难度。 然后,我们添加了用于模式识别的 LLM,并将聚合的文本摘要和图形嵌入向量到描述信息中,以便 LLM 可以进行推理,大型语言模型可以更流畅地理解行为摘要并做出准确的判断,同时还能够给出行为中特定步骤的解释性叙述。此外,SmartGuard 在检测未知攻击方面具有优势,并支持及时的系统更新。
RQ3:行为抽象的健壮性如何?
为了规避行为抽象,攻击者可能会试图通过故意引入不相关的事件来混淆行为。但是,此类事件对行为语义的影响是有限的。在第 III-C2 节和第 III-C节 3 中,我们介绍了两种策略(基于线程的行为分区和噪声事件)来增强 SmartGuard 对抽象行为的鲁棒性。具体来说,虽然 SmartGuard 聚合了行为的上下文语义,但不相关的事件将被分配低重要性的权重,或者不会被划分为特定行为,甚至可能作为噪声事件被删除。另一种抵消行为混淆的潜在方法是将额外的辅助信息(例如,审计事件的语义丰富的参数)合并到 SmartGuard 的 KG 中。我们相信,这可以赋予 SmartGuard 更多功能来过滤掉不感兴趣的事件以进行安全分析。
RQ4:为什么图形嵌入空间和更新?
大多数使用嵌入技术的学习方法都很常见[52],并且由于语义变化和包含以前看不见的数据(例如,数据格式变化),SmartGuard 需要定期重新训练嵌入空间。此外,与自然语言嵌入模型相比,图嵌入模型在将注意力集中在关键节点和恢复整个事件场景方面具有天然的优势。也就是说,我们选择的图嵌入方法可以充分表达模式识别的行为语义。
六相关作品
因果分析。 因果分析是一个与行为抽象相关的正交但重要的问题,使用因果推理来分析日志事件。King 和 Chen[5]首次介绍了对 System Audit logs 的依赖关系图的构建,以跟踪给定的安全事件并找到其根本原因。Jin 等人。[53]通过捕获前向和跨主机依赖关系,改进了因果跟踪。为了缓解因果分析中的依赖爆炸问题和高存储开销,已经进行了大量的研究工作。最近的工作提出了细粒度的单元划分[54],[55],[56]、基于模型的推理[57],[53]、录制和重播[58],[59]和一般来源[60]技术来实现更精确的因果跟踪。另一条研究线致力于通过图形压缩来减少用于分析的总日志量[8],[9],[10],[13]和数据缩减[7],[61],[62].尽管 SmartGuard 的范围与这些解决方案不同,但其有效性取决于在关联数据以总结行为时进行准确的因果分析。
行为抽象。 事实证明,将行为抽象为图形或因果依赖关系对于理解作系统级活动和检测潜在威胁和风险非常有效。TGMiner 公司[20]从感兴趣的行为中挖掘判别性图形模式,并将其用作模板来识别相似行为。根据网络威胁情报报告,POIROT[19]提取 APT 行为的查询图,并提出一种对齐算法来搜索它们在源图中的存在。侦探[17]和莫尔斯[18]提出标记策略来模拟信息泄露行为。福尔摩斯[22]和 RapSheet[21]将多阶段攻击视为符合 TTP 规范的因果事件链。与以前的工作相比,SmartGuard 将行为抽象为基于上下文的嵌入(图形嵌入向量)和日志文本摘要集成的结果。我们的研究结果表明,这种行为的定量表示可以保留行为语义并支持高级行为分析。
嵌入式空间和大型语言模型分析。 有大量关于将嵌入技术应用于其他日志分析任务的文献。此类任务包括基于异常的 IDS[63],[64],[65]、恶意软件识别[66],[67]以及了解网络攻击的演变[39].以前的许多工作使用机器学习模型(例如,神经网络、词嵌入和 n-grams)将日志嵌入到向量中。例如,DeepLog[37]是一种基于神经网络的方法,它使用长短期记忆 (LSTM) 来学习普通日志条目流中的执行模式。PROVDETECTOR[66]应用神经词嵌入模型 Doc2VEC 来量化系统上运行的进程的行为。同样,ATTACK2VEC[39]使用时态词嵌入模型来量化网络攻击步骤随时间变化的上下文。提取[51]根据 Log 语言的语义和句法特征自动构建 Provenance Graph。独 角 兽[68]提出了一种图形草图算法来总结长时间运行的系统执行。沃森[43]使用基于翻译的嵌入 TransE 来揭示上下文语义。SmartGuard 使用文本摘要和图形向量的组合作为审计事件的上下文。本质上,我们使用图形和文本的组合来表示语义信息,与上述方法相比,这是一个创新点。此外,RCACopilot[69]使用 GPT-4 对日志信息进行汇总和聚类,前提是 GPT-4 本身就有大量的日志数据。相比之下,SmartGuard 可以部署在没有对数语料库的较小模型上,使分析师可以更方便地以较低的训练成本灵活地作和分析不同的语料库日志。
七结论
从低级审计日志中抽象出高级行为是安全响应中的一项关键任务。它有助于弥合审计事件和系统行为之间的语义差距,从而减少日志分析中的手动工作。在本文中,我们提出了一种自动化方法 SmartGuard,用于从审计事件中提取行为并使用大型语言模型对其进行分析。具体来说, SmartGuard 利用基于日志的知识图谱中的上下文信息进行语义推理。为了区分代表性行为,SmartGuard 提供了一种将行为语义图向量与文本摘要相结合的表示方法。它使用它来对大型语言模型进行推理并提供解释性叙述。我们根据 DARPA 组织的对抗性参与行为评估了 SmartGuard。实验结果表明,SmartGuard 可以准确地抽象出良性和恶意行为,表现出对未知攻击的良好可扩展性。此外,提供的解释性叙述和及时的系统更新有效地解决了现实世界的场景。