您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页基于数据挖掘技术的加壳PE程序识别方法

基于数据挖掘技术的加壳PE程序识别方法

来源:意榕旅游网
第3l卷第7期 2011年7月 计算机应用 Journal of Computer Applications V01.31 No.7 July 2011 文章编号:1001—9081(2011)07—1901—03 doi:10.3724/SP.J.1087.201 1.01901 基于数据挖掘技术的加壳PE程序识别方法 赵跃华,张翼,言洪萍 (江苏大学计算机科学与通信工程学院,江苏镇江212013) (zhaoyh@ujs.edu.cn) 摘要:恶意代码大量快速的繁衍使得恶意代码自动化检测成为必然趋势,加壳程序识别是恶意代码分析的一 个必要步骤。为识别加壳可执行程序,提出一种基于数据挖掘技术的自动化加壳程序识别方法,该方法提取和选取 可移植可执行(PE)特征,使用分类算法检测PE文件是否加壳。测试结果表明,在使用J48分类器时加壳文件识别率 为98.7%。 关键词:可移植可执行文件分析;加壳识别;数据挖掘 中图分类号:TP309.5 文献标志码:A Classification of packed PE files based on data mining ZHAO Yue—hua,ZHANG Yi,YAN Hong—ping (Department of Computer Science and Communication Engineering,Jiangsu University,Zhenjiang Jiangsu 212013,China) Abstract:The proliferation of malicious code makes automatic malicious code detection an inevitable trend.Packed Portable Executblae(PE)files identiifcation is a necessary step of malicious code analysis.The paper presented an automatic identiifcation method based on data mining,through which feature was extracted from PE files.The paper used classiifcation algorithms and selected features to detect packed PE files.The test results show that the identiifcation rate is 98.7%when using J48 classiier.f Key words:Portblae Executable(PE)file analysis;packing detection;data mining 0 引言 近年来,恶意代码数量剧增,而恶意代码作者对恶意代码 的保护也逐渐增强,多态、加壳等方法的运用使得恶意代码识 别更加复杂,依靠传统方式分析恶意代码已经无法跟上病毒 发展速度,因此恶意代码的自动化识别被提上了日程,其中恶 意代码加壳 的识别是一个必要步骤。 现在的加壳PE(Portblae Executable)文件检测手段主要 有三种主要方式。第一种是特征码匹配,常见的工具如 1 特征抽取和筛选 1.1特征抽取 PE文件格式是Windows平台上可执行文件的标准格式。 在Windows系统中以EXE、DLL、OCX、SYS为后缀名的文件 都是PE文件。加壳一般是对PE文件进行加密或压缩的过 程。加壳后PE文件与原文件有很大的区别,但是仍然遵循 PE文件格式。 [二叵 [] PEID ,它可以识别上千种加壳程序,这些查壳工具对恶意 代码加壳识别率很低,需要事先添加各种壳的特征到特征库 中,常常滞后于壳的发展,因而无法识别新的或者少见的加壳 程序特征。第二种是PE文件信息熵,Lyda等人 提出一种 信息熵方式检测加壳PE文件,其原理是加壳后的PE文件相 对未加壳的混乱度增加,导致部分节的熵值增高,通过计算 PE文件各个部分数据的信息熵,然后根据熵值判断病毒文件 是否加壳,但是作者对整个PE文件计算熵,这并不能最明显 地反映其熵值变化。第三种方法使用PE文件头部属性,文 献[5]提出一种新型的壳检测工具,利用加壳前和加壳后的 PE文件头部属性不同来判断文件是否加壳,实验表明它的壳 检测实时性较高,但对于伪装壳的误报率和漏报率较高。 图1 PE文件格式 现在的研究中对PE文件结构信息使用较少,本文将充 分发掘PE结构特征,并将各项特征去除冗余和加以整理,最 后利用数据挖掘方法检测加壳文件,得到了较好的分类效果。 收稿日期:2010—12—20;修回日期:2011一O1—30。 如图1所示,PE文件包含了一个PE文件头,一个节表, 然后是节表中所指向的节。/'E文件头包含MS—DOS桩、PE 标签、COFF头(Common Object File Format)和可选头。可选 基金项目:上海市信息安全综合管理技术研究重点实验室开放课题项目(AGK2009004)。 作者简介:赵跃华(1958一),男,江苏苏州人,教授,博士,主要研究方向:信息理论与安全、通信安全; 张翼(1985一),男,江苏姜堰人,硕 士研究生,主要研究方向:信息安全、网络对抗;言洪萍(1985一),男,江苏常州人,硕士研究生,主要研究方向:计算机病毒与反病毒、驱动开发 与防火墙。 计算机应用 头包含了PE文件的重要信息,包括节的个数、堆栈大小等。 第3l卷 中,壳的加载器需要在内存空间中恢复代码,所以加壳PE文 件中代码段有可写属性。另外,加壳PE文件的其他非代码 节也多为可写属性。 节表中包含节的大小、名称等。这些节的内容包括代码、资 源、数据等。本文根据对壳的先验知识,选取表1中的部分 PE结构信息作为初选特征。 表1 PE文件可用分类特征 1.2特征选择 PE结构信息中包括了大量信息,其中大部分不能用于识 别加壳PE文件。为了提高挖掘的工作效率和准确率,需要 将冗余信息去除。在本文中引人冗余特征消除的算法——主 成分分析(Principal Component Analysis,PCA) ,它将多个 变量通过线性变换以选出较少个数重要变量的一种多元统计 分析方法。 该方法的最优J生是从N个训练样本中提取m个主要特征, 来达到降维的目的。假设n个d维的原始样本 。, ,…, ,组成 一个矩阵 其中x的每一列为一个样本,主成分分析按照式 (1)中的线性变换把x投影到低维空间中的向量y。 Y= X (1) 式中w(d y( )为经过PCA变换后的样本特征。 首先求得样本均值“,并按照式(2)协方差矩阵S 。 Ⅳ sr=艺( f一 )( l— ) (2) 然后按照式(3)计算s 的特征值e ,并由大到小排序。 A e :Sref;i∈[1,N] (3) 最后选择前d 个特征值对应的特征矢量作为变换矩阵 W=[Pl,e2,…,e ]。 本实验中使用向量空间模型来格式化数据,每个程序被 定义为一个64维向量。提取所有的程序向量建立一个矩阵, 使用PCA算法得到11个特征的主成分系数大于87%,可以 移除其余53个冗余特征。 接下来把这1 1个特征深入分析,根据实际意义格式化特 征向量。 1)在默认条件下,编译器生成的PE文件会有调试信息, 但是加壳文件中基本不存在调试信息。 2)加壳PE文件的引入函数相对较少,并且都会有 GetProeAddress和LoadLibrary这两个函数。 3)文献[4]中使用整个PE文件的信息熵来判断PE文件 是否加壳,而根据本文统计得到的数据来看,加壳和未加壳 PE文件的熵值区间有很大的交集,而在统计数据中发现加壳 后的PE文件入口点所在节的熵平均值远远高出未加壳PE 文件人口点所在节的熵平均值,两个熵值区问相对,但是 仍然存在部分特殊的PE文件的入口点所在节表熵值异常, 所以入口点所在节的熵值不能作为唯一的判断依据,如图2, 通过计算得出加壳PE文件的入口代码段平均熵值为7.57, 而未加壳PE文件平均熵值为5.78。 4)节属性。在未加壳的PE文件中,代码段的属性没有 可写(IMAGE—SCN—MEM WRITE)的属性,而在加壳PE文件 5)节长度。编译器默认情况下生成的PE文件中不存在 长度为0的节,而在统计中发现被加壳的PE文件多数存在 长度为0的节。 6)另外,编译器生成的PE文件节名固定,经过加壳的文 件会出现非可见字符或其他的节名,特殊的节表名称等其他 属性都可以作为判断的依据。 0 5 1O 15 20 25 30 35 文件大,'b/KB 图2加壳PE文件与未加壳文件熵值分布 通过整理,得到了表2中列出的各项特征。 表2筛选整理后PE特征描述 特征集描述 取值范围 调试信息 BOOL【0,1】 人口点所在节的熵 FLOAT【0,8】 引入表函数个数 INTEGER[0,∞) 节表名是否可见字符 BOOL【0,1】 节属性可执行且非代码 BOOL[0,1】 节表名是否编译器默认 BOOL[0,1] 所有节都没代码属性 BOOL【0,1] SizeOfRawData的和等于文件头中SizeOfCode BOOL【0,1】 入口点不在可执行节中 BOOL[0,1] PE signature相对文件偏移为默认值 BOOL[0,1] 节属性可执行且可写 BOOL[0,1] 将每个PE文件用一个向量’, 表示,其中A12 用于 标识文件是否加壳,y 定义如下: VpE=(A1D b gI ,A21 ponTablesi ,A3E sec【i0 E呲 py, 4secti。nN—vislble, 5secti。nAtt ute,A6ExeculableData, A7s ti。 N Ab l,A8N。c。d se ti。 ,A9E trv A10s size0fR D 【且I:s ofc。d。, 11.Eo t,A12p k d) 按照以上向量定义格式化所有实验数据,使其符合数据 挖掘工具要求,表3中给出了以上向量的部分实例。 表3部分实验数据 编号A1 A2 A3 5 6 7 8 A9 A10 AI1 AI2 0 0 23 6.068 343 0 0 1 1 0 0 0 0 packed 1 0 18 6.068 343 0 1 1 1 0 1 1 1 packed 2 0 22 6.172019 0 0 1 0 1 0 1 0 packed 3 0 17 5.949342 1 0 1 0 0 0 0 1 packed 4 0 42 6.323 374 0 0 1 1 0 1 0 0 packed 5 0 12 6.184756 0 0 0 0 1 0 1 0 packed 6 0 77 6.277969 0 0 1 1 1 0 0 1 packed 7 0 89 6.215 898 1 1 0 0 0 0 0 1 packed 8 0 33 6.027764 1 0 0 1 1 0 1 0 packed 第7期 赵跃华等:基于数据挖掘技术的加壳PE程序识别方法 1903 和 2验证分析 实验使用的数据集包括5578个PE文件信息,其中包括 从VX heavean 获取的2 855个加壳PE文件和从Windows XP 系统中获取的2723个未加壳PE文件。为了获取PE特征, 使用pefile 提供的python库开发了PEWalker,PEWalker可 以获取包括PE文件中的结构信息、字符串信息、各节表的信 实验中把PE特征数据集分为不相交的训练集S 测试集s 两部分,其中s… n S : ,另外将训练集划 分为加壳程序集s s p8cked St 。 g,和未加壳程序集s : ,且Js u S ked n Sunp 1)训练集,包含I 800个加壳PE文件和1 600个未加壳 PE文件;2)测试集,包含1 055个加壳PE文件和1 123个未 加壳PE文件。 表4中测试结果表明,相对于Native Bayes、MLP、SVM等 息熵等。实验使用Knimello]作为数据挖掘平台,Knime提供 了SVM、Naive Bayes、MLP、J48等分类算法,由于篇幅所限,本 文只给出J48分类器的流程。 分类器,J48分类器有较好的识别率和误报率,对壳的识别准 确率达到了98.7%,可以对加壳PE文件作出有效判断。 Decision Tree1 ̄aYner view data 图3 Knime搭建的分类工作流程 表4测试结果 通过图4的ROC(Receiver Operating Characteristic)曲线 可以看出在本实验中MLP和SVM分类器得到了相近的分类 效果,而Naive Bayes分类效果最差。J48分类器在误报率为 0.3%时得到了最好的检测效果。 1.0 试信息、节属性等结构信息作为特征,并使用SVM、Naive Bayes、MLP、J48等分类算法,实验表明J48分类器在检测加 壳PE文件得到了较好的检测效果,弥补了基于特征码的PE 文件加壳检测的不足,目前的缺点是不能检测壳的种类。后 期的工作是进一步提高检测率,降低误报率,增加壳类型检测 功能,并利用导出的语义化规则建立加壳PE文件检测系统。 参考文献: [1】 于淼,孙强.对加壳技术的改进:超粒度混杂技术[J].计算机应 用,2Oo4,24(8):137—139. 0.9 碍O・8 黯 【2】 庞立会.PE文件动态加壳技术的研究与实现[J】.计算机工程, 2008,34(19):166—168. 0.7 0.6 【3]PEID-【CP/OL】.[2010—12—05].ht【p://www.peid.info. [4]LYDA R,HAMROCK J.Using entropy analysis to find encrypted 0。5 0 and packed malware[J].IEEE Security and Privacy,2007,5(2): 0.00l 0.002 0.003 0.004 0.005 0.006 40—45. 误报率 [5】 CHOI Y S,KIM I K.PE file header analysis-based packed PE file 图4误报率和检测率 detection technique【C】//Proceedings of International Symposium on Computer Science and Its Applications.New York:IEEE.2008: 28~31. 以下为J48分类器中的部分分类规则: If DebugInfo=1 and ImportTableSize>36 and ExecutableData=0:UnpackedFile [6】 王正群,邹军,刘风.基于集成主成分分析的人脸识别[J】.计算 机应用,2004,28(1):120—124. If SectionNameVisible=0 and SectionNameAbnormal=1 and SectionAttribute=1:PackedFile f EntrIySectionEntropy>5.8 and EntryPointNotlnCodeSection=1:PackedFile [7] 朱明旱,罗大庸,易励群.一种广义的主成分分析特征提取方法 【J】.计算机工程与应用,2008,44(26):38—40. 【8】VX Heavens[EB/OL].[2010—12—05】.http://vx.netlux.org. f9]pefile[CP/OL】.[2010—12—05】.http://code.google.corn/p/ pefile. 3 结语 本文对加壳PE文件进行深入研究,使用PE文件中的调 【10】Knime[CP/OL].[2010—12—05].http://www.knime.org. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务