一种基于多特征的恶意代码家族静态标注方法
2018-04-19刘露平刘嘉勇
刘 亮 刘露平 何 帅 刘嘉勇
1(四川大学网络空间安全学院 成都 610065)
2(四川大学电子信息学院 成都 610065)
(59154092@qq.com)
随着互联网的高速发展,人们对互联网产品更加依赖,但互联网在给人们带来便利的同时也带来了更多的隐患,因此,信息安全的重要性更加凸显.近年来,恶意代码呈指数级增长,根据瑞星公司2016年中国信息安全报告统计,2016年共截获恶意代码样本4327万个,样本总体数量比2015年同期上涨16.47%,这对互联网用户的财产和精神都构成了极大的威胁[1].据360公司的2016中国互联网安全报告统计,2016年360互联网中心共截获PC端新增恶意程序样本1.9亿个,其中包含大量的敲诈类恶意软件,2017年预计增长10倍[2].
在研究恶意代码检测技术的同时,研究人员也对恶意代码之间的相似性进行了研究,对恶意代码进行家族标记,根据分析技术手段的不同,可以将恶意代码家族标记方法分为动态分析技术和静态分析技术.Flake[3]和Dullien等人[4]使用图匹配算法对函数调用流程图进行相似性判断,实现恶意代码分类.Kolter等人[5]通过绘制系统API之间的调用关系图,采用最长公共子序列,对绘制的API调用关系图与已建立的图数据库进行相似性匹配.此外,杨轶等人[6]利用动态污点传播技术判断恶意代码行为之间的相互联系,绘制控制依赖图和数据依赖图,根据依赖图之间的相似性对恶意代码的同源性进行判断.
近年来,恶意代码家族标注技术取得了一定的成就,安全从业人员研发出了多种恶意代码家族标注系统.Kancherla等人[7]将恶意代码绘制为恶意代码图像,通过对图像进行分析,使用SVM分类算法建立分类模型.徐小琳等人[8]使用动静结合的方式,对恶意代码样本的动态行为和静态代码文本区段排列规律进行研究,实现了基于恶意软件特征聚类的疑似样本线上自动标注分析系统.Cesare等人[9]利用信息熵判断恶意软件是否加壳并进行脱壳处理,提取程序控制流程图,通过流程图相似匹配算法实现恶意软件分类,设计了Malwise系统对恶意软件家族进行自动标注.
1 基于多特征的恶意代码家族静态标注方法
1.1 恶意代码图像指纹特征
本文采用将恶意代码的反汇编文件映射为无压缩的灰度图的方法进行恶意代码图像绘制.对于待标注的恶意代码,利用反汇编软件IDA Pro获取恶意代码的反汇编文件,读取该文件8 b为1个像素点,构建成1个固定行宽的2维数组.该数组中每个元素的取值范围都是0x00~0xFF,刚好对应256阶灰度,将该数组可视化为一个灰度图.图像的宽度选择为PE文件对齐值(512 B),图像的高度为文件大小与512的比值.通过上述方法,绘制恶意代码图像.图1为MD5值为1d2faa9b57e871f6e426837b8df2ab62的恶意代码图像:
图1 恶意代码图示例
1.1.1 GIST 特征
本文方法采用GIST算法获取图像的纹理特征[10],该算法常用于进行图像识别.
图像的GIST特征提取方法:首先把图像划分为子区域,接着将子区域与不同方向和不同尺度的Gabor滤波器组进行滤波,最后把结果进行整合得到图像的全局GIST特征.
假设待提取特征的恶意代码图像为一个整体,首先将其划分为n×n的网格,每个网格表示1个子区域,用nc个通道的Gabor滤波器对子区域进程卷积滤波,其中nc等于滤波尺度和方向数的乘积,然后在每个网格内计算每个通道的平均能量得到特征,将每个网格的特征级联起来,就得到恶意代码图像的全局GIST特征,即
在式(1)中,cat表示级联运算符号,*表示卷积操作.在本文中将恶意代码图像划分为4×4的网格,然后采用4个滤波尺度和8个方向的Gabor滤波器对图像进行滤波,整合后得到4×4×4×8=512维特征向量作为恶意代码图像的全局特征指纹.
图2 基于操作码的恶意代码图像有效像素图
1.1.2 SIFT特征
SIFT(scale-invariant feature transform)是一种计算机视觉算法,用来侦测和描述图像中的局部特征,可以保持对于尺度变化的不变性.
SIFT算法整体流程可以分为5步,首先构建图像尺度空间,检测尺度空间中的局部极值点,然后对关键点进行检验,通过计算相应的梯度对关键点方向进行匹配,在找到关键点并确认其相应的信息后,最后为每个关键点建立一个描述符,用1组向量将这个关键点描述出来.
Lowe[11]提出的采用4×4×8的描述形式通常能获得较好的实验结果.本文采用的方法也将关键点领域划分为4×4的网格,梯度统计方向数设置为8,最终提取4×4×8=128维的向量为该恶意代码图像的SIFT特征向量,最终可以得到128×keypoints的特征,其中keypoints代表特征点的个数.
1.1.3 灰度共生矩阵
灰度共生矩阵(gray level co-occurrence matrix,GLCM)是分析灰度图纹理特征最典型的一种方法,并广泛应用在目标识别和图像分类等方面.图像的纹理特征不依靠于图像的亮度或色差,表现的是图像中局部范围内相邻像素灰阶分布状态的一种视觉特征.灰度共生矩阵体现了灰度图在方向、变化幅度和局部领域的特征,是分析灰度图的局部模式和排列规律的理论.它描述了1个灰度值为i的像素与1个灰度值为j的像素在θ方向上,距离为d出现的概率,记为P(i,j;d,θ).
虽然通过灰度共生矩阵提取的纹理特征对灰度图具有良好的分类效果,但是计算难度比较大.通常计算灰度图的灰度共生矩阵需要考虑4个方面:图像灰度级L、方向θ、距离d、窗口大小Nc.Haralick等人[12]提出了灰度共生矩阵的14种特征,但是使用14种特征进行计算时计算复杂度大.韩晓光等人[13]使用PCA算法对14种特征进行计算,选取了6种对基于字节码序列的恶意样本图像贡献较大的特征,分别为对比度、齐次性、自相关、非相似度、角二阶距和熵.在Ulaby等人[14]研究中发现只有4种特征是不相关的.为了简化特征,本文从4个方向提取这4种不相干的特征作为基于字节码序列的恶意代码图像的特征,分别为能量、惯性矩、相关性和熵,上述特征可以通过Matlab中的函数graycoprops得到.
1.2 恶意代码指纹特征
1.2.1 基于操作序列的n-gram特征
基于操作码的n-gram模型,如果n的取值过小,就无法表示较为复杂的操作,如果太大又无法检测出混淆技术,Moskovitch等人[15]在研究中发现当n取值为2,3时效果最好.但是由于恶意代码语料库的差异,n的取值有所不同,在本文研究的恶意代码语料库中,当n取1,2,3,4时分别提取到了165种1-gram、27225种2-gram、21285种3-gram、22384种4-gram,其中当n取值为2,3,4时n-gram数量级相同,因此本文方法选择取n分别为2,3,4.对图2中的操作码序列提取n-gram特征,其中:2-gram为S1=(push,lea),S2=(lea,push),S3=(push,mov)等;3-gram为S1=(push,lea,push),S2=(lea,push,mov),S3=(push,mov,call)等;4-gram为S1=(push,lea,push,mov),S2=(lea,push,mov,call),S3=(push,mov,call,mov).通过n-gram可以提取多种特征,我们通过随机森林算法的特征重要性从其中选出TOP10的n-gram特征,如表1所示:
表1 TOP10 n-gram特征
表2 TOP10 Segment特征
图3 操作码文件中的Segment
1.2.2 Segment区块名特征
在恶意代码的操作码文件中,每一行的开头都是字符串加“:”的结构,其中的字符串就是这一行操作码所属的Segment名称,即区块名称,如图3所示,这是一个8位的ASCII码名,通常由“.”开始,如图3中的“.text”,但这个点并不是必须的.
通常情况下,区块中的数据是相关联的.在PE文件中,最少有代码块和数据块2个区块,每个区块有自己的名字.如表2所示为微软命名的常见的区块重要性排名TOP10的Segment特征.但这样的名称并不是必须的,而区段的名称是用户可以自定义的,这对于恶意代码标准是非常关键的,因为相同的恶意代码家族可能会采用相同和相似的区段名称命名方法.除此之外,不同编译环境的命名方法也有所不同,如Borland的链接器采用的是CODE,DATA,HEADER这样的命名方式.综上所述,操作码中的Segment特征能反映出恶意代码作者的区块命名特点和编译环境,有利于恶意代码家族标注.
1.2.3 3层联合分类框架
本文从恶意代码字节码层和操作码层提取基于恶意代码图像和文本的多个特征,各个特征提取的角度和特征自身的维度各不相同,本文设计的3层多分类器联合框架,更好地利用了提取的特征.3层多分类器联合框架分为特征组合层、分类层和联合层.特征组合层的作用是将提取的恶意代码特征根据其提取的算法、特征的来源和特征的维度进行组合.首先将基于恶意代码字节码图像提取的GIST特征和SIFT特征进行提取.GIST特征表现的是图像的全局特征,SIFT特征表现的是图像的局部特征,且SIFT特征具有良好的扩展性,经过组合的特征能够在全局和局部对恶意代码图像进行描述.其次,将基于恶意代码操作码图像提取的像素特征与恶意代码文本指纹特征进行组合,这2种特征都是基于恶意代码操作码文件提取出来的,能够进行相互补充.最后基于恶意代码操作码图像的灰度共生矩阵特征由于自身维度原因,不与其他特征进行组合.3层多分离器联合框架图如图4所示:
图4 3层多分类器联合框架
2 实验与分析
2.1 实验数据
本文实验所采用的恶意样本来源于Microsoft在Kaggle上的项目Microsoft Malware Classification Challenge(http://www.kaggle.com/c/malwareclassification)[16].数据集中恶意样本家族数量分布如表3所示.
2.2 恶意代码家族标注实验
实验采用基于恶意代码图像指纹的恶意代码家族标注方法对Microsoft提供的9类恶意代码进行恶意代码家族标注测试,实验采用准确率Accuracy、精确率Precision、召回率Recall和F1-score这4种评价指标评价恶意代码家族标记效果,计算公式如下:
表3 恶意样本家族数量分布情况
其中TP,FP,TN,FN分别表示被分类器识别为正的正样本、被分类器识别为正的负样本、被分类器识别为负的正样本、被分类器识别为负的负样本.实验结果如表4所示:
表4 联合层测试结果
由表4可知:除去样本较少的Simda外,恶意代码家族标注的准确率、精确率、召回率和F1-score均高于90%,说明该方法对于恶意代码家族标注有较好的效果.
3 结 语
从实验结果来看,本文提出的基于多特征的恶意代码家族静态家族方法能对恶意代码样本进行快速有效的恶意代码家族标注.在下一步工作中,还可以在恶意代码图像处理部分,将恶意代码图像作为整体看待.未来可以分析恶意代码图像每个部分与恶意代码各区段之间的关系,寻找与恶意代码家族最相关的部分进行深入分析,同时在下一步研究中,应该去除重叠的部分,使提取的多特征相互独立,有助于提高多分类器联合的分类正确率.
致谢 本文研究受到CCF-启明星辰鸿雁科研计划的资助,在此表示深深的感谢!
[1]瑞星.瑞星2016年中国信息安全报告[EB/OL].[2018-03-10].http://it.rising.com.cn/dongtai/18659.html
[2]互联网安全中心.360安全报告——2016年中国互联网安全报告[EB/OL].[2018-03-10].http://zt.360.cn/1101061855.php?dtid=11011062514&did=490278985
[3]Flake H.Structural comparison of executable objects[C]//Proc of IEEE Conf on Detection of Intrusions and Malware&Vulnerability Assessment.Piscataway,NJ:IEEE,2004:161-173
[4]Dullien T,Rolles R.Graph-based comparison of executable objects(english version)[OL].2005[2018-03-15].http://actes.sstic.org/SSTIC05/Analyse-differentielle-debinaires/SSTIC05-article-Flake-Graph-based-comparisonof-Executable-Objects.pdf
[5]Kolter J Z,Maloof M A.Learning to detect and classify malicious executables in the wild[J].Journal of Machine Learning Research,2006,7(12):2721-2744
[6]杨轶,苏璞睿,应凌云,等.基于行为依赖特征的恶意代码相似性比较方法[J].软件学报,2011,22(10):2438-2453
[7]Kancherla K,Mukkamala S.Image visualization based malware detection[C]//Proc of IEEE Symp on Computational Intelligence in Cyber Security(CICS).Piscataway,NJ:IEEE,2013:40-44
[8]徐小琳,云晓春,周勇林,等.基于特征聚类的海量恶意代码在线自动分析模型[J].通信学报,2013,34(8):146-153
[9]Cesare S,Xiang Y,Zhou W.Malwise—An effective and efficient classification system for packed and polymorphic malware[J].IEEE Trans on Computers,2013,62(6):1193-1206
[10]Oliva A,Torralba A.Building the gist of a scene:The role of global image features in recognition[J].Progress in Brain Research,2006,155(2):23-36
[11]Lowe D G.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,60(2):91-110
[12]Haralick R M,Shanmugam K.Textural features for image classification[J].IEEE Trans on Systems,Man,and Cybernetics,1973,3(6):610-621
[13]韩晓光,姚宣霞,曲武,等.基于图像纹理聚类的恶意代码家族标注方法[J].解放军理工大学学报:自然科学版,2014,15(5):440-449
[14]Ulaby F T,Kouyate F,Brisco B,et al.Textural infornation in SARimages[J].IEEE Trans on Geoscience and Remote Sensing,1986,GE-24(2):235-245
[15]Moskovitch R,Feher C,Tzachar N,et al.Unknown malcode detection using OPCODE representation[C/OL].//Proc of the1st EuroISI 2008.2008[2018-03-15].http://medinfo.ise.bgu.ac.il/med Lab/MembersHomePages/RobPapers/Moskovitch.OPCODE-UnknownMalcodeDetection.EuroISI08.pdf
[16]Microsoft Malware Classification[OL].[2018-03-10].https://www.kaggle.com/c/malware-classificaton