一种基于调用行为的恶意代码自动化同源判定方法及系统的制作方法

文档序号:9217504阅读:356来源:国知局
一种基于调用行为的恶意代码自动化同源判定方法及系统的制作方法
【技术领域】
[0001] 本发明涉及恶意代码分析领域,具体涉及一种基于调用行为的恶意代码自动化同 源判定方法及系统。
【背景技术】
[0002] 本发明中恶意代码同源指不同恶意代码源自同一组织或同一作者,这些恶意代码 可能属于不同家族,甚至具有很大的功能差异。随着攻击方式向高级、持续(如APT,Advan ced Persistent Threat)等方向发展,通常一个攻击由多种恶意代码完成或不同的攻击所 用的恶意代码均出自同一组织,发现其中的同源关系对作者溯源、攻击场景还原、APT攻击 防范等具有重要作用。目前,同源判定主要依赖人工分析,CrySyS实验室的Bencsdth等人 依赖特殊关键词,注入机制、注入目标、导出函数、导入函数所用的特殊手法、负载与配置、 通信模块等判定Stuxnet与Duqu同源;Gostev等人发现Stuxnet与Duqu在编译平台、时 间、代码等方面具有相似性;Kaspersky实验室的专家通过人工分析发现2009版Stuxnet 中的一个模块是Flame中的插件,判定Stuxnet与Flame与同源;FireEye实验室的专家深 入分析11个高级持续攻击(APT),发现攻击所用恶意代码具有相同的代码段、时间戳,甚至 相同的证书,认为这些攻击均由一个组织操纵,具有同源关系。各个实验室、反病毒厂商的 专家给出的分析报告详细全面,有力地证明了不同恶意代码的同源关系,但受专家经验影 响较大,因此效率较低。
[0003] 同源判定主要依赖人工分析,主要原因是同源判定的原则是分析两样本间是否拥 有独特的相似性证据,现实中即使不同源的恶意代码间也会有大量相似项,如图标、字符 串、代码段等,因此需要有经验的分析人员判断哪些相似项是特殊的、个性的,可做为同源 判定的证据,以进行同源判定。

【发明内容】

[0004] 基于此,为了实现恶意代码同源判定的自动化,本发明公开了一种基于调用行为 的恶意代码自动化同源判定方法及系统。
[0005] 为了实现上述目的,本发明采用以下技术方案:
[0006] 一种基于调用行为的恶意代码自动化同源判定方法,包括以下步骤:
[0007] (1)提取每个恶意代码样本的WinAPI调用行为集合与样本中调用的WinAPI集 合;
[0008] (2)提取两样本调用的WinAPI集合的WinAPI交集;
[0009] (3)从两样本WinAPI调用行为集合中筛选出由WinAPI交集构成的调用行为集 合;
[0010] (4)依据步骤(3)中提取的调用行为集合计算两样本间的同源度,依据设定的同 源度阈值判定恶意代码样本是否同源。
[0011] 进一步地,步骤(1)中,恶意代码样本的WinAPI调用行为集合与样本中调用的 WinAPI集合通过以下方法进行提取:
[0012] 1)检测样本是否加壳;
[0013] 2)若加壳判断是否能脱壳;
[0014] 3)对未加壳与成功脱壳的样本做反汇编处理,获取反汇编代码,同时获取导入表 中的WinAPI集合;
[0015] 4)提取反汇编代码中的WinAPI调用行为集合。
[0016] 进一步地,所述WinAPI调用行为包括:
[0017] ①Proc级2-WinAPI组合调用行为:恶意代码作者在编写函数中同时调用的两个 WinAPI,表征在函数设计中的WinAPI组合调用行为;
[0018] ②Proc级2-WinAPI分离调用行为:恶意代码作者在不同函数中使用的两个 WinAPI,表征在函数设计中的不同WinAPI分开使用的调用行为;
[0019] ③Loc级2-WinAPI组合调用行为:恶意代码作者在Loc代码段中同时调用的两个 WinAPI,表征Loc代码段中的WinAPI组合调用行为;
[0020] ④Loc级WinAPI单独调用行为:恶意代码作者在Loc代码段中只调用了一个 WinAPI,表征作者在Loc代码段中的WinAPI调用行为;
[0021] ⑤Loc级WinAPI序列调用行为:恶意代码作者在Loc代码段中调用的WinAPI序 列,表征作者在Loc代码段中的WinAPI调用序列调用行为;
[0022] ⑥Loc级WinAPI调用先后次序组合调用行为:恶意代码作者在Loc代码段中调用 WinAPI的先后关系,表征作者在Loc代码段中调用WinAPI的顺序调用行为。
[0023] 进一步地,步骤(3)中通过以下方法进行筛选:
[0024] 1)从WinAPI调用行为集合中依次取出每个行为,每个行为均由1个到多个 WinAPI构成;
[0025] 2)对每个行为,若其中的WinAPI均属于WinAPI交集,则将其加入新的WinAPI调 用行为集合中;
[0026] 3)否则,回到步骤1);
[0027] 4)直到WinAPI调用行为集合中再无行为为止,最终得到的新的WinAPI调用行为 集合为由WinAPI交集构成的调用行为集合。
[0028] 进一步地,若WinAPI交集中的WinAPI数目少于10个,贝丨」不进行同源判定。
[0029] 否则,依据WinAPI调用行为集合S' 4与WinAPI调用行为集合S'b计算样本A 与B每一类行为的相似度,第i类行为的相似度计算公式为:
[0031] 其中S为S' A中第i类行为的集合,&为S'B中第i类行为的集合。
[0032] 依据【公式1】计算6类行为的相似度,最后计算6类行为相似度的平均值,做为样 本A与B的同源度,计算公式如下:
[0034] 本发明中设定同源度阈值为0. 5,即当sim > 0. 5时,判定两样本同源。
[0035] 本发明同时公开了一种基于调用行为的恶意代码自动化同源判定系统,主要由调 用行为提取模块、WinAPI提取模块、调用行为比对模块与同源判定模块4个模块组成,其 中:
[0036] 所述调用行为提取模块用于自动提取样本中的WinAPI调用行为集合;
[0037] 所述WinAPI提取模块用于提取样本调用的WinAPI集合;
[0038] 所述调用行为比对模块用于比对样本间的WinAPI调用行为集合,得到样本中由 共同调用的WinAPI集合构成的WinAPI调用行为集合;
[0039] 所述同源判定模块用于依据WinAPI调用行为集合判定样本间的同源关系。
[0040] 进一步地,所述调用行为提取模块通过检测样本是否加壳,并对加壳样本脱壳,对 未加壳或成功脱壳后的样本进行反汇编并解析导入表,基于汇编代码提取样本中的WinAPI 调用行为。
[0041] 进一步地,所述WinAPI提取模炔基于编译规则提取样本调用的WinAPI。
[0042] 本发明公开了一种基于调用行为的恶意代码自动化同源判定方法,该方法具有实 时性和准确性。首先提取两样本调用WinAPI的交集,基于WinAPI交集提取6类WinAPI调 用行为,通过比较WinAPI的调用行为判定两样本是否同源,利用上述方法可以从海量样本 中判定与已知样本同源的其他样本,每次判定为两两样本之间的判定。与手工同源判定相 比,在保持高准确率的前提下大大提高了同源判定的效率,适合基于某特定样本在少量样 本集中或在线实时捕获与该样本同源的其他恶意代码的场景,以快速发现不同攻击事件间 的关联关系。
[0043] 本发明公开的基于调用行为的恶意代码自动化同源判定系统可部署在恶意代码 实时检测系统,用于快速检测与特定恶意代码同源的其他恶意代码样本,以有效防范新型 恶意代码的传播,减轻危害降低损失。
【附图说明】
[0044] 图1本发明基于调用行为的恶意代码自动化同源判定方法流程图;
[0045] 图2本发明特征提取流程图;
[0046] 图3本发明基于调用行为的恶意代码自动化同源判定系统架构图;
[0047] 图4本发明实施例1中变种判定结果;
[0048] 图5本发明实施例1中同源判定结果。
【具体实施方式】
[0049] 下面,结合具体的实施实例对本发明进行详细说明。
[0050] 本发明提供的恶意代码自动化同源判定方法的流程如图1所示,结合样本A与样 本B,具体实施步骤如下:
[0051] (1)提取样本A的WinAPI调用行为集合34与WinAPI调用集合WinAPI A,提取样本 A的WinAPI调用行为集合$8与WinAPI调用集合WinAPI B。
[0052] 图2给出了该步骤具体的流程,对于一个样本:
[0053] 1)检测样本是否加壳;
[0054] 2)若有壳判断是否能脱壳;
[0055] 3)对未加壳与脱壳样本做反汇编处理,获取反汇编代码,同时获取导入表中的 WinAPI 集合;
[0056] 4)依据以下定义提取反汇编代码中的6类WinAPI调用行为集合。
[0057] 定义1 Proc级2-WinAPI组合调用行为:恶意代码作者在编写函数中同时调用的 两个WinAPI,表征在函数设计中的WinAPI组合调用行为;
[0058] 定义2 Proc级2-WinAPI分离调用行为:恶意代码作者在不同函数中使用的两个 WinAPI,表征在函数设计中的不同WinAPI分开使用的调用行为;
[0059] 定义3 Loc级2-WinAPI组合调用行为:恶意代码作者在Loc代码段中同时调用 的两个WinAPI,表征Loc代码段中的WinAPI组合调用行为;
[0060] 定义4 Loc级WinAPI单独调用行为:恶意代码作者在Loc代码段中只调用了一 个WinAPI,表征作者在Loc代码段中的WinAPI调用行为;
[0061] 定义5Loc级WinAPI序列调用行为:恶意代码作者在Loc代码段中调用的 WinAPI序列,表征作者在Loc代码段中的WinAPI调用序列调用行为;
[0062] 定义6 Loc级WinAPI调用先后次序组合调用行为:恶意代码作者在Loc代码段 中调用WinAPI的先后关系,表征作者在Loc代码段中调用WinAPI的顺序调用行为。
[0063] 最终,提取样本A的WinAPI调用行为集合34与WinAPI调用集合WinAPI A,提取样 本B的WinAPI调用
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1