本文目录
一、背景挑战
2.1 整体思路
2.2 正样本筛选
2.2.1 特征构造
2.2.2 孤立森林
2.3 算法介绍
2.3.1 VAE
2.3.2 GANomaly
一、背景挑战
真实异常样例少,由于内部员工越权访问涉密数据或者账号失陷用户攻击是小概率事件,可获取的真实异常事件样本极少; 正、负样本数量极不平衡,历史日志中绝大部分都是正常行为的数据,异常数据所占比例很小,不足以准确描绘异常的特征,无法直接从数据中学到所有异常的特性;
数据标注困难:数据缺少标签,人工标记成本高,可操作性低;
攻击模式不确定:为了规避检测,攻击者可能会将其恶意的行为隐藏在正常的行为中,不易发现; 攻击策略没有固定模式,无法事先预知。
有监督的方法依赖于准确标注好的数据集进行模型训练,需要充足的正、负样本,然而由于存在如前所述的”三大挑战“,有监督的方法无法发挥作用。因此,我们探索了一些无监督方法在UEBA中进行落地尝试,即VAE和GAN。相比于以往的异常检测方法,这些方法能捕捉用户的动态行为变化,能提高实际应用中的检测准确性。将样本的多维度特征进行评定,可以批量分析账户的异常行为,有助于自适应的持续算法优化。
实际场景中多数是一些时序数据,需要通过算法的设计自动识别出海量日志数据中的异常样本。此外,场景中往往要检测实体的异常行为,并按其偏离程度排序,便于企业安全管理人员按优先级核实跟踪处理这些异常行为。在UEBA中,很多场景都会用到无监督方法的预测、检测的相关技术,例如:
针对主机安全、VPN、OA等日志,检测某个账号在主机或服务器的操作异常,如文件传输数据量是否异常、登录或访问行为等是否异常
针对数据库审计日志,检测已授权用户对数据库访问是否异常,如越权访问、已授权数据的恶意更改、滥用或泄露行为
针对堡垒机、WEB应用防护等日志,检测某个用户或账号访问的内网资源、API数量等是否有行为异常
二、算法介绍
2.1 整体思路
VAE和GANonaly这两个模型做异常检测的假设都是一样的,即假定正常数据是服从某一种分布的,而异常数据是不能够拟合进这个分布,因此我们可以用VAE和GANomaly找到正常数据的分布,从而用这个分布来做异常检测。
无监督学习是为了直接学习数据的分布,而不需要使用结果或者标签,其学习的是特征之间的关系,因此常被用于降维和聚类。由3.1节可知, 我们首先需要筛选一些靠谱的正样本,这里选择孤立森林进行区分。其次,为更好的了解特征间的关系,读者可以使用协方差矩阵分析特征之间的相关度,并通过热力图可视化查看,关联度低的特征可以屏蔽掉。如有需要可额外自行构造一些有效特征。
热力图反映了数据本身的特征与其他构造特征的相关系数。颜色越深代表两个特征间呈强负相关,颜色越浅(淡白色)则两个特征之间呈强正相关。
2.2.1 特征构造
特征构造需要结合相应的安全场景进行分析,最好能明确企业的网络拓扑结构,办公网和生产网检测场景各有侧重点。针对账号登录、资源的访问等,根据时间,ip,部门等特征进行定义。比如可以人工定义一些基于时间的威胁等级特征。
在实际的业务场景中,员工ID在非工作时间段的行为本身存在一定危险系数,比如存在身份ID被盗用的可能。可以指定凌晨1点~凌晨5点为高危时段。其次,基于群组标签也可以进行相关统计,账号使用过程中常用登录设备、常用访问资源、常用登录地点等,这些特征可以很好的辅助用户实体画像的构建和异常行为的检测。
2.2.2 孤立森林
孤立森林(Isolation Forest)基于 Ensemble 的异常检测方法,凭借其线性的时间复杂度且精准度较高,在处理大数据时速度快,所以被广泛应用于工业界中结构化数据的异常检测。常见的场景包括:网络安全中的攻击检测、金融交易欺诈检测、疾病侦测、噪声数据过滤(数据清洗)等。
孤立森林的使用需要有一些理论基础:
1、异常数据占总样本量的比例很小;
2、异常点的特征值与正常点的差异很大。
由于算法的设计,孤立森林有以下优点。由于每棵树都是独立的,因此在分布式的系统中加速计算;此外不同于聚类算法找到异常点,它不需要计算点与点之间的距离或者簇的密度,模型为线性时间的复杂度,速度快,系统开销小。
Tips:
1、训练样本中异常样本的比例不宜过高,可能会导致最终结果不理想,因为这违背了该算法的理论基础。因此,其适用于UEBA中常用户行为的检测。
2、训练样本特征维度不宜过高,因为当树的样本量确定之后,树的高度确定了。当样本维度较高时,会存在建完树之后仍有大量的特征信息未被使用,从而导致了算法的准确性。并且高维样本空间中可能会存在一些无关的维度或者噪音维度,这些也会对树的构建产生影响。因此在使用孤立森林前,需要对业务数据中一些噪音或无效特征进行甄别和过滤。
2.3 算法介绍
2.3.1 VAE(Variational Autoencoder)
VAE是变分自编码器的简称,该模型最开始提出的目的是为了找到训练数据的分布,从而用这个分布来生成数据。从另一个角度而言,如果我们能够找到正常数据的分布,那么我们就可以用这个分布来做异常检测。
先用正常样本去训练VAE模型
输入测试集给VAE,获得重构的测试集数据
2.3.2 GANomaly
在训练阶段,整个模型均是通过正常样本做训练。也就是编码器,解码器和重构编码器,都是适用于正常样本的。当模型在测试阶段接受到一个异常样本,此时模型的编码器,解码器将不适用于异常样本,此时得到的编码后潜在变量和重构编码器得到的潜在变量的差距较大。我们规定这个差距是一个分值,设定阈值为0.2,可根据实际项目进行调整。一旦模型就认定送入的样本是异常数据。对于最后结果分数的解析,我们使用了下式的方法,使用一阶范数对比了生成器和重构编码器之间的差异,再以进行归一化得到每个样本的异常得分。
2.3.3 经验杂谈
GANomaly和VAE这两者都可以用来做行为异常检测,也都是基于训练数据的分布,但是原生的VAE的鲁棒性比原始的GAN更好,而GAN在调优之后效果比VAE更好。同时,对于模型解码得到的结果需要和初始数据进行相似度计算,得到数据的异常得分。
当然基于VAE模型在工业界使用中也面临着一些问题:
运算资源的消耗。真实应用场景中存在机器的资源限制,由于引入了额外的复杂结构以面临数据中难以挖掘的局部异常无疑会造成训练和推理速度的提升。
运行速度的效率。该类模型通常用于离线的行为检测,针对实时的检测还需要对模型选取和检测方法进一步优化。
阈值的设定。设置异常阈值不符合真实场景中多种指标都需人工指定阈值这一无监督异常检测的通病。因为检测异常是通过对比重构后的结果与原始输入的差距,而这个差距多少就算是异常需要人为定义。
三、文末总结
在UEBA的实践中,我们发现结合孤立森林+GANomaly的方法,在基于”数据库审计日志中用户越权访问、主机审计日志中账号的资源访问”等场景都取得了不错的效果。要注意的是,这些方法多用于离线检测模块。在某些场景中,我们也会采用集成学习、知识蒸馏等方法去降低误报和压缩模型,以提高模型的准确性、可解释性和稳定性。
为帮助企业更好的应对内部威胁,腾讯安全运营中心(SOC)推出了UEBA分析能力,以帮助客户高效、准确、及时的检测风险,从而提升自身安全防护能力,有效降低内部威胁影响。想要了解更多UEBA技术,请关注腾讯SOC+UEBA相关介绍。
腾讯SOC-UEBA传送门:腾讯安全中心集成UEBA能力解决内部安全威胁
点个在看你最好看