一种检测恶意代码家族变种及新家族的方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机网络安全技术领域,尤其涉及一种检测恶意代码家族变种及新家族的方法及系统。
【背景技术】
[0002]随着恶意代码的不断进化,一种新的恶意代码出现后,其本身会迅速发展,而且操作系统或者软件升级后,恶意代码也会调整新的攻击方式,产生新的变种。近几年来,这些对用户的信息安全造成巨大破坏的恶意代码家族层出不穷,经统计,截止2014年11月,年度新增家族数量为1032,而新增的家族变种更是数量惊人。现有的恶意代码检测方法都为单一目标样本的检测,并没有对家族样本进行分类,无法直观的发现目前正在活跃的家族并根据其新的变种做好针对性的防御,这不但不能很好的对恶意代码的来源进行追溯,也使得对恶意代码的检测和查杀的过程相对复杂,无法有效的提高处理效率。
【发明内容】
[0003]本发明针对现有对恶意代码检测形式上的不足,提出了一种检测恶意代码家族变种及新家族的方法及系统,首先通过现有的已知恶意代码家族及其样本作为训练数据,提取其中的API函数名和API函数传入的参数,在检测过程中,首先将待检测恶意代码的API函数名与训练数据的函数名进行对比,初步判断其是否属于已知恶意代码家族,然后将待检测恶意代码API函数传入的参数与训练数据的API函数传入的参数进行对比,判断其属于现有家族的变种还是属于新增家族的样本,最终返回检测结果。
[0004]具体
【发明内容】
包括:
一种检测恶意代码家族变种及新家族的方法,其特征在于,包括:
解析现有恶意代码家族中的已知恶意代码样本,提取并存储已知恶意代码样本所包含的API函数名及API函数传入的参数;
提取待检测恶意代码所包含的API函数名,将其分别与各已知恶意代码样本的API函数名进行对比,若API函数名相同个数都不大于规定阈值,则待检测恶意代码为新增恶意代码家族的恶意代码样本;
若存在API函数名相同个数大于规定阈值,则记录对应的已知恶意代码样本,并分别提取记录的已知恶意代码样本与待检测恶意代码相同的API函数名;
提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其分别与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比,若对比结果显示传入的参数完全相同,则该结果对应的已知恶意代码样本的权值加1 ;
若对比结果显示传入的参数不完全相同,则该结果对应的已知恶意代码样本的权值减
1 ;
统计所有已知恶意代码样本的权值,若权值均小于规定数值,则待检测恶意代码为新增恶意代码家族的恶意代码样本; 若存在权值不小于规定数值,则记录权值最大的已知恶意代码样本,且待检测恶意代码为该已知恶意代码样本对应的恶意代码家族的变种。
[0005]进一步地,所述提取已知恶意代码样本所包含的API函数名,和提取待检测恶意代码所包含的API函数名,通过代码静态分析实现,具体为:分析代码的PE结构,得到可选映像头中的数据目录表,并获取其中的导入表地址,从导入表中得到导入的API函数的函数名。
[0006]进一步地,所述提取已知恶意代码样本和待检测恶意代码API传入的参数,通过动态分析实现,具体为:通过API HOOK技术,钩挂API函数,得到传入API函数的参数。
[0007]进一步地,所述若存在API函数名相同个数大于规定阈值,则首先取API函数名相同个数最多的已知恶意代码样本的MD5值或HASH值,与待检测恶意代码的MD5值或HASH值进行比较,若比较结果为相同,则待检测恶意代码与所述最大对比结果对应的已知恶意代码样本相同,此时对待检测恶意代码进行过滤;
若比较结果为不相同,则提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其对应的与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比。
[0008]一种检测恶意代码家族变种及新家族的系统,其特征在于,包括:
现有恶意代码家族解析模块,用于解析现有恶意代码家族中的已知恶意代码样本,提取并存储已知恶意代码样本所包含的API函数名及API函数传入的参数;
API函数名检测模块,用于提取待检测恶意代码所包含的API函数名,将其分别与各已知恶意代码样本的API函数名进行对比,若API函数名相同个数都不大于规定阈值,则待检测恶意代码为新增恶意代码家族的恶意代码样本,若存在API函数名相同个数大于规定阈值,则通过API参数检测模块进行进一步检测;
API参数检测模块,存在API函数名相同个数大于规定阈值时,用于记录对应的已知恶意代码样本,并分别提取记录的已知恶意代码样本与待检测恶意代码相同的API函数名,提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其分别与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比,若对比结果显示传入的参数完全相同,则该结果对应的已知恶意代码样本的权值加1,若对比结果显示传入的参数不完全相同,则该结果对应的已知恶意代码样本的权值减1 ;
权值统计模块,用于统计所有已知恶意代码样本的权值,若权值均小于规定数值,则待检测恶意代码为新增恶意代码家族的恶意代码样本,若存在权值不小于规定数值,则记录权值最大的已知恶意代码样本,且待检测恶意代码为该已知恶意代码样本对应的恶意代码家族的变种。
[0009]进一步地,所述提取已知恶意代码样本所包含的API函数名,和提取待检测恶意代码所包含的API函数名,通过代码静态分析实现,具体为:分析代码的PE结构,得到可选映像头中的数据目录表,并获取其中的导入表地址,从导入表中得到导入的API函数的函数名。
[0010]进一步地,所述提取已知恶意代码样本和待检测恶意代码API传入的参数,通过动态分析实现,具体为:通过API HOOK技术,钩挂API函数,得到传入API函数的参数。
[0011]进一步地,所述若存在API函数名相同个数大于规定阈值,则首先取API函数名相同个数最多的已知恶意代码样本的MD5值或HASH值,与待检测恶意代码的MD5值或HASH值进行比较,若比较结果为相同,则待检测恶意代码与所述最大对比结果对应的已知恶意代码样本相同,此时对待检测恶意代码进行过滤;
若比较结果为不相同,则提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其对应的与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比。
[0012]本发明的有益效果是:
现有的恶意代码检测方法都为单一目标样本的检测,并没有对家族样本进行分类,无法直观的发现目前正在活跃的家族并根据其新的变种做好针对性的防御,这不但不能很好的对恶意代码的来源进行追溯,也使得对恶意代码的检测和查杀的过程相对复杂,无法有效的提高处理效率。针对上述现有对恶意代码检测形式上的不足,本发明提出了一种检测恶意代码家族变种及新家族的方法及系统,将现有恶意代码家族及其已知的恶意代码样本作为训练数据,解析待检测恶意代码的API函数名及其传入的参数,与训练数据的API函数名及其传入的参数进行对比,能够准确的检测出待检测恶意代码属于现有家族中的变种还是属于新增家族的样本。通过本发明的方法,可以有效的将恶意代码按照家族进行划分,并发现新的家族,有利于分析恶意代码作者的意图,为后续对恶意代码进行针对性的防御提供便利,从而有效提高恶意代码检测效率,并且可以通过家族划分来追溯恶意代码来源。本发明首先通过API函数名的对比初步判断待检测恶意代码是否属于现有恶意代码家族,考虑到API函数名可以被修改,为了更精确的判断待检测恶意代码是否属于现有恶意代码家族,增加了 API函数传入参数的对比,使得检测结果更精确可靠。
【附图说明】
[0013]为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[
0014]图1为本发明一种检测恶意代码家族变种及新家族的对比数据提取部分的方法流程图;
图2为本发明一种检测恶意代码家族变种及新家族的检测部分的方法流程图;
图3为本发明一种检测恶意代码家族变种及新家族的系统结构图。
【具体实施方式】
[0015]为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。
[0016]本发明给出了一种检测恶意代码家族变种及新家族的方法实施例,其中对比数据提取部分的方法流程图如图1所示,包括:
5101:解析现有恶意代码家族中的已知恶意代码样本;
5102:提取并存储已知恶意代码样本所包含的API函数名及API函数传入的参数,将这部分数据作为特征,用于后续待检测恶意代码的对比与检测。
[0017]检测部分的方法流程图如图2所示,包括:
S201:提取待检测恶意代码所包含的API函数名,将其分别与各已知恶意代码样本的API函数名进行对比;
例如:待检测恶意代码API函数名有CreateFileA与WriteFileA,查找含有这两个API函数名的已知恶意代码样本,并统计API函数名相同的个数。
[0018]S202:判断API函数名相同个数是否大于规定阈值,若是,则进行步骤S203 ;若否,则进行步骤S211 ;
所述规定阈值可按照如下两种方法进行计算,但不限于如下两种方法:
方法1:根据待检测恶意代码包含API函数名的数量进行计算,例如:令规定阈值为待检测恶意代码所包含的API函数名的个数的80%,一次检测中,待检测恶意代码含有API函数名个数为20,则API函数名相同个数大于16,即为大于规定阈值,此时进行步骤S203,否则进行步骤S211 ;
方法2:根据敏感API函数的数量进行计算,例如:通过分析并获取行为释放频繁的恶意代码包含的API函数,得到敏感API函数名列表,该列表为已知,令规定阈值为所述相同API函数名个数的80%,一次检测中,待检测恶意代码与已知恶意代码样本A的相同API函数名个数为10,则这10个API函数名中敏感API函数名大于8个,即为大于规定阈值,此时进行步骤S203,否则进行步骤S211 ;
5203:记录对应的已知恶意代码样本,并分别提取记录的已知恶意代码样本与待检测恶意代码相同的API函数名;
5204:提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其分别与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比;
5205:判断对比结果显示传入的参数是否完全相同,若是,则进行步骤S206 ;若否,则进行步骤S207 ;
5206:该结果对应的已知恶意代码样本的权值加1 ;
5207:该结果对应的已知恶意代码样本的权值减1 ;
5208:统计所有已知恶意代码样本的权值;
5209:判断权值是否小于规定数值,若是,则进行步骤S211 ;若否,则进行步骤S210 ;
所述规定数值可按照如下两种方法进行计算,但不限于如下两种方法:
方法1:根据待检测恶意代码中所述相同API函数名的个数进行计算,例如:令规定数值为所述相同API函数名个数的60%,一次检测中,待检测恶意代码与已知恶意代码样本B的相同API函数名为20个,根据步骤S205的计算,若已知恶意代码样本B的权值小于12,即为小于规定数值,则进行步骤S211,否则进行步骤S210 ;
方法2:根据动态分析获得参数中的敏感字符串比例进行计算,例如:分析获取行为释放频繁的恶意代码包含的API函数传入的参数,通过动态分析,获取这些参数中的字符串,得到敏感字符串列表,该列表为已知,获取已知恶意代码样本中API函数传入参数的字符串信息,与敏感字符串列表进行匹配,得到相同字符串的个数,并与已知恶意代码样本包含的字符串总量求商,得到已知恶意代码样本中敏感字符串所占的比值,用该比值作为规定数值,假设比值为60%,则在一次检测中,待检测恶意代码与已知恶意代码样本B的相同API函数名为20个,根据步骤S205的计算,若已知恶意代码样本B的权值小于12,即为小于规定数值,则进行步骤S211,否则进行步骤S210 ;
5210:记录权值最大的已知恶意代码样本,且待检测恶意代码为该已知恶意代码样本对应的恶意代码家族的变种;
5211:待检测恶意代码为新增恶意代码家族的恶意代码样本。
[0019]优选地,所述提取已知恶意代码样本所包含的API函数名,和提取待检测恶意代码所包含的API函数名,通过代码静态分析实现,具体为:分析代码的PE结构,得到可选映像头中的数据目录表,并获取其中的导入表地址,从导入表中得到导入的API函数的函数名,例如:分析家族样本的PE结构,找到可选映像头(IMAGE_0PT10NAL_HEADER)中的数据目录表(IMAGE_DATA_DIRECTORY),获取导入表的地址(RVA),从导入表中得到导入的API函数的名称并存入库中。
[0020]优选地,所述提取已知恶意代码样本和待检测恶意代码API传入的参数,通过动态分析实现,具体为:通过API HOOK技术,钩挂API函数,得到传入API函数的参数,例如:通过Η00Κ技术钩挂API函数CreateFileA,当该API函数被调用时,会获取8 个传入的参数,分别为:lpFileName、dwDesiredAccess、dwShareMode、LPSECURITY_ATTRIBUTES、 IpSecurityAttributes、 dwCreat1nDisposit1n、 dwFlagsAndAttributes、hTemplateFile0
[0021]优选地,所述若存在API函数名相同个数大于规定阈值,则首先取API函数名相同个数最多的已知恶意代码样本的MD5值或HASH值,与待检测恶意代码的MD5值或HASH值进行比较,若比较结果为相同,则待检测恶意代码与所述最大对比结果对应的已知恶意代码样本相同,此时对待检测恶意代码进行过滤;
若比较结果为不相同,则提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其对应的与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比。
[0022]本发明还给出了一种检测恶意代码家族变种及新家族的系统实施例,如图3所示,包括:
现有恶意代码家族解析模块301,用于解析现有恶意代码家族中的已知恶意代码样本,提取并存储已知恶意代码样本所包含的API函数名及API函数传入的参数;
API函数名检测模块302,用于提取待检测恶意代码所包含的API函数名,将其分别与各已知恶意代码样本的API函数名进行对比,若API函数名相同个数都不大于规定阈值,则待检测恶意代码为新增恶意代码家族的恶意代码样本,若存在API函数名相同个数大于规定阈值,则通过API参数检测模块进行进一步检测;
API参数检测模块303,存在API函数名相同个数大于规定阈值时,用于记录对应的已知恶意代码样本,并分别提取记录的已知恶意代码样本与待检测恶意代码相同的API函数名,提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其分别与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比,若对比结果显示传入的参数完全相同,则该结果对应的已知恶意代码样本的权值加1,若对比结果显示传入的参数不完全相同,则该结果对应的已知恶意代码样本的权值减1 ;
权值统计模块304,用于统计所有已知恶意代码样本的权值,若权值均小于规定数值,则待检测恶意代码为新增恶意代码家族的恶意代码样本,若存在权值不小于规定数值,则记录权值最大的已知恶意代码样本,且待检测恶意代码为该已知恶意代码样本对应的恶意代码家族的变种。
[0023]进一步地,所述提取已知恶意代码样本所包含的API函数名,和提取待检测恶意代码所包含的API函数名,通过代码静态分析实
现,具体为:分析代码的PE结构,得到可选映像头中的数据目录表,并获取其中的导入表地址,从导入表中得到导入的API函数的函数名。
[0024]进一步地,所述提取已知恶意代码样本和待检测恶意代码API传入的参数,通过动态分析实现,具体为:通过API HOOK技术,钩挂API函数,得到传入API函数的参数。
[0025]进一步地,所述若存在API函数名相同个数大于规定阈值,则首先取API函数名相同个数最多的已知恶意代码样本的MD5值或HASH值,与待检测恶意代码的MD5值或HASH值进行比较,若比较结果为相同,则待检测恶意代码与所述最大对比结果对应的已知恶意代码样本相同,此时对待检测恶意代码进行过滤;
若比较结果为不相同,则提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其对应的与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比。
[0026]本说明书中方法的实施例采用递进的方式描述,对于系统的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本发明提出了一种检测恶意代码家族变种及新家族的方法及系统,将现有恶意代码家族及其已知的恶意代码样本作为训练数据,解析待检测恶意代码的API函数名及其传入的参数,与训练数据的API函数名及其传入的参数进行对比,能够准确的检测出待检测恶意代码属于现有家族中的变种还是属于新增家族的样本。通过本发明的方法,可以有效的将恶意代码按照家族进行划分,并发现新的家族,有利于分析恶意代码作者的意图,为后续对恶意代码进行针对性的防御提供便利,从而有效提高恶意代码检测效率,并且可以通过家族划分来追溯恶意代码来源。本发明首先通过API函数名的对比初步判断待检测恶意代码是否属于现有恶意代码家族,考虑到API函数名可以被修改,为了更精确的判断待检测恶意代码是否属于现有恶意代码家族,增加了 API函数传入参数的对比,使得检测结果更精确可靠。
[0027]虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。
【主权项】
1.一种检测恶意代码家族变种及新家族的方法,其特征在于,包括: 解析现有恶意代码家族中的已知恶意代码样本,提取并存储已知恶意代码样本所包含的API函数名及API函数传入的参数; 提取待检测恶意代码所包含的API函数名,将其分别与各已知恶意代码样本的API函数名进行对比,若API函数名相同个数都不大于规定阈值,则待检测恶意代码为新增恶意代码家族的恶意代码样本; 若存在API函数名相同个数大于规定阈值,则记录对应的已知恶意代码样本,并分别提取记录的已知恶意代码样本与待检测恶意代码相同的API函数名; 提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其分别与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比,若对比结果显示传入的参数完全相同,则该结果对应的已知恶意代码样本的权值加1 ; 若对比结果显示传入的参数不完全相同,则该结果对应的已知恶意代码样本的权值减1 ; 统计所有已知恶意代码样本的权值,若权值均小于规定数值,则待检测恶意代码为新增恶意代码家族的恶意代码样本; 若存在权值不小于规定数值,则记录权值最大的已知恶意代码样本,且待检测恶意代码为该已知恶意代码样本对应的恶意代码家族的变种。2.如权利要求1所述的方法,其特征在于,所述提取已知恶意代码样本所包含的API函数名,和提取待检测恶意代码所包含的API函数名,通过代码静态分析实现,具体为:分析代码的PE结构,得到可选映像头中的数据目录表,并获取其中的导入表地址,从导入表中得到导入的API函数的函数名。3.如权利要求1所述的方法,其特征在于,所述提取已知恶意代码样本和待检测恶意代码API传入的参数,通过动态分析实现,具体为:通过API HOOK技术,钩挂API函数,得到传入API函数的参数。4.如权利要求1所述的方法,其特征在于,所述若存在API函数名相同个数大于规定阈值,则首先取API函数名相同个数最多的已知恶意代码样本的MD5值或HASH值,与待检测恶意代码的MD5值或HASH值进行比较,若比较结果为相同,则待检测恶意代码与所述最大对比结果对应的已知恶意代码样本相同,此时对待检测恶意代码进行过滤; 若比较结果为不相同,则提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其对应的与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比。5.一种检测恶意代码家族变种及新家族的系统,其特征在于,包括: 现有恶意代码家族解析模块,用于解析现有恶意代码家族中的已知恶意代码样本,提取并存储已知恶意代码样本所包含的API函数名及API函数传入的参数; API函数名检测模块,用于提取待检测恶意代码所包含的API函数名,将其分别与各已知恶意代码样本的API函数名进行对比,若API函数名相同个数都不大于规定阈值,则待检测恶意代码为新增恶意代码家族的恶意代码样本,若存在API函数名相同个数大于规定阈值,则通过API参数检测模块进行进一步检测; API参数检测模块,存在API函数名相同个数大于规定阈值时,用于记录对应的已知恶意代码样本,并分别提取记录的已知恶意代码样本与待检测恶意代码相同的API函数名,提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其分别与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比,若对比结果显示传入的参数完全相同,则该结果对应的已知恶意代码样本的权值加1,若对比结果显示传入的参数不完全相同,则该结果对应的已知恶意代码样本的权值减1 ; 权值统计模块,用于统计所有已知恶意代码样本的权值,若权值均小于规定数值,则待检测恶意代码为新增恶意代码家族的恶意代码样本,若存在权值不小于规定数值,则记录权值最大的已知恶意代码样本,且待检测恶意代码为该已知恶意代码样本对应的恶意代码家族的变种。6.如权利要求5所述的系统,其特征在于,所述提取已知恶意代码样本所包含的API函数名,和提取待检测恶意代码所包含的API函数名,通过代码静态分析实现,具体为:分析代码的PE结构,得到可选映像头中的数据目录表,并获取其中的导入表地址,从导入表中得到导入的API函数的函数名。7.如权利要求5所述的系统,其特征在于,所述提取已知恶意代码样本和待检测恶意代码API传入的参数,通过动态分析实现,具体为:通过API HOOK技术,钩挂API函数,得到传入API函数的参数。8.如权利要求5所述的系统,其特征在于,所述若存在API函数名相同个数大于规定阈值,则首先取API函数名相同个数最多的已知恶意代码样本的MD5值或HASH值,与待检测恶意代码的MD5值或HASH值进行比较,若比较结果为相同,则待检测恶意代码与所述最大对比结果对应的已知恶意代码样本相同,此时对待检测恶意代码进行过滤; 若比较结果为不相同,则提取待检测恶意代码中所述相同API函数名对应的API函数传入的参数,并将其对应的与各记录的已知恶意代码样本中API函数名对应的API函数传入的参数进行对比。
【专利摘要】本发明公开了一种检测恶意代码家族变种及新家族的方法及系统,首先通过现有的已知恶意代码家族及其样本作为训练数据,提取其中的API函数名和API函数传入的参数,在检测过程中,将待检测恶意代码的API函数名与训练数据的函数名进行对比,初步判断其是否属于已知恶意代码家族,然后将待检测恶意代码API函数传入的参数与训练数据的API函数传入的参数进行对比,判断其属于现有家族的变种还是属于新增家族的样本,最终返回检测结果。本发明弥补了现有恶意代码检测都为单一目标样本的检测,并没有对家族样本进行分类,无法直观的发现目前正在活跃的家族并根据其新的变种做针对性的防御的不足,且检测结果精确,可靠性高。
【IPC分类】G06F21/56
【公开号】CN105488409
【申请号】CN201410845278
【发明人】贾琼, 李柏松
【申请人】哈尔滨安天科技股份有限公司
【公开日】2016年4月13日
【申请日】2014年12月31日