一种病毒识别方法、装置、设备及可读存储介质与流程

文档序号:28056479发布日期:2021-12-17 22:19阅读:94来源:国知局
一种病毒识别方法、装置、设备及可读存储介质与流程

1.本技术涉及计算机技术领域,特别涉及一种病毒识别方法、装置、设备及可读存储介质。


背景技术:

2.在现有技术中,一般通过动态行为分析和静态特征分析来识别病毒。其中,动态行为分析需要用沙箱工具执行病毒文件,通过分析病毒的动态特征来识别病毒,这种方法需要将病毒运行一段时间来看它执行了哪些操作,检测速度较慢。静态特征分析需要预先准备大量有标签的病毒文件,但目前有标签的病毒文件数量有限,难以完成机器学习模型的训练,且机器学习模型都是黑盒模型,误报率难以控制。
3.因此,如何提高病毒识别效率和准确率,是本领域技术人员需要解决的问题。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种病毒识别方法、装置、设备及可读存储介质,以提高病毒识别效率和准确率。其具体方案如下:
5.第一方面,本技术提供了一种病毒识别方法,包括:
6.利用病毒检测工具对各个无标签病毒文件进行检测,确定各个无标签病毒文件所属的病毒家族;
7.针对每个病毒家族,利用聚类算法对当前病毒家族包括的所有病毒文件进行分类,获得当前病毒家族对应的多个病毒变种;
8.提取各个病毒变种中的所有病毒文件共有的病毒特征,并根据所述病毒特征生成各个病毒变种对应的病毒识别规则;
9.利用各个病毒识别规则识别并标记待识别的病毒文件。
10.优选地,所述聚类算法对当前病毒家族包括的所有病毒文件进行分类,包括:
11.将当前病毒家族包括的各个病毒文件分别转化为文件特征图;
12.利用所述聚类算法对各个文件特征图进行分类,获得当前病毒家族对应的多个病毒变种。
13.优选地,所述将当前病毒家族包括的各个病毒文件分别转化为文件特征图,包括:
14.针对当前病毒家族包括的每个病毒文件,根据当前病毒文件的字节信息、熵信息和结构信息分别生成字节子图、熵子图和结构子图;
15.将所述字节子图、熵子图和结构子图依次水平拼接为所述文件特征图。
16.优选地,所述根据当前病毒文件的字节信息、熵信息和结构信息分别生成字节子图、熵子图和结构子图,包括:
17.将当前病毒文件转化为整型数组,并根据当前病毒文件的大小确定子图宽度;
18.将所述整型数组包括的每个整型数映射为像素值,获得字节像素序列,并将所述字节像素序列按照所述子图宽度重构为所述字节子图;
19.按照预设的滑动窗口计算所述整型数组对应的多个熵值,将各个熵值映射为像素值,获得熵像素序列,并将所述熵像素序列按照所述子图宽度重构为所述熵子图;
20.将当前病毒文件根据文件结构划分为多段,各段用不同颜色值进行标记,获得结构像素序列,并将所述结构像素序列按照所述子图宽度重构为所述结构子图。
21.优选地,所述利用所述聚类算法对各个文件特征图进行分类,包括:
22.确定各个文件特征图的hog特征,利用所述聚类算法对各个hog特征进行分类。
23.优选地,所述利用所述聚类算法对各个hog特征进行分类,包括:
24.利用dbscan聚类算法对各个hog特征进行分类。
25.优选地,所述利用各个病毒识别规则识别并标记待识别的病毒文件之前,还包括:
26.利用验证集验证各个病毒识别规则,并根据验证结果对各个病毒识别规则进行修正。
27.第二方面,本技术提供了一种病毒识别装置,包括:
28.检测模块,用于利用病毒检测工具对各个无标签病毒文件进行检测,确定各个无标签病毒文件所属的病毒家族;
29.聚类模块,用于针对每个病毒家族,利用聚类算法对当前病毒家族包括的所有病毒文件进行分类,获得当前病毒家族对应的多个病毒变种;
30.生成模块,用于提取各个病毒变种中的所有病毒文件共有的病毒特征,并根据所述病毒特征生成各个病毒变种对应的病毒识别规则;
31.识别模块,用于利用各个病毒识别规则识别并标记待识别的病毒文件。
32.第三方面,本技术提供了一种病毒识别设备,包括:
33.存储器,用于存储计算机程序;
34.处理器,用于执行所述计算机程序,以实现前述公开的病毒识别方法。
35.第四方面,本技术提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的病毒识别方法。
36.通过以上方案可知,本技术提供了一种病毒识别方法,包括:利用病毒检测工具对各个无标签病毒文件进行检测,确定各个无标签病毒文件所属的病毒家族;针对每个病毒家族,利用聚类算法对当前病毒家族包括的所有病毒文件进行分类,获得当前病毒家族对应的多个病毒变种;提取各个病毒变种中的所有病毒文件共有的病毒特征,并根据所述病毒特征生成各个病毒变种对应的病毒识别规则;利用各个病毒识别规则识别并标记待识别的病毒文件。
37.可见,本技术先利用病毒检测工具对各个无标签病毒文件进行检测,从而确定出各个无标签病毒文件所属的病毒家族,增加了有标签病毒文件的数量,然后利用聚类算法对各个病毒家族进行分类,从而将各个病毒家族细分类为多个病毒变种,进而提取各个病毒变种中的所有病毒文件共有的病毒特征,并根据病毒特征生成每个病毒变种对应的病毒识别规则,而后利用各个病毒识别规则识别并标记待识别的病毒文件。本技术首先对有标签病毒文件进行了数量上的扩充,而后利用聚类算法对属于同一病毒家族的病毒文件进行了细分类,最后提取每个病毒变种中的所有病毒文件共有的病毒特征,从而获得具有较高识别精度的病毒识别规则,利用该规则识别病毒文件,能够提高病毒识别效率和准确率。
38.相应地,本技术提供的一种病毒识别装置、设备及可读存储介质,也同样具有上述
技术效果。
附图说明
39.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
40.图1为本技术公开的一种病毒识别方法流程图;
41.图2为本技术公开的一种文件特征图示意图;
42.图3为本技术公开的一种病毒识别实施方案架构图;
43.图4为本技术公开的一种病毒识别装置示意图;
44.图5为本技术公开的一种病毒识别设备示意图;
45.图6为本技术公开的另一种病毒识别设备示意图。
具体实施方式
46.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
47.目前,对于计算机病毒的检测速度较慢,且误报率难以控制。为此,本技术提供了一种病毒识别方案,能够提高病毒识别效率和准确率。
48.下面对本技术实施例提供的一种病毒识别方法进行介绍,参见图1所示,本技术实施例公开的一种病毒识别方法,包括:
49.s101、利用病毒检测工具对各个无标签病毒文件进行检测,确定各个无标签病毒文件所属的病毒家族。
50.为了扩充有标签病毒文件的数量,本实施例先利用病毒检测工具对各个无标签病毒文件进行检测。其中,病毒检测工具可以为avclass。avclass是综合了多个杀毒引擎的开源工具,将多个杀毒引擎对于某一文件输出的病毒名输入avclass,即可输出是该病毒文件所属的病毒家族的名称。也就是利用多个杀毒引擎识别某一病毒文件的名称后,将这些名称输入avclass,从而输出该病毒文件的家族名称。当然,病毒检测工具还可以是其他工具。
51.其中,病毒家族(virus family)是一种病毒文件的分类粒度。一般将具有相似特征(例如行为、标志等)的病毒文件归为同一家族。
52.s102、针对每个病毒家族,利用聚类算法对当前病毒家族包括的所有病毒文件进行分类,获得当前病毒家族对应的多个病毒变种。
53.其中,病毒变种(virus variant)也是一种文件病毒的分类粒度,粒度比病毒家族更细。一个病毒家族可以划分出多个病毒变种。同一病毒变种的病毒文件一般由同一份源码略作修改再编译而成,因而相似度更高。
54.在一种具体实施方式中,所述聚类算法对当前病毒家族包括的所有病毒文件进行分类,包括:将当前病毒家族包括的各个病毒文件分别转化为文件特征图;利用所述聚类算
法对各个文件特征图进行分类,获得当前病毒家族对应的多个病毒变种。可见,一个病毒家族可以被分类为多个病毒变种。
55.文件特征图即方向梯度直方图(histogram of oriented gradients),该图可以为计算机视觉领域的物体检测任务提供特征输入。它通过计算和统计图像局部像素的梯度来构成特征,文件特征图的特征为hog特征。
56.由于病毒文件一般由字节序列构成,每个字节为8比特,因此可映射到一个0~255范围内的整型数。因此可以将整个病毒文件映射为一个整型数组。基于该整型数组,将病毒文件转化为文件特征图。同时,病毒文件一般都按一定结构组织,例如:pe文件包括dos头、nt头、节表等。因此可按照文件结构转化病毒文件。
57.在一种具体实施方式中,所述将当前病毒家族包括的各个病毒文件分别转化为文件特征图,包括:针对当前病毒家族包括的每个病毒文件,根据当前病毒文件的字节信息、熵信息和结构信息分别生成字节子图、熵子图和结构子图;将所述字节子图、熵子图和结构子图依次水平拼接为所述文件特征图。拼接为获得的文件特征图可参见图2。
58.其中,所述根据当前病毒文件的字节信息、熵信息和结构信息分别生成字节子图、熵子图和结构子图,包括:将当前病毒文件转化为整型数组,并根据当前病毒文件的大小确定子图宽度;将所述整型数组包括的每个整型数映射为像素值,获得字节像素序列,并将所述字节像素序列按照所述子图宽度重构为所述字节子图;按照预设的滑动窗口计算所述整型数组对应的多个熵值,将各个熵值映射为像素值,获得熵像素序列,并将所述熵像素序列按照所述子图宽度重构为所述熵子图;将当前病毒文件根据文件结构划分为多段,各段用不同颜色值进行标记,获得结构像素序列,并将所述结构像素序列按照所述子图宽度重构为所述结构子图。
59.实际病毒文件一般都包含几兆的字节,这里为了方便理解,我们假设有个病毒文件只包含10个字节,这10个字节映射的整型数组为:[0,1,2,3,4,5,6,7,8,9]。假设我们规定大小为10个字节的文件的子图宽度为3(可以预先设置各个文件大小范围对应的子图宽度),那么当前整型数组[0,1,2,3,4,5,6,7,8,9]映射的一维字节像素值序列为:[0,1,2,3,4,5,6,7,8,9],由于当前子图宽度为3,因此可获得{[0,1,2],[3,4,5],[6,7,8],[9,0,0]}的二维字节子图。
[0060]
同理,假设预设的滑动窗口为4,那么可计算获得0123、1234、2345

6789等对应的熵值,将各个熵值映射为像素值,可获得一维的熵像素序列,按照子图宽度对一维的熵像素序列进行重构,可获得二维的熵子图。
[0061]
同时,将当前病毒文件根据文件结构(如dos头、nt头、节表等)划分为多段,各段用不同颜色值进行标记,一种颜色值对应一个像素值,如此可获得一维的结构像素序列,按照子图宽度对一维的结构像素序列进行重构,可获得二维的结构子图。
[0062]
在一种具体实施方式中,所述利用所述聚类算法对各个文件特征图进行分类,包括:确定各个文件特征图的hog特征,利用所述聚类算法对各个hog特征进行分类。其中,所述利用所述聚类算法对各个hog特征进行分类,包括:利用dbscan聚类算法对各个hog特征进行分类。当然,也可以用其他聚类算法对各个hog特征进行分类。
[0063]
s103、提取各个病毒变种中的所有病毒文件共有的病毒特征,并根据所述病毒特征生成各个病毒变种对应的病毒识别规则。
[0064]
s104、利用各个病毒识别规则识别并标记待识别的病毒文件。
[0065]
在本实施例中,每个病毒变种对应一个病毒识别规则,还可以利用yara或clarmav等规则模型库加载病毒识别规则,以扫描文件。利用某个病毒识别规则对文件进行扫描,可识别出当前文件是否为病毒文件,若是,可进一步识别出具体是什么类型的病毒文件,属于哪个病毒家族和哪个病毒变种。
[0066]
在一种具体实施方式中,所述利用各个病毒识别规则识别并标记待识别的病毒文件之前,还包括:利用验证集验证各个病毒识别规则,并根据验证结果对各个病毒识别规则进行修正。例如:从某一病毒变种中提取的共有病毒特征的数量较少,且基于该共有病毒特征生成的病毒识别规则对验证集进行验证时,结果的误报率过高,那么就可以删除该病毒识别规则。验证集中包括众多有标签病毒文件。
[0067]
可见,本技术实施例首先对有标签病毒文件进行了数量上的扩充,而后利用聚类算法对属于同一病毒家族的病毒文件进行了细分类,最后提取每个病毒变种中的所有病毒文件共有的病毒特征,从而获得具有较高识别精度的病毒识别规则,利用该规则识别病毒文件,能够提高病毒识别效率和准确率。
[0068]
下面对本技术实施例提供的一种病毒识别实施方案进行介绍,下文描述的一种病毒识别实施方案与上文描述的一种病毒识别方法可以相互参照。
[0069]
参见图3所示,本技术实施例公开的一种病毒识别实施方案包括:对无标签样本打家族标签、变种聚类、规则生成、规则使用等步骤。
[0070]
对无标签样本打家族标签使用的是avclass工具。avclass工具预设有无用字段库和病毒别名库。对无标签样本打家族标签的具体过程包括:对于具有完全相同的原始病毒名的文件仅保留一个;根据“.”、“:”、“/”等特殊字符对所有原始病毒名进行分割,得到若干字段,后续将根据这些字段得到最终家族名。其中,可以利用无用字段库删除无用字段(如“generic”,它一般用来作为默认家族名,无实际意义)。同时,利用病毒别名库进行病毒家族名称的别名转换。
[0071]
需要说明的是,avclass工具可以对多个引擎输出的病毒名称进行处理。不同引擎对于同一病毒的命名格式可能不同。例如:对同一个样本,瑞星引擎是四段式病毒名:trojan.win32.fednu.uaz,而微软引擎是三段式病毒名:trojan:win32/ramnit)。同时,各个引擎对于同一病毒命名的家族名称也可能不同。例如:对wannacy这个家族,有些引擎命名的家族名为wannacry,有些可能为wanna。因此avclass工具会对这些结果进行综合处理,按照投票权重确定最终的家族名。
[0072]
变种聚类使用的dbscan算法。在变种聚类之前,需要将各个病毒文件转化为图片,如此可获得各个病毒文件对应的文件特征图。其中,文件特征图包括:字节子图、熵子图和结构子图。根据病毒文件的字节信息、熵信息和结构信息分别生成字节子图、熵子图和结构子图,然后拼接字节子图、熵子图和结构子图即可获得文件特征图。
[0073]
其中,字节子图的生成过程包括:将病毒文件转化为整型数组,并根据当前病毒文件的大小确定子图宽度;将整型数组包括的每个整型数映射为像素值,从而可获得包括多个像素值的字节像素序列,将字节像素序列按照子图宽度重构为二维字节子图。其中,一个整型数对应一个像素值。熵子图的生成过程包括:按照预设的滑动窗口计算由病毒文件转化的整型数组对应的多个熵值,将各个熵值映射为像素值,从而可获得包括多个像素值的
熵像素序列,将熵像素序列按照子图宽度重构为二维的熵子图。其中,一个熵值对应一个像素值。结构子图的生成过程包括:将当前病毒文件根据文件结构划分为多段,各段用不同颜色进行标记,一种颜色对应一个颜色值,从而可获得包括多个颜色值的结构像素序列,将结构像素序列按照子图宽度重构为二维的结构子图。详细转化过程可以参见上述实施例的介绍。
[0074]
利用dbscan算法分类某一病毒家族之前,首先按照文件特征图的宽度将某一病毒家族划分为多个集合,利用对dbscan算法每个集合进行分类。聚到同一类别的图片所对应的病毒文件即属于同一变种。需要说明的是,可以从文件特征图上提取出hog特征,hog特征以直方图形式表示,横坐标是梯度,纵坐标是每个梯度对应的幅值累加。因此可以对hog特征进行聚类,从而将每个梯度对应的幅值累加。
[0075]
对于同一变种的所有病毒文件提取共有的病毒特征(如公共字符串),然后根据共有的病毒特征生成规则,并将规则转换成yara规则。为了防止误报,可以利用验证集对各个规则进行验证。
[0076]
本实施例利用多个引擎对样本进行了扩充,又使用变种聚类对病毒家族进行了细分类,大大降低了误报的可能性,最终生成的病毒识别规则具有打标签效率高、误报低等优点,提高了病毒识别的准确率和效率。
[0077]
下面对本技术实施例提供的一种病毒识别装置进行介绍,下文描述的一种病毒识别装置与上文描述的一种病毒识别方法可以相互参照。
[0078]
参见图4所示,本技术实施例公开了一种病毒识别装置,包括:
[0079]
检测模块401,用于利用病毒检测工具对各个无标签病毒文件进行检测,确定各个无标签病毒文件所属的病毒家族;
[0080]
聚类模块402,用于针对每个病毒家族,利用聚类算法对当前病毒家族包括的所有病毒文件进行分类,获得当前病毒家族对应的多个病毒变种;
[0081]
生成模块403,用于提取各个病毒变种中的所有病毒文件共有的病毒特征,并根据所述病毒特征生成各个病毒变种对应的病毒识别规则;
[0082]
识别模块404,用于利用各个病毒识别规则识别并标记待识别的病毒文件。
[0083]
在一种具体实施方式中,聚类模块包括:
[0084]
转化单元,用于将当前病毒家族包括的各个病毒文件分别转化为文件特征图;
[0085]
分类单元,用于利用所述聚类算法对各个文件特征图进行分类,获得当前病毒家族对应的多个病毒变种。
[0086]
在一种具体实施方式中,转化单元包括:
[0087]
生成子单元,用于针对当前病毒家族包括的每个病毒文件,根据当前病毒文件的字节信息、熵信息和结构信息分别生成字节子图、熵子图和结构子图;
[0088]
拼接子单元,用于将所述字节子图、熵子图和结构子图依次水平拼接为所述文件特征图。
[0089]
在一种具体实施方式中,生成子单元具体用于:
[0090]
将当前病毒文件转化为整型数组,并根据当前病毒文件的大小确定子图宽度;将所述整型数组包括的每个整型数映射为像素值,获得字节像素序列,并将所述字节像素序列按照所述子图宽度重构为所述字节子图;按照预设的滑动窗口计算所述整型数组对应的
多个熵值,将各个熵值映射为像素值,获得熵像素序列,并将所述熵像素序列按照所述子图宽度重构为所述熵子图;将当前病毒文件根据文件结构划分为多段,各段用不同颜色值进行标记,获得结构像素序列,并将所述结构像素序列按照所述子图宽度重构为所述结构子图。
[0091]
在一种具体实施方式中,分类单元具体用于:
[0092]
确定各个文件特征图的hog特征,利用所述聚类算法对各个hog特征进行分类。
[0093]
在一种具体实施方式中,分类单元具体用于:
[0094]
利用dbscan聚类算法对各个hog特征进行分类。
[0095]
在一种具体实施方式中,还包括:
[0096]
修正模块,用于利用验证集验证各个病毒识别规则,并根据验证结果对各个病毒识别规则进行修正。
[0097]
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0098]
可见,本实施例提供了一种病毒识别装置,该装置生成的病毒识别规则具有打标签效率高、误报低等优点,提高了病毒识别的准确率和效率。
[0099]
下面对本技术实施例提供的一种病毒识别设备进行介绍,下文描述的一种病毒识别设备与上文描述的一种病毒识别方法及装置可以相互参照。
[0100]
参见图5所示,本技术实施例公开了一种病毒识别设备,包括:
[0101]
存储器501,用于保存计算机程序;
[0102]
处理器502,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
[0103]
请参考图6,图6为本实施例提供的另一种病毒识别设备示意图,该病毒识别设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,cpu)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在病毒识别设备301上执行存储介质330中的一系列指令操作。
[0104]
病毒识别设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341。例如,windows servertm,mac os xtm,unixtm,linuxtm,freebsdtm等。
[0105]
在图6中,应用程序342可以是执行病毒识别方法的程序,数据344可以是执行病毒识别方法所需的或产生的数据。
[0106]
上文所描述的病毒识别方法中的步骤可以由病毒识别设备的结构实现。
[0107]
下面对本技术实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种病毒识别方法、装置及设备可以相互参照。
[0108]
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的病毒识别方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0109]
本技术涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
[0110]
需要说明的是,在本技术中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本技术要求的保护范围之内。
[0111]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0112]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的可读存储介质中。
[0113]
本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1