机器学习算法在用户行为检测(UBA)领域的应用

最近看到越来越多的安全圈的同学开始关注UBA或者UEBA的相关产品和技术,恰好这一段时也一直在跟进UBA产品的状况,正如Gartner报告所述,最具创新能力的UBA供应商往往都是一些初创公司,我们比较了IBM、HPE、Splunk这类大公司的UBA产品,但是感觉无非就是SIEM产品的更新升级罢了,相反一些名不见经传的初创公司如Balabit、Sqrrl等的UBA产品到让人眼前一亮。在参考业界的同时,我们也在UBA的核心算法上做了一番研究,要知道UBA之所以号称下一代SIEM,其核心就是将机器学习引入行为数据检测,本文简要总结一下近期研究的适用于UBA的机器学习算法和效果。

UBA产品并不依赖某个“银弹”算法,其必定是一系列机器学习算法的有机融合,稍微了解机器学习的同学都清楚,像贝叶斯家族、线性回归这类有监督学习算法往往都需要大量的训练样本,但是网络安全领域APT攻击的样本一年抓不住两个,要说大量训练几乎没可能,因此UBA产品大量采用非监督学习算法,通过聚合行为数据巧妙的达到异常检测的目的。下面简要介绍一下在行为检测过程中常用的机器学习算法。

首先我们假设一个用户场景,张三,是一个SO的系统管理员,他的账号有很多出入IT系统的权限,某天他的账号被黑客盗用了,黑客通过VPN等通道接入内网,并且将数据偷盗到公司外出售给竞争对手。

一个低风险用户的正常业务活动通常没什么可关注的,但是一些高风险人群的正常活动或者低风险账号进行的高危操作则足以值得调查人员关注,更近一步,如果一个高风险用户做了一些高危并且不长出现的动作,那就绝对需要安全人员介入调查了。这里有一个问题,我们如何知道一个用户风险等级是高还是低?这便是UBA及其算法要解决的核心问题,通过建立动态行为基线发现用户偏离正常模式的行为,并根据风险累计的数值判断用户风险级别。综上,构建用户的特征行为矩阵是第一步,也即User-Profile,特征行为矩阵的构建方法五花八门,考虑到HBase支持数据量大,列式存储等特点,我们选择将特征矩阵保存在HBase里。

张三,像其他特权用户一样,利用其账号的权限登录到某一台主机或者服务器,主机登录算法用以检测每个用户经常使用的主机或者服务,DBA通常倾向于登录固定的几台机器,并且都是使用相似的命令,同时销售人员都是使用天兔或者某个XX系统的服务,两者使用方式完全不同。这里张三登录的是一台保存销售数据的服务器,而显然,这与他之前的模式或者与他所在的Peer-Group都是格格不入的。这里我们使用KMeans算法根据用户行为数据的特征矩阵对用户划分Peer-Group,行为模式类似的人群会划分到一个动态群组。

除了动态群组,根据现有的系统权限组进行风险评估同样是一种有效方式,我们从LDAP或者AD获取用户组以及组的成员数,通常规模较小的组比成千上万用户的组风险系数更高。当张三的账号被黑客从普通管理员组提升到超级管理员组的时候,他的账号瞬间进入了一个人烟罕至的群组,这时候他的风险值会瞬间提升。

除了用户登录的机器,登录时间也是行为特征中非常重要的一个环节,基于时间序列的分析方法有很多,这里我们使用KDE(核心概率密度估计)算法来统计和预测用户在某个时间段登录的概率,这种方法可以有效的克服离散数据在模式匹配过程中容易过耦合的问题。比如张三作为一个系统管理员,通常的登录时间是上班时间以及晚饭以后的时间,早上7:30属于正常登录时间,而凌晨0点登录就会被标记为高度反常和可疑。KDE曲线如下图:

57edd3793b7e1.jpg

张三登录系统以后进行了一系列的操作,通常一个用户在一段时间内能够产生的操作个数也是一个人的典型特征,User-Profile聚合一个用户在一段时间内产生的所有行为数据的数量,使用KDE重新组织统计数据,并检测这个模式是否发生明显改变。如果这里张三在一小时内接连登录了30+台服务器,而他通常也就登录2、3台,那么这里就与正常的行为有明显的偏移。

57edd3793c686.jpg

基于频繁项集的聚类算法(如Aprior/FP-Growth)在零售行业很早以前就有广泛应用,比如沃尔玛对顾客购买商品的模式发掘发现啤酒和尿布经常一起出售。基于频繁项集的机器学习算法在UBA领域也有广泛应用,比如,张三通常在周末的时候通过SSH协议登录,而在工作日通过RDP协议登录,那么有一天他在周末通过RDP登录就是一个行为模式的偏移。

主成分分析(PCA) 是一种应用广泛的降维算法,其在行为数据异常检测的过程中有很好的效果,首先用户行为的特征矩阵往往都有成千上万个维度,如果我们想从海量数据的特征矩阵中找出异常也即离群的点,计算难度会比较大,我们采用PCA对特征进行降维并结合KMeans等聚类算法找出离群点。比如,张三通常会长时间使用前台的服务器,而运维后台服务器的时候比较短,如果他长时间停留在后台服务器上我们的算法会将其潜在的风险值提高。

57edd3793d839.jpg

上面介绍的几个算法Spark的MLlib提供的全部的实现,不得不感叹一下Spark确实是解放程序猿双手的良心之作。再往后,基于图数据的分析挖掘是我们后续的研究方向,安全调查人员时常需要看到用户和实体之间的数据关联,或者所谓的Kill-Chain,图数据库和基于Graph的算法天然支持这一点,好在Spark GraphX又替我们做到了这一步。图数据的挖掘我想业界应该没有比Palantir做的更好的了,就是那个号称帮助美军找到本·拉登的那家传奇数据公司

57edd3793e0dc.jpg