赛题
「大数据平台安全事件检测与分类识别」
地址
http://go.datafountain.cn/HKe
@钝角战队
获奖方案
团队简介
团队成员主要研究方向为隐私保护、网络安全,曾在第十三届“挑战杯”陕西省大学生课外学术科技作品竞赛中获得特等奖,在CCF大学生计算机系统与程序设计竞赛(CCSP)西北赛区中获得铜牌。
摘要
大数据数据平台由于管理复杂、安全机制不健全导致平台上的大数据面临相当大的安全风险。近年来SQL注入攻击、差分攻击等多种安全威胁,导致的数据泄露、滥用或不可用等数据安全事件不断涌现。针对数据安全问题,日志审计分析是一种非常有效的风险应对手段,基于大数据平台日志、安全设备日志和平台网络流量等多源异构数据进行分析,可有效实现攻击行为的发现或预测,并进行溯源,保护企业或组织内部数据安全。本次本团队根据赛题提供的无标签大数据平台日志数据,利用由PCA、日志聚类和不变量挖掘构成的集成学习模型,进行了数据安全事件识别及分类,有效的识别了相应类别的攻击,准确率达到了85.12%。
关键词
PCA,日志聚类,不变量挖掘,集成学习
方案介绍
统计机器学习和数据挖掘技术在解决大规模系统监测和诊断挑战的规模和复杂性方面显示出了巨大的潜力。本赛题复赛要求的分类为正常日志和异常日志,异常日志又需要对攻击的类型进行分类,涉及到的攻击类型有:SQL注入攻击、差分攻击、重标识攻击、数据删除、数据泄露、加密勒索攻击,一共六类。考虑到单个模型分类效果有限,所以本团队考虑使用集成学习,下面分别对数据预处理、集成学习、PCA、日志聚类和不变量挖掘分别进行介绍。
1.1 日志向量化
词频-逆文本频率(TF-IDF)是常用的文本挖掘预处理方法,其由两部分组成TF和IDF。TF即词频,也就是文本中各个词的出现频率统计。TF-IDF的主要思想:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TF-IDF实际上是:TF*IDF,TF词频(Term Frequency),IDF逆向文件频率(Inverse Document Frequency)。形式上,IDF的计算方法为:
其中N为log序列的总数,nt为事件t出现的序列数。使用IDF,频繁发生的事件权重较低,很少发生的事件权重较高。TF的公式为:
1.2 集成学习
在机器学习算法[1]中,目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时只能得到多个有偏好的模型。集成学习就是组合这里的多个弱效果模型以期得到一个更好更全面的强效果模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。单个学习器被称为弱学习器,相对的集成学习则是强学习器。
本次赛题中,所需要预测分类的攻击种类数量较多,单个模型在某个或某几个分类上效果较好,总体差强人意,所以使用有PCA、日志聚类和不变量挖掘组成的集成学习,充分利用不同模型的优点,集成学习的总体结构图如下。
图1:本赛题所用集成学习方案架构图
1.3 PCA模型
PCA是一种统计方法,是在高维数据中提取模式的一种常用技术,由二维降维到一维时的原理如图2所示。本团队使用PCA来分离特征向量中的重复模式[2],从而使异常消息模式更容易检测。通过PCA进行异常检测背后的直觉是,同一种日志的特征向量中的维度是高度相关的,这是因为同类型日志消息之间具有很强的相关性。我们的目标是识别偏离这种相关模式的异常向量。
图2:PCA原理图
基于PCA检测异常,直观地说,就是用向量y的端点到正规子空间Sd的“距离”来判断y是否异常。这可以通过计算平方预测误差SPE≡||ya||2(向量ya长度的平方),其中ya是y在异常子空间Sa上的投影,可计算为ya=(1-PPT)y,其中P=[v1,v2,…,vk],P由PCA算法选取的前k个主成分组成。
1.4 不变量挖掘
不变量挖掘可以有效地检测执行异常[4]。不变量挖掘基于统计学习技术从控制台日志中自动挖掘常数线性关系。在输入不同日志时,系统日志中始终保持的关系被认为是日志不变量。这些线性关系可以捕获正常的程序执行行为。违反这种关系(不变量)意味着日志异常。因为日志序列记录了系统组件的底层执行流,在日志序列中有许多这样的线性方程,即不变量。如果我们能够从收集到的历史日志数据中自动发现所有这样的不变量,则违反不变量通常意味着程序执行中出现异常如果一个新的日志破坏了某些不变量,就认为在系统执行期间发生了异常。通常,程序不变量是在不同工作负载或输入下始终保持相同值的谓词。程序不变量可以从系统的各个方面定义,包括系统度量(例如CPU和网络利用率)和程序变量(比如本题当中的id地址,使用的数据表等)。除了程序变量和系统度量之外,程序执行流还可以引入不变量。在假设日志序列为系统执行路径提供了足够的信息的前提下,通过对日志序列的分析可以得到程序执行流的不变量。
当我们手动检查日志文件中的问题时,通常可以很好地利用这种关系,如果关系被破坏了,此时就可以知道一定是异常出现,并安全地推测问题在哪里。在此基础上,本团队提出基于从日志中挖掘日志不变量的日志异常自动检测方法。与前面基于统计的方法不同,日志不变量具有非常清楚的物理含义,可以很容易地被操作员理解。它不仅能检测到日志异常,而且能对每一个检测到的异常给出有意义的解释,这种解释将异常与执行逻辑联系起来。
1.5 日志聚类
基于日志聚类的问题识别方法考虑了日志的所有特征[3]。日志的聚类是基于数据预处理得到的向量,在计算任意两个日志向量的距离时,使用的是余弦相似度,公式为:
聚类算法,K-means算法是最常用的聚类算法,主要思想是:在给定K值和K个初始类簇中心点的情况下,把每个点(亦即数据记录)分到离其最近的类簇中心点所代表的类簇中,所有点分配完毕之后,根据一个类簇内的所有点重新计算该类簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的步骤,直至类簇中心点的变化很小,或者达到指定的迭代次数。
本团队的K-means算法为改进的K-means算法。在标准的k-means中,质心通常是随机初始化的,在改进的K-means算法中,本团队使用根据相应类别的攻击的向量作为初始化质心。同时设置类别范围的最大距离,不要求全部日志都有类别,当没有日志向量更新其聚类分配时,即质心停止更新时,算法收敛。
结果分析
为了验证集成学习的有效性,本团队分别提交了各自模型与集成学习的模型。在仅使用PCA时,最好结果为55.71%,在仅使用不变量挖掘时,最好结果为63.19%,在仅使用日志聚类时,最好结果为76.33%,当把三个模型集成起来时,结果为85.12%。由此可见,三个模型的结果集成到一起时,效果最好,最终形成了一个较强的分类器。
关于模型的大小与运行时间,在本团队所提供的机器配置为CPU为5800X,内存32G,三个模型依次串行运行。PCA、不变量挖掘和日志聚类的运行时间依次为:3分钟左右,4分钟左右和6分钟左右;模型的大小依次为312M,860M和654M。
实验发现,使用Bert模型,预测分布熵值较低,而LightGBM模型预测分布则相对更加平滑,为防止Bert模型过拟合,使用Bert模型(ensemble)预测的分布与LightGBM模型预测的分布逐元素相乘,得到每类的分数,依据此分数,得到预测结果。最终本方案的预测结果准确率为0.469471,位列排行榜第5名。
致谢
感谢本次比赛的主办方中国计算机学会、大数据协同安全技术国家工程研究中心与北京科技大学网络空间安全与大数据智能应用实验室能给我提供这个参加比赛的机会,感谢试验室的师兄师姐帮我解决在比赛路上的各种问题,感谢复赛复核人员对我提交文件错误的容忍。
参考
[1] 祝超群,彭艳兵.基于集成学习的文本摘要抽取方法研究[J].计算机与数字工程,2022,50(07):1540-1544+1592.
[2] Wei X , Wei X , Wei X , et al. Large-scale system problems detection by mining console logs[C],2013.
[3] Vaarandi R , Kont M , Pihelgas M . Event log analysis with the LogCluster tool[C]// MILCOM 2016 – 2016 IEEE Military Communications Conference (MILCOM). IEEE, 2016.
[4] Lou J G , Qiang F , Yang S , et al. Mining invariants from console logs for system problem detection[J]. Proc of Usenix Atc, 2010.
—End—
戳“阅读原文”,速来参赛办赛~
原文始发于微信公众号(DataFountain):【三等奖方案】大数据平台安全事件检测与分类识别赛题「钝角」团队解题思路