基于概率统计模型和SVM的恶意代码分类
2017-09-08纪鸿旭张培李璐
纪鸿旭+张培+李璐
摘要:随着恶意代码的不断变种,安全问题日趋严峻,对恶意代码进行分类以便于分析恶意代码从而进行防范显得尤为重要。在数以千计的大量恶意代码面前,传统的分类方式已经不能满足我们的快速分类高效分析数据的目的。本文针对恶意程序检测分类中面对数据量大,病毒家族变种繁多等问题,提出了一种利用机器学习——支持向量机算法的方法来对恶意代码进行分类。该方法通过提取对恶意代码利用IDA反汇编工具生成的二进制代码的概率统计模型特征,通过SVM算法进行分类操作。通过结果分析与对比分析,可以验证,本文所使用的此种算法来检测恶意代码并对其分类是有效的。
关键词:恶意软件分类;概率统计模型;支持向量机;机器学习
中图分类号:G350 文献标识码:A 文章编号:1007-9416(2017)06-0110-02
恶意代码的大肆传播,已成为严重的安全隐患。特别是近年来,随着恶意代码制造机、多态和变形技术的不断成熟,恶意代码的发作逐渐呈现变种速度快、模块重复使用度高的特点。从恶意代码的生成技术上,可以看到大部分“新”的恶意代码是在原来恶意代码的基础上产生而来的,只是原恶意代码的一个新变种。因此,当新的恶意代码产生时,对恶意代码的相似性进行自动化分析、识别和快速分类以及检测,已经成为目前国内外研究的热点和难点问题之一,同时也是亟待解决的问题。
1 恶意代码分析技术
按照不同的信息获取方式,通常采用两种不同的分析方法,即动态分析和静态分析。两种分析方法获取的信息量是不同的,而且在消耗的时间和资源上差别也很大。动态分析是指恶意代码执行的情况下,利用程序调试工具对恶意代码实施跟踪和观察,确定恶意代码的行为;静态分析是指在不执行二进制的前提下进行分析,如反汇编分析、源代码分析、指令分析、反编译等,这些方法都属于逆向工程分析方法。其中在静态分析中,指令分析技术最为常见、最为重要。本文的概率统计模型属于静态分析方法。
2 概率统计模型
2.1 模型建立
变值检测的检测方法为分段变值测量图示。该方法具体描述如图1所示。
对任意长的0-1序列,按照给定的长度分为多个分段,从第i段m长0-1序列获取一对变值测度:分段中1的数目(P变量)和01的数目(Q变量)。将待测量序列分为M个定长段落,形成一组能够按照次序先后编号的有序测度序列。该测量序列,在保持编号测序条件下可以分离为两组独立的测度序列。两组测度序列分别映射为2种1维统计直方图:{1PD,1DQ}。两组测度序列在重叠移位的条件下行程有序对测度序列,构成2种2维直方图分布:{2DP,2DQ}。除了所形成的2种1维图示和2种2维图示之外,变值测度序列,行成一种2为变值统计直方图:{2DPQ}。
处理流程为:
(1)输入N长0-1序列X,按m为长分段,形成M个段落,每个段落测出两个参数。
(2)第i段形成二元测度组(pi,qi),2PQ:{(pi,qi)},0=
(3)将二元测度序列分离为两个M组一元测度独立序列,一元测度序列1P:{pi},0=
(4)利用庞加莱模型,将两组一元序列转化为二元序列,i-1 mod M。二元测度序列2P:{p,pi},0=
(5)将测度序列转化为统计分布图示,两种一维经典图示1P:1PM:1Q:1QM,三种二维变值图示2P:2PM:2Q:2QM:2PQ:2PQM。
最后得出结论,从量化组合的角度来看变值模型,m=1-4时投影低维组合高维特征比较弱,最佳的转折条件为m=8。
2.2 结果分析
(1)对于数据集的预处理,使用数据集中的byte文件,把十六進制文件转换为2进制文件进行表示。
(2)train数据集中共包括多个分类,每个分类中又包括多个不同文件。使用抽样学习的方法,对每类样本中随机抽取4个样本进行检测统计。
(3)对随机抽样得到的文件用模型进行测试。使用8bit分段值。
(4)使用二维和三维图像分别可视化检测结果,如图2所示。
(5)提取相同种类的特征,比较不同种类特征。
3 基于SVM的恶意代码分类
3.1 支持向量机
支持向量机SVM(Support Vector Machine)是在统计学习理论(Statistical Learning Theory)基础上提出来的通用算法。其模型是定义在特征空间上的间隔最大的线性分类器,主要用于线性可分和近似可分的样本数据中。而近年来,由于很多学者在SVM理论分析和算法实现等方面开展了大量的研究工作,现已把其扩展到了线性不可分,以及核函数的领域中。
通常情况下,同一家族的恶意程序会具有部分相同的功能或代码[1]。所以可以通过基于数据挖掘的分类方法对恶意代码的样本进行分类[2]。通过学习已知恶意代码的类别及行为信息,根据恶意代码家族共享的特征训练样本,从而生成分类器或者分类模型,然后利用训练好的分类器对未知的样本进行分类。
3.2 结果分析
对4类恶意代码进行SVM训练,正确分类691例,正确率为83.8592%,如表1所示。
对数据使用PCA进行降维处理,投影到三维空间如图3所示和二维空间如图4所示,可以看到4类恶意代码的分布情况。
经过研究实践,本文已经实现了利用概率统计模型和SVM对恶意代码分类的目的,并获得了较为优秀的精确度。
4 结语
本文首先对恶意代码及其相关知识作了概念性的介绍,提出基于概率统计模型的恶意代码分析,把二进制文件以折线图和三维图的形式展现出来。同一个家族的恶意代码在可视化模型上有着较为明显的区别。对模型进行特征提取,通过SVM进行机器学习,对四类恶意代码进行分类与检测,获得了较为优秀的精确度。
本文提出的方法是属于静态技术的一种,静态分析不能很好地应对加壳、加密和多态的恶意代码,因此将来的工作需要结合动态分析,提取出更为准确的特征。而且随着恶意代码生成和生存技术变得越来越复杂,程序的隐蔽性会更强,在传播过程中也会改变程序本身的功能,而不仅仅是外形的变化,这些都需要我们提高重视,做好反恶意代码的检测工作。
参考文献
[1]王毅.恶意代码聚类中的特征选取研究[A].中国计算机学会.第31次全国计算机安全学术交流会论文集[C].中国计算机学会,2016:5.
[2]黄海新,张路,邓丽.基于数据挖掘的恶意代码检测综述[J].计算机科学,2016,(07):13-18+56.