恶意软件类型检测方法、装置及存储介质与流程

文档序号:27558733发布日期:2021-11-25 03:07阅读:148来源:国知局
恶意软件类型检测方法、装置及存储介质与流程

1.本技术涉及数据处理领域,具体而言,涉及一种恶意软件类型检测方法、装置及存储介质。


背景技术:

2.目前,随着各类安全技术的飞速发展,恶意软件的形式也是多种多样的,技术手段和变形手法也在不断翻新,但这些恶意软件还是需要植入到系统中并进行持久化危害;这些危害行为不仅包括偷取敏感数据、加密特定文件进行勒索、使用计算资源进行如挖矿等行为,还包括对网络中的其它主机进行探测、传播/感染或连接其控制主机(一般木马类软件,如ramnit、gozi等)。恶意软件一般会使用比较固定的指令、应用程序调用等进行这些有害行为。
3.现有技术中,检测上述恶意软件的系统主要采用两类技术,其一为传统的静态特征库方式,其二为使用虚拟执行环境检测其恶意行为,也有不少系统综合使用两种方式,但都存在一些缺陷。这些缺陷表现在:动态和静态检测阶段是割裂的,即先使用特征(如yara规则、文件摘要等)进行静态检测,如无法检测到确定结果则使用动态检测进行模拟运行,获取其行为特征,如进程注入、注册到启动任务、修改敏感注册表/项等,但对于恶意软件家族的确定基本还是在静态部分获得,其方式无非是使用卷积神经网络等方法,即cnn对恶意软件进行分类。
4.针对上述方法存在的问题主要还是无法比较准确地获取恶意软件类型,从而无法采取有效的针对措施,特别是在静态分析阶段中无法得知其真正的执行步骤或指令(因为部分恶意软件会采用加壳、加密或加花指令),而动态检测虽然可以获取行为特征,但其实不同类型的恶意软件可能在特征上比较类似,故仅从这些特征也无法获知其真正的类型。
5.因此,亟需一种可以准确检测出恶意软件类型的检测方法、装置及存储介质。


技术实现要素:

6.本发明实施例提供一种恶意软件类型检测方法、装置及存储介质,用以解决现有技术中无法准确检测出恶意软件的类型的问题。
7.本发明实施例的第一方面,提供一种恶意软件类型检测方法,包括:获取恶意软件的样本数据,并对所述样本数据进行分类;生成恶意软件程序和正常执行程序的汇编指令,获取恶意软件程序和正常执行程序的 api调用指令序列,并对所述汇编指令和api调用指令序列进行编码而得到初步编码指标序列;基于所述初步编码指标序列对所述样本数据进行差异度筛减处理,筛减近似的指令序列而获得筛减指标序列;基于筛减指标序列对筛减后的汇编指令和api调用指令序列进行交叉编码,并将交叉编码后得到的向量输入至神经网络中进行训练;
通过训练后的神经网络对未知程序进行恶意软件类型检测。
8.可选地,在第一方面的一种可能实现方式中,所述获取恶意软件的样本数据,并对所述样本数据进行分类,包括:对所述恶意软件的样本数据进行加花指令处理,所述花指令的混淆程度是由恶意软件的大小确定的。
9.可选地,在第一方面的一种可能实现方式中,所述基于所述初步编码指标序列对所述样本数据进行差异度筛减处理,筛减近似的汇编指令而获得筛减指标序列,包括:计算第一指令序列的tf类别指数:其中,为第一指标序列的tf类别指数,分子为指令序列出现的次数,而分母为所有指令序列出现的次数之和;计算第一指令序列的idf类别指数:其中,为第一指标序列的idf类别指数,一共有种执行程序类别,分别为;计算第一指令序列的tf

idf:其中,为指标序列的tf类别指数,为指标序列的idf类别指数。
10.可选地,在第一方面的一种可能实现方式中,所述参数阈值是由第一指令序列的tf

idf的平均值和标准差决定的,包括:根据第一指标序列的平均值来计算期望,并基于所述期望来计算整体标准差;如果第二指令序列的tf

idf值小于3倍整体标准差,则将所述第二指标序列进行筛减。
11.可选地,在第一方面的一种可能实现方式中,所述基于筛减指标序列对筛减后的汇编指令和api调用指令序列进行交叉编码,包括:将每个恶意软件程序和正常执行程序的2

gram序列进行编码交叉,按顺序分别将它们组成向量,所述向量的维度为768,每个维度包含一个汇编指令2

gram和两个api指令序列2

gram。
12.可选地,在第一方面的一种可能实现方式中,所述将交叉编码后得到的向量输入至神经网络中进行训练,包括:将交叉编码生成的向量数据作为一维卷积神经网络的输入。
13.本发明实施例的第二方面,提供一种恶意软件类型检测装置,包括:获取模块,用于获取恶意软件的样本数据,并对所述样本数据进行分类;初步编码模块,用于生成恶意软件程序和正常执行程序的汇编指令,获取恶意软
件程序和正常执行程序的 api调用指令序列,并对所述汇编指令和api调用指令序列进行编码而得到初步编码指标序列;筛减模块,用于基于所述初步编码指标序列对所述样本数据进行差异度筛减处理,筛减近似的指令序列而获得筛减指标序列;神经网络训练模块,用于基于筛减指标序列对筛减后的汇编指令和api调用指令序列进行交叉编码,并将交叉编码后得到的向量输入至神经网络中进行训练;检测模块,用于通过训练后的神经网络对未知程序进行恶意软件类型检测。
14.可选地,在第二方面的一种可能实现方式中,所述获取模块还用于执行以下步骤,包括:对所述恶意软件的样本数据进行加花指令处理,所述花指令的混淆程度是由恶意软件的大小确定的。
15.可选地,在第二方面的一种可能实现方式中,所述筛减模块,包括:tf类别指数计算单元,用于计算第一指令序列的tf类别指数:其中,为第一指标序列的tf类别指数,分子为指令序列出现的次数,而分母为所有指令序列出现的次数之和;idf类别指数计算单元,用于计算第一指令序列的idf类别指数:其中,为第一指标序列的idf类别指数,一共有种执行程序类别,分别为;tf

idf计算单元,用于计算第一指令序列的tf

idf:其中,为指标序列的tf类别指数,为指标序列的idf类别指数。
16.可选地,在第二方面的一种可能实现方式中,所述筛减模块,还包括:计算单元,用于根据所述第一指令序列的tf

idf设置的预设阈值来计算第二指标序列在其他类别的tf

idf指标值;筛减单元,用于当所述tf

idf指标值高于参数阈值时,将所述第二指标序列从所述第一指令序列中去除。
17.可选地,在第二方面的一种可能实现方式中,所述筛减单元,包括:标准差计算子单元,用于根据第一指标序列的平均值来计算期望,并基于所述期望来计算整体标准差;筛减子单元,用于如果第二指令序列的tf

idf值小于3倍整体标准差,则将所述第二指标序列进行筛减。
18.本发明实施例的第三方面,提供一种可读存储介质,所述可读存储介质中存储有
计算机程序,所述计算机程序被处理器执行时用于实现本发明第一方面及第一方面各种可能设计的所述方法。
19.本发明提供的恶意软件类型检测方法、装置及存储介质,通过获取恶意软件的样本数据,并对所述样本数据进行分类;生成恶意软件程序和正常执行程序的汇编指令,获取恶意软件程序和正常执行程序的 api调用指令序列,并对所述汇编指令和api调用指令序列进行编码而得到初步编码指标序列;基于所述初步编码指标序列对所述样本数据进行差异度筛减处理,筛减近似的指令序列而获得筛减指标序列;基于筛减指标序列对筛减后的汇编指令和api调用指令序列进行交叉编码,并将交叉编码后得到的向量输入至神经网络中进行训练;通过训练后的神经网络对未知程序进行恶意软件类型检测。实现了对未知恶意软件类型的精准检测,从而解决了现有技术中无法准确检测出恶意软件的类型的问题。
附图说明
20.图1为恶意软件类型检测方法的第一种实施方式的流程图;图2为指令序列数据的向量化表示的示意图;图3为分类卷积神经网络的结构示意图;图4为恶意软件类型检测装置的第一种实施方式的结构图。
具体实施方式
21.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
22.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
23.应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
24.应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
25.应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含a、b和c”、“包含a、b、c”是指a、b、c三者都包含,“包含a、b或c”是指包含a、b、c三者之一,“包含a、b和/或c”是指包含a、b、c三者中任1个或任2个或3个。
26.应当理解,在本发明中,“与a对应的b”、“与a相对应的b”、“a与b相对应”或者“b与a
相对应”,表示b与a相关联,根据a可以确定b。根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其他信息确定b。a与b的匹配,是a与b的相似度大于或等于预设的阈值。
27.取决于语境,如在此所使用的“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。
28.下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
29.本发明提供一种恶意软件类型检测方法,如图1所示其流程图,包括:步骤s110、获取恶意软件的样本数据,并对所述样本数据进行分类。
30.在本步骤中,获取的样本数据不仅包括各类恶意软件程序,还包括正常执行程序;其中正常执行程序都是从windows系统中获取正常安装的二进制程序,数量为367个,均为win32执行程序;对所述恶意软件的样本数据进行分类,主要分为如下类型,包括但不限于:木马、释放器、病毒、广告、下载器、后门、蠕虫、间谍等;每类恶意软件数量如下表所示:表1:恶意软件类型和数量对所述样本数据进行分类后,需要使用加花指令程序对上述恶意程序进行处理,包括:每类恶意软件中随机挑选100个,加入的花指令一般包含一些随机的如jnz、cmp、add、sub、push、pop等常见指令,花指令的混淆程度视恶意软件大小确定。
31.步骤s120、生成恶意软件程序和正常执行程序的汇编指令,获取恶意软件程序和正常执行程序的 api调用指令序列,并对所述汇编指令和api调用指令序列进行编码而得到初步编码指标序列。
32.在步骤s120中,首先,获取程序的静态指令,即恶意软件程序和正常执行程序的汇编指令。利用ida或ollydbg将获取到的各类恶意软件程序和正常执行程序生成汇编指令代码;在生成过程中还需要去除一些伪指令(如dw、db等),以及无用指令(如nop等),主要是.text代码段。
33.其次,获取动态指令,即恶意软件程序和正常执行程序的 api调用指令序列。通过
将获取的各类恶意软件和正常执行程序放入动态沙箱中运行,待运行完毕后获取其windows api调用指令序列,其中沙箱也使用windows 10系统。
34.最后,通过汇编指令字典和windows api字典对获取的汇编指令和windows api进行初步编码。在该初步编码过程中,需要挑选频度最高的256个汇编指标或api调用指令序列进行编码,以减少空间的开销,即分别使用两个字节,分别用符号和符号表示,其中;在不引起混淆的情况下,统一表示为。
35.步骤s130、基于所述初步编码指标序列对所述样本数据进行差异度筛减处理,筛减近似的指令序列而获得筛减指标序列。
36.在该步骤中,会先通过2

gram方式对得到的初步编码指标序列进行处理,得到2

gram指令序列:然后再计算2

gram指令序列的tf

idf指标值;还会根据得到的2

gram指令序列的分布情况进行再次编码,再次编码过程中需要针对汇编指令和api调用指令序列分别进行,这样将会得到较大的积空间。
37.得到再次编码后的2

gram指令序列后,会根据第一指令序列的tf

idf设置的预设阈值来计算第二指标序列在其他类别的tf

idf指标值,所述第一指令序列为再次编码后的2

gram指令序列,所述第二指标序列为某一类别的2

gram子指令序列,所述再次编码后的2

gram指令序列中包含多个类别的2

gram子指令序列,多个类别包括八类恶意软件和正常执行程序;当所述第二指标序列在其他类别的tf

idf指标值高于参数阈值th时,将所述第二指标序列从所述第一指令序列中去除,其目的是淘汰各类程序之间存在过于相似的2

gram指令,以加速后续训练速度并提升分类准确性。
38.步骤s140、基于筛减指标序列对筛减后的汇编指令和api调用指令序列进行交叉编码,并将交叉编码后得到的向量输入至神经网络中进行训练。
39.在步骤s140中,首先,会基于筛减指标序列对筛减后的汇编指令和api调用指令序列进行交叉编码,即:使用汇编指令和api调用指令序列调用交叉编码,即每个恶意软件代码和正常执行程序的2

gram序列进行编码交叉,按顺序分别将它们组成向量,向量维数为768;考虑到汇编指令序列的特征不如api特征明显,所以交叉编码时采用1个汇编指令2

gram加上2个api指令2

gram序列,即每个维度的数据包含3部分数据,包括1个汇编指令序列和2个api指令序列分别使用2字节编码,则每个维度为6个字节,单个向量的数据长度为4608个字节。汇编指令和api调用指令序列调用交叉编码得到的指令序列数据的向量化表示如图2所示。另外,考虑到无论是恶意软件还是正常执行程序,其指令长度都远超256、512条汇编或api数据,所以对于待训练数据而言,需要多次被投入神经网络中进行训练。
40.其次,会将交叉编码后得到的向量输入至神经网络中进行训练。本发明采用的是一维卷积神经网络进行训练,根据本发明的分类要求,输出层为一个九维向量,分别对应八种不同类型的恶意软件和一种正常执行程序,整体神经网络结构如图3所示:除输入和输出层外,整体采用5层结构,其中包含三个卷积层c1、c3、c5和两个池化层s2、s4,卷积层间使用
maxpool池化方法,输出层和最后一个卷积层使用全连接方式;图3中的每层数字表示个数、列数和行数,行数均为1,这与一般的基于二维的卷积神经网络有较大不同。
41.另外,在训练样本的划分上,本发明采用80%的训练数据和20%的测试数据,通过该划分方法得到的恶意软件分类准确率可高达99.79%,相较于采用基于静态汇编指令的图形处理的二维卷积神经网络或基于静态api指令使用决策树或lightbgm等方法而言,对于恶意软件处理上,在分类准确性上有显著的提升。具体恶意软件分类检测测试数据如表2所示:表2:恶意软件分类检测测试数据步骤s150、通过训练后的神经网络对未知程序进行恶意软件类型检测。在本步骤中通过将待检测程序转换为2

gram向量族,并将所述2

gram向量族输入至一维卷积神经网络进行识别,这样就完成了对相关未知程序的类别判定。
42.在一个实施例中,所述基于所述初步编码指标序列对所述样本数据进行差异度筛减处理,筛减近似的汇编指令而获得筛减指标序列,包括:计算第一指令序列的tf类别指数:其中,为第一指标序列的tf类别指数,分子为指令序列出现的次数,而分母
为所有指令序列出现的次数之和;计算第一指令序列的idf类别指数:其中,为第一指标序列的idf类别指数,一共有种执行程序类别,分别为;计算第一指令序列的tf

idf:其中,为指标序列的tf类别指数,为指标序列的idf类别指数。
43.在一个实施例中,所述参数阈值是由第一指令序列的tf

idf的平均值和标准差决定的,包括:根据第一指标序列的平均值来计算期望,并基于所述期望来计算整体标准差;如果第二指令序列的tf

idf值小于3倍整体标准差,则将所述第二指标序列进行筛减。
44.在该步骤中,参数阈值th是根据指令序列的tf

idf的平均值及标准差得到的,具体如下:先根据指令序列的tf

idf的平均值来计算期望值:其中,n为指令序列的数量。
45.然后根据所述期望值来计算整体标准差:最后将tfidf值小于3倍整体标准差的指令序列进行淘汰。
46.本发明提供的恶意软件类型检测方法、装置及存储介质,通过获取恶意软件的样本数据,并对所述样本数据进行分类;生成恶意软件程序和正常执行程序的汇编指令,获取恶意软件程序和正常执行程序的 api调用指令序列,并对所述汇编指令和api调用指令序列进行编码而得到初步编码指标序列;基于所述初步编码指标序列对所述样本数据进行差异度筛减处理,筛减近似的指令序列而获得筛减指标序列;基于筛减指标序列对筛减后的汇编指令和api调用指令序列进行交叉编码,并将交叉编码后得到的向量输入至神经网络中进行训练;通过训练后的神经网络对未知程序进行恶意软件类型检测。实现了对未知恶意软件类型的精准检测,从而解决了现有技术中无法准确检测出恶意软件的类型的问题。
47.技术效果:(1)采用静态指令序列结合动态api调用序列的特征抽取方式,可以排除重合度较大的部分,从而充分地突出了恶意软件的特征片段;(2)充分利用程序的动态api调用序列,可以有效地对抗在静态检测中无法绕过的程序加壳和加密问题
(3)在特征抽取时加入花指令混淆部分内容,提升了模型的泛化能力,提高模型识别恶意软件变种的能力;(4)在进行神经网络训练中使用汇编指令和api调用交叉编码,可以充分利用这些序列的上下文信息,达到特征快速提取的目的;(5)恶意程序和正常程序执行动态和静态序列的比对,设定阈值去除它们之间相似度较高的序列,有效地提升训练速度并提升分类准确性,可以快速地生成模型,从而缩短安全响应时间;(6)采用代价较低的一维卷积神经网络,而不使用规模较大的二维卷积神经网络,而且去除了恶意软件和正常软件重合度较高的调用序列,从而有效缩短训练时间降低硬件开销。
48.本发明的实施例还提供一种恶意软件类型检测装置,如图4所示,包括:获取模块,用于获取恶意软件的样本数据,并对所述样本数据进行分类;初步编码模块,用于生成恶意软件程序和正常执行程序的汇编指令,获取恶意软件程序和正常执行程序的 api调用指令序列,并对所述汇编指令和api调用指令序列进行编码而得到初步编码指标序列;筛减模块,用于基于所述初步编码指标序列对所述样本数据进行差异度筛减处理,筛减近似的指令序列而获得筛减指标序列;神经网络训练模块,用于基于筛减指标序列对筛减后的汇编指令和api调用指令序列进行交叉编码,并将交叉编码后得到的向量输入至神经网络中进行训练;检测模块,用于通过训练后的神经网络对未知程序进行恶意软件类型检测。
49.在一个实施例中,所述获取模块还用于执行以下步骤,包括:对所述恶意软件的样本数据进行加花指令处理,所述花指令的混淆程度是由恶意软件的大小确定的。
50.在一个实施例中,所述筛减模块,包括:tf类别指数计算单元,用于计算第一指令序列的tf类别指数:其中,为第一指标序列的tf类别指数,分子为指令序列出现的次数,而分母为所有指令序列出现的次数之和;idf类别指数计算单元,用于计算第一指令序列的idf类别指数:其中,为第一指标序列的idf类别指数,一共有种执行程序类别,分别为;tf

idf计算单元,用于计算第一指令序列的tf

idf:
其中,为指标序列的tf类别指数,为指标序列的idf类别指数。
51.在一个实施例中,所述筛减模块,还包括:计算单元,用于根据所述第一指令序列的tf

idf设置的预设阈值来计算第二指标序列在其他类别的tf

idf指标值;筛减单元,用于当所述tf

idf指标值高于参数阈值时,将所述第二指标序列从所述第一指令序列中去除。
52.在一个实施例中,所述筛减单元,包括:标准差计算子单元,用于根据第一指标序列的平均值来计算期望,并基于所述期望来计算整体标准差;筛减子单元,用于如果第二指令序列的tf

idf值小于3倍整体标准差,则将所述第二指标序列进行筛减。
53.其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,asic)中。另外,该asic可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(rom)、随机存取存储器(ram)、cd

rom、磁带、软盘和光数据存储设备等。
54.本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。
55.在上述终端或者服务器的实施例中,应理解,处理器可以是中央处理单元(英文:central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(英文:digital signal processor,dsp)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
56.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1