一、背景
从最近几年的安全事故可以看到, 内部威胁已经成为企业和组织威胁的主要原因。内部威胁(Insider Threat)是指内部人员利用获得的信任做出对授信组织合法利益不利的行为,这些利益包括企业的经济利益、业务运行、对外服务以及授信主体声誉等[1]。内部威胁不仅仅是组织合法成员的有意或无意的导致组织利益损失的行为,还包括一些外部伪装成内部成员的攻击。
现在内网威胁检测分为网络侧检测与终端侧检测,网络侧检测主要包括全流量,IPS/IDS,终端侧主要是EDR,蜜罐等,还有现在流行的UEBA。这些检测设备每天会产生海量告警信息,使得安全运营人员无从下手。此外,当前攻击技术越来越趋于高级、隐蔽性,很多攻击者会长期驻留在系统中,传统的检测设备很难对这一类攻击进行有效的检测。为此,需要挖掘更多攻击相关的语义信息,对攻击行为的因果关系进行刻画,通过丰富的上下文信息实现精准的威胁识别。安全知识图谱作为知识图谱在网络安全领域的应用,本身就是构建与攻击相关的语义网,可以很好的辅助知识威胁识别。为了满足下游的智能威胁识别的需求,采用深度自编码器实现对安全知识图谱的向量表示,并利用编码解码的误差来衡量攻击者的威胁度。
图卷积神经网络(Graph Convolutional Network)通过在图上定义一个卷积运算符来解决这个问题。该模型迭代地聚集了一个节点的邻居的嵌入,并在以前的迭代中使用了获得的嵌入和嵌入的功能来获得新的嵌入。聚集局部邻居的聚合使其具有可伸缩性,并且多次迭代允许学习嵌入一个节点来描述全局邻居。图卷积神经网络,就是借助于图的Laplacian(拉普拉斯)矩阵的特征值和特征向量来研究图的性质。显然图卷积神经网络可以用来实现前面提到的威胁评估,并能提供有效的上下文信息。
二、 知识图谱构建
安全知识图谱主要包含两部分:静态知识图谱和动态图谱。静态知识图谱是事先构建的安全知识图谱,融合了攻击模式库(CAPEC,ATT&CK),安全隐患(CVE, CCE),恶意代码(MAEC)、攻击目标资产(CPE)等多个知识库,这些知识并不需要实时更新,所以称为静态知识图谱。具体的可参考文献[1]。
图1 知识图谱模式图
动态图谱是安全设备实时产生的告警以及与告警相关的一些信息,如IP地址、端口、网段等。其中动态图谱与静态知识图谱通过共享实体相关联,比如IP地址与CPE相关联,告警信息与CAPEC、CVE和恶意代码相关联等。
静态图谱中的实体是固定的,参照的STIX2.0以及当前世界范围对安全元素描述的使用较广泛的标注,定义的14种实体类型。为了方便描述,这里只描述动态图谱,实体只考虑IP。
告警通常是实时产生的,告警的源IP为攻击者,告警的目标IP为受害者。在单位时间窗口内根据源IP与目标IP对聚合告警会生成如下图所示的告警序列。
图2 告警因果关系挖掘
这里可以利用马尔科夫挖掘告警之间的一跳转移概率,生成告警因果关联图,其中顶点是告警,边是告警的一跳转移概率。当然也可以使用微软的DoWhy因果推理框架实现。构建好了因果关系网络之后直接利用图嵌入技术学习每种告警的向量表示。告警是组成告警序列的基本单元,可以把告警看成自然语言中的词,告警序列看成自然语言了句子,我们的目的是构建IP实体之间的关系也就是告警序列,这一过程可以参考词向量生成句向量的方法,本文采用ISF嵌入方法。
ISF加权平均法和TF-IDF加权平均法类似,ISF加权计算来源于普林斯顿大学的论文[]。SIF嵌入法需要利用主成分分析和每个词语的估计概率,SIF嵌入法具体操作如下所示:
首先,遍历所有IP对的告警序列,假设当前告警序列为s,可以通过如下公式得到当前告警序列的初始序列向量:
本质上就是一个加权求平均的过程,P(W)表示告警W除以所有告警的频数和。
然后,对所有告警序列的初始向量进行主成分分析,计算出告警序列的每一主成分,然后重复两次得到的向量表示作为告警序列的向量表示。这样就实现了动态图谱的关系构建
属性图中的节点属性主要有两类,一类是表示节点的固有特性的属性,如IP所属地理位置和是否内外网、文件名和进程名等,另一类是统计特征和行为,如从告警payload中提取的攻击意图相关的特征,包括IP作为攻击者单位时间内产生的告警数以及IP开的端口数等。
顶点与边刻画的是图谱的结构信息,图中的实体本身是具有一定的角色的,如IP可以是攻击者也可以是受害者,作为攻击者该IP具有攻击者的特征。这些特征分为两类,一类描述实体属性的特征,一类是统计特征。属性特征如IP地理位置、IP是否是内网、历史威胁度等等,统计特征如单位时间内的告警数,告警类型,探测类得到、渗透类得分等。最终构建了如下图所示的属性图模型。
图3 知识图谱构建
三、利用图神经网络的威胁评估
前面已经构建好了内网的安全知识图谱,该知识图谱是一个属性异构图。
图4 威胁评估模型
基于安全知识图谱的威胁评估流程图如图4所示。可以看出威胁评估模型的主要模块是深度自编码器,其主要包括三个部分:属性图编码、拓扑结构重构解码器和属性重构解码器。
该方法参考文献[3]的思想,由于网络结构整合了多个知识库和告警的因果语义,而在真实环境中通常攻击事件是占非常小一部分,因此图谱结构的编码与解码误差可以用来衡量图谱中攻击者的威胁度。图谱中的告警内容信息实体又具有表示攻击意图的行为特征,利用属性的编码解码的误差能评估攻击意图的强弱。文献[4]方法把属性图编码器在同一框架下实现对属性图的拓扑结构和属性的无缝建模,然后利用图卷积网络实现了顶点的特征表示学习。结构重构解码器通过节点的特征表示重构网络拓扑结构。属性重构编码器通过节点的特征表示重构属性图中节点的属性。
这里X表示是属性的属性图的邻接矩阵和属性矩阵,Enc()是深度编码器,Dec()是解码器,dist()是距离函数。
3.1编码过程
安全图谱的属性编码过程不仅需要考虑图结构的编码,还需要实现节点属性的编码。图卷积神经网络在学习节点特征表示时考虑了高阶节点的邻近性,从而解决了网络稀疏性问题。同时,通过多层非线性变换,图卷积神经网络能捕属性图中数据的非线性特征和两种信息模态之间的复杂交互。因此编码过程采用图卷积神经网络。
形式化表示如下式所示:
其中,
表示卷积层l的输入,
表示卷积层的输出。属性图的属性矩阵X作为第一层的输入也就是
。
就是需要训练的神经网络的加权矩阵。每一层的图卷积网络都可以表示成如下函数:
其中,
,
是一个对角矩阵,对角上的元素为
,因此可直接计算
。显然
是一个非线性激活函数,例如Relu。
对于属性图中的所有节点都是共享的。对于给定的属性矩阵X,属性图中每个节点的K跳邻居都可能通过连续叠加多个K卷积层实现。因此,嵌入结果Z不仅仅编码了节点的属性信息,同时也编码了该节点的K跳内邻节点的信息。这里使用了3卷积层来构建属性网络的编码器。
3.2解码过程
然后是如何通过编码结果重构原始的图谱。A表示图的邻接矩阵,
为预估解码后的邻接矩阵,那么图结构的重构误差可表示为
,该重构误差可以用来评估图谱结构的异常。也就是,一个节点自身的结构信息可以通过结构重构解码器近似得到,那么该节点属于异常节点的概率就较低,相反,节点的重构误差较大,那么它就有很大概率是异常节点。解码过程就是以编码器的特征表示Z为输入,预测两两节点之间是否存在边,类似链路预测。
本质就是基于属性图编码器的输出Z训练一个链路预测层,可表示为:
与结构重构类似,只不过不是预测两两节点之间的关系,而是根据特征表示Z预测每个节点的属性信息。
3.3威胁评估
到此,已经详细的介绍了安全图谱的结构和属性的编码解码过程。为了统一的学习重构误差,目标函数可以表示为:
目标函数把结构重构误差和属性重构误差进行加权求和。然后在最小化目标函数的情况下迭代的求解编码过程的向量表示。最终利用重构误差实现对攻击者的威胁评估。权值矩阵的计算采用梯度下降法。在经过一定次数的迭代之后,可以通过如下公式计算每个节点的异常得分:
图卷积网络的计算复杂性是随着网络中的边的数据线性增涨的。本方法的复杂性是
,m表示属性图的属性矩阵非零元素的个数据,d表示属性矩阵的特征的维度,H表示图卷积不同层特征数据之和,n表示属性图中节点的个数据。
四、总结
图神经网络已经在很多领域被广泛使用,而安全领域的应该才刚刚开始,图模型的关系特性和知识图谱的语义给企业安全分析提供了新了思路和视野,未来安全知识图谱和图挖掘将会在安全领域有更多的应用与落地。
理论上利用图神经网络对安全知识图谱的实体和关系统一进行向量学习,实体的向量表示可以用来进行威胁评估,关系的向量表示可以用来攻击溯源和攻击预测,但是现实中企业网络环境比较复杂,很难找到一种有效的表示学习方法来满足这种需求,不过这也是我们在探索的事情。
关于天枢实验室
天枢实验室聚焦安全数据、AI攻防等方面研究,以期在“数据智能”领域获得突破。
内容编辑:天枢实验室 薛见新 责任编辑: 王星凯