*原创作者:木千之
小生在这里先给FreeBuf的朋友们拜个晚年,祝亲们猴年猴开心,财源滚滚,大吉大利!
作为猴年的第一篇,我们延续上年“内部威胁检测”的主题,介绍下内部威胁检测领域中的信息融合技术。
1、为什么需要信息融合(Information Fusion)?
2、实验数据
3、Blend-in攻击检测
4、Unusual-change攻击检测
5、实验结果
6、小结
7、参考文献
我们今天所谈的内部威胁检测其实可以追溯到最早的“主动入侵检测”研究,不同的是关注点在 内部 而非外部。
威胁检测所使用的数据集通常来自多个 源 ,或者我们说具有多种 类型 , 如记录用户网络行为的HTTP数据与系统登录Logon数据,我们就看作是两类数据,或者是来自不同 域(Domain) 的数据。今天我们要谈的问题,则是在构建分类器时如何使用这些多域数据。
加入你已经通过传感器采集到了用户多个域的行为数据,如:
Logon Data + Device Data + File Data + HTTP Data ... ...
那么我们如何根据这些数据构建最初的数据集呢?一种朴素的想法是像上面一样直接将这些不同类型的数据连接起来(Concatenating),然而这样的做法却存在许多问题。
首先,不同域的数据数值的值域往往不同,这是自然的,但是因此带来的问题是,如果直接在构建分类器的时候作为特征使用,那么会使得最终的结果中某些域的作用不明显,如K均值分类中,计算距离时值域大的特征平方后当然对距离的影响最大,而值域小的作用则可以忽略不计,由此影响了最终分类器的效果。
其次,作为上述问题的一种应对,我们可以采用 归一化 的方法处理数据,这样处理的前提是我们假设所有的域对于行为预测具有同等重要的地位,而作为人为假设,或许已经偏离了真实,因此也限制了分类器的效果。
最后,撇开上述两个问题不谈,单纯处理所有域的数据,会导致超长维特征,最终造成过拟合或者过高的计算复杂度。
因此,对于多域的信息不能简单的联结处理,有必要研究符合数据规律的信息融合方法。
我们今天介绍的检测方法的实验数据集取自美国ADAMS项目中的一个子集,具体由美国CERT和卡耐基梅隆大学联合提供。如下图:
该数据集的生成方法可以参考文献【4】,数据集按照发布的版本进行分类,某些分类会具有多个数据子集,如r4.1-r4.2等,后续版本一般都是之前版本的超集,内容上成包含关系。每个版本中的readme文件提供数据特征的一些详细信息,而answer.tar.bz2则包含了每个数据集中恶意数据段信息,便于实验训练或测试。
下面具体介绍实验数据集,数据集分为两部分使用,一个由1000个用户的计算机使用审计记录组成,主要针对Blend-in攻击检测使用多域融合方法进行实验;另一个数据集来自4600个用户的实际计算机使用数据。两类数据集中的攻击数据都是根据分析真实事件中的 攻击场景 模拟后,插入到正常数据中。数据集一共分为五类,如:
2、 可移动设备的使用 ,如USB,记录移动设备名和类型;
3、 文件访问事件 ,即文件的创建、复制、移动、覆盖、重命名和删除;对于每个记录应当包含访问的文件名、路径、文件类型以及内容;
4、 HTTP访问事件 ,主要记录URL、域名信息、活动码(上传或下载)、浏览器信息(IE、Firefox、Chrome)以及网页是否加密;
5、 邮件发送和阅读事件 ,记录邮件地址、抄送/转发地址、标题、发送时间、文本内容、附件信息以及邮件是否加密。
上述数据集的部分原始样本如下。
readme文件:
Logon/off文件:
Device文件:
HTTP文件:
Email文件:
根据数据集中的五种分类,我们进一步统计分析获得统计特征,如图1(请注意,这里的“类别”和我们所说的“数据域”是同一个意思):
其中每类数据的特征均是某种计数和,如 Logon 类数据中的#Logons表示特定时间窗口内用户登录的次数统计,而#Logons on user’s PC表示特定时间窗口内在用户自己的PC上登录的次数,等等。 我们最终使用时会按照“天”为单位整理数据特征,即基于(User, Day)的格式描述上述域特征集合。
在后续的攻击检测中,上述的数据域特征会在检测“Unusual-change”攻击时使用,对于“Blend-in”攻击,我们会单独构造特征。
我们首先介绍针对特定的”Blend-in”攻击的检测。这种攻击直译过来就是“打入/混入…内部”的意思,技术角度描述就是攻击者获取了内部网络的登录权(窃取了某个合法用户的账号),然后试图伪装成合法用户在组织内部活动。
为了检测这种攻击,我们提出了 一致性(Consistence) 的概念,借助这个概念试图描述用户的行为在不同的 域 间的一致性。在继续我们的讨论以前,我们先给出两个概念:
Definition-1:域间行为的不一致性,即用户A和B,若A和B在域S1中属于同一个组(Cluster),但是在域S2中A不属于B所在的组,则称A的域间行为存在不一致。
这个概念也许没有数学定义那么严谨,但是其背后的思想是朴素的:用户的行为应当在其各个域的数据中有所反映,自然地,工作、角色相似的用户因为行为相似,因此在各个域中也应当相似。这种相似可以表现为归属组的异同。举个简单的例子,如果用户A和“工程师”这个群体在域S1、S2等中归属于相同的组,那么我们可以预期A在新的域S3中也应当和“工程师”中的用户属于相同的组。这里的“组”在聚类中就是 Cluster 的概念。
为了方便大家理解,我们可以参考下图,其中用户ABC开始在域1中位于同一Cluster,但是在域2中显然B和C一致,而A不一致;
Definition-2:域间一致性,我们说一个用户A在域Si与其他域Sj(j不等于i)具有一致性,即我们可以有用户A在域Sj(j不等于i)中所属的Cluster,预测出用户A在域Si中所属的Cluster。
第二个概念的作用主要用于对用户行为进行“异常评分”,比如当预测出现一次错误时,就记分+1(当然也可以是其它记分机制)。根据所有用户在域Si上的一致性程度,可以动态调整惩罚系数,比如如果所有用户在Si上一致性都较差,则惩罚系数较低,反之则给予较大的惩罚系数,使得一旦预测出错获得较高的异常分数。
为了清楚地理解某个概念,我们必须要搞懂这个提出这个概念的目的,所以我们首先说明了 域间一致性 主要用于评分机制,那么接下来,我们需要来介绍这个定义在实际中如何实现?
在这里,我们按照方法实现的步骤,渐进来介绍“一致性”在实际中的样子。
1. 对原始的多域数据聚类:我们应用K均值聚类的方法,对于各个域中的数据进行聚类分析,以此获得各个域间虚拟的“用户组”,即Clusters;
2. 我们对每个域间的数据应用GMM算法,即假设一个与域间的每个Cluster为一个componant,然后利用最大似然估计(MLE)计算各个域的GMM;
3. 根据计算得到的每个域数据的GMM模型,计算特定用户数据的MAP(最大后验概率),简单地理解,给定一个用户在某个域中的数据记录,我们可以根据GMM判断出其最有可能属于的Cluster;
4. 由此建立每个用户的Cluster向量Cu:Cu1, Cu2, Cu3, … Cum,表示对于用户u而言,当有m个域时,Cui表示该用户在域i中MAP最大的那个Cluster,即最有可能属于的Cluster;
5. 当我们由Cuj(j!=i)预测Cui错误时,便出现一个异常,进行异常记分,惩罚系数如上所述(预测时需要与用户u的组或对等体的Cluster比较);
6. 具体应用时可以使用三种方式:一种是特征与最终的记分均是离散数值,即Discrete features, Discrete evaluation,此时记分采用Hamming距离,即预测正确值为0,预测错误记分+1;第二种是特征是离散数值,而记分是连续数值,即Discrete features, Continuous evaluation,此时记分实质上是密度估计,记分是用1-用户cluster预测正确的似然;第三种则是特征与记分均连续,即Continuous features, continuous evaluation,这种情况特征不是使用MAP的Cluster,而是直接使用MAP,而预测的结果也成为了概率值。
上面我们最后可以得到用户在每个域上的异常评分,现在需要将这些评分融合起来,主要的方法就是 加权和 。这里主要借鉴文档词汇频率领域的TF/IDF框架方法,即Term frequency-inverse document frequency,主要计算某个词在文档中出现的频率与在整个文集中出现频率的比例,从而表示出该词对于文档的相对重要性。接下来我们给出具体的伪代码来计算最终的加权评分。如图2:
如图2中所示,第1-4行计算每个域的评分的权重,第5-7行计算每个域加权后的评分,最后计算用户所有域上评分的加权和。最终的F是每个用户的最终的异常评分集合。
加入Blend-in攻击检测没有发现潜入的攻击者,那么我们就需要根据Unusual-change来分析用户行为。这里的着手点是用户的行为都会有正常的改变,即存在合理的偏移,如果仅仅以特定用户为标准,无疑会将许多合理的改变判定为异常。因此我们选择一个用户的对等群体(具有相同职位、角色、工作任务的用户组)来作为比较的标准。这里按照前面的方式,我们依旧给出一个定义:
Definition-3:行为变化的一致性,即用户A和对等体C中的用户B,A和B在域S1中均存在某些特定Cluster间的变化,那么在域S2中A和B的Cluster上的变化应当一致。
这里的前提假设和Definition-2中的类似,即相同任务、角色的用户的变化模式也应具有相似性,当然这里不要求变化同时发生,我们关注的是一个较长时间段内变化模式的一致性。例如,用户A和对等体“工程师”群体在Logon域中的变化都在Cluster2和Cluster4中,在email域中“工程师”和A的变化均在Cluseter3/4/5间,则说明A的行为具有一致性,反之则不一致。
类似地,我们给出图供大家参考理解,其中用户ABC在域1中的变化都在状态1和2之间,但是在域2中,用户A的变化在状态1和4,与用户B和C不同:
接下来检测方法的介绍和Blend-in的类似,我们简要说明如下:
1. 对原始的数据聚类 :注意这里不再立足于GMM,而是直接使用【实验数据】部分介绍的域的特征(图1),将不同的特征作为用户在该域中的“状态”,并且建立一个转换概率矩阵Qd,每个元素为qd(Ck, Cm)的形式,表示用户从状态k到状态m变化的概率,概率的值通过状态发生的频率计算得到;
2. 行为变化建模 :这里简要介绍使用的两种算法,一种是Markov模型,一种是Rarest变化模型,我们不再详细说明其中的细节,而是直接给出使用的模型公式:
图3.1 Markov模型,其中S表示用户在域d的异常分数,Pd表示状态C0的先验概率:
图3.2 Rarest变化模型,
3、信息融合 :这里比较简单,直接从上面计算得到的S分数集合中,选择威胁最大,也就是S最小的值,如图3.3:
为了验证我们信息融合的效果,我们首先针对Blend-in攻击进行实验,给实验结果如下:
图4:Device和File域的数据更适合检测异常,而HTTP和Logon则稍差:
图5:单独使用设备域进行异常检测显著度不高
图6:域间融合检测,异常显著度非常明显
对于Unusual-change攻击而言,我们利用4600个用户的数据集进行实验,会发现分析性价比明显提升,7-8月份的数据说明只需要抽样检测50%的用户数据就检测除了全部的恶意攻击者;9月份的数据中,检测出所有攻击者仅仅需要分析13%的攻击者,如图7和8:
单独使用Markov模型进行实验,绘制出每个用户变化的似然值,我们可以看出 Device 和 Logon 域的变化似然非常一致,因此变化的不一致非常明显,即在这两个域上异常更加容易检测;而 Email Sent/Received 域上变化似然一致性较差,相比较而言不利于异常检测。
Device域上用户行为变化似然曲线:
Logon域上用户行为变化似然曲线:
Email Sent:
Email Received:
传统的检测方法专注在某个域的数据,或者多个域数据的简单拼接,我们今天介绍的方法通过TF/IDF和GMM将各域的信息有效组合,提升了具体检测的效率,并且有效降低了误报率。融合方法的关键在于将各个域的信息通过TF/IDF框架自动计算加权和,运用“一致性”的定义进行了巧妙的融合,从而使得各个域的信息关联发生作用,优化检测的效能。
1、M.Salem and S.Solfo. Masqurade attack detection using a search-behavior modeling approach. Columbia University Computer Science Department, 2009.
2、M. Salem, S.Hershkop and S.Stolfo. A survy of insider attack detection research. Insider Attack and Cyber Securtiy: Beyond the Hacker, Springer, 2008.
3、Multi-Domain Information Fusion for Insider Threat Detection, IEEE Security and Privacy Workshops, 2013
*作者:木千之,本文属FreeBuf原创奖励计划文章,未经许可禁止转载