2.5 恶意代码防御主要任务及常用分析方法
恶意代码一经出现,针对恶意代码的防御就成为一项永不停歇的斗争。要检测和防御恶意代码,首先需要对未知代码进行分析,然后检测出恶意代码,并将恶意代码划分到其所对应的家族。
2.5.1 恶意代码防御主要任务
恶意代码防御的两项主要工作为:检测和分类。恶意代码检测的目标是从未知的程序样本中找到恶意样本,而恶意代码分类的目标则是将已发现的恶意样本划分到其对应的家族。恶意代码检测过程中提取出的程序特征,也可应用于恶意代码分类。根据提取程序特征分析方法的不同,恶意代码检测和分类主要分为两类:静态分析和动态分析。
2.5.2 常用恶意代码分析方法
(1)静态分析
静态分析方式不需要实际运行程序,研究人员通常从程序的PE头部、PE体、二进制代码中提取信息,或者对代码进行反汇编,从汇编程序中提取操作码Opcode或者其它相关信息来表示程序内容特征,依此分析程序的恶意性 [20] 。静态分析方法分析效率较高,但需要应对加壳和混淆方式的影响 [21] 。
(2)动态分析
动态分析是一种基于行为的分析方式,需要实际运行程序以捕获程序运行期间的行为特征。动态分析方式主要关注的行为特征包括程序API序列及样本运行期间与操作系统的行为交互。为避免恶意代码运行对终端系统造成破坏,动态分析通常在虚拟环境下执行 [7] 。
(3)混合分析
此外,还有一些研究人员将静态分析与动态分析结合起来,对恶意代码进行混合分析,分别提取恶意代码的静态特征和动态特征,将两者进行融合以克服单独使用静态分析和动态分析所面临的缺陷,实现对恶意代码更为全面准确的分析 [22] 。
恶意代码分析方法的优缺点比较如表2-3所示。
表2-3 恶意代码静态和动态分析的优缺点
