首页 / 专利库 / 人工智能 / 人工神经网络 / 自组织映射 / 恶意软件检测方法和装置

恶意软件检测方法和装置

阅读:1025发布:2020-07-11

专利汇可以提供恶意软件检测方法和装置专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种恶意 软件 检测方法和装置。涉及 计算机系统 安全领域;解决了动态检测方法可扩展性不足及检测结果欠准确的问题。该方法包括:计算待检测 恶意软件 的唯一数字签名;计算所述待检测恶意软件的内容指纹向量;构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集;根据所述目标内容指纹向量查询集, 访问 预置的 位置 敏感哈希表数据结构,获取候选结果集;从所述候选结果集中选择所述待检测恶意软件的变种软件。本发明提供的技术方案适用于恶意软件变种防护,实现了基于位置敏感哈希表的恶意软件检测。,下面是恶意软件检测方法和装置专利的具体信息内容。

1.一种恶意软件检测方法,其特征在于,包括:
计算待检测恶意软件的唯一数字签名;
计算所述待检测恶意软件的内容指纹向量;
构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集;
根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集;
从所述候选结果集中选择所述待检测恶意软件的变种软件;
其中,所述计算所述待检测恶意软件的内容指纹向量,包括:
将所述待检测恶意软件的二进制文件映射为BMP格式的灰度图像;
计算所述灰度图像的64维的灰度图像特征向量
对所述灰度图像特征向量进行归一化处理,得到所述待检测恶意软件的内容指纹向量。
2.根据权利要求1所述的恶意软件检测方法,其特征在于,该方法还包括:
根据恶意软件语料库中的恶意软件样本建立位置敏感哈希表数据结构。
3.根据权利要求2所述的恶意软件检测方法,其特征在于,所述根据恶意软件语料库中的恶意软件样本建立位置敏感哈希表数据结构包括:
a.从所述恶意软件语料库中获取一恶意软件样本,生成该恶意软件的唯一数字签名;
b.将所述恶意软件样本的二进制文件映射为BMP格式的灰度图像;
c.将所述恶意软件样本的数字签名和灰度图像一一对应的存储至恶意软件内容图像库;
d.计算所述灰度图像的64维的灰度图像特征向量;
e.对所述灰度图像特征向量进行归一化处理,得到所述恶意软件样本的恶意软件内容指纹向量;
f.将所述恶意软件样本的内容指纹向量与所述恶意软件样本的数字签名和灰度图像对应存储至所述恶意软件内容图像库中;
g.从位置敏感哈希函数族中选取k个哈希函数h1,h2,…,hk构成敏感哈希函数族,其中,k为自然数,对于恶意软件内容图像库中的每一个恶意软件内容指纹向量p,计算H(p)=(h1(p),h2(p),…,hk(p)),在哈希表数据结构桶值为H(p)的链表中存储点p表项,所述哈希表数据结构中,每个桶都包含一个桶标识和表项链表;
h.建立位置敏感哈希表数据结构,存储哈希桶的值及相关信息;
i.重复步骤a至h对所述恶意软件语料库中的恶意软件样本进行遍历,直至遍历完成为止,得到最终的位置敏感哈希表数据结构。
4.根据权利要求3所述的恶意软件检测方法,其特征在于,根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集包括:
使用步骤g提供的敏感哈希函数族分别计算所述目标内容指纹向量查询集的位置敏感哈希值;
在所述位置敏感哈希表数据结构中查询与所述位置敏感哈希值相对应的哈希桶,从命中的哈希桶中返回恶意软件内容指纹集,将所述恶意软件内容指纹集作为候选结果集。
5.根据权利要求4所述的恶意软件检测方法,其特征在于,从所述候选结果集中选择所述待检测恶意软件的变种软件包括:
选择所述候选结果集中的全部软件作为所述待检测恶意软件的变种软件。
6.根据权利要求4所述的恶意软件检测方法,其特征在于,从所述候选结果集中选择所述待检测恶意软件的变种软件包括:
计算所述候选结果集中各恶意软件与所述待检测恶意软件的内容指纹向量之间的空间距离;
选择空间距离最小的一个或多个恶意软件作为所述待检测恶意软件的变种软件。
7.根据权利要求1所述的恶意软件检测方法,其特征在于,所述从所述候选结果集中选择所述待检测恶意软件的变种软件的步骤之后,还包括:
输出所述待检测恶意软件的变种软件的唯一数字签名和内容指纹向量。
8.一种恶意软件检测装置,其特征在于,包括:
数字签名计算单元,用于计算待检测恶意软件的唯一数字签名;
内容指纹向量计算单元,用于计算所述待检测恶意软件的内容指纹向量;
查询集生成单元,用于构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集;
结果集获取单元,用于根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集;
变种选择单元,用于从所述候选结果集中选择所述待检测恶意软件的变种软件;
其中,所述计算所述待检测恶意软件的内容指纹向量,包括:
将所述待检测恶意软件的二进制文件映射为BMP格式的灰度图像;
计算所述灰度图像的64维的灰度图像特征向量;
对所述灰度图像特征向量进行归一化处理,得到所述待检测恶意软件的内容指纹向量。
9.根据权利要求8所述的恶意软件检测装置,其特征在于,该装置还包括:
位置敏感哈希表维护单元,用于根据恶意软件语料库中的恶意软件样本建立位置敏感哈希表数据结构。
10.根据权利要求9所述的恶意软件检测装置,其特征在于,所述位置敏感哈希表维护单元包括:
数字签名生成模,用于从所述恶意软件语料库中获取一恶意软件样本,生成该恶意软件的唯一数字签名;
灰度图像生成模块,用于将所述恶意软件样本的二进制文件映射为BMP格式的灰度图像;
存储模块,用于将所述恶意软件样本的数字签名和灰度图像一一对应的存储至恶意软件内容图像库;
灰度图像特征向量计算模块,用于计算所述灰度图像的64维的灰度图像特征向量;
归一化处理模块,用于对所述灰度图像特征向量进行归一化处理,得到所述恶意软件样本的恶意软件内容指纹向量;
第二存储模块,用于将所述恶意软件样本的内容指纹向量与所述恶意软件样本的数字签名和灰度图像对应存储至所述恶意软件内容图像库中;
敏感哈希函数族选择模块,用于从位置敏感哈希函数族中选取k个哈希函数h1,h2,…,hk构成敏感哈希函数族,其中,k为自然数,对于恶意软件内容图像库中的每一个恶意软件内容指纹向量p,计算H(p)=(h1(p),h2(p),…,hk(p)),在哈希表数据结构桶值为H(p)的链表中存储点p表项,所述哈希表数据结构中,每个桶都包含一个桶标识和表项链表;
敏感哈希表建立模块,用于建立位置敏感哈希表数据结构,存储哈希桶的值及相关信息;
组织模块,用于组织所述位置敏感哈希表维护模块的其他各单元对所述恶意软件语料库中的恶意软件样本进行遍历,直至遍历完成为止,得到最终的位置敏感哈希表数据结构。

说明书全文

恶意软件检测方法和装置

技术领域

[0001] 本发明涉及计算机系统安全领域,尤其涉及一种可检测恶意软件变种的恶意软件检测方法和装置。

背景技术

[0002] 随着计算机技术和互网络应用的快速发展,信息安全变得愈发重要,信息安全也成为一个备受关注的重要研究领域。面对层出不穷的安全问题和爆炸式增长的恶意软件及其变种,需要不断完善和提高检测技术,做到及时准确的检测和查杀。
[0003] 恶意软件是一段计算机指令,由攻击者通过系统安全漏洞或其他方法植入被攻击值的计算机中,使得被攻击者的计算机按照攻击者的意愿执行任务,任何能对计算机系统信息安全造成威胁的计算机指令序列和数据都可以归属于恶意软件。常见的恶意软件有:漏洞攻击程序、计算机病毒、蠕虫、恶意移动脚本、后、木、RootKit、间谍软件以及更深层次的BIOS木马、恶意CPU微代码等,当然还包括以上类型恶意软件组合成的恶意软件。
[0004] 在恶意软件检测方面,主流的算法主要分为两类:基于恶意软件二进制文件的静态检测和基于恶意软件运行时行为的动态检测。静态检测方法通过分析恶意软件的静态文件结构、二进制字节码、反汇编后的代码、反汇编后的静态系统调用等获取恶意软件的静态特征,利用分类算法区分正常软件与恶意软件,实现已知和未知恶意软件的检测。基于静态特征的恶意软件检测通常容易受代码混淆技术(加壳、变形、多态技术等)的影响,提高逆向难度,使其几乎很难逆向或是不可能(成本因素),而且静态检测方法没有真实地运行软件,判断是否为恶意的软件行为没有展现,误报和漏报都比较明显。动态检测方法主要原理是将待检目标程序放置在一个沙箱或虚拟机环境中,通过监控目标程序运行过程的行为来判断是否为恶意程序。动态检测方法又分为粗粒度方法和细粒度方法。粗粒度方法通过运行恶意软件分析其行为所对应API调用序列来进行恶意软件检测,细粒度方法通过恶意软件的运行时动态指令序列来进行检测。与静态检测方法相比,动态检测方法更为有效,无需考虑解包、解密等复杂过程。然而,动态检测方法是时间密集型和资源消耗型的方法,虚拟机执行包括解包、执行、全路径探索来捕捉调用序列、退出等过程,动态检测方法平均分析时间为3~5分钟,即使过程压缩到30s,2010年Symantec的恶意语料库也需要花费254年处理一遍。
[0005] 因此,动态检测方法可扩展性不足。而且,由于激发条件不能满足,一些恶意软件的行为不能表现出来,无法及时检测到恶意软件,检测结果欠准确。

发明内容

[0006] 本发明提供了一种恶意软件检测方法和装置,解决了动态检测方法可扩展性不足及检测结果欠准确的问题。
[0007] 一种恶意软件检测方法,包括:
[0008] 计算待检测恶意软件的唯一数字签名;
[0009] 计算所述待检测恶意软件的内容指纹向量;
[0010] 构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集;
[0011] 根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集;
[0012] 从所述候选结果集中选择所述待检测恶意软件的变种软件。
[0013] 优选的,该方法还包括:
[0014] 根据恶意软件语料库中的恶意软件样本建立位置敏感哈希表数据结构。
[0015] 优选的,所述根据恶意软件语料库中的恶意软件样本建立位置敏感哈希表数据结构包括:
[0016] a.从所述恶意软件语料库中获取一恶意软件样本,生成该恶意软件的唯一数字签名;
[0017] b.将所述恶意软件样本的二进制文件映射为BMP格式的灰度图像;
[0018] c.将所述恶意软件样本的数字签名和灰度图像一一对应的存储至恶意软件内容图像库;
[0019] d.计算所述灰度图像的64维的灰度图像特征向量
[0020] e.对所述灰度图像特征向量进行归一化处理,得到所述恶意软件样本的恶意软件内容指纹向量;
[0021] f.将所述恶意软件样本的内容指纹向量与所述恶意软件样本的数字签名和灰度图像对应存储至所述恶意软件内容图像库中;
[0022] g.从位置敏感哈希函数族中选取k个哈希函数h1,h2,…,hk构成敏感哈希函数族,其中,k为自然数。对于恶意软件内容图像库中的每一个恶意软件内容指纹向量p,计算H(p)=(h1(p),h2(p),…,hk(p)),在哈希表数据结构桶值为H(p)的链表中存储点p表项,所述哈希表数据结构中,每个桶都包含一个桶标识和表项链表;
[0023] h.建立位置敏感哈希表数据结构,存储所述哈希桶的值及相关信息;
[0024] i.重复步骤a至h对所述恶意软件语料库中的恶意软件样本进行遍历,直至遍历完成为止,得到最终的位置敏感哈希表数据结构。
[0025] 优选的,根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集包括:
[0026] 使用步骤g提供的敏感哈希函数族分别计算所述目标内容指纹向量查询集的位置敏感哈希值;
[0027] 在所述位置敏感哈希表数据结构中查询与所述位置敏感哈希值相对应的哈希桶,从命中的哈希桶中返回恶意软件内容指纹集,将所述恶意软件内容指纹集作为候选结果集。
[0028] 优选的,从所述候选结果集中选择所述待检测恶意软件的变种软件包括:
[0029] 选择所述候选结果集中的全部软件作为所述待检测恶意软件的变种软件。
[0030] 优选的,从所述候选结果集中选择所述待检测恶意软件的变种软件包括:
[0031] 计算所述候选结果集中各恶意软件与所述待检测恶意软件的内容指纹向量之间的空间距离;
[0032] 选择空间距离最小的一个或多个恶意软件作为所述待检测恶意软件的变种软件。
[0033] 优选的,所述从所述候选结果集中选择所述待检测恶意软件的变种软件的步骤之后,还包括:
[0034] 输出所述待检测恶意软件的变种软件的唯一数字签名和内容指纹向量。
[0035] 本发明还提供了一种恶意软件检测装置,包括:
[0036] 数字签名计算单元,用于计算待检测恶意软件的唯一数字签名;
[0037] 内容指纹向量计算单元,用于计算所述待检测恶意软件的内容指纹向量;
[0038] 查询集生成单元,用于构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集;
[0039] 结果集获取单元,用于根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集;
[0040] 变种选择单元,用于从所述候选结果集中选择所述待检测恶意软件的变种软件。
[0041] 优选的,该装置还包括:
[0042] 位置敏感哈希表维护单元,用于根据恶意软件语料库中的恶意软件样本建立位置敏感哈希表数据结构。
[0043] 优选的,所述位置敏感哈希表维护单元包括:
[0044] 数字签名生成模,用于从所述恶意软件语料库中获取一恶意软件样本,生成该恶意软件的唯一数字签名;
[0045] 灰度图像生成模块,用于将所述恶意软件样本的二进制文件映射为BMP格式的灰度图像;
[0046] 存储模块,用于将所述恶意软件样本的数字签名和灰度图像一一对应的存储至恶意软件内容图像库;
[0047] 灰度图像特征向量计算模块,用于计算所述灰度图像的64维的灰度图像特征向量;
[0048] 归一化处理模块,用于对所述灰度图像特征向量进行归一化处理,得到所述恶意软件样本的恶意软件内容指纹向量;
[0049] 第二存储模块,用于将所述恶意软件样本的内容指纹向量与所述恶意软件样本的数字签名和灰度图像对应存储至所述恶意软件内容图像库中;
[0050] 敏感哈希函数族选择模块,用于从位置敏感哈希函数族中选取k个哈希函数h1,h2,…,hk构成敏感哈希函数族,其中,k为自然数。对于恶意软件内容图像库中的每一个恶意软件内容指纹向量p,计算H(p)=(h1(p),h2(p),…,hk(p)),在哈希表数据结构桶值为H(p)的链表中存储点p表项,所述哈希表数据结构中,每个桶都包含一个桶标识和表项链表;
[0051] 敏感哈希表建立模块,用于建立位置敏感哈希表数据结构,存储所述哈希桶的值及相关信息;
[0052] 组织模块,用于组织所述位置敏感哈希表维护模块的其他各单元对所述恶意软件语料库中的恶意软件样本进行遍历,直至遍历完成为止,得到最终的位置敏感哈希表数据结构。
[0053] 本发明提供了一种恶意软件检测方法和装置,计算待检测恶意软件的唯一数字签名,然后计算所述待检测恶意软件的内容指纹向量,再构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集,根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集,最后从所述候选结果集中选择所述待检测恶意软件的变种软件。实现了基于位置敏感哈希表的恶意软件检测,解决了动态检测方法可扩展性不足及检测结果欠准确的问题。附图说明
[0054] 图1是本发明的实施例一提供的一种恶意软件检测系统的一种结构示意图;
[0055] 图2是根据本发明的实施例一的B2M算法的一种流程图
[0056] 图3是根据本发明的实施例一的目标恶意软件内容指纹向量查询集获取方法的一种流程图;
[0057] 图4是根据本发明的实施例一的恶意软件变种检测装置的一种结构示意图;
[0058] 图5是根据本发明的实施例一的恶意软件内容指纹获取方法的一种流程图;
[0059] 图6是根据本发明的实施例一的位置敏感哈希索引结构构建方法的一种流程图;
[0060] 图7是根据本发明的实施例一的恶意软件检测方法的一种流程图;
[0061] 图8是本发明的实施例二提供的一种恶意软件检测方法的流程图;
[0062] 图9是本发明的实施例二提供的一种恶意软件检测装置的结构示意图;
[0063] 图10是图9中位置敏感哈希表维护单元906的结构示意图。

具体实施方式

[0064] 动态检测方法可扩展性不足。而且,由于激发条件不能满足,一些恶意软件的行为不能表现出来,无法及时检测到恶意软件,检测结果欠准确。
[0065] 为了解决上述问题,本发明的实施例提供了一种恶意软件检测方法。下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本发明的实施例中的实施例及实施例中的特征可以相互任意组合。
[0066] 首先结合附图,对本发明的实施例一进行说明。
[0067] 如图1所示,本发明实施例提供了一种恶意软件检测系统,其包括如下:
[0068] 上传服务器、恶意软件数据库、索引服务器、计算服务器、以及恶意软件检测前端服务器。
[0069] 在建立恶意软件索引库时,上传用户向上传服务器上传待存储的恶意软件,上传服务器计算该恶意软件的内容指纹向量,并将该恶意软件的内容指纹向量发送给恶意软件数据库。本发明实施例也可以通过其他来源批量获取恶意软件后存储于上传服务器中,本发明实施例对此并不作限定。上传服务器使用消息摘要算法(例如MD5算法,SHA-1算法等)计算恶意软件的数字签名,访问恶意软件数据库,判断该数据签名的恶意软件是否已经存在,若存在,则放弃对该恶意软件的处理,返回。
[0070] 若不存在,首先使用B2M算法将恶意软件的可执行文件映射为BMP格式的灰度图像,使用BMP格式的目的是为了保留原始恶意软件的二进制文件的特征,因此采用无压缩的BMP格式,本发明实施例中采用的图像格式不局限与BMP格式,也可以采用一些无损压缩格式,例如PNG格式。具体流程如下:对于给定的恶意软件可执行文件,即二进制文件,读取8位为一个无符号的整形(范围为0~255),固定的行宽为一个向量,整个文件最后生成一个二维数组,也称之为灰度矩阵。由于此数组中每个元素的范围都是取值为[0,255](0表示黑色,255表示白色),将此数组可视化为一个灰阶图像,图像的宽度和高度取决于文件大小,图2展示了熊猫烧香恶意软件可视化流程。
[0071] 进一步地,基于统计的方法,使用亮度直方图(Intensity Histogram)提取技术处理灰度图像特征,并进行降维处理,最后输出64维的灰度图像特征向量;同时,基于人眼视觉敏感程度的非均匀量化技术,使用响应的归一化算法对图像特征向量进行归一化处理,归一化后的64维图像特征向量作为恶意软件内容指纹。归一化的目的是,减少某些特征的影响被放大而某些特征的影响被忽略的情形。归一化算法过程:对于选定的图像特征向量集合,首先进行对各属性归一化处理,归一化因子为 使用θk将特征向量p的第k维归一化,若归一化后的维度值大于1,默认设置为1。
[0072] 恶意软件数据库,当接受到的内容是恶意软件的数字签名,则查找恶意软件数据库,判断是否已经存在该恶意软件。若存在,则向上传服务器返回存在该恶意软件,否则返回不存在。而当接受到的内容是恶意软件的内容指纹时,利用位置哈希函数对该内容指纹进行哈希操作(根据数据库服务器的负载情况,该过程也可以由上传服务器处理),将哈希结果、数字签名和内容指纹作为索引信息发送给索引服务器,同时在数据库中存储数字签名、内容指纹、哈希结果和恶意软件二进制可执行程序。
[0073] 进一步地,当需要进行恶意软件变种检测时,检测用户向恶意软件变种检测前端服务器请求恶意软件变种检测,恶意软件变种检测前端服务器将检测用户上传的恶意软件二进制可执行程序样本发送给计算服务器,以请求返回恶意软件变种列表。
[0074] 进一步地,计算服务器在接收到检测用户上传的恶意软件之后,首先计算该恶意软件的数字签名,根据数字签名访问恶意软件数据库判断是否存在该恶意软件,若存在,从恶意软件数据库返回该恶意软件的内容指纹。否则,使用B2M算法映射该恶意软件为BMP格式的灰度图像,然后基于该图像提取恶意软件的内容指纹。
[0075] 进一步地,计算服务器计算内容指纹q的最近邻集合,选取一定规模的q最近邻点集,与q一起作为目标内容指纹向量查询集。计算过程如图3所示:首先建立关于半径cr(到中心点q),64维高斯分布,从实验中得出,高维高斯分布的概率密度只集中于一个远离中心、厚度较小的环形,因此从该环形上随机取一定规模的关于q的最近邻随机采样点,输出目标内容指纹向量查询集。其中,c是一个整数,根据需要选择;r是最近邻的查询的半径。
[0076] 进一步地,计算服务器分别计算目标内容指纹向量查询集的位置敏感哈希值,并向索引服务器查询与该输入的恶意软件相似的恶意软件的内容指纹。其中,相似的内容指纹的哈希值与输入内容指纹的哈希值相同,即落入同一个哈希桶中。
[0077] 在计算服务器查找到与检测用户输入的恶意软件内容指纹相似的内容指纹之后,向恶意软件变种检测前端服务器返回相似的恶意软件数字签名或数字签名列表,以便显示给检测用户。
[0078] 检测用户可以通过恶意软件数字签名或数字签名列表访问恶意软件数据库获取相关信息。
[0079] 在本实施例中,近似检测单元和精确检测单元利用恶意软件映射的BMP格式的灰度图像,图像本身的内容特征作为恶意软件内容指纹,其内容指纹的相似度取决于图像本身的相似度,即恶意软件之间的相似度,越是相似的图像,其内容指纹的相似度也越大,或者说对应的空间距离(海明距离或欧氏距离)越短,这样,具有相近的恶意软件二进制可执行文件,很大程度上是变种,从而解决了恶意软件变种检测问题,使得能够准确地识别出检测用户所提供的恶意软件是否是哪个或哪些恶意软件的变种。
[0080] 如图4所示,内容指纹提取单元包括:B2M映射模块,用于将恶意软件二进制可执行文件映射为BMP格式的灰度图像;图像特征提取模块:基于统计原理,使用亮度直方图技术提取灰度图像的特征。其过程是,对一幅灰度图像各个灰度的像素进行计数,得到一张灰度分布数组,也称为灰度矩阵。例如,8位量化的灰度图像统计结果就是256个值,分别代表0-255每个灰度像素的数量,而一般人眼能够分辨的只有32个级别,人眼对光的强度变化非常敏感,而对颜色的变化就比较弱。为了降低维度,本发明对灰度图片的256个特征维度进行降维压缩为64维。需要注意的是,图像特征提取模块使用亮度直方图技术提取灰度图像特征的方式仅是一种示例,本实施例不仅限于此,例如,也可以使用SURF、SIFT、PCA等算法进行图像特征抽取;归一化模块:为了避免出现某些特征的影响被放大而某些特征的影响被忽略的情形,配合基于人眼视觉敏感程度的非均匀量化技术,使用归一化算法将图像特征归一化处理,最后输出恶意软件二进制可执行程序的内容指纹向量。图5展示了恶意软件的内容指纹提取流程。
[0081] 哈希映射单元包括:哈希函数选取模块:用于建立位置敏感哈希函数族,从中选择k个位置敏感哈希函数,其中,k为自然数;桶标识(k维的位置敏感哈希值)计算模块:用于分别使用k个位置敏感哈希函数对该恶意软件的内容指纹向量进行哈希操作,得到k个哈希值,构成k维的哈希桶地址。在本实施例中,采用了基于熵的位置敏感哈希技术的内容指纹索引方案,将检索的时间复杂度降低到亚线性级别,同时将将检索的空间复杂度降低到线性级别。
[0082] 哈希表建立单元包括:数字签名计算模块:用于标识恶意软件二进制可执行文件的唯一性,过滤重复的恶意软件。其过程是使用加密函数中的单项哈希函数,例如MD5,SHA-1等,作用于恶意软件M,它返回一个固定长度的哈希值H(M)作为M的独一无二的“数字签名”,从而能保证恶意软件的完整性和惟一性;内容指纹提取单元:用于提取恶意软件的内容指纹;哈希映射单元:用于将内容指纹映射为位置敏感桶标识(k维的位置敏感哈希值);
哈希桶存储模块:用于建立哈希表数据结构,并将恶意软件二进制可执行文件的数字签名、内容指纹和桶标识(k维的位置敏感哈希值)作为一个表项存储到哈希表数据结构中,为恶意软件变种近似检测单元提供哈希表数据结构,由于本发明使用的是基于熵的位置敏感哈希算法,因此,建立1个或若干个哈希表都可以实现建立大量哈希表的检索性能和精度,在时间性能和空间性能远超过传统的位置敏感哈希算法。本发明的实施例使用一个哈希表的数据结构,但不局限于一个哈希表数据结构。图6展示了哈希表数据结构建立流程。
[0083] 近似检测单元包括:目标内容指纹向量查询集构造模块,本发明使用基于熵的LSH方法(Entropy LSH,ELSH)。ELSH方法使用与LSH相同的哈希函数和索引方法。然而,该方法使用不同的查询过程,即需要构建目标内容指纹向量查询集。除了使用待检测的恶意软件内容指纹向量,还需要指纹向量的最近邻点(偏移点),然后查询这些点映射的哈希桶。其核心思想是,空间中距离范数相近的点映射到与查询点相同的桶中,或映射到与最近邻点相同的桶中。通过引入最近邻点查询的方法,在保证检索精度的同时,大大的减少了哈希表数量,很大程度上降低原始LSH索引结构的空间需求;哈希映射单元:用于将内容指纹映射为位置敏感桶标识(k维的位置敏感哈希值);查找模块:用于在哈希表数据结构中查找给定的哈希值对应的哈希桶,其中,上述哈希表数据结构中,每个桶都包含一个桶标识(k维的位置敏感哈希值)和表项链表。链表中,每个表项记录了一个恶意软件内容指纹和恶意软件数字签名;添加模块:用于在存在记录有相应的哈希桶表项时,将查找到的表项所记录的恶意软件的二进制可执行文件的数字签名和内容指纹添加到候选结果集中。在本实施例中,候选结果集将提交给精确检测单元,用于进一步提高了查找的准确性。
[0084] 精确检测单元包括:距离计算模块,用于计算待检测恶意软件的内容指纹与每个候选恶意软件内容指纹之间的空间距离。用于按照空间距离的大小来识别候选恶意软件的内容指纹与待检测恶意软件内容指纹的相似度,其中,空间距离越小的候选恶意软件内容指纹与待检测恶意软件内容指纹的相似度越高。在实施例中,通过采用空间距离来检测相似恶意软件映射的BMP格式的灰度图像,大大提高了检测的准确性。本实施例中的空间距离可以包括但不限于:海明距离和欧式距离;选取模块,用于在按照空间距离的大小来识别候选恶意软件的内容指纹与待检测恶意软件内容指纹的相似度之后,按照空间距离的大小输出Top-k候选恶意软件的数字签名,如果候选集的数据量小于Top-k,则全部输出,省略距离计算和选取过程,否则选择Top-k个最相似的恶意软件数字签名进行输出。在实施例中,通过按照相似度来输出相似恶意软件数字签名,大大提高了用户的体验度,而且检测用户可以根据恶意软件数字签名访问恶意软件数据库获取相应的样本及其他信息。
[0085] 图7展示了基于ELSH算法的恶意软件变种检测流程,其中包括近似检测和精确检测单元。
[0086] 在本发明的实施例中,将恶意软件二进制可执行程序映射为灰度图像,为了保留该二进制文件的原始特征,故采用无压缩的BMP格式(也可以采用一些无损压缩格式,例如PNG格式),利用图像本身的内容特征作为恶意软件二进制可执行程序的内容指纹。其内容指纹的相似度取决于图像本身的相似度,即越是相似的图像,其内容指纹的相似度也越大,或者说对应的空间距离(海明距离或欧氏距离)越短,这样,根据相似性可以判断出恶意软件之间的变种关系;从而解决了现有技术中的恶意软件变种方法所存在的高检测代价和误判率问题,使得能够准确地识别出待检测恶意软件的变种及特征。
[0087] 在此基础上,本发明的实施例还提出了基于熵位置敏感哈希技术的恶意软件索引方案,将检索的时间复杂度降低到亚线性级别,将检索的空间复杂度降低到线性级别,并且能将结果按照恶意软件变种相似程度进行排序输出。此外,采用亮度直方图的统计值作为图像内容指纹的基础特征,配合基于人眼视觉敏感程度的非均匀量化(归一化算法)技术,对不同灰度颜色、不同缩放比例均有很好的适应性,显然,对恶意软件的变种具有良好的区分度。
[0088] 在本发明的实施例中,首先将恶意软件可执行的二进制代码映射为BMP格式的灰度图像,利用图像内容的特征作为恶意软件的内容指纹,其指纹的相似度取决于图像本身的相似度,即越是相似的图像,其指纹的相似度也越大,或者说对应的空间距离(海明距离或欧氏距离)越短,这样,恶意软件及其变种具有相近的图像指纹,从而解决了恶意软件变种检测问题,使得能够准确地识别出待检测恶意软件的变种。在此基础上,本发明还提出了基于熵位置敏感哈希技术的恶意软件(内容指纹)索引方案,将检索的时间复杂度降低到亚线性级别,将检索的空间复杂度降低到线性级别,并且能将变种结果按照相似程度进行排序输出。此外,采用亮度直方图的统计值作为BMP格式的灰度图像的基础特征,配合基于人眼视觉敏感程度的非均匀量化(归一化)技术,所得到的内容指纹能够很好的区分图像纹理特征的变化,对于恶意软件的变种具有很好的区分度。而且,亮度直方图算法简单,特征提取速度快,其精度与经典的SIFT算法相差不多,但速度远优于SIFT算法。
[0089] 下面结合附图,对本发明的实施例二进行说明。
[0090] 本发明实施例提供了一种恶意软件检测方法,使用该方法完成对恶意软件变种的检测的流程如图8所示,包括:
[0091] 步骤801、根据恶意软件语料库中的恶意软件样本建立位置敏感哈希表数据结构;
[0092] 参照图7所示流程,本步骤具体包括:
[0093] a.从所述恶意软件语料库中获取一恶意软件样本,生成该恶意软件的唯一数字签名;
[0094] b.将所述恶意软件样本的二进制文件映射为BMP格式的灰度图像;
[0095] c.将所述恶意软件样本的数字签名和灰度图像一一对应的存储至恶意软件内容图像库;
[0096] d.计算所述灰度图像的64维的灰度图像特征向量;
[0097] e.对所述灰度图像特征向量进行归一化处理,得到所述恶意软件样本的恶意软件内容指纹向量;
[0098] f.将所述恶意软件样本的内容指纹向量与所述恶意软件样本的数字签名和灰度图像对应存储至所述恶意软件内容图像库中;
[0099] g.从位置敏感哈希函数族中选取k个哈希函数h1,h2,…,hk构成敏感哈希函数族,其中,k为自然数。对于恶意软件内容图像库中的每一个恶意软件内容指纹向量p,计算H(p)=(h1(p),h2(p),…,hk(p)),在哈希表数据结构桶值为H(p)的链表中存储点p表项,所述哈希表数据结构中,每个桶都包含一个桶标识和表项链表;
[0100] h.建立位置敏感哈希表数据结构,存储所述哈希桶的值及相关信息;
[0101] i.重复步骤a至h对所述恶意软件语料库中的恶意软件样本进行遍历,直至遍历完成为止,得到最终的位置敏感哈希表数据结构。
[0102] 需要说明的是,本步骤与图8所示流程中的其他步骤并无严格时序顺序,位置敏感哈希表数据结构可根据实际需要由用户触发更新重新构造或在恶意软件语料库发生变化时自动触发更新重新构造。
[0103] 步骤802、计算待检测恶意软件的唯一数字签名;
[0104] 计算方式参照本发明的实施例一,在此不重复说明。
[0105] 步骤803、计算所述待检测恶意软件的内容指纹向量;
[0106] 本步骤中,计算方式参照本发明的实施例一,在此不重复说明。
[0107] 步骤804、构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集;
[0108] 本步骤中,生成目标内容指纹向量查询集的流程参见本发明的实施例一,在此不再重复说明。
[0109] 步骤805、根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集;
[0110] 本步骤中,使用步骤801中的步骤g提供的敏感哈希函数族分别计算所述目标内容指纹向量查询集的位置敏感哈希值,然后在所述位置敏感哈希表数据结构中查询与所述位置敏感哈希值相对应的哈希桶,从命中的哈希桶中返回恶意软件内容指纹集,将所述恶意软件内容指纹集作为候选结果集。
[0111] 步骤806、从所述候选结果集中选择所述待检测恶意软件的变种软件;
[0112] 本步骤中,可以选择所述候选结果集中的全部软件作为所述待检测恶意软件的变种软件,也可以选择所述候选结果集中的部分软件作为待检测恶意软件的变种软件。
[0113] 在选择部分软件作为最终结果时可以遵循一定规则,如:
[0114] 计算所述候选结果集中各恶意软件与所述待检测恶意软件的内容指纹向量之间的空间距离,选择空间距离最小的一个或多个恶意软件作为所述待检测恶意软件的变种软件。
[0115] 步骤807、输出所述待检测恶意软件的变种软件的唯一数字签名和内容指纹向量;
[0116] 本步骤中,在确定待检测恶意软件的变种软件后,即可输出该变种软件。
[0117] 下面结合附图,对本发明的实施例三进行说明。
[0118] 本发明实施例提供了一种恶意软件检测装置,该装置的结构如图9所示,包括:
[0119] 数字签名计算单元901,用于计算待检测恶意软件的唯一数字签名;
[0120] 内容指纹向量计算单元902,用于计算所述待检测恶意软件的内容指纹向量;
[0121] 查询集生成单元903,用于构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集;
[0122] 结果集获取单元904,用于根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集;
[0123] 变种选择单元905,用于从所述候选结果集中选择所述待检测恶意软件的变种软件。
[0124] 优选的,该装置还包括:
[0125] 位置敏感哈希表维护单元906,用于根据恶意软件语料库中的恶意软件样本建立位置敏感哈希表数据结构。
[0126] 优选的,位置敏感哈希表维护单元906的结构如图10所示,包括:
[0127] 数字签名生成模块9061,用于从所述恶意软件语料库中获取一恶意软件样本,生成该恶意软件的唯一数字签名;
[0128] 灰度图像生成模块9062,用于将所述恶意软件样本的二进制文件映射为BMP格式的灰度图像;
[0129] 存储模块9063,用于将所述恶意软件样本的数字签名和灰度图像一一对应的存储至恶意软件内容图像库;
[0130] 灰度图像特征向量计算模块9064,用于计算所述灰度图像的64维的灰度图像特征向量;
[0131] 归一化处理模块9065,用于对所述灰度图像特征向量进行归一化处理,得到所述恶意软件样本的恶意软件内容指纹向量;
[0132] 第二存储模块9066,用于将所述恶意软件样本的内容指纹向量与所述恶意软件样本的数字签名和灰度图像对应存储至所述恶意软件内容图像库中;
[0133] 敏感哈希函数族选择模块9067,用于从位置敏感哈希函数族中选取k个哈希函数h1,h2,…,hk构成敏感哈希函数族,其中,k为自然数。对于恶意软件内容图像库中的每一个恶意软件内容指纹向量p,计算H(p)=(h1(p),h2(p),…,hk(p)),在哈希表数据结构桶值为H(p)的链表中存储点p表项,所述哈希表数据结构中,每个桶都包含一个桶标识和表项链表;
[0134] 敏感哈希表建立模块9068,用于建立位置敏感哈希表数据结构,存储所述哈希桶的值及相关信息;
[0135] 组织模块9069,用于组织所述位置敏感哈希表维护模块的其他各单元对所述恶意软件语料库中的恶意软件样本进行遍历,直至遍历完成为止,得到最终的位置敏感哈希表数据结构。
[0136] 本发明的实施例提供了一种恶意软件检测方法、装置和系统,计算待检测恶意软件的唯一数字签名,然后计算所述待检测恶意软件的内容指纹向量,再构造所述内容指纹向量的最近邻集合,生成目标内容指纹向量查询集,根据所述目标内容指纹向量查询集,访问预置的位置敏感哈希表数据结构,获取候选结果集,最后从所述候选结果集中选择所述待检测恶意软件的变种软件。实现了基于位置敏感哈希表的恶意软件检测,解决了动态检测方法可扩展性不足及检测结果欠准确的问题。
[0137] 本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如系统、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。
[0138] 可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0139] 上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。
[0140] 上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。
[0141] 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈