非包还原恶意代码检测的特征提取方法(2)
2.2基于片段的特征码提取
传统方法提取的恶意软件特征码,是在恶意软件的整个空间范围内寻找能唯一标识的该恶意软件的字段,这些字段构成了其特征码。因此,采用这种方法得到的恶意软件的特征码具有全局性,在使用特征码进行匹配时,匹配的范围要求使用整个恶意软件。
基于NPR特征码提取方法与此不同,它是对恶意软件的片段进行特征码提取。对于提取到的较长片段恶意软件特征码,由于获得的信息比较全面,因此误报率相对较低,但进行检查时也要求使用较长的恶意软件片段,否则其漏报率将显著提高;相对的,对于提取到的较短片段恶意软件特征码,由于要求的信息较少,因此误报率相对较高,但在检测时不需要获得恶意软件的完整样本,在只能获得较短的恶意软件片段时也能获得较好的检测效果。基于片段的特征码提取思路是,按照前述恶意软件分类方法,同一类的恶意软件必定有相似的代码段片段,或者相似的特殊指令的调用。这种NPR特征码提取方法采用静态启发式技术来进行特征码的提取,主要是因为静态启发式技术能进行代码级的分析,对未知的恶意软件也有一定的检测能力。
因此,可以对每一类恶意软件的特征代码段采用静态启发式分析技术进行代码级的分析,模拟代码执行逻辑,提取若干条特征码。由于是对每一类恶意软件相类似的代码段进行特征提取,这样的特征码具有通用性,在一定程度上避免了为每一个恶意软件提取一个或多个特征,导致特征库过于庞大的问题。采用代码静态启发式分析技术提取的特征码视为某种语义行为的操作序列,可以是连续的代码序列,也可以是由通配符连接的多个代码序列。
为了更好地在漏报率和误报率之间做好平衡,使其误报率、漏报率和检测成功率都控制在合理的范围之内,需要在为NPR特征提取方法获得的特征码中引入采用传统方法提取的特征码中没有的参考量,即特征码在恶意软件中的跨度。本文使用特征码的覆盖范围的概念,来精确表示每条采用NPR特征码在恶意软件中的跨度。所谓特征码的覆盖范围,是指在采用NPR特征码提取方法获得的特征码的第一条指令和最后一条指令在恶意软件中的实际间隔长度,单位用字节表示。特征码覆盖范围的信息需要在构建特征库的同时进行收集,并取每一条特征所对应的恶意软件片段的最大值。
2.3基于覆盖范围的特征码筛选
最后一步是对提取到的每一类恶意软件的通用特征码进行筛选。如果提取到的特征码的覆盖范围越小,在恶意软件通过网络传输时或者将本身代码分段注入到其他系统文件中时被分割的几率就越小。
因此筛选的最重要的依据是特征码的覆盖范围。特征码的覆盖范围表示了特征码在理想状况下能够识别恶意软件所需要的最短的片段长度。特征码的覆盖范围越小,说明它工作需要的特征码片段的长度越短,在实际应用中该特征码被分割的可能性也越小,检测的成功率越高。因此在提取特征码和筛选特征码时要尽量挑选覆盖范围小的特征码。在对每一类恶意软件提取到的通用特征中选择特征码覆盖范围小特征码来构建特征库;在特征码覆盖范围相似的情况下,可以优先选择特征码长度相对较小的特征码来构建特征库。这样不仅可以有效降低特征码被分割概率,也能在一定程度上减小特征库的规模,提高匹配特征库的效率。
3实验设计与实验结果分析
为了测试NPR恶意代码检测的特征的性能和效果,从恶意软件样本库中随机选择1000个恶意软件样本,大小为3GB的文件组成测试样本,设计两个实验来测试检测效果。
3.1不同特征码的覆盖范围
本节统计了基于恶意软件分类的检测引擎使用的特征库中,恶意软件的加载方式、自身的隐藏、对硬件和系统的注入、复制与传播、危害系统功能的五大类型特征码的覆盖范围的分布情况,结果如图2所示。
由图2可以发现,随着样本覆盖范围的增加,五大类型的特征码覆盖比例也在增加。除恶意软件危害系统功能类的特征码外,其他四种类型的特征码中,覆盖范围小于400字节的特征码占该类特征码总数的比例均超过10%。覆盖范围小于800字节时,除恶意软件危害系统功能类的特征码外,其他四种类型的特征码均超过总数的30%。恶意软件危害系统功能类特征码的覆盖范围较大,覆盖范围小于1400字节的特征码超过了该类特征码总数的40%。
覆盖范围只是理想状态下进行检测的理论上最小的恶意软件片段的大小,在实际工程应用中,由于恶意软件的片段长度过长,有效的恶意代码段可能被分割,导致检测失败。对于实时性要求高的系统,为了提高运行效率,需要确定多长的恶意软件片段才能进行有效检测。对实时性要求不高的应用可以将引擎接受的恶意软件片段的最小长度设为特征库中覆盖范围最小的特征码的覆盖范围。为此,需要统计恶意软件样本库中的样本在分割成小片段情况下的检测情况,为获得实际应用环境下,能有效检测恶意软件片段的最小长度提供实验支持。
3.2不同特征码长度的漏报率
本文采取的获得有效检测恶意软件片段的长度下限的方法是将恶意软件样本库中的样本均匀的分成较小的片段,然后使用对应的特征码对其进行检测,统计每一类特征码在目标片段大小不同时的漏报情况,以此来为检测引擎最小有效识别片段大小的设置提供依据。在实际应用中,应该以对检测的实时性要求和实际可以截获的恶意软件片段的长度等实际情况来设置检测引擎读取恶意软件片段的最小长度。统计的实际情况如图3所示。
从图3中可以发现,随着恶意代码片段的增加,漏报的情况逐渐降低。以加载方式类特征码漏报率降低最为明显,危害系统功能类特征码漏报率降低最不明显。以硬件和系统注入类的特征码为例,在将恶意软件样本按顺序划分为大小为800字节的多个片段时,漏报率最低的,其漏报率接近80%;片段大小为600字节时,其漏报率超过85%;片段大小为400字节时,其漏报率超过97%。
因此,对于特征码检测引擎所接受的恶意软件片段的最小长度,需要根据具体的使用环境和对实时性的要求确定。综合分析表明,根据具体使用环境及对实时性的要求,基于NPR的检测所设置的恶意软件片段要求,最小不少于512个字节,如果片段长度短于512个字节,检测引擎应丢弃该片段并返回进行下一目标片段的检测。
4结束语
本文提出的基于NPR的特征提取方法,在一定程度上解决了传统的特征码检测方法缺乏对小段恶意软件片段的识别能力,和特征库过于庞大而导致的检测效率低的问题,对小段恶意软件片段具有一定识别能力,但同时也增加了漏报的可能性。因此还需进一步研究如何继续提高对小段恶意软件片段的识别能力和降低漏报率的方法。
参考文献
[1]李晓勇,周丽涛,石勇,郭煜.虚拟行为机制下的恶意代码检测与预防.国防科技大学学报,2010年1期.[2]陈洪泉.恶意软件检测中的特征选择问题[J].电子科技大学学报,2009,38:53-56.
[3]金庆,吴国新,李丹.反病毒及特征码自动提取算法的研究[J].计算机工程与设计,2007,28(24):5863-5866.
[4]陈健,范明钰.一种基于恶意软件分类的特征码提取方法.计算机应用,2011.
[5]王蕊,冯登国,杨轶,苏璞睿.基于语义的恶意代码行为特征提取及检测方法.软件学报,2012年,23(2).
基金项目:
受国家863项目资助(编号:2009AA01Z435,2009AA01Z403)。
作者简介:
王光卫(1959-),男,学士,工程师;主要研究方向为信息安全。
陈健(1985-),男,硕士,工程师。
范明钰(1962-),女,博士,教授。
(www.fabiaoba.com),是一个专门从事期刊推广期刊发表、投稿辅导、发表期刊的网站。
本站提供如何投稿辅导、发表期刊,寻求论文刊登合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级论文刊登/国家级论文刊登/
CSSCI核心/医学投稿辅导/职称投稿辅导。
投稿邮箱:fabiaoba365@126.com
在线咨询:
275774677、
1003180928
在线咨询:
610071587、
1003160816
联系电话:18796993035