语义|攻击推理-安全知识图谱在自动化攻击行为提取上的应用( 三 )







语义|攻击推理-安全知识图谱在自动化攻击行为提取上的应用
文章插图

图2 基于安全知识图谱的行为提取流程
三.1 安全知识图谱构建
为了有效地分析事件的上下文语义,需要一种能集成多种类型数据的异构数据模型。因此,本文使用了知识图谱的表示方式。相比于溯源图模型,知识图谱模型有更强的表示能力。





语义|攻击推理-安全知识图谱在自动化攻击行为提取上的应用
文章插图

图3 安全知识图谱示例
根据知识图谱[8]定义的标准,这里定义了一个基于日志的知识图谱。该安全知识图谱包含了一系列包含丰富语义的三元组,每一个三元组对应一个审计事件。如图3所示,该图显示的是上面所提到的例子中的了个子图。
三.2 行为抽象
行为抽象过程主要是由事件语义推理模型与行为概要模型。
三.2.1 事件语义推理
提取高水平行为的第一步是理解系统日志的语义。准确的语义理解是建立在合适的表示与粒度上的。已有的一些溯源分析方法是以系统事件为粒度进行分析,然后一个事件需要用三元组表示的,而三元组中不同的元素具有不同的语义。虽然,以更细粒度的元素为语义分析对象会增加计算代价,但是可以提供更准确的语义分析。同时选择有效的嵌入算法也可以从一定程度上减少计算代价。
利用图嵌入(graph embedding)[6]表示可以从审计日志的上下文信息中学习其语义表示,其中最关键的是如何把审计事件的三元组映射到同一个向量空间中,这也是嵌入模型的关键。在自然语义处理中word2vect已经是一个比较成熟的技术,基于其思想文献[6]通过分析二进制指令的上下文来表示该二进制指令的语义。在本文的场景中是否能用审计事件的上下文来表示其语义?假设现有两个审计事件三元组(cc1, read, a.c)和(cc1, read, b.c),显示a.c与b.c属于不同的审计事件,但是它们具有相同的上下文(cc1, read),这暗示着它们具有一些相似的语义信息。直观的来说就是把每个元素都转换成同一向量空间中的向量,不同元素的向量表示的距离表示其语义的相似度。例如,根据审计事件(cc1, read, a.c)和(cc1, read, b.c),我们希望a.c与b.c的向量距离尽可能的近一些。因此这里可以使用TransE模型来学习每个元素的向量表示。
嵌入模型中的嵌入空间描述的是安全知识图谱三元组中Head, Tail和Relation之间的关系。TransE模型的嵌入空间是基于以下这种理论假设:Head + Relation≈ Tail,其表示在TransE模型的嵌入空间中Head实体的向量加上Relation的向量表示等于Tail的向量表示。以(cc1, read, a.c)和(cc1, read, b.c)为例,a.c与b.c的向量表示是通过(cc1, read)表示,因此a.c与b.c向量表示是相近的。
在嵌入表示学习过程中,安全知识图谱中的每一个元素都需要进行初始。可以利用独热编码对每一个元素进行编码,然后以该向量作为训练过程的输入。训练阶段采用TransE模型本身的目标函数。
三.2.2 行为概要
行为抽象的下一步是从一个用户登录会话的行为实例进行概要分析。行为实体是一系列操作关于相关数据或是信息流的审计事件。因此,总结单一行为实例的问题可以归约为从安全知识图谱中抽取出因果相关的子图。与传统基于路径[7]的方法相比,可以在安全知识图谱中划分子图来表示行为实例。利用子图划分而不选择基于路径划分的原因是单一路径不能保留多分支数据传输的行为的完整上下文。例如,基于路径划分的方法在数据泄露行为中并不能有效的把相关行为实例关联到一起,比如程序编译与github上传可能在不同的路径中。

推荐阅读