掌桥专利:专业的专利平台
掌桥专利
首页

恶意代码可视化方法、恶意代码分类方法及相关装置

文献发布时间:2024-04-18 19:59:31


恶意代码可视化方法、恶意代码分类方法及相关装置

技术领域

本申请涉及计算机的技术领域,具体而言,涉及一种恶意代码可视化方法、恶意代码分类方法及相关装置。

背景技术

随着反检测技术的不断发展,产生了大量形态多样的恶意代码变种,传统检测技术已无法准确检测出该种未知恶意代码。而数据可视化方法能将恶意代码的核心表现在图像特征中,即将恶意代码转化为图像形式展示。通过数据可视化方法,可以发现恶意软件图像中包含着丰富的信息。同一类别的恶意代码家族的可视化图像通常具有相似性,而不同家族的可视化图像之间则有较大的差异。相对于传统的恶意软件分类方法,可视化方法可以加速恶意软件分类的过程,满足大数据计算、专家系统反馈和认知复杂性等方面的需求,从而能够更加有效地检测和分类恶意软件。但现有的恶意代码可视化方案存在着泛化性低、信息损失较大等问题。

发明内容

本申请提供一种恶意代码可视化方法、恶意代码分类方法及相关装置,以解决现有的恶意代码可视化方案存在着泛化性低、信息损失较大等问题。

第一方面,本申请提供一种恶意代码可视化方法,包括:获取待分类恶意代码文件;将所述待分类恶意代码文件按照预设长度进行切分,得到宽度为所述预设长度的第一二维数组;按照预设的目标分类特征的顺序,依次计算每一个所述目标分类特征在所述第一二维数组的每一行中的词频反文档频率,得到宽度为N的第二二维数组,其中,N为预设的目标分类特征的数量;所述第二二维数组中每一行元素的值依次为每一个所述目标分类特征在所述第一二维数组中对应行的词频反文档频率;将所述第二二维数组中的各元素值调整至可进行图像表达的数值范围内,得到第三二维数组;将所述第三二维数组转换为分类图像。

本申请实施例中,通过计算词频反文档频率的方式得到第二二维数组,进而可以根据第二二维数组得到最终的分类图像,本方案可以针对任意类型的代码文件进行处理,由于是针对待分类恶意代码文件进行切分后计算的每一行切分后的代码(即第一二维数组的每一行)中目标分类特征的词频反文档频率,因此无论恶意代码是否经过加壳操作均不会影响该方案的实施,也即无论恶意代码是否经过加壳操作通过本方案都能够得到分类图像。从而相较于现有技术,本方案泛化性更好。并且,本方案无需对恶意代码文件进行格式转化等操作,使得本方案的信息损失相较于现有技术更小。

结合上述第一方面提供的技术方案,在一些可能的实施方式中,将所述第三二维数组转换为分类图像,包括:对所述第三二维数组进行图像增强处理,得到第四二维数组;基于所述第四二维数组,得到分类图像。

本申请实施例中,通过图像增强处理,可以使得第四二维数组的特点更加突出,进而使得分类图像的特征更加明显。

结合上述第一方面提供的技术方案,在一些可能的实施方式中,对所述第三二维数组进行图像增强处理,得到第四二维数组,包括:将所述第三二维数组中的每个元素的值乘以预设增强比例系数,得到中间二维数组;将所述中间二维数组中值大于255的元素的值修改为255,得到所述第四二维数组。

本申请实施例中,通过乘以预设增强比例系数,使得第四二维数组中各个非0元素的值更加接近255,也即提高了目标分类特征在第四二维数组中的重要性,从而使得第四二维数组能更加明显地反映目标分类特征在待分类恶意代码文件的分布情况,进而使得第四二维数组能更加容易体现待分类恶意代码文件的特点。

结合上述第一方面提供的技术方案,在一些可能的实施方式中,将所述第二二维数组中的各元素值调整至可进行图像表达的数值范围内,得到第三二维数组,包括:对所述第二二维数组中的元素进行归一化处理,并将每个元素乘以255,得到所述第三二维数组。

本申请实施例中,通过对第二二维数组中的元素进行归一化处理,并将每个元素乘以255,从而确保第三二维数组中每个元素的值均处于0-255之间,而目前的像素值的取值范围正好是0-255,故转换后得到的第三二维数组可以较为容易地转换为图像形式,得到待分类图像。

结合上述第一方面提供的技术方案,在一些可能的实施方式中,所述目标分类特征通过以下方式得到:构建初始分类特征集合,初始分类特征集合包括所有的初始分类特征,且不同的所述初始分类特征的长度相同;针对初始分类特征集合中的每一个初始分类特征,确定该初始分类特征在每一个预设的训练恶意代码文件中的词频反文档频率,并计算该初始分类特征对应的所有词频反文档频率之和;确定出词频反文档频率之和最大的N个初始分类特征作为所述目标分类特征。

本申请实施例中,由于词频反文档频率能体现特征在恶意代码文件中的重要程度,因此,将词频反文档频率之和最大的N个初始分类特征作为所述目标分类特征,可以使得目标分类特征能准确体现各个恶意代码文件的特点,进而基于该目标分类特征得到的第二二维数组能准确反映待分类恶意代码文件的特点。

第二方面,本申请提供一种恶意代码分类方法,包括:获取分类图像,所述分类图像基于第一方面和/或结合第一方面任意可能的实施方式所述的方法得到;将所述分类图像输入预先训练好的恶意代码分类模型,得到表征恶意代码类型的分类结果。

本申请实施例中,通过上述的恶意代码可视化方法得到的分类图像的泛化性更好且信息损失较小,进而使得基于该分类图像进行分类得到的结果更加准确。

第三方面,本申请提供一种恶意代码可视化装置,包括:第一获取模块、第一处理模块,第一获取模块用于获取待分类恶意代码文件;第一处理模块,用于将所述待分类恶意代码文件按照预设长度进行切分,得到宽度为所述预设长度的第一二维数组;所述第一处理模块,还用于按照预设的目标分类特征的顺序,依次计算每一个所述目标分类特征在所述第一二维数组的每一行中的词频反文档频率,得到宽度为N的第二二维数组,其中,N为预设的目标分类特征的数量;所述第二二维数组中每一行元素的值依次为每一个所述目标分类特征在所述第一二维数组中对应行的词频反文档频率;所述第一处理模块,还用于将所述第二二维数组中的各元素值调整至可进行图像表达的数值范围内,得到第三二维数组;所述第一处理模块,还用于将所述第三二维数组转换为分类图像。

第四方面,本申请提供一种恶意代码分类装置,包括:第二获取模块、第二处理模块,第二获取模块用于获取分类图像,所述分类图像基于第一方面和/或结合第一方面任意可能的实施方式所述的方法得到;第二处理模块用于将所述分类图像输入预先训练好的恶意代码分类模型,得到表征恶意代码类型的分类结果。

第五方面,本申请提供一种电子设备,包括:存储器和处理器,所述存储器和所述处理器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行上述第一方面和/或结合第一方面任意可能的实施方式所述的方法,和/或,执行上述第二方面上述的方法。

第六方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被计算机运行时,执行上述第一方面和/或结合第一方面任意可能的实施方式所述的方法,和/或,执行上述第二方面上述的方法。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例示出的一种恶意代码可视化方法的流程示意图;

图2为本申请实施例示出的一种未进行图像增强的分类图像和进行过图像增强的分类图像的示意图;

图3为本申请实施例示出的一种恶意代码分类方法的流程示意图;

图4为本申请实施例示出的Ramnit恶意代码类内的4个不同样本实例的分类图像;

图5为本申请实施例示出的Vundo恶意代码类内的4个不同样本实例的分类图像;

图6为本申请实施例示出的Backdoor恶意代码类内的4个不同样本实例的分类图像;

图7为本申请实施例示出的Worm恶意代码类内的4个不同样本实例的分类图像;

图8为本申请实施例示出的一种恶意代码可视化装置的结构框图;

图9为本申请实施例示出的一种恶意代码分类装置的结构框图;

图10为本申请实施例示出的一种电子设备的结构框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

下面将结合附图对本申请的技术方案进行详细地描述。

请参阅图1,图1为本申请实施例示出的一种恶意代码可视化方法的流程示意图,下面将结合图1对其包含的步骤进行说明。

S100:获取待分类恶意代码文件。

待分类恶意代码文件可以是预先获取并存储在存储介质中,在需要使用时,直接调用即可。或者,待分类恶意代码文件也可以是在需要使用时,实时获取得到的。

其中,待分类恶意代码文件可以是二进制文件、十六进制文件等,此处不对待分类恶意代码文件的具体类型进行限制。

S200:将待分类恶意代码文件按照预设长度进行切分,得到宽度为预设长度的第一二维数组。

预设长度可以根据实际需求进行设置,例如,若待分类恶意代码文件为十六进制文件的情况下,预设长度可以设置为1000,此种情况下,第一二维数组的宽度为1000,且第一二维数组中的每个元素为一个十六进制数。

第一二维数组的长度根据待分类恶意代码文件的长度和预设长度确定,也即将待分类恶意代码文件的长度除以预设长度,得到的值即为第一二维数组的长度。

由于待分类恶意代码文件的长度与预设长度的商不一定为整数,可选的,第一二维数组的长度可以是待分类恶意代码文件的长度与预设长度的商的整数部分,而待分类恶意代码文件最后不足预设长度的数据丢弃处理。

例如,预设长度为1000,待分类恶意代码文件的长度为11790,则第一二维数组的长度为11790÷1000的商的整数部分,也即11。也即第一二维数组为11*1000的二维数组。此处举例仅为便于理解,不应作为对本申请的限制。

或者,当待分类恶意代码文件的长度无法整除预设长度的情况下,可以利用指定字符对待分类恶意代码文件进行补充,使得补充后的待分类恶意代码文件能整除预设长度,此种情况下,第一二维数组的长度可以是补充后的待分类恶意代码文件的长度与预设长度的商。

指定字符可以根据实际需求进行设置,例如可以设置为0、表征空的字符等字符。此处不对指定字符的具体类型进行限制。

例如,预设长度为1000,待分类恶意代码文件的长度为11790,由于11790无法整除1000,因此,利用指定字符对待分类恶意代码文件进行补充,补充后的待分类恶意代码文件的长度为12000,也即补充了210个指定字符。则第一二维数组的长度为12,也即第一二维数组为12*1000的二维数组。此处举例仅为便于理解,不应作为对本申请的限制。

为了便于理解将待分类恶意代码文件按照预设长度进行切分,得到宽度为预设长度的第一二维数组的具体方式,以待分类恶意代码文件为:1534F8763876481CAEB90DC2BD5,预设长度为9,则第一二维数组为:

S300:按照预设的目标分类特征的顺序,依次计算每一个目标分类特征在第一二维数组的每一行中的词频反文档频率,得到宽度为N的第二二维数组。

其中,N为预设的目标分类特征的数量;N的具体数值可以根据实际需求进行设置,例如可以是10、100、256等,此处不对N的具体数值进行限制。

第二二维数组中每一行元素的值依次为每一个目标分类特征在第一二维数组中对应行的词频反文档频率。

为了便于理解,以第一二维数组为

同理,分别计算特征A、特征B、特征C在第一二维数组第二行中的词频反文档频率,分别得到词频反文档频率A2、词频反文档频率B2、词频反文档频率C2;以及分别计算特征A、特征B、特征C在第一二维数组第三行中的词频反文档频率,分别得到词频反文档频率A3、词频反文档频率B3、词频反文档频率C3。

基于此,最终得到的第二二维数组为

一种实施方式下,目标分类特征可以是由用户指定的。

又一种实施方式下,目标分类特征可以通过待分类恶意代码文件的类型,以及预先确定的目标分类特征的长度确定。对于给定的目标分类特征的长度,目标分类特征包括该长度下所有可能的特征组合。

其中,待分类恶意代码文件的类型可以是二进制、十六进制等,根据待分类恶意代码的实际情况确定。

例如,若待分类恶意代码文件为十六进制文件,且预先确定的目标分类特征的长度为3位十六进制数,则目标分类特征包括所有的三位十六进制数,也即总共有16

又一种实施方式下,目标分类特征可以通过以下方式得到:首先构建初始分类特征集合,初始分类特征集合包括所有的初始分类特征,且不同的初始分类特征的长度相同。然后针对初始分类特征集合中的每一个初始分类特征,确定该初始分类特征在每一个预设的训练恶意代码文件中的词频反文档频率,并计算该初始分类特征对应的所有词频反文档频率之和。最后确定出词频反文档频率之和最大的N个初始分类特征作为目标分类特征。

初始分类特征集合包括的初始分类特征可以根据待分类恶意代码文件的类型,以及预先确定的初始分类特征的长度确定。对于给定的初始分类特征的长度,初始分类特征包括该长度下所有可能的特征组合。

例如,若待分类恶意代码文件为十六进制文件,且预先确定的初始分类特征的长度为3位十六进制数,则初始分类特征包括所有的三位十六进制数,也即总共有16

预设的训练恶意代码文件可以是随机选择的,或者,也可以是根据预设比例,从每一种类型的恶意代码文件中抽取得到的。

S400:将第二二维数组中的各元素值调整至可进行图像表达的数值范围内,得到第三二维数组。

可进行图像表达的数值范围即为可表征像素值的范围。

由于目前像素值通常采用0-255表示,因此,一种实施方式下,将第二二维数组中的各元素值调整至可进行图像表达的数值范围内,得到第三二维数组的具体方式可以是:对第二二维数组中的元素进行归一化处理,并将每个元素乘以255,得到第三二维数组。

通过对第二二维数组中的元素进行归一化处理,并将每个元素乘以255,从而确保第三二维数组中每个元素的值均处于像素值的取值范围(也即0-255)之间,从而便于后续得到待分类图像。

可选的,对第二二维数组中的元素进行归一化处理的具体方式可以是:将第二二维数组中的每个元素的值除以该第二二维数组中的最大值,完成对第二二维数组的归一化处理。

例如,若第二二维数组为

S500:将第三二维数组转换为分类图像。

一种实施方式下,由于第三二维数组中的每个元素的值均处于可进行图像表达的数值范围内,因此,可以直接将该第三二维数组转换为分类图像。

其中,将数组转换为图像的具体实现方式以为本领域技术人员所熟知,为简要描述,此处不再赘述。

一种实施方式下,将第三二维数组转换为分类图像的具体方式可以是:首先对第三二维数组进行图像增强处理,得到第四二维数组;然后基于第四二维数组,得到分类图像。

可选的,对第三二维数组进行图像增强处理,得到第四二维数组的具体方式可以是:首先将第三二维数组中的每个元素的值乘以预设增强比例系数,得到中间二维数组;然后将中间二维数组中值大于255的元素的值修改为255,得到第四二维数组。

预设增强比例系数为大于1的常数,其具体数值可以根据实际需求进行设置,例如可以是10

为了便于理解图像增强处理的效果,请参阅图2。图2左侧为没有经过图像增强处理的图像,图2右侧为经过图像增强处理的图像,通过图像增强处理,可以增大白色像素的所占的比例,从而使得第四二维数组的特点更加突出,进而使得分类图像的特征更加明显,提升分类效果。

为了便于理解,以第三二维数组为

基于同样的技术构思,本申请还提供一种恶意代码分类方法。如图3所示,下面将结合图3对其包含的步骤进行说明。

S600:获取分类图像。

其中,分类图像是利用前述的恶意代码可视化方法生成的,为简要描述,此处不对分类图像的具体获取方式进行赘述。

可选的,分类图像可以是预先获取好并存储在存储介质中,在需要使用时,直接调用即可。或者,分类图像也可以是在需要使用时,实时利用前述的恶意代码可视化方法生成的。

S700:将分类图像输入预先训练好的恶意代码分类模型,得到表征恶意代码类型的分类结果。

其中,该恶意代码分类模型可以根据以下方式训练得到:首先获取训练样本集,该训练样本集中包括多个根据上述的恶意代码可视化方法生成的分类图像,且每个分类图像均标记有对应的恶意代码类型。然后基于该训练样本集对初始恶意代码分类模型进行训练,得到训练好的恶意代码分类模型。

利用训练样本集训练模型的具体方式以为本领域技术人员所熟知,为简要描述,此处不再赘述。

可选的,该恶意代码分类模型可以是例如DenseNet121模型等类型的多分类模型,恶意代码分类模型包括但不限于上述举例的实施方式。

本方案可以应用于恶意代码家族分类可视化预处理。一种实施方式下,可以是基于恶意代码家族分类任务的Big2015数据集,通过本方案对恶意代码进行可视化并分类,可以提高恶意代码的辨识度,提高分类准确率。

在恶意代码家族分类任务中,恶意代码数据集Big2015包含来自9个不同恶意代码家族的未加壳的10868个恶意代码样本。每个恶意代码样本都包含一个20字符的哈希ID和一个表示家族的整数标签,家族标签分别是Ramnit(F1)、Lollipop(F2)、Kelihos_ver3(F3)、Vundo(F4)、Simda(F5)、Tracur(F6)、Kelihos ver1(F7)、Obfuscator.ACY(F8)和Gatak(F9)。关于类别信息和各类样本数量的详细情况,请参见表1。

表1

Big2015数据集中的每个恶意样本包含两个文件,分别是“.byte”文件和“.asm”文件。其中,“.byte”文件为十六进制表示的、去除PE头的二进制文件。而“.asm”文件则是通过IDAPro(Interactive Disassembler Professional,交互式反汇编器专业版)进行反编译后生成的元数据文件,其中包含了恶意样本的机器码、汇编指令等信息。由于“.byte”文件能够提供恶意样本的二进制表示,因此,本方案可以选择使用“.byte”文件进行分析和处理。

首先,将恶意代码数据集Big2015中的样本通过上述的恶意代码可视化方法转换为灰度图像。由于灰度图本身呈现较暗的特点,通过图像增强处理,可以凸显不同恶意代码家族与恶意代码类型的特征。通过增强图像的明暗交错特征,可以为分类模型提供更具辨识度的特征。

为了确定图像增强比例系数的合适取值,可以采用遍历的方式进行图像增强比例系数的选取。

具体的,在数据集转化为第三二维数组后,对每个第三二维数组乘以增强比例系数α进行图像增强。α均选取10

表2

根据表2所示,可以发现对于Big2015数据集,当m等于18,即α等于10

其中,训练DenseNet121模型的方式可以是:将批处理样本数设置为128,初始权重设置为随机,优化器设置为SGD(Stochastic Gradient Descent,随机梯度下降)优化器,损失函数设置为交叉熵损失函数。采用经验学习率值0.01,并使用余弦退火调度器来降低optimizer(优化器)的学习率从初始值到最小值,再将其逐渐恢复到初始值,这一过程每200个epoch(迭代次数)执行一次。该调度器能够提高模型的训练效果,使其更快地收敛到最优解。

对Big2015数据集进行随机抽样,并将其中80%的样本作为训练集,另外10%的样本用于测试集,剩余10%的样本用于验证集。每个模型每次训练采用200个epochs,并记录每次训练在验证集上的最高分类准确率作为本次训练的分类准确率。

由于实验的随机性,对每个模型进行了10次独立的训练,并将这10次实验结果的分类准确率取平均值作为该模型的表现评估结果,从而降低了实验误差的影响。

对Big2015数据集中恶意代码样本对应的未进行图像增强处理的第一分类图像和经过图像增强处理(图像增强比例系数为10

表3

如表3所示,在Big2015数据集对应的分类图像中,在第一分类图像中,白色像素点占比平均值仅为0.00013%。然而,将矩阵中每个像素值乘以10

为了验证恶意代码家族分类的可视化效果,从Big2015数据集中选取Ramnit类和Vundo类,每个类均选取4个样本进行可视化展示。将这些样本通过上述的恶意代码可视化方法转换为分类图像,观察各恶意代码对应的分类图像的可视化效果与纹理特征,如图4、图5所示。

图4展示了Ramnit恶意代码类内的4个不同样本实例的分类图像,可以看出它们之间存在高度的相似性。

图5展示了Vundo恶意代码类内的4个不同样本实例的分类图像,也可以看出它们之间也存在高度的相似性。

然而,图4与图5之间存在较大的图片差异性。由此可知,在恶意代码家族分类中,不同恶意代码家族之间差别较大,而相同家族之间往往具有高度的相似性。

为了验证本方案所提出的恶意代码分类方法在效果提升方面的有效性,可以将其与基线方法进行比较。

其中,基线方法选择了4种比较方法。

第一种,Kalash等人“Malware classification with deep convolutionalneural networks.NTMS2018”利用Nataraj矢量化方法将恶意代码的二进制文件转换为灰度图像,并使用基于VGG16改进的卷积神经网络模型进行分类。

第二种,王博等人“基于VGGNet的恶意代码变种分类.计算机应用2020”提出了一种创新的方法,该方法将每个二进制bit串切割成长度为8bit的子串,并将每连续三个子串分别对应RGB(红绿蓝)通道。通过基于VGG(Visual Geometry Group,视觉几何组)16改进的卷积神经网络模型来提取特征,实现对恶意代码的分类。

第三种,蒋考林等人“基于多通道图像深度学习的恶意代码检测.计算机应用2021”提出了一种与其类似的恶意代码可视化为彩色图像的方法。然而,其独特之处在于在末尾不足的情况下使用0进行填充,并使用Alexnet(一种神经网络)进行训练和分类。

第四种,提取灰度共生矩阵,并将其角二阶矩、对比度、熵以及反差分矩阵作为机器学习特征,随后应用KNN(K-NearestNeighbor,K最邻近算法)分类器进行分类。

表4示出了以上四种基线方法以及本方案的实验数据。

表4

对表4的实验结果进行分析,可以发现本发明所提出的方法在恶意代码家族分类任务上的表现均优于其他对比方法。

本发明方法在恶意代码分类方面表现优异,具有最高的分类效率,这使得其具有广泛的应用价值和推广意义。相较于对比方法中使用的VGGNet和AlexNet网络,DenseNet121神经网络模型结构简单且高效,减小了计算量大小和参数量大小。

相较于灰度共生矩阵结合KNN的机器学习方法,本方案在恶意代码家族分类任务中实现了显著的分类准确率提升,提升达到了11.02%。尽管机器学习方法具有简单易懂、容易实现的优点,但因为需要人工选择特征和分类器,可能无法发现数据的潜在特征,而且会消耗大量的时间。而深度学习方法无需手动进行特征提取和选择,而是通过模型自动提取特征,更加便捷,从而可以更好地适应不同的数据分布和任务。因此,本方案提出的方法能够更加准确地学习到恶意代码图像中的特征,具有更好的泛化能力和分类准确率。

本方案可应用于恶意代码类型分类可视化预处理。一种实施方式下,基于恶意代码类型分类任务的PE(Portable Executable,可移植执行)数据集,通过本方案对恶意代码进行可视化并分类,可以提高恶意代码的辨识度,提高分类准确率。

在恶意代码类型分类任务中,由于当前公开的恶意代码类型数据集较为有限,因此可以预先构建一个数据集。例如,可以构建一个包含了5094个加壳的恶意代码PE文件的数据集,这些恶意代码PE文件均来自企业内部。通过该数据集扩展了现有公开数据集的规模和多样性,为恶意代码类型分类任务提供了更加完整的数据支持。其中,PE文件是Windows操作系统上的常见可执行文件格式,其中包含了程序代码、数据、资源和元数据等信息。恶意代码PE文件指的是被恶意程序感染的PE文件,即包含了恶意代码的可执行文件。恶意代码PE文件可能会执行各种恶意行为,例如窃取用户信息、加密或删除文件、篡改系统配置等。由于PE文件是Windows操作系统上的核心文件类型之一,因此恶意程序通常会以PE文件的形式传播和执行,而针对恶意代码PE文件的分析和检测也是恶意代码研究中的重要方向之一。

该数据集覆盖6个恶意代码类型,分别为后门(Backdoor)、通用(Generic)、木马(Trojan)、变形(Variant)、病毒(Virus)和蠕虫(Worm)。需要注意的是,Backdoor和Trojan这两个恶意代码类型均属于卡巴斯基这一木马大类,因此它们的样本具有较高的相似性,难以进行准确分类,从而导致分类准确率相对较低。

由于该数据集中的所有文件类型均为PE文件,为了方便描述,后续将该数据集称为PE数据集。如表5所示是PE数据集中各类别的名称及相应的样本数量。

表5

/>

针对该实例,本方案的实现步骤如下:

首先利用上述的恶意代码可视化方法,将该PE数据集中的PE数据转换为分类图像。

由于灰度图本身呈现较暗的特点,可以通过图像增强,以凸显不同恶意代码家族与恶意代码类型的特征。通过增强图像的明暗交错特征,可以为分类模型提供更具辨识度的特征。

而增强比例系数可以采用遍历的方式进行图像增强比例的选取。具体地,在将PE数据集中的PE数据转化为第三二维数组后,对第三二维数组中的每个元素乘以增强比例α进行图像增强,得到第四二维数组。α均选取10

随后对每一个α值所对应的第四二维数组对应的分类图像,利用不同α值对应的分类图像分别对ResNet18模型进行训练,并针对不同α值对应的训练好的ResNet18模型的分类准确的进行统计,统计结果如表6所示。

表6

如表6所示,可以发现对于PE数据集,当m等于16,即α等于10

其中,训练DenseNet121模型的方式可以是:将批处理样本数设置为128,初始权重设置为随机,优化器设置为SGD优化器,损失函数设置为交叉熵损失函数。采用经验学习率值0.01,并使用余弦退火调度器来降低optimizer的学习率从初始值到最小值,再将其逐渐恢复到初始值,这一过程每200个epoch执行一次。该调度器能够提高模型的训练效果,使其更快地收敛到最优解。

对PE数据集进行随机抽样,并将其中80%的样本作为训练集,另外10%的样本用于测试集,剩余10%的样本用于验证集。每个模型每次训练采用200个epochs,并记录每次训练在验证集上的最高分类准确率作为本次训练的分类准确率。

由于实验的随机性,对每个模型进行了10次独立的训练,并将这10次实验结果的分类准确率取平均值作为该模型的表现评估结果,从而降低了实验误差的影响。

对PE数据集中,PE数据对应的未进行图像增强处理的第一分类图像和经过图像增强处理(图像增强比例系数为10

表7

如表7所示,在PE数据集对应的分类图像中,在第一分类图像中,白色像素点占比平均值仅为0.16%。然而,将矩阵中每个像素值乘以10

为了验证恶意代码家族分类和恶意代码类型分类的可视化效果,从PE数据集中选取Backdoor类和Generic类,每个类均选取4个样本进行可视化展示。将这些样本通过上述的恶意代码可视化方法转换为分类图像,观察各恶意代码对应的分类图像的可视化效果与纹理特征,如图6、图7所示。

图6展示了Backdoor恶意代码类内的4个不同样本实例的分类图像,可以看出它们之间存在高度的相似性。

图7展示了Worm恶意代码类内的4个不同样本实例的分类图像,也可以看出它们之间也存在高度的相似性。

对比图6、图7可知,图6与图7之间也存在较大的图片差异性。由此可知,在恶意代码类型分类中,不同恶意代码类型之间差别较大,而相同类型之间往往具有高度的相似性。

为了验证本方案所提出的恶意代码分类方法在效果提升方面的有效性,可以将其与以下基线方法进行比较:

第一种,Kalash等人“Malware classification with deep convolutionalneural networks.NTMS2018”利用Nataraj矢量化方法将恶意代码的二进制文件转换为灰度图像,并使用基于VGG16改进的卷积神经网络模型进行分类。

第二种,王博等人“基于VGGNet的恶意代码变种分类.计算机应用2020”提出了一种创新的方法,该方法将每个二进制bit串切割成长度为8bit的子串,并将每连续三个子串分别对应RGB通道。通过基于VGG16改进的卷积神经网络模型来提取特征,实现对恶意代码的分类。

第三种,蒋考林等人“基于多通道图像深度学习的恶意代码检测.计算机应用2021”提出了一种与其类似的恶意代码可视化为彩色图像的方法。然而,其独特之处在于在末尾不足的情况下使用0进行填充,并使用Alexnet进行训练和分类。

第四种,提取灰度共生矩阵,并将其角二阶矩、对比度、熵以及反差分矩阵作为机器学习特征,随后应用KNN分类器进行分类。

表8示出了以上四种基线方法以及本方案的实验数据。

表8

对表8的实验结果进行分析,可以发现本发明所提出的方法在恶意代码类型分类任务上的表现均优于其他对比方法。

基于同样的技术构思,本申请还提供一种恶意代码可视化装置,如图8所示,该恶意代码可视化装置100包括第一获取模块110和第一处理模块120。

第一获取模块110,用于获取待分类恶意代码文件。

第一处理模块120,用于将所述待分类恶意代码文件按照预设长度进行切分,得到宽度为所述预设长度的第一二维数组。

第一处理模块120,还用于按照预设的目标分类特征的顺序,依次计算每一个所述目标分类特征在所述第一二维数组的每一行中的词频反文档频率,得到宽度为N的第二二维数组,其中,N为预设的目标分类特征的数量;所述第二二维数组中每一行元素的值依次为每一个所述目标分类特征在所述第一二维数组中对应行的词频反文档频率。

第一处理模块120,还用于将所述第二二维数组中的各元素值调整至可进行图像表达的数值范围内,得到第三二维数组。

第一处理模块120,还用于将所述第三二维数组转换为分类图像。

第一处理模块120,具体用于对所述第三二维数组进行图像增强处理,得到第四二维数组;基于所述第四二维数组,得到分类图像。

第一处理模块120,具体用于将所述第三二维数组中的每个元素的值乘以预设增强比例系数,得到中间二维数组;将所述中间二维数组中值大于255的元素的值修改为255,得到所述第四二维数组。

第一处理模块120,具体用于对所述第二二维数组中的元素进行归一化处理,并将每个元素乘以255,得到所述第三二维数组。

第一处理模块120,还用于构建初始分类特征集合,初始分类特征集合包括所有的初始分类特征,且不同的所述初始分类特征的长度相同;针对初始分类特征集合中的每一个初始分类特征,确定该初始分类特征在每一个预设的训练恶意代码文件中的词频反文档频率,并计算该初始分类特征对应的所有词频反文档频率之和;确定出词频反文档频率之和最大的N个初始分类特征作为所述目标分类特征。

本申请实施例所提供的恶意代码可视化装置100,其实现原理及产生的技术效果和前述恶意代码可视化方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述恶意代码可视化方法实施例中相应内容。

基于同样的技术构思,本申请提供一种恶意代码分类装置,如图9所示,该恶意代码分类装置200包括第二获取模块210、第二处理模块220。

第二获取模块,用于获取分类图像,所述分类图像基于上述的恶意代码可视化方法得到。

第二处理模块,用于将所述分类图像输入预先训练好的恶意代码分类模型,得到表征恶意代码类型的分类结果。

本申请实施例所提供的恶意代码分类装置200,其实现原理及产生的技术效果和前述恶意代码分类方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述恶意代码分类方法实施例中相应内容。

请参阅图10,其为本申请实施例提供的一种电子设备300。所述电子设备300包括:处理器310、存储器320。

所述存储器320、处理器310各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。其中,存储器320用于存储计算机程序,如存储有图8中所示的软件功能模块,即恶意代码可视化装置100;或存储有图9中所示的软件功能模块,即恶意代码分类装置200。其中,恶意代码可视化装置100或恶意代码分类装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器320中或固化在所述电子设备300的操作系统(operatingsystem,OS)中的软件功能模块。

所述处理器310,用于执行存储器320中存储的可执行模块,例如恶意代码可视化装置100包括的软件功能模块或计算机程序。此时,处理器310,用于获取待分类恶意代码文件;将所述待分类恶意代码文件按照预设长度进行切分,得到宽度为所述预设长度的第一二维数组;按照预设的目标分类特征的顺序,依次计算每一个所述目标分类特征在所述第一二维数组的每一行中的词频反文档频率,得到宽度为N的第二二维数组,其中,N为预设的目标分类特征的数量;所述第二二维数组中每一行元素的值依次为每一个所述目标分类特征在所述第一二维数组中对应行的词频反文档频率;将所述第二二维数组中的各元素值调整至可进行图像表达的数值范围内,得到第三二维数组;将所述第三二维数组转换为分类图像。

或者,所述处理器310,用于执行存储器320中存储的可执行模块,例如恶意代码分类装置200包括的软件功能模块或计算机程序。此时,处理器310,用于获取分类图像,所述分类图像基于上述的恶意代码可视化方法得到;将所述分类图像输入预先训练好的恶意代码分类模型,得到表征恶意代码类型的分类结果。

其中,存储器320可以是,但不限于,RAM(Random Access Memory,随机存取存储器),ROM(Read Only Memory,只读存储器),PROM(Programmable Read-Only Memory,可编程只读存储器),EPROM(Erasable Programmable Read-Only Memory,可擦除只读存储器),EEPROM(Electric Erasable Programmable Read-Only Memory,电可擦除只读存储器)等。

处理器310可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processor,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器310也可以是任何常规的处理器等。

其中,上述的电子设备300,包括但不限于个人电脑、服务器等。

本申请实施例还提供了一种计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备300运行时,执行上述所示的恶意代码可视化方法或恶意代码分类方法。该计算机可读存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种无胎自粘聚合物改性沥青防水卷材
  • 一种增强型自粘聚合物改性沥青聚酯胎防水卷材
  • 一种增强型自粘聚合物改性沥青聚酯胎防水卷材
技术分类

06120116521708