法律状态公告日
法律状态信息
法律状态
2019-10-18
授权
授权
2017-06-09
实质审查的生效 IPC(主分类):G06F21/56 申请日:20161215
实质审查的生效
2017-05-17
公开
公开
技术领域
本发明主要涉及到恶意代码的分析检测技术领域,特指一种恶意代码分析中行为能力的度量方法。
背景技术
恶意代码又被称为恶意软件,主要是指能够以某种方式对用户、计算机或者网络造成破坏的软件;其中主要包括病毒、蠕虫、木马,间谍软件等。随着互联网的迅速发展以及恶意代码的不断演变,恶意代码的传播速度大大提高。根据卡巴斯基实验室的报告,去年有百分之五十八的公司电脑遭受过攻击,并且有百分之二十九的公司遭受到网络威胁。目前,恶意代码已经成为了信息安全中最重要的研究课题之一。
恶意代码的分析方法主要有静态分析和动态分析两种,这两种方法各有优缺点。静态分析方法虽然不需要运行恶意代码就可以对其进行分析,但是容易受到混淆技术和变种的影响。动态分析是指在安全可控的环境中观察恶意代码的运行状态,从而能够准确地获得恶意代码的真实意图,这就使得分析不受加密、压缩、变形等技术的影响。
现有技术中针对动态行为的分析很多,深度的动态分析已然成为了一种趋势。然而针对恶意代码行为能力的度量方法更是少之又少。恶意代码的行为能力代表者该恶意代码的行为特征,只有了解了它才能够精确的恶意代码的类别和意图。但是该分析方法的难点在于去除行为记录中与环境相关的因素。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、易实现、效果好的恶意代码分析中行为能力的度量方法。
为解决上述技术问题,本发明采用以下技术方案:
一种恶意代码分析中行为能力的度量方法,其步骤为:
S1:行为类别划分;将恶意代码的常见函数调用API进行分类,将同一类型的函数调用划分到相同的类别当中,形成恶意代码的行为类型集B={b1,b2,...,bN},其中N表示行为类型的数量;
S2:API调用序列提取并去重;记录每个恶意代码样本执行过程中的行为轨迹,从中提取其API调用序列,并进行去重处理;
S3:动态行为频率值统计;按照API的类别划分,对恶意代码样本的API调用序列进行分类统计,获取每个类别的出现频率;
S4:行为频率值归一化;对恶意代码样本的每个行为类别出现频率进行归一化处理;
S5:计算行为类别的广义重要度;
S6:样本和家族行为能力计算;构成单个样本sj(1≤j≤Q)的行为能力
S7:行为能力对比;以
作为本发明的进一步改进:
所述步骤S1中,对于行为类别的定义为:文件类、注册表类、网络类、服务类、进程类;或者,对于行为类别的定义为:文件创建类、文件读操作类、文件写操作类、文件删除类、注册表创建类、注册表修改类、注册表删除类。
作为本发明的进一步改进:
所述步骤S2中,假定输入为API调用序列CI,按照时间顺序进行排序;输出为去重后的API调用序列CO;所述去重方法包括以下步骤:
S201:依次检查每个被调用的API函数ci,其中1≤i≤M,M为API被调用的总数量;
S202:将c1加入CO;
S203:比较当前API调用ci(i>1)其与前一个相同的API调用cj,其中j<i,判断ci与cj是否存在如下的相等项:
a)如果ci是注册表类,判断其键句柄hKey是否相同;
b)如果ci是文件类,判断其文件句柄hFile是否相同;
c)如果ci是资源类或窗口类,判断其资源模块句柄hModule是否相同;
d)如果ci是网络类,判断其通信目标端口port是否相同;
如果步骤S203中的a)、b)、c)、d)四个条件之一成立,则删除ci,否则将ci加入CO。
作为本发明的进一步改进:
在所述步骤S3中,按照步骤S1定义的行为类别,对CO调用序列中的每个API函数统计其出现次数,形成每个样本sj的动态行为频率表f(bi,sj),其中1≤j≤Q,Q为家族样本数量。
作为本发明的进一步改进:
所述步骤S4中归一化处理过程如下所示:
设任意行为类别bi的行为频率最大值为:
fmax(bi)=max(f(bi,s1),f(bi,s2),...,f(bi,sn))
归一后的行为频率计算公式为:
y(bi,sj)=f(bi,sj)/fmax(bi)。
作为本发明的进一步改进:
所述步骤S5中每个行为类别bi的广义重要度定义为δ(bi),计算方式如下:
构造决策系统D=(S,B,V,ψ),其中S={s1,s2,..,sN}是样本集,B={b1,b2,...,bM}是行为属性集,V∈[0,1]是归一化之后的样本行为属性集合,ψ:S×B→V是样本行为属性值的映射关系,样本集S上的家族划分关系为F={f1,f2,...,fr},且有
其中d(bl,fi)表示行为属性bl对应家族fi的属性值范围,
作为本发明的进一步改进:
所述步骤S6中每个样本的行为能力计算为:
根据步骤S4得到的归一化后的行为频率pk=y(bi,sj),对某个行为类别bi,同一家族所有样本的行为频率总和为
则每个家族的行为能力计算为:
与现有技术相比,本发明的优点在于:本发明的恶意代码分析中行为能力的度量方法,具有原理简单、易实现、效果好等优点,它是一种涉及基于动态行为的恶意代码深度分析检测方法,可以应用于大规模恶意代码分析的后端分析检测系统中;本发明的方法能够去除行为记录中与环境相关的因素,从而得到精确的恶意代码的类别和意图。
附图说明
图1是本发明方法的流程示意图。
图2是本发明在具体应用实例中行为记录模版的示意图。
图3是本发明在具体应用实例中API调用序列的示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的恶意代码分析中行为能力的度量方法,是一种基于动态行为轨迹对恶意代码的行为能力进行评估的方法,它的步骤为:
S1:行为类别划分;将恶意代码的常见函数调用(API)进行分类,将同一类型的函数调用划分到相同的类别当中,形成恶意代码的行为类型集B={b1,b2,...,bN},其中N表示行为类型的数量。
在具体应用实例中,行为类别的定义可以根据实际需要来选择。如可以按需定义成不同的粒度,比如可以定义成为:文件类、注册表类、网络类、服务类、进程类等;也可以定义成更加细的粒度,如:文件创建类、文件读操作类、文件写操作类、文件删除类、注册表创建类、注册表修改类、注册表删除类等。
S2:API调用序列提取并去重;记录每个恶意代码样本执行过程中的行为轨迹,从中提取其API调用序列,并进行去重处理。
S3:动态行为频率值统计;按照API的类别划分,对恶意代码样本的API调用序列进行分类统计,获取每个类别的出现频率。
S4:行为频率值归一化;对恶意代码样本的每个行为类别出现频率进行归一化处理。由于各行为类别的频率通常没有公度性、变化范围不相同,且具有对抗性,为了便于相互比较和综合处理,需要进行归一化处理。
S5:计算行为类别的广义重要度;
S6:样本和家族行为能力计算;构成单个样本sj(1≤j≤Q)的行为能力
S7:行为能力对比;以
在具体应用实例中,假定输入为API调用序列GI,按照时间顺序进行排序;输出为去重后的API调用序列CO;优选的去重方法包括以下步骤:
S201:依次检查每个被调用的API函数ci,(1≤i≤M),其中M为API被调用的总数量;
S202:将c1加入CO;
S203:比较当前API调用ci(i>1)其与前一个相同的API调用cj(j<i),判断ci与cj是否存在如下的相等项:
e)如果ci是注册表类,判断其键句柄hKey是否相同;
f)如果ci是文件类,判断其文件句柄hFile是否相同;
g)如果ci是资源类或窗口类,判断其资源模块句柄hModule是否相同;
h)如果ci是网络类,判断其通信目标端口port是否相同;
如果步骤S203中的a)、b)、c)、d)四个条件之一成立,则删除ci,否则将ci加入CO。
接下来在步骤S3中,按照步骤S1定义的行为类别,对CO调用序列中的每个API函数统计其出现次数,形成每个样本sj(1≤j≤Q)的动态行为频率表f(bi,sj),其中Q为家族样本数量。
在具体应用实例中,归一化处理过程如下所示:
设任意行为类别bi的行为频率最大值为:
fmax(bi)=max(f(bi,s1),f(bi,s2),...,f(bi,sn))
归一后的行为频率计算公式为:
y(bi,sj)=f(bi,sj)/fmax(bi)。
在具体应用实例中,在步骤S5中每个行为类别bi的广义重要度定义为δ(bi)计算方式如下:
构造决策系统D=(S,B,V,ψ),其中S={s1,s2,..,sN}是样本集,B={b1,b2,...,bM}是行为属性集,V∈[0,1]是归一化之后的样本行为属性集合,ψ:S×B→V是样本行为属性值的映射关系,样本集S上的家族划分关系为F={f1,f2,...,fr},且有
其中d(bl,fi)表示行为属性bl对应家族fi的属性值范围,
在具体应用实例中,步骤S6中每个样本的行为能力计算为:
根据步骤S4得到的归一化后的行为频率pk=y(bi,sj),对某个行为类别bi,同一家族所有样本的行为频率总和为
则每个家族的行为能力计算为:
为了规范化的描述恶意代码,使用一种行为记录模版将恶意代码(test_virus)的行为轨迹转换为形如图2的xml文件。图中详细记录了恶意代码每个函数每次被调用的时间和路径(如图2);同时,为了使本发明简单易懂,兹以一个优选实施例,并配合图表详细说明如下。
本案例提供的四个样本,分别来自于:
家族Backdoor.Win32.IRCBot的
0CCC7C2FCB57B7B210B2147C4E10D2F2.3B0DDA68.AVML;
2A524444C32EE97406813CF386EFD046.566F3277.AVML;
以及来自于:
家族Backdoor.Win32.LolBot的
0B0B7B09DBC77032F63C17B808EC4749.EE8E0359.AVML;
和0B05FA57742E05298AE557C58DB890A9.6A1C2F81.AVML。
为了描述方便,将两个家族简称为家族1与家族2,个体样本分别称为样本1、2、3和4(本案例的样本由著名的反病毒软件ESET NOD32捕捉而来)。
在具体应用实例中,本方法方法的具体实施过程如下:
S1:根据调用的API的不同,将恶意代码(test_virus)调用的函数分为六类,其中包括文件类、注册表类、网络类、进程类(包括线程类)、系统类和安全类等。
因此恶意代码样例1(test_virus)的行为类型集可以标示为B={b1,b2,...,b6},其中bi顺序的对应前面提到的行为类别。
S2:以图3所示的样本1(test_virus)API序列为例,简明阐述本发明统计API次数的方法。其中属于B中API被调用的总数量为M=589,包含的API为C={c1,c2,...,c41}(41表示不同API的数量)。使用前文原理中的去重方法,符合四种不同条件的行为被认为是重复项。
(1)注册表类:恶意代码(test virus)调用注册表相关函数203次,但通过查询其中的操作″RegOpenKeyExW”、″RegSetValueExA″、″RegOpenKeyExA″、″RegCreateKeyExA″、和″RegQueryValueExW″行为轨迹可知,它们的键句柄hKey存在这大量的重复项。删除其相应的重复记录后,可以得到注册表类共被调用了29次。
(2)文件类:通过判断其文件句柄hFile是否相同,可以得出文件操作调用函数类型″ZwCreateFile″、″CreateFileW″和″ZwWriteFile″的使用数量分别为4,2,1。
(3)系统类:该类中的函数″GetProcAddress″被调用341次,去重后剩下76次。
(4)网络类:该类被调用的函数有″connect″、″WSASocketW″、″access_network″、″WSAStartup″和″dns_query”。由于它们中不存在目标端口port重复的情况,所以其最终的调用次为其实际的记录次数。
S3:按照API的类别{b1,b2,...,b6},统计恶意代码的动态行为出现的频率。
为了比较来自不同家族的恶意代码之间的区别,将来自家族1和2的四个不同恶意代码样本行为动态频率表可以表示为{f(bi,s1),f(bi,s2),f(bi,s3),f(bi,s4)}(见表1,2,3,4),其中bi∈B。
样本1的动态频率表
样本2的动态频率表
Backdoor.Win32.LolBot
样本3的动态频率表
样本4的动态频率表
S4:归一化频率值。
对各个样本的行为动态频率值进行归一化处理,处理公式如下:
y(bi,sj)=f(bi,sj)/fmax(bi)
其中,fmax(bi)=max(f(bi,s1),f(bi,s2),...,f(bi,sn))。归一化后的样本行为频率y(bi,sj)∈[0,1]。
样本行为频率归一化表如下:
S5:计算任意行为属性bi的广义重要度δ(bi):
其中l∈[1,7],r=4。d(bl,fx)表示行为属性bl对应家族fi的属性值范围,
S6:样本和家族行为能力计算;
(1)样本si的行为能力计算,公式如下:
由上一步可知,四个样本的广义重要度δ(bi)=1.因此可以计算
(2)计算行为类别的期望值:
其中,pk=y(bi,sj),M为同一家族所有样本的行为频率总和。
样本家族1:
M1=(m1,1=0.249,m1,2=0.178,m1,3=0.275,m1,4=1.529,m1,5=0.709,m1,6=0.947,m1,7=0.178);
样本家族2:
M2=(m2,1=0.249,m2,2=0.178,m2,3=0.275,m2,4=1.529,m2,5=0.709,m2,6=0.947,m2,7=0.178)。
那么可以计算出两个样本家族的行为类别期望值分别为E1(b1)=8.333,E1(b2)=23.41,E1(b3)=31.691,E1(b4)=14.232,E1(b5)=14.275,E1(b6)=164.914,E1(b7)=2.601,E2(b1)=11.521,E2(b2)=188.608,E2(b3)=219.911,E2(b4)=7,E2(b5)=27.593,E2(b6)=122.524,E2(b7)=24.361。
(3)计算恶意代码家族的行为能力:
其中,f=1或2,由于δ(bi)=1,因此根据上述公式可得恶意家族1的分类能力
S7:本发明为了对比证明不同个体样本和家族样本的能够有效的被行为能力度量和区分,将个体样本1,2,3,4和家族样本的行为能力作如下对比:
(1)个体行为能力平均差异2.7585;
(2)不同恶意代码家族之间的行为能力差异为342.062。这些结果说明本发明的方法能够有效的度量不同个体样本间的差异,且能够准确度量恶意家族的整体行为能力。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
机译: 恶意代码分析模块和恶意代码分析方法
机译: 虚拟环境中防止恶意代码分析的系统
机译: 恢复在虚拟环境中无法执行的恶意代码分析能力的操作系统图像的系统和方法