最近看了一篇基于时序模型实现UEBA的文章,虽然是个新刊,但是作者团队还是挺牛的,都是业内人士,记录一下学习过程。
原文《User and entity behavior analysis under urban big data》
刊物:ACM/IMS TDS
组织内部人员可以更轻松地执行恶意行为,并可能造成更严重的损害,因为它们位于内部,并且更接近私人数据或私人服务器。53%的组织遇到了来自内部人员的攻击,27%的组织认为来自内部人员的攻击更频繁,90%的组织承认他们无法抵御内部威胁。
内部攻击可能会表现出异常的行为模式,如:1.突然频繁的远程登录,2.突然频繁的可移动硬盘使用,3.突然频繁的敏感文件访问,这些行为偏离了用户的正常行为轨迹,可以被研究人员用来检测内部人员的异常行为。
贡献1.从四个角度表征用户的日常活动,从三个角度确定用户是否正在执行威胁操作
2.使用几种深度学习算法(长短期记忆(LSTM)和卷积LSTM(convLSTM))计算现实行为与日常行为正常之间的偏差,卷积LSTM是本文首次提出。具体做法是使用LSTM来学习用户行为的序列,并使用ConvLSTM来学习用户行为的特征。
3.使用多层感知器(MLP)根据这些偏差识别异常行为,预测下一个状态
4.在CERT数据集上进行了实验
0、相关研究1.隐马尔可夫模型(2016),利用HMM对用户的正常行为进行建模,学习正常行为的构成。
2.隐马+DT(2018),提取了序列和数值数据,使用HMM从序列中学习用户的行为习惯,决策树算法(DT)使用数值数据,并利用SOM把HMM和DT组合起来,确定用户是否做了可疑的事情。
3.结合生物特征技术(2015),使用由用户的大脑活动和眼动追踪产生的脑电图(EEG)信号提取特征,训练SVM/KNN/RF分类器。
1、三个角度1.特征偏差:待检测的特征与模型通过历史记录特征之间的偏差。
2.序列偏差:待检测的动作序列与模型的正常动作序列之间的偏差。
3.角色偏差:待检测的角色特征与同一组中用户角色特征之间的偏差程度。
2、四个特征基于三个角度提出四个检测特征:动作序列,动作特征,社交特征和角色特征。
- 动作特征可以表明用户在一个时间段内的日常活动的特征,比如登录和登出,连接和断开连接互联网,usb的使用
- 动作序列是基于时序的,首先提取用户在某短时间内的活动记录,然后根据时间排序:{log on, web, web, web, drive connect, drive disconnect, email, log out}
- 社交特征:主要是说在社交媒体上的行为特征,例如一些用户可能在同事之间的纠纷后做一些恶意行为进行报复,那他在社交媒体上的言论就有可能暗示这一事件(这一特征在本文中只作为理论提出来了,在实验的时候并没有对这个特征进行验证)
- 角色特征可以简单理解为同一个部门为同一个角色,他们具有共同的工作特征,比如人力资源部门的同事会在一天内频繁发送电子邮件,经常浏览内部网站进行招聘,阅读简历文档等操作
1.三个主要模型:操作特征模型、操作序列模型、角色特征模型
2.总体策略:利用历史记录来预测下一个状态,并通过预测和要检测的文件之间的偏差来检测异常行为
3.在工作流的左侧,组织或公司中的工作人员根据其角色(如技术人员、人力资源代表、销售人员、工程师和经理)进行分组,可以通过其日常工作、行为和其他数据从这些组中提取角色特征,例如,人力资源部门的工作人员倾向于在工作时间阅读简历,发送电子邮件,打电话;如果一名员工很少发送电子邮件和打电话,但突然访问了一些他或她以前从未访问过的简历文件,并在公司没有重大事件时开始频繁使用可移动驱动器,则该员工的行为是可疑的。
4.需要历史数据来提取特征并为每个用户训练模型。通常,从组织或公司内部收集的这些数据可分为三类:(i) 用户在自己计算机上的行为和操作信息,(ii)服务器和内部系统上的所有日志,以及(iii)组织结构和重大事件和惩罚的记录。
LSTM训练LSTM来学习正常的动作序列,并根据历史预测下一个状态的动作序列。比如这段动作序列{log on, web, web, web, drive connect, drive disconnect, email, log out}就可以作为LSTM的输入
本文用到的LSTM的是一个双层结构:
每个LSTM单元在第一层有一个输入xi,是一个M维的序列,就是代表一天的动作序列,在第二层的输入是h1,i,它的输出就是隐藏状态h和c,它们是作为下一个LSTM状态单元的输入,这个大N是代表总天数
网络尺寸信息:
该模型由两个LSTM层组成,分别有100个单元和160个单元,输入是一个128维然后被reshape成(4✖️32),每个LSTM层的激活函数是"tanh",最后32个单元的全连接层选的激活函数是"relu"
卷积LSTM2015年提出的一个LSTM改进版,它和CNN+LSTM是有区别的,ConvLSTM是在底层就将CNN和LSTM做了结合,是专门为时间序列设计的一种模型,虽然本质上还是LSTM,但是加上卷积操作之后就不仅可以得到时序关系,还能像卷积层一样提取空间特征,这样就能得到时空特征,而且还有一个有点就是能把状态和状态之间的切换也换成卷积计算
卷积LSTM最开始是用于视频帧 预测任务并且有很好的表现结果,它用在UEBA中主要是有两个优势:
- 第一个就是说,用户的日常行为特征可以反映日常工作和行为习惯,那我们可以使用LSTM的预测特点进行预测;
- 第二点就是对于不同的活动,本文是选择了不同的特征来学习用户的日常行为特征,比如logon/off feature、http feature、email feature,但不同活动的特征之间有可能存在一些潜在的联系,那我们就可以使用CNN来提取这些联系。
我们来看下具体实现:
本文首先构建了一个feature map,包含了许多行为特征,然后侯建了卷积LSTM,在输入到状态和状态转换过程中使用卷积结构,来取代传统 LSTM 中的简单计算结构。
这里的hi和ci都是3D tensor,最后两个维度带代表时间i和空间维度,也就是行和列,
xi是时间i的feature map
本文用到的卷积LSTM网络尺寸信息在这张表格里:
这个模型是有三层,每一层分别有24、128、48个过滤器,激活函数是和前面双层LSTM一样都是tanh,在全连接层选的是relu,
MLP最后利用多层感知机将深度学习模型的结果结合起来。MLP 训练的数据对象就是包括动作序列、行为特征和角色特征。,类似于执行分类任务。
四、实验作者首先定义了损失函数WDD来衡量真实值和预测值之间的偏差,是一个加权均方误差,V是所有特征的集合,y是真实值,y尖是预测值,w是根据y设置的权重。
该数据集模拟了一家拥有 1000 多名员工的公司,这张表描述了实验中提取的行为特征、动作序列和角色特征的介绍,
行为特征从普通日志中提取,动作序列就包括了一名员工一天当中所有的动作 log on, log off, http, device connect, device disconnect, email.,角色特征是一组相对固定的值,它是计算了同一个组中所有员工的一些行为特征的平均值,包括了工作日登录/注销、工作后登录、周末登录、联机时间、电子邮件发送数、内部电子邮件发送数、内部电子邮件接收数、电子邮件大小、等等。
实验在实验部分,作者先用良性的数据训练了LSTM和卷积LSTM,然后用4天的特征来预测第5天的特征,最后极短了实际值和预测值之间的偏差。
1、利用LSTM预测动作序列从结果图中可以很明显看出,在epochs = 40之前,binary_accuracy保持了大约0.65,然后随着epoch增大保持在大约0.95,并且loss值也在平稳下降。看起来用户的动作序列习惯已经被准确地学习了,但是后面计算WDD的时候就发现实验结果存在过拟合的情况,第160天的时候会产生一个明显的分界,因为前160天是训练数据,所以loss值很低,后80天作为测试数据时loss值一下就上来了。
所以作者优化并重新训练了LSTM,训练过程如图7所示。我们可以清楚地看到,binary_accuracy和WDD损失在epochs = 40之前趋于稳定,并且在epochs接近40时具有明显的波动。说明epoch在40之后就会出现过拟合。
这时再计算WDD值,通过观察第160-200天这一段可以看出,过拟合现象已经被修正了,第200天附近产生波动是因为:用户在第200天附近存在异常行为,导致预测与真实序列之间的异常偏差。
经过修正之后的binary_accuracy为0.555,loss值为3.2
2、利用卷积LSTM预测行为特征对卷积LSTM实验时也是利用前4天的数据预测第5天
需要注意的是,同一角色下所有用户定义的特征图是相同的,convLSTM模型也是相同的,所有用户共享相同的convLSTM模型,而不同的用户保存自己的参数。
从结果图可以看出,在 epochs = 200 之前,loss值稳定在大约20的位置。在epoch超过 200 后急剧下降,然后稳定在0左右。
binary accuracy在epochs 0-200, 200和400之间是稳定的,再之后会在0.93左右波动。
但是,在计算WDD值的时候同样遇到了过度拟合的问题,所以作者又进行了优化,在loss = 72 and acc = 0.718的时候,WDD值和之前预测动作序列的结果的几乎相同的,并且观察变化我们能知道在200天后有明显偏差,也就是存在了恶意行为,这个结论跟LSTM检测动作序列的结果还有实际情况是相对应的。
使用同一个角色下所有用户的行为特征来计算平均值,然后计算某个用户和它所在组的特征平均值的WDD值,可以看出,在前 200 天内,用户的日常特征与标准角色特征之间的偏差在 0–2 的范围内波动,但 200 天后,用户开始表现出一些可疑行为,并且存在显著差异。
从上面给出的结果中,我们可以清楚地看到,每种类型的特征都具有识别异常行为的能力。但是,又都会出现误报和漏报。所以为了更准确地检测异常行为,本文在最后使用了多层感知机,利用每种类型特征的偏差,来执行全面的决策。
综合以上动作特征、行为特征和角色特征的WDD值,可以绘制这样一张图,可以看到正常值在每个维度的WDD值都位于0-2之间,红色的异常点的WDD值就很大,而且和正常值是有比较明显的分界线的。
作者最后就将这个三维的WDD值连接起来,并且用它来训练了一个多层感知机,baseline: D. C. Le and A. N. Zincir-Heywood. 2018, May. evaluating insider threat detection workflow using supervised and unsupervised learning. In 2018 IEEE Security and Privacy Workshops (SPW) (pp. 270–275). IEEE.也就是开头介绍的利用隐马模型和决策树方法,提取了序列和数值数据,确定用户是否做了可疑的事情。
实验结果表明,本文提出的方法在所有指标上都优于baseline。在ROC曲线中,本文方法的(AUC)值可达到0.96,这非常有力地说明了本文提出方法的有效性。
五、总结虽然提出了四个角度的特征,但是没有对社交特征进行实验;
而且没说怎么优化的?



