基于溯源图节点级别的APT检测

2022-11-15 05:57罗汉新王金双伍文昌
网络安全与数据管理 2022年10期
关键词:子图良性内存

罗汉新,王金双,伍文昌

(中国人民解放军陆军工程大学 指挥控制工程学院,江苏 南京210007)

0 引言

近年来,高级持续性威胁(Advanced Persistent Threats,APT)等复杂攻击对网络空间安全提出更大的挑战。攻击者不断改变攻击模式,寻找新的入侵点,并使用混淆方法保持不被发现。然而,当前入侵检测系统通常将系统调用和网络事件作为依据,只携带日志条目之间的顺序关系,难以直接提取有效的关联,因此对于APT的检测效果不佳[1]。近几年的研究建议利用溯源图[2](Provanace Graph)丰富的上下文信息来实现入侵检测。溯源图是一个有向无环图,图中节点表示系统中主体(如进程、线程等)和对象(如文件、注册表、网络套接字),有向图中的边表示顶点之间的控制流和数据流的关系。与原始系统审计数据相比,溯源数据具有强大的语义表达能力和历史攻击关联能力。

目前攻击者更倾向于使用零日攻击,基于特征的方法[3-4]缺乏检测未知威胁的能力。基于异常的图核(Graph Kernel)检测方法[5-6]对整个溯源图进行检测,然而隐蔽入侵活动下生成的溯源图可能与良性行为活动下生成的溯源图相似,因此,难以检测出相似溯源图之间的异常,同时也无法识别和定位异常节点。

针对上述问题,本文提出了基于溯源图节点级别的APT实时检测方法。该方法将溯源数据作为源数据输入,使用K-Means聚类方法[7]和轮廓系数相结合的方法对训练数据集中良性节点进行聚类,得到良性节点簇以及簇质心。最后通过判断新节点是否属于良性节点簇来判别是否存在异常,可在节点级别上进行威胁检测。

本文的主要工作和贡献如下:

(1)节点级威胁检测。将基于图核的入侵检测问题转化为基于溯源图中异常节点的检测问题。提出了一种基于K-Means和轮廓系数相结合的方法和来识别和定位异常节点。

(2)检测性能高。该方法在Unicorn SC-2和DARPA TC两个数据集上进行实验,结果表明该系统的准确率达到95.5%以上,并具有识别和定位异常节点的能力和可接受的运行开销。

1 相关工作

现有的入侵检测方法主要划分成基于特征和基于异常的检测方法。

基于特征的检测方法是已知攻击行为,通过与已知攻击特征匹配实现入侵检测。Poirot[3]根据现有网络威胁报告(Cyber Threat Intelligence,CTI)的专家知识构建查询子图,主要解决威胁情报子图与系统级溯源图的节点概念对齐及匹配问题,通过计算出查询图和溯源图之间的图形对齐分数来判别异常。Holmes[4]主要实现基于主机威胁的警报生成、关联和场景重建。根据现有TTPs(Tactics,Techniques,and Procedures)的专家知识来定义溯源图中的恶意行为模型,利用高级场景图(High-Level Scenario Graph,HSG)实现低层次(日志、警报)信息到高层次的映射以解决语义鸿沟问题。但是上述方法都是基于特征的方法,难以发现未知的安全威胁。

基于异常的检测方法是建立基于正常操作模式的特征库,待检测行为通过与库中的行为模式进行匹配从而判断是否异常。StreamSpot[5]提出通过分析信息流图来检测入侵,提取局部图的特征来学习良性行为模型,并使用聚类方法来检测异常子图,能够实时检测APT攻击。Unicorn[6]进一步提出了一种基于Weisfeiler-Lehman(WL)方法[8]来提取整个图的特征,不断对特征模型进行优化来检测异常图。然而,由于图核方法的主要提取整个溯源图的特征,很难检测出隐藏的威胁[9]。ProvDetector[10]提出探索溯源图路径来检测恶意软件,将路径嵌入溯源图中,并使用局部离群因子方法检测恶意软件。Pagoda[11]利用训练数据中良性溯源图中节点之间的因果关系构建规则。如果溯源图匹配规则与非匹配规则的比例超过一个预先设定的阈值,则将该溯源图判定为恶意溯源图。然而,APT攻击通常不会出现在完整的路径中,这使得基于路径的方法很难检测到异常。

2 威胁模型

典型的APT攻击具有以下特征:一是攻击隐蔽性。攻击者故意隐藏攻击行为而不是简单地进行攻击,导致攻击行为产生的数据与大量良性数据相混合。二是攻击持续性。攻击行为通常是精心策划而且会持续数月甚至数年,与传统攻击对比存在根本上的差异。三是攻击未知性。攻击者更倾向于使用零日漏洞来攻击系统。因此,本文假设没有任何攻击行为的先验知识来进行训练。

图1展示了DARPA TC THEIA案例[12]的攻击溯源图。攻击者利用Firefox54.0.1版本漏洞植入后门程序,攻击行为持续了两天。攻击者首先将名为/home/admin/profile的文件植入受害者主机。该文件以root权限运行,与攻击者的控制台b.b.b.b连接。然后将名为/var/log/mail的文件植入主机,并生成具有root权限的新进程。最后攻击者对c.c.c.c进行端口扫描。图中灰色节点是与入侵活动相关的节点。

这些攻击行为产生的偏差将被溯源数据采集系统捕获,溯源图会生成额外的节点和边,攻击行为下的节点局部结构不同于良性节点的局部结构。例如,在图1中,异常节点①/var/log/mail有数千条连接到远程IP节点的边,这与良性节点②/usr/bin/fluxbox连接边数量和类型有很大不同,因此将主机入侵检测问题转化为异常节点检测问题。

图1 DARPA TC THEIA攻击溯源图

3 检测框架

本文提出基于溯源图节点级别的APT实时检测方法。检测框架包括四个模块:溯源数据生成模块、溯源数据存储模块、模型训练模块以及检测与报警模块。检测框架如图2所示。

图2 检测框架:①溯源数据生成模块;②溯源数据存储模块;③模型训练模块;④检测与报警模块

3.1 溯源数据生成模块

现有常用的溯源数据采集系统包括PASS[13]、Hi-Fi[14]和CamFlow[15]等。本文选择使用CamFlow系统,一是因为CamFlow系统能够根据用户需求调整采集溯源数据的策略,不至于数据过大而产生大量的内存开销;二是因为CamFlow采用Linux安全模块(LSM)框架和Netfilter软件,能够高质量、可靠地记录数据对象之间的信息流,保证溯源数据的完整性和安全性。

CamFlow使用W3C PROV[16]数据模型来存储数据。溯源图节点表示实体(Entity)、活动(Activity)和代理(Agent)三大类。在这三种类型节点之间还有wasDerivedFrom、used、wasGeneratedBy等7种 边 类 型。在操作系统中,实体是内核数据对象(文件、消息和数据包等),活动通常是对实体执行操作的过程,代理是指开展活动的个人或组。溯源图中的有向边表示信息流上的系统调用。

3.2 溯源数据存储模块

溯源数据存储模块将前一个模块生成的图数据存储在磁盘和内存中。溯源子图的维护策略在训练阶段和检测阶段不同,在训练阶段,当节点的数量到达预定数值时,开始在内存中构建溯源子图。在流式图模式中,当边的数量到达预定数值时,在内存中构建溯源子图并开始检测,即在内存中只需存储一个大小有限的溯源子图即可。

使用GraphChi[17]当做溯源数据存储器。GraphChi是一个基于磁盘的系统,可以在一台计算机上高效地计算具有数十亿条边的大型图形。利用并行滑动窗口(Parallel Sliding Windows,PSW)技术将图存于辅存(SSD或者磁盘)中,只需要很少次数的非连续读写辅存便可以实现每秒达百万次的图更新计算,并且支持异步计算模型,大大减少了图更新时间。

3.3 模型训练模块

(1)预处理阶段

利用节点连接边的类型和数量构造节点的特征向量。在特征构造之前,先计算不同边的类型(如read,write,fork等)的数量为Ne,将不同的边类型分别映射成整数从0到Ne-1,节点的特征向量可以表示为:

式中,前Ne个fi代表v节点连接入边类型i的数量,后Ne个fi代表v节点连接出边类型i的数量。

由于某些进程会重复对某一文件进行读写,导致该进程节点的边数量一直增加。对进程的特征向量进行归一化减少对检测结果的影响,归一化公式如式(2)所示:

其中为e自然常数,fi为特征向量中的某一特征值,而k为常数系数。

不同的溯源数据采集系统有不一样的边类型,因此定制节点更新算法来获取不同数据类型的节点特征向量,算法如下:

(2)训练阶段

因为数据集一般较庞大,所以内存开销和运行时间需要着重考虑。首先,利用PSW方法将整个溯源图拆分为几个子图,不同子图中的节点集是不相交的,不需要使用整个溯源图进行训练。然后,根据每个子图的顺序进行K-Means聚类学习得到良性节点簇。最后,利用轮廓系数确定簇数量K的最佳值,轮廓系数越接近于1表示该聚类效果越好。生成的多个簇可理解为不同类型节点的行为。

3.4 检测与报警模块

(1)检测原理

模型训练模块得到多个良性节点簇。对每一个簇的质心和该簇中的节点计算欧式距离,以最远的欧式距离来当做簇的半径。如果测试数据集中的节点与簇的质心之间的欧氏距离少于该簇的半径,则将节点分类到该良性节点簇中。测试节点至少正确分类到一个良性节点簇,则该节点视为良性节点。欧式距离公式如(3)所示:

式中,X=(x1,x2,…,xn)为测试向量,Y=(y1,y2,…,yn)为簇质心向量。

(2)实时检测

在流式溯源图中,当边的数量到达ES参数大小时,在内存中构建溯源子图并开始检测。节点的特征向量随着边的加入而改变,因此,良性节点在到达最后阶段之前可能会被检测为异常,异常节点也有可能被检测为良性节点。将检测出的异常节点存储在集合S中,并设置等待时间阈值T。如果异常节点没有在时间T内变为良性,从S中弹出该节点,并将其视为异常节点。在流式溯源图中可以多次检测某一节点,因此一个异常节点可能在初期被检测为良性,当它开始执行恶意活动时,它将被检测为异常节点。当异常节点的数量超过阈值时会发出警报。

4 实验结果与分析

4.1 数据来源和性能指标

(1)数据来源

Unicorn SC-2数据集[18],该数据集包含125个良性行为的溯源数据和25个包含恶意行为的溯源数据。该溯源数据是通过在持续集成(CI)平台上模拟APT供应链攻击,通过CamFlow(v0.5.0)采集整个系统的溯源数据,每个场景都持续运行三天。数据集描述如表1所示。

表1 Unicorn SC-2数据集

DARPA TC数据集[12]是DARPA TC项目中在为期两周的攻防对抗期间从主机系统中采集而来的。参与的各个团队负责从不同平台(如Linux、FreeBSD)采集恶意和良性的溯源数据。数据集的描述如表2所示。

表2 DARPA TC数据集

实验使用Ubuntu18.04操作系统,CPU为Intel®i7-9750H,32 GB内存和120 GB SSD。

(2)性能指标

本文分类模型使用了准确率Precision、召回率Recall、F-score和 假 正 率FPR来 检 测 性 能。其 计 算方法如下:

其中相关性能指标定义如表3所示。

表3 性能指标

4.2 实验参数设置

在Unicorn SC-2数据集上研究该方法设计的参数如何影响检测性能。测试的参数是NS、ES、Tt、T,如表4所示。表4中的参数值构成了基线,当测试其中一个参数时,将其他参数保持与基线相同。

表4 参数表

(1)NS和ES。在训练阶段中,当内存中的节点个数达到NS时,开始训练K-Means模型并生成多个良性节点簇以及簇质心。在检测阶段中,当边个数达到ES时,开始在内存中构建子图并检测。ES参数越大节点到达最终状态的时间越短,但是内存的使用量更大,而CPU的使用率降低。如图3所示,说明该方法具有可接受的运行开销。

图3 ES参数对运行开销的影响

(2)Tt和T。这两个参数影响检测与报警阶段。实验结果如图4所示,T是为良性节点设置的等待时间阈值,以期达到最终阶段。在实时流溯源图的检测模式下,良性节点可能在到达最后阶段之前被检测为异常。因此,T越大,节点具有更多的“进化时间”,导致了更高的准确率、更低的召回率和假正率。虽然较大的T减少了误报的数量,但也降低了尽早检测入侵的能力。Tt是异常节点的数量阈值,当异常节点个数达到Tt时会进行报警。较大的Tt将导致更高的准确率和更低的假正率。

图4 参数设置的影响

4.3 入侵检测算法对比

在Unicorn SC-2和DARPA TC数据集上使用K折交叉验证(K=5)进行实验并记录结果,并与Unicorn和ProDetector两种方法进行比较。当设置参数NS为80 000,Tt为2,ES为150 000,时 间T为500时取得了最好性能。图5是在Unicorn SC-2数据集上的检测结果。表5是在DARPA TC数据集上节点级别的检测结果,表6是在DARPA TC数据集上基于图级别的检测结果。

图5 三种入侵检测算法的检测率

表5 DARPA数据集基于节点级别的检测率

图5的实验结果表明该方法通过调整参数准确率能达到95.83%以上,召回率和F-score为92%,且假正为4%,这对缓解威胁疲劳(threat fatigue)问题具有很大的帮助。与Unicorn和ProDetector两种检测方法比较,准确率提升了20%~28%。表5中数据说表明该方法具有检测异常节点的能力。考虑到数据集的不平衡,检测结果是可以接受的。由于Unicorn和ProvDetector不进行异常节点检测,因此该方法并没有与这两种方法在节点级别上进行对比。表5、表6实验结果表明该方法在两种检测级别上都具有较好的检测性能。

表6 DARPA数据集基于图级别的检测率

DARPA TC数据集是在攻击持续很长一段时间内采集得到的,所以在整个溯源图中异常节点只占很小一部分(不到1%)。该方法还是能够检测出重要异常节点,如图1中①和③节点,但无法检测到某些异常节点,如④恶意IP地址等。这些节点在攻击期间并没有表现出显著的影响,这些节点更像是辅助攻击的角色。该方法在DARPA TC数据集中引起许多误报,可能与大量良性节点有关,后续还可以使用误报节点来训练更多的子模型,避免将来出现同样的误报。

5 结论

针对以前方法对异常节点识别和定位研究较少,本文提出了一种基于溯源图节点级别的APT实时检测方法。利用聚类方法和轮廓系数对良性节点进行聚类,构建良性节点簇,后续对待检测节点是否属于良性节点簇来判别异常。在Unicorn SC-2和DARPA TC两种公共数据集上进行测试,实验结果表明该方法达到了95.83%的准确率和4%的假正率,并且能够准确识别和定位异常节点。

该方法是基于异常检测,可以有效地检测未知攻击,但是由于用户行为收集不完整,极易出现误报情况。后续可以使用误报节点来训练更多的聚类模型,避免将来出现同样的误报。本文的方法都依赖于阈值的选择,阈值可能对用于评估的基准数据集中的场景非常有效,但可能对其他场景无效。因此,需要对自适应阈值或上下文阈值的选择进行更多研究,以使入侵检测方法对真实环境更具鲁棒性。

猜你喜欢
子图良性内存
走出睡眠认知误区,建立良性睡眠条件反射
良性胆肠吻合口狭窄球囊扩张与再手术治疗的疗效比较
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
关于星匹配数的图能量下界
基于Spark 的大规模单图频繁子图算法
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
不含3K1和K1+C4为导出子图的图色数上界∗
时序网络的频繁演化模式挖掘
内存搭配DDR4、DDR3L还是DDR3?