基于恶意代码的检测技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2012.4
9
基于恶意代码的检测技术研究
沈承东1 宋波敏2
1海军计算技术研究所 北京 100841 2华中科技大学计算机学院 湖北 430074
摘要:恶意代码检测是保证信息系统安全的一个重要手段,从传统的特征码匹配到启发式检测,甚至基于神经网络的代码检测,整个检测手段在向着更加智能化更加具有自动适应能力的方向发展,检测系统也越来越具有自动分析与自动学习的能力。
关键词:代码检测;特征码识别;启发式检测;专家系统;神经网络
0 前言
本文通过分析一些常见的检测方法,并通过分析其原理,来判断各种方法的优势和劣势。
因为各种新型恶意代码的出现,在识别能力和处理量上,对于检测程序都有了新的要求。
伴随着这些变化,一些更加智能化的检测手段相继出现。
这些手段改进的一个主要目标,就在于将静态的比对方法,通过知识库中各个点间的相互联系,甚至自动的获取知识分析,来达到检测的目的。
这些方法的出现,一方面是应对新型恶意代码的需要出现的,另一方面也是在各种资源成本与检测效益间的平衡中发展起来的。
1 特征码识别法
这是一种最常见的检测方法,它用恶意代码中特有的特征代码检测,这些字节序列是不太可能出现在正常文件中,通过查询比对即可以检测出一批恶意代码。
比如依据如下原 则:抽取的代码比较特殊,所以不大可能与普通正常程序代 码吻合。
抽取的代码要有适当长度,一方面保证特征代码的 惟一性,另一方面又不要保证有太大的空间。
例如KMP 算法的时间复杂度为 O( m+n ), 如果待检测的特征代码个数为k ,而特征代码平均长度为M ,待检测代码长度为N ,则可以设系统资源消耗为Pay 。
data[] //特征库,字符串数组 for( code ;data[];data++) {
If( Kmp( code,data ))
//通过KMP 算法检查data[]的每一项 {
Do sth; //满足条件,报警
}
}
其最终的时间复杂度为 O( K ·(M+N) ),
Pay=k(m+n)·α(α是一个稳定的系数,它与具体系统有关)。
可以看到,Pay(系统资源消耗)其随着特征代码量k 的增加呈线性变化,其随着k 的增长线性增长。
这种检测方法它有一个弱点就是:现今随着恶意代码量呈指数级增长之势,如果要保证安全性,那么配套就需要庞大的特征库,这样就造成检测代码的工作量,伴随着特征库的增大随之放大。
与此同时一些新型代码采用了加壳,变形,多态等各种新技术来躲避查杀,这样就更加加重了特征码检测的难度,因此单纯依靠特征码比对,已不足以应对新型代码。
并且在恶意代码检测方面,很重要的一点就是,做到早发现,早处置,就 可以减少损失,但这种检测方法属于事后补救方式。
同时整个检测系统的可靠性,强烈依赖于特征库的完整性,如果特征库并没有随时更新,其面对新代码也就无能为力。
所以,这种方法伴随着时代发展,已经不再很适合应对各种新情况了。
2 启发式检测技术
启发式扫描技术检测程序,实际上就是以特定方式实现对代码行为的检测,通过对代码行为的观测来推测代码动机。
从工作原理上可以分为静态启发以及动态启发两种。
启发式实现检测程序可以实现能够分析自动文件代码的逻辑结构,并判断是否含有恶意程序特征,或者通过在一个虚拟
2012.4
10的模拟执行环境中,通过模拟性质的执行代码来判断输入其中的代码其是否有恶意属性,并最终决定处理动作。
一般前者被称为静态代码分析,而后者则被称为动态启发式。
2.1 静态启发式检测
其原理在于,恶意代码与普通程序在启动时,它们的行为存在明显差异。
利用这个区别,检测程序就可以通过扫描程序的特征指令,并与一般的常规指令比较,观察命中的条数综合起来就可以判别代码是否为恶意代码,这种方法也可以作为特征码识别的一种补充。
与特征码识别最大的不同就在于,这种方式判断的依据在于代码的行为特征,而非其他。
比如恶意代码最初的指令却极有可能是一些危险指令例如写盘操作或者解码指令,或者搜索某敏感路径下的可执行程序等等,依据出现这些可疑行径的情况进行分析,同专门的指令库进行比较,则可以判定此代码的恶意属性。
依靠专家经验,可以建立一个恶意指令知识库,那么如同特征码库一样就可以通过定期更新的办法维持对一些新型代码的查杀能力。
静态启发式检测,主要可以通过反汇编方式,实现在不执行代码的情况下,通过核对病毒头指令,来达到检测的目的。
因为主要查杀的目标在于代码的最开始一段,这样可以省去很多系统资源。
这种方法的资源消耗同特征码识别相比类似,但是他的特征库可以做的更小一些。
对比特征库动辄上万的记录,恶意指令库要小上很多,作为一种补充措施它相比起来更加高效一些。
但是由于完备性不够,实用效果并不如动态启发好,只适宜于用作补充措施。
2.2 动态启发式检测
动态启发式的原理在于,最初可以假设并不知道某个程序是否带有恶意代码属性,如此就可以先虚拟出一个执行环 境,让代码在其中并模拟执行。
如果是恶意代码,代码在模拟执行的时候,就会如期产生一些危险动作。
这样一来就可以通过探针发现。
它的关键思想是,模拟实验方法以及纠正思想。
如图1所示。
图1 动态启发式检测示意图
这种方法的一个关键思路,就是虚拟机制。
可以是模拟执行动态监测,或者设置报警诱发装置。
它通过虚拟机技术来仿真内存和CPU 以及文件系统和网络连接进而模拟代码的执行过程。
又或者采用蜜罐技术设置陷阱门,进而诱发恶意行为而产生警报。
这种方法由于代码执行区间在虚拟机中,所以不会在真实环境中威胁用户数据。
由于动态启发式判断技术具有许多其他检测方法不可替代的优势,故而仍然是现阶段检测未知病毒比较有效可靠的方法并得到了广泛的应用。
3 主动防御技术
这种方法检测的原理在于,人们依靠对病毒行为规律分析和深入归纳总结,并结合安全专家判定恶意代码的经验历史,可以提炼出恶意代码识别规则知识库通用规则,并依此模拟人类专家发现新病毒的机制,通过对各种程序执行的动作进行监视,并尝试自动分析程序动作之间的逻辑关系,依靠知识库的知识进行动作识别,以达到主动防御的目的。
在具体的行为检查方面,以检测工具具体利用的方法不同,可以大致分为基于专家系统的检测和基于神经网络的检测两种。
整个解决办法的模型如图2所示。
图2 主动防御检测模型
3.1 专家系统检测
专家系统是一个智能计算机系统,它的知识库依靠某个领域专家水平的知识与经验,即能够利用人类专家的行业知识和解决方法。
亦即专家系统是一个具有大量的行业知识经 验的计算机系统,专家系统与传统的计算机程序系统有着完 全不同的体系结构,通常它由知识库、推理机、知识获取机制、解释机制和人机接口等几个基本独立部分所组成。
专家系统依靠知识库和推理机,在用户输入后推理分析得出结论,并产生知识。
而推理机用来将用户输入的信息与知识库中各个规则进行匹配比较。
这种方法应用到在恶意代码检测
领域,病毒代码即为输入,由专家系统推理产生代码的行为判定,如图3所示。
2012.4
11
专家系统
知识库推理机知识获取机制
解释机制
人机接口
图3 专家系统检测模型
专家系统的重点在于知识库的维护方式和知识获取机制。
将知识库里面的单条记录确定为一个约束,再将模式定义为多个约束的集合,采用if-then 产生式规则来描述知识规则,同时配合阀值控制最终的反应行为。
3.2 神经网络检测
这种检测方式运用神经网络的自我学习能力,结合专家系统的推理机制,使得整个检测系统更加智能化,从而具有了更强的自适应能力。
神经网络是一种依靠模拟动物神经网络行为特征,来进行复杂信息处理的数学算法模型。
其本质在于模拟动物神经网络的运行机制。
依靠系统的复杂程度,通过调整内部大量节点之间相互关联影响的关系,以提供的一批初始值来计算推理并输出数据,通过分析掌握两者之间的内在关联,最终实现用新的用户输入数据来推算并输出用户结果,最终导致系统的识别能力不断提高。
依靠神经网络的这种自我学习能力,将其扩展在恶意代码检测发现上面,即可以动态的适应各种新情况,由于现在的常规检测算法推理能力不高,依靠神经网络高度智能化的推理能力以及知识库,就可以将对恶意代码的识别能力提高不少。
处理逻辑如图4所示。
图4 神经网络检测模型
但是现阶段,基于神经网络的代码检测面临的问题导致 似乎得不偿失,一方面在于神经系统本身极其复杂,耗费了大量数据和计算。
而且另一方面检测过程中其固有的算法,
难以产生全局性的结果,需要严格控制虚警率即误报率,与
此同时神经网络本身的特点又容易产生另一个问题就是,在初始化时传入的参数偏差,很容易导致训练过度,并由此产生不会识别新样本集的现象。
但在长远看来,神经网络的这种自我学习能力和自我适应能力用于恶意代码检测非常合适,只要神经网络本身的问题得到解决,这种检测方法具有很强的实用价值。
4 总结
恶意代码因为有一定的传播机制和发作机理,通过人工知识总结或者机器自我推理,就可以提取恶意代码的语义特征。
特征码匹配和静态启发式对应这种方式,可以认为是一些孤立的单点集合,并没有良好的组成连通图。
随着技术的更新发展,动态启发式和专家系统,就可以比较好的实现这种知识间的联通和交流,但是数据的自我更新能力相比基于神经系统的检测方法缺乏动态适应能力。
参考文献
[1]周瑞丽.基于专家系统的恶意代码检测.中国科学技术大学 [学位论文].2009.
[2]崔鹏.基于形式化语义的启发式病毒检测引擎研究.辽东学院学报(自然科学版).2008.
[3]王海峰,段友祥.基于行为分析的病毒检测引擎的改良研究.计算机应用.2004.
[4]周瑞丽,潘剑锋等.应用专家系统开发Windows 恶意代码检
测系统的研究.信息安全与通信保密.2009.
[5]SINGH P K;LAKHOTIN A Static verification of worm and virus behavior in binary executables using model checking 2003.
esearch of Detection Technology based on Malicious Code
Shen Chengdong 1,Song Bomin 2
1.Navy Institute of Computing Technology,Beijing,100841,China
2.School of computer science and technology,Huazhong University of Science and Technology,Hubei,430074,China Abstract :Malicious code detection is an important means to ensure the security of information systems.With the traditional signature matching heuristic detection,and even code detection based on neural networks,the development of the entire detection means is on the way of to be more intelligent with the ability to automatically adapt to more, and the detection system is also growing with automatic analysis and automatic learning. Keywords :code detection; signature recognition;heuristic detection;expert system;neural network。