发明名称 基于函数调用关系图特征的恶意代码检测新方法
摘要 一种基于函数调用关系图特征的恶意代码检测新方法。传统的特征码检测技术是通过局部特征对软件进行判断,其缺点是检测工具必须维护庞大的先验特征码以及这些检测方案缺少必要的稳定性和可靠性。本方法对于Portable Executables(PE)文件利用软件函数调用关系图,根据已有软件网络方面的研究成果,通过提取图特征信息来检测恶意代码。该方法主要过程分三步:1、建立软件函数调用图;2、提取图中特征指标;3、通过有效的数据挖掘算法分类恶意软件和正常软件。本发明不但能够有效的检测出普通zero-day恶意代码,而且对于采用模糊和多态技术的恶意代码同样有较好的检测结果,对于蓄意攻击也保持良好的稳定性。
申请公布号 CN102034042B 申请公布日期 2012.10.03
申请号 CN201010585101.1 申请日期 2010.12.13
申请人 四川大学 发明人 王俊峰;赵宗渠;白金荣;刘达富;方智阳
分类号 G06F21/00(2006.01)I 主分类号 G06F21/00(2006.01)I
代理机构 成都信博专利代理有限责任公司 51200 代理人 舒启龙
主权项 一种基于函数调用关系图特征的恶意代码检测方法,其特征是:分为以下3个阶段:1、建立软件函数调用关系图;2、提取图中特征指标;3、通过数据挖掘算法分类恶意软件和正常软件;具体步骤如下:1)建立软件函数调用关系图:装入PE格式样本文件即Portable Executables格式样本文件,然后采用递归下降算法来处理文件,将文件进行反汇编操作,将文件转换成汇编代码,根据代码中的调用指令建立函数调用关系,然后将函数和这些调用关系保存在图这种数据结构中;上述递归下降算法是通过控制流来逐条定位和分析指令及数据,根据顺序流指令,条件分支指令,无条件分支指令,函数调用指令和返回指令来定位后续指令的位置;2)提取图中特征指标:2.1)产生函数调用关系图特征集:通过对输入的函数调用关系图描述文件处理,将文件中保存的函数调用关系图信息使用邻接链表的数据结构保存,然后在该结构中计算和统计定义特征集合FeatureList的值;文件处理步骤为:a)从输入文件中读入结点和边信息;b)向邻接链表中添加结点和边信息;统计结点类型及数量;直至读文件结束; 然后,遍历所有连通有向子图,并统计结点和出、入度信息;遍历所有连通无向子图,并统计结点和出、入度信息;遍历定义的扩展连通图,并统计其信息,最后得到的计算和统计结果为产生的函数调用关系图特征集;2.2)筛选指标以精确的反应函数调用关系图的特征:二者择一地采用以下两种属性过滤算法以去除冗余属性和区分度较低的属性,合并相关较高的属性,进行指标的筛选;其一是,采用数据挖掘软件Weka中提供的CfsSubsetEval函数提供的属性过滤功能,衡量每一个属性的预测能力以及它们之间的冗余度,筛选出对预测目标关联度较高且相互之间低耦合的属性集合;其二是,选用与分类算法相关的属性筛选算法WrapperSubsetEval,通过交叉验证的方法对属性进行衡量,最后得到该分类算法最有效的属性集合;3)通过数据挖掘算法分类恶意软件和正常软件:3.1)通过分类算法产生训练集结果:该过程是生成训练集结果和决策树的过程;首先对大量的正常软件和恶意代码样本进行处理,将前面生成的函数调用关系图特征集的指标作为输入,通过机器学习过程,在选用的数据挖掘算法中得到训练集结果;上述数据挖掘算法采用基于决策树的C4.5算法,基于多层神经网络的BP算法,Lazy分类算法中的IBK和贝叶斯分类算法中的NaiveBayes算法之一种;并按以下两种方式产生训练集结果和决策树:一种是按百分比划分样本和测试的数量,另一种是m fold 交叉验证;训练集结果作为之后检测PE文件的依据;m fold 交叉验证:在对文件进行分类时,将所有文件按随机方式平均分为m份,将其中m‑1份作为机器学习的材料,而另外1份作为测试目标,这样进行m次,使每一份都能得到测试;3.2)产生测试结果:对于被测试的PE文件,经过产生函数调用关系图和提取图特征指标后,将这些指标格式化成符合检测要求的训练记录,用arff文件存储这些数据;这些训练记录文件作为输入,选用上述训练集结果就得到测试结果。
地址 610065 四川省成都市武侯区一环路南一段24号