一. 论文总结
1.恶意代码的相似性比较:
静态结构相似性比较、动态行为相似性
①静态结构相似性:
通过静态反汇编程序构建的“程序的控制流程图(CFG)”,根据流程图的结构特征进行相似性比较。
缺点:
容易受到加壳等各种代码保护技术的干扰。
②动态行为相似性:
根据获取的“行为序列”进行相似性判定,多根据行为序列的文字距离、以及系统调用的敏感程度进行。典型代表是“可缩放的代码分析方法”,该方法对代码执行中的数据进行污点传播分析,提取行为序列,根据行为关联数据进行相似性比较。
优点:
能够有效地避免加壳等代码保护技术对分析代码结构相似性的干涉。
缺点:
该方法只比较相似行为序列的文字距离或者加权文字距离,没有充分利用程序行为内部的逻辑关系,忽视了程序代码和程序行为之间的依赖关系,故而无法解决攻击者通过在程序代码中加入一些无意义的系统调用等方法导致的“文字距离”改变,进而影响相似性的判断。
③新的方法:
提出一种基于行为之间的控制依赖和数据依赖的相似性判断方法。
对现有的控制依赖图和数据依赖图进行改造,改造为带有虚拟节点的控制依赖图。
拓展了用数据依赖图来描述恶意行为的方法,从而提高了行为之间依赖关系的表达能力。
具体:
通过动态污点传播理论分析目标程序的控制依赖,数据依赖关系→构造带有虚拟节点的控制依赖图、数据依赖图→对依赖图进行垃圾调用删除、循环缩减、行为轮廓构建→基于拓展依赖图的相似性比较方法对依赖图进行相似性比较,确定目标程序之间的相似性。
创新:
动态污点传播→不用反汇编→避免加壳干扰;
充分利用行为间的逻辑关系→避免代码重排、垃圾行为干扰;
使用代码行为轮廓进行比较→提高了准确性、降低了比较的复杂度。
实际用途:
在获取“恶意代码样本”后完成离线分析,快速划分该恶意代码所属族群,并给出其行为轮廓。方便后续利用该系统以及该系统的结果完成对恶意代码的检测、归类。
二. 方法构建
1.依赖图定义
①定义带有虚拟节点的控制依赖图:
Gcd=
{Ncd, Ecd,VNcd,Entrycd,Exitcd,Typecd,Counttype}
Ncd表示系统调用、
Ecd表示顺序关系、
VNcd表示控制依赖关系、
Entrycd表示控制依赖图的入口、
Exit表示控制依赖图的出口、
Typecd表示系统调用的种类信息、
Counttype表示各种类系统调用的个数。
a.虚拟节点:
引出虚拟节点控制依赖关系VNcd的主要目的是表示一种顺序无关的行为间控制依赖关系。
在进行相似性比较时,先查找虚拟节点VNcd(控制依赖关系),对虚拟节点相连的行为进行无序比较,