论文部分内容阅读
各种恶意软件变种生成技术的出现使得恶意软件的数量以指数的形式增长,所以对恶意软件变种的识别与分类显得尤为重要。由于变种技术能在保持程序的原有功能不变的情况下改变程序自身的代码,这使得原程序与变种在语法结构上的相似程度差别甚大。传统的对变种恶意软件之间的相似度计算方法往往只是基于句法特征,而忽略了程序变种的功能不变性,从而导致恶意软件变种不能被正确识别与分类。所以研究能反映程序功能的特征模型和基于语义层面的特征比较算法对恶意软件变种的识别与分类至关重要。在基于静态分析的基础上,本文对恶意软件变种间相似度的分析技术展开研究。首先,构建了能反映程序功能的恶意软件变种程序特征码。针对恶意软件变种改变程序代码而能保持其功能的特点,基于函数和函数调用图构建恶意软件变种程序的特征码。提出的特征码与传统的基于指令序列的特征码相比更能精确地反映程序的功能。其次,提出了两个基于语义层面的特征比较方法。在深入剖析变种生成技术尤其是代码混淆技术的作用机理基础之上,提出两种特征码分析方法:(1)基于函数内部操作码序列的特征码比较方法;(2)基于函数调用关系的特征码比较方法。第一种方法结合了汇编指令的功能分类和余弦相似度的统计算法来比较特征码;而第二种方法在了第一种方法的基础上利用了函数间的调用关系来比较特征码。这两种方法都是以能体现程序功能的角度出发,都能比较有效地绕过指令的混淆技术对恶意软件变种造成的影响,但是第二种方法比第一种对恶意软件变种具有更强的区分能力。最后,提出了一个恶意软件变种相似度的度量方法。为了计算变种间的相似度,本文将其转化为计算两特征码的相似度问题。对于基于函数内部操作码序列特征码和基于函数调用关系的特征码,本文分别利用“基于最大共同函数个数”和“基于最大共同边数目”两种度量方法来计算相似度。实验结果表明此二种度量方法在一定程度上能反映程序功能上的相似性。