论文部分内容阅读
随着网络的普及、计算机技术的日益进步,如今计算机信息安全面临着很大的威胁,恶意代码是其中主要的攻击手段。恶意代码的增长及其技术的不断发展不仅会给人类的生活带来诸多不便,而且也会使用户及企业蒙受巨大的经济损失,有些甚至能危害到国家信息的安全。随着恶意代码的检测技术和反检测技术的不断对抗发展,每天产生大量新的恶意代码给分析人员带来巨大的压力和严峻的挑战。传统的恶意代码检测能力已经远远不能满足需求。恶意代码检测技术分为静态和动态检测。静态检测不执行代码,通过代码的内容和结构信息实现检测;动态检测是在虚拟环境中通过代码执行的行为来判断。但是随着恶意代码混淆技术的发展,有些静态恶意代码检测方法受到了挑战,一些恶意代码通过隐藏自身的恶意行为来躲避在虚拟环境下的检测也使得动态检测技术无能为力。因此,如何应对恶意代码爆炸式增长,尤其是应对利用混淆技术产生的恶意代码的变种问题成为恶意代码检测技术研究的重点。本文研究了基于操作码序列的静态恶意代码检测技术,与以往的静态检测技术不同的是本文提取了基于程序控制流程图的操作码序列作为恶意代码的特征。首先,对恶意代码进行基于信息熵的查壳和脱壳处理;其次,对脱壳后的恶意代码进行反汇编,通过编写插件来构建程序的控制流程图并提取操作码序列;再次,利用n-gram算法来提取操作码序列特征,并使用信息增益和文档频率的方法来选择特征;最后,使用K近邻、决策树及支持向量机三种机器学习分类方法实现恶意代码的检测。在实验中,通过选择特征的数量及其他方法来对比分析实验,实验结果通过正确率、误报率、漏报率三个指标进行评价。通过实验结果的对比和分析,本文提出的方法收到了很好的实验效果。