文献标识码:A
DOI: 10.19358/j.issn.2096-5133.2019.01.006
引用格式:傅依娴,芦天亮,张学军.基于Cuckoo平台的HDBSCAN恶意代码聚类算法[J].信息技术与网络安全,2019,38(1):30-35.
0引言
网络时代的迅猛发展、网民数量的急剧增加以及网络技术的广泛应用,使得网络逐渐成为现代社会竞争的新资源,高级网络渗透技术成为了重点发展的对象;不法分子利用恶意程序实施犯罪,从而破坏网络环境的稳定,成为了网络安全领域的研究热点。面对恶意软件使用的常态化及其破坏性,计算机用户不得不投入更多成本来维护信息系统安全。
近年来,随着机器学习、深度学习等新技术的发展,恶意代码分析问题也呈现出新的研究趋势。SCHULTZ M[1]等人利用可执行文件静态特征并结合RIPPER算法实现对恶意代码的精确检测。SHAW S等人提出了基于云的检测技术[2];KOLOSNJAJI B等人则提出用深度学习算法来对样本的系统调用序列进行分类,从而达到判断样本恶意性的目的[3]。
本文通过搭建Cuckoo恶意代码自动分析系统来作为沙箱环境,提取所需的恶意代码特征,通过聚类算法来实现对恶意代码的研究,其聚类效果证明行之效。
1恶意代码的特征提取
1.1特征提取思路
特征提取是进行恶意代码分类的必要前提。而恶意软件的系统调用是最主要获取的特征之一。目前,系统调用的获取方法主要为静态分析方法和动态分析方法;但是,对于静态分析方法来说,恶意代码会使用混淆、花指令等手段,从而影响静态分析的结果。而动态分析当前也仍然存在一些问题:(1)基于序列比对法[4-6]会产生大量冗余特征,随着测试样本的动态行为越多,检测结果受到干扰越严重;(2)基于行为频繁度方法[7-8]研究不够深入,会影响之后的聚类效果;(3)病毒有反虚拟环境对抗技术。
为了对上述情况进行改善,本文对常见的特征提取手段进行改进,提出了基于恶意行为的频繁度和内存特征相结合的恶意代码特征提取方法。主要包括API函数特征、行为特征以及内存特征。
1.1.1API函数特征
恶意代码在执行时会调用一些高级应用程序接口,例如Windows API(Windows应用程序接口,针对Microsoft Windows操作系统家族的系统编程接口),而API是由API函数来实现的。API函数包含在API库文件中,例如勒索软件要对计算机中相应后缀名文件进行加解密时会先载入CRYPT32.dll动态链接库,再调用该链接库中一系列的加解密函数。本文提取的API函数特征包括API函数调用频繁度以及动态链接库调用频繁度。
1.1.2行为特征
在行为特征方面,主要提取了网络行为、注册表行为、文件行为[9]。
网络行为上,恶意代码在系统中运行会建立多个网络连接,因此本文提取了样本中建立连接的主机域名个数,建立TCP、UDP连接等。
注册表行为上,恶意代码会通过修改注册表,从而将计算机中默认的主页改为其指定的网站、非法修改正常信息或者导致正常功能被禁用等。本文对注册表行为中访问注册表、读取注册表、修改注册表、删除注册表进行计数,并且考虑到在访问大量注册表时存在嵌套路径遍历,最后进行了去重计数。
文件行为上,恶意代码会频繁读取系统文件,从其指定网站下载所需文件并存入指定路径或者修改某些文件中的内容等,本文在文件行为上,对文件的创建、读取、修改、删除、移动等进行计数。行为特征如表1所示。
1.1.3内存特征
和其他特征提取思路不同的是,本文考虑到恶意软件的反沙箱机制以及反分析技术,基于沙箱技术的动态行为不一定能够完全捕获样本的行为,因此本文
表1行为特征
特征类别特征名称特征描述
NetworkUDP、TCP、DNS、HTTPUDP、TCP、DNS、HTTP连接数
Registerreg_deleted、reg_open、reg_read、reg_Written分别统计注册表删除、访问、读取、修改情况
FileRead=(Nr,distinct extension Nr,Top extension frequency ofNr)、
Write=(Nw,distinct extension Nw,Top extension frequency ofNw)
Delete=(Nd,distinct extension Nd,Top extension frequency ofNd)
Create=(Nc,distinct extension Nc,Top extension frequency ofNc)
Move=(Nm,distinct extension Nm,Top extension frequency ofNm)
Open=(No,distinct extension No,Top extension frequency ofNo)
(读/写/删除/创建/移动/打开文件计数
读/写/删除/创建/移动/打开敏感文件计数
前十个读/写/删除/创建/移动/打开敏感文件类型频繁度)
利用Volatility内存取证工具以及Yara匹配工具提取出内存行为特征作为补充,最终提取出行为标签特征和互斥体(mutex)的特征,如表2所示。
表2内存特征
特征类别特征名称特征描述
MemorySignature基于Yara匹配规则的频繁度
Mutex互斥锁个数
1.2特征降维
本文使用到机器学习算法t-SNE(t-distributed Stochastic Neighbor Embedding)来对所提取到的高维特征进行降维。t-SNE算法属于非线性降维算法的一种,适用于将高维数据降到二维或者三维进行可视化展示[10]。
t-SNE算法在高维空间数据点之间构建了一个概率分布,该概率分布会使相似的数据点对应较高的概率,不相似的数据点对应较低的概率。其计算公式如下:
pj|i=exp (-xi-xj2/(2σ2i))∑k≠iexp (-xi-xk2/(2σ2i))(1)
pij=pf|i+pi|j2n(2)
t-SNE算法目标是在低维空间的映射yi,…,ydt,yi∈Rdt,yi和yj之间的相似度公式为:
qij=(1+yi-yj2)-1∑k≠1(1+yk-yl2)-1(3)
两个分布之间的相似度可以使用KL散度来衡量,其计算公式为:
C=∑i≠jpijlogpijqij(4)
2改进算法HDBSCAN的设计
2.1传统的DBSCAN聚类算法
基于密度的DBSCAN(Density-Based Spatial Clustering of Applications with Noise)算法[11]将簇定义为密度相连的点的最大集合,它的主要思想是对于构成类簇的每一个对象,其Eps领域包含的对象个数,必须不小于某个给定的值(MinPts)。
DBSCAN算法的描述如下:
输入:具有n个对象的数据集D,半径e,最小领域点数MinPts;
输出:目标类簇集合。
Repeat:
1 判断输入点是否为核心对象;
2 找出核心对象的e领域中的所有直接密度可达点;
Until所有输入点都判断完毕。
Repeat:
针对所有核心对象的e领域内所有直接密度可达点找到最大密度相连对象集合,中间涉及一些密度可达对象的合并;
Until所有核心对象的e领域都便利完毕。
2.2基于层次的改进算法HDBSCAN
DBSCAN有两个缺陷:(1)算法对参数的变化很敏感,不同的参数组合对最后的聚类效果有较大影响;(2)算法需要逐个判断输入的每个数据点是否为核心点,如果样本集较大,聚类收敛时间较长,则需要较大的I/O开销。
本文针对缺陷1和缺陷2,提出了一个基于层次的对DBSCAN的改进算法HDBSCAN(Hierarchical-based DBSCAN)。
HDBSCAN算法引入了层次聚类的思想,不仅对由于输入参数Eps选择不当而造成聚类结果不佳的问题给予纠正,还有效屏蔽了算法对输入参数的敏感性;同时,HDBSCAN不需要对输入的每个数据点进行检测和判断,它只需要判断其中某些部分点即可识别最终生成簇,从而减少了查询次数,降低了I/O开销。
HDBSCAN定义了几个基本概念:
(1)核心距离corek(x)为当前点到其第k近的点的距离:
corek(x)=d(x,Nk(x))
(2)互达距离:dmreach-k(a,b)=max {corek(a),corek(b),d(a.,b)}
(3)最小生成树:当图中的每一条边都具有一个权值时,那么会有一个生成树的所有边的权值之和小于或者等于其他生成树的所有边的权值之和。
(4)MST(最小生成树)性质:设一个连通网络G(V,E)(V代表点集,E代表边集),U是顶点集V的一个真子集。若(u,v)是G中一条“一个端点在U中,另一个端点不在U中”的边,且(u,v)具有最小权值,则一定存在G的一棵最小生成树包括此边(u,v)。
HDBSCAN算法主要分为两个大步骤,第一步是生成初始簇集,第二步是对基于层次的初始簇集进行合并。HDBSCAN算法的具体流程如图1所示。
图1HDBSCAN算法流程
2.3T-SNE降维后使用HDBSCAN
在使用改进算法HDBSCAN聚类前对数据进行t-SNE降维处理,可以有效地提高数据集聚类的匹配结果,t-SNE通过基于多个特征的数据点的相似性识别观察到的模式来找到数据中的规律,它具有在高维数据之间找到合适数据结构和相关连接的极高能力。T-SNE具有非凸目标函数,通过随机初始化使梯度下降最小化,降维后使用HDBSCAN算法,可以对数据带来最有效的分割。
3实验环境
沙箱技术是近些年安全领域一个新的热点,其关键技术在于隔离、个性化以及自动。本文将Cuckoo沙箱作为恶意样本分析环境,提交样本后便能自动化地分析文件并收集样本文件在隔离的Windows系统中运行的行为。并且每次分析都会从一个处于纯净状态的快照开始,以保证分析的正确性,避免多个分析之间的相互干扰。完整的实验环境如表3所示。
表3实验环境
实验环境配置
处理器Intel(R)Core (TM) i7-8550U
主频1.80 GHz内存8 GB
操作系统Ubuntu14.04
软件环境VBox5.1、Python2.7、Cuckoo2.0.5
沙箱操作系统Windows7
沙箱软件环境WPS、QQ、IE浏览器、
Fox mail、Python2.7
4实验结果与分析
4.1实验设计
4.1.1实验流程
本文从公开网站上下载了900个恶意代码作为样本文件提交至沙箱环境中,所有的恶意代码均来源于公开网站www.malware-traffic-analysis.net。
将下载好的恶意代码提交至Cuckoo沙箱环境中运行,Cuckoo利用其HOOK机制对提交样本的动态行为及其参数进行提取,整个分析报告以JSON格式保存。通过样本的分析报告提取所需的特征属性,最后用到聚类算法HDBSCAN对恶意代码进行研究。整个实验模型如图2所示。
4.1.2实验结果
编写Python脚本对收集到的JSON格式的样本分析报告提取特征,接着对提取到的特征直接使用DBSCAN算法、直接使用HDBSCAN算法、先进行t-SNE降维再使用HDBSCAN算法,待聚类结束后,画出在提取后的特征和聚类后的标签下所有样本的分布情况,如图3所示。
图2实验流程
图3分布情况
4.2聚类模型评估
本文使用调整兰德系数(Adjusted Rand index)、同质性(Homogeneity)、完整性(Completeness)、调和平均(V-measure)、轮廓系数(Silhouette Coefficient)来对聚类模型进行评估。
(1)调整兰德系数:调整兰德系数假设模型的超分布为随机模型,它具有更高的区分度:
ARI=RI-E[RI]max(RI)-E[RI](5)
(2)同质性:每个群集只包含单个类的成员;
完整性:给定类的所有成员都分配给同一个群集。
同质性和完整性分数基于以下公式得出:
h=1-H(C|K)H(C)(6)
c=1-H(K|C)H(K)(7)
其中H(C|K)是给定簇赋值的类的条件熵,由以下公式求得:
H(C|K)=-∑Cc=1∑Kk=1nc,knlognc,knk(8)
H(C)是类熵,公式为:
H(C)=-∑Cc=1ncnlog ncn(9)
其中,n是样本总数,nc和nk分别属于类c和类k的样本数,而nc,k是从类c划分到类k的样本数量。条件熵H(K|C)和类熵H(K),根据以上公式对称求得。
(3) 调和平均:V-measure是同质性和完整性的调和平均数,公式为:
v=2·h·ch+c(10)
(4) 轮廓系数:对于单个样本,设a是与它同类别中其他样本的平均距离,b是与它距离最近不同类别中样本的平均距离,其轮廓系数为:
s=b-amax (a,b)(11)
对于一个样本集合,它的轮廓系数是所有样本轮廓系数的平均值。
聚类评估指标如表4所示。
表4聚类评估指标
算法调整兰德系数同质性完整性调和平均轮廓系数
DBSCAN0.017 20.485 40.480 90.467 60.431 7
HDBSCAN0.019 40.646 80.541 70.589 60.651 8
TSNE-HDBSCAN0.032 90.835 30.848 40.828 30.845 8
由表4的结果可以得出,对行为特征进行t-SNE降维后,再采用HDBSCAN算法后的聚类效果相对于直接使用DBSCAN、HDBSCAN的聚类效果更佳,并且其评估指标也是最优,在时间复杂度上,对特征属性进行降维处理,可以有效减少聚类时间,更快得出聚类结果。改进后的聚类算法可以研究数据对象的分类问题,在模式识别、图像处理、市场研究以及生命科学等众多学科领域具有广泛的应用前景。
5结论
本文通过自动化Cuckoo沙箱平台得到恶意代码分析报告,提出了基于恶意行为的频繁度和内存特征相结合的恶意代码特征提取方法,并运用改进后的聚类算法来研究恶意代码的聚类情况,提高聚类质量,具有较高的可行性。未来将在此实验基础上,继续改进旧算法或寻求新的算法以提高聚类效果和降低时间复杂度。
参考文献
[1] SIDDIQUI M,WANG M C,LEE J.A survey of data mining techniques for malware detection using file features[C].Proceedings of the 46th Annual Southeast Regional Conference on XX.ACM,2008:509-510.
[2] SHAW S,GUPTA M K,CHAKRABORTY S.Cloud based malware detection technique[C]. Proceedings of the 5th International Conference on Frontiers in Intelligent Computing:Theory and Applications.Springer,Singapore,2017:485-495.
[3] KOLOSNJAJI B,ZARRAS A,WEBSTER G,et al.Deep learning for classification of malware system call sequencces[C]. Australasian Joint Conference on Artificial Intelligence.Springer International Publishing,2016:137-149.
[4] 葛雨玮,康绯,彭小详.基于动态BP神经网络的恶意代码同源性分析[J].小型微型计算机系统,2016,37(11):2527-2531.
[5] 韩兰胜,高昆仑,赵保华,等.基于API函数及其参数相结合的恶意软件行为检测[J].计算机应用研究,2013,30(11):3407-3410.
[6] LIU W,REB P,LIU K,et al.Behavior-based malware analysis and detection[C]. Proceedings of First International Workshop on Complexity and Data Mining.IEEE Computer Society,2011:39-42.
[7] 陈铁明,杨益敏,陈波.Maldetect:基于Dalvik指令抽象的Android恶意代码检测系统[J].计算机研究与发展,2016,53(10):2299-2306.
[8] CHO I K,KIM T G,YU J S,et al.Malware analysis and classification using sequence alignments[J].Intelligent Automation & Soft Computing,2016,22(3):371-377.
[9] 龚琪,曹金璇,芦天亮, 等.基于特征频繁度的勒索软件检测方法研究[J].计算机应用研究,2017,35(7).
[10] 郗洋.基于与计算的并行聚类算法研究[D].南京:南京邮电大学,2011.
[11] 蔡颖琨,谢昆青.屏蔽了输入参数敏感性的DBSCAN改进算法[J].北京大学学报(自然科学版),2004,3(40): 480-486.
(收稿日期:2018-12-09)
作者简介:
傅依娴(1995-),女,在研,主要研究方向:网络安全。
芦天亮(1985-),男,博士,副教授,主要研究方向:网络攻防、恶意代码。
张学军(1971-),男,助理实验师,主要研究方向:信息技术。