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

基于协同注意力的恶意软件分类方法和装置

文献发布时间:2024-04-18 19:52:40


基于协同注意力的恶意软件分类方法和装置

技术领域

本发明属于网络威胁防护领域,涉及恶意软件分类技术,具体涉及一种基于协同注意力的恶意软件分类方法和装置。

背景技术

恶意软件分类是网络威胁防护技术的主要分支之一。该技术主要是通过特征码或基于人工智能的识别算法,通过分析已捕获的恶意软件的代码或行为特征分布,对新出现的恶意软件进行有效识别。恶意软件是指在未经用户许可的情况下收集敏感信息、控制用户设备、严重侵犯用户个人权益的软件。随着计算机成为人们生产生活中不可或缺的重要组成部分,恶意软件的影响力已经从虚拟的网络空间向物理空间蔓延。恶意软件生产呈现流水线化、精细化的趋势。日新月异的恶意软件给用户带来巨大的安全威胁也给安全从业者带来巨大挑战。

传统基于特征码的检测方法已经无法满足目前恶意软件检测需求,如何检测新的恶意软件变种成为近年研究的重点。注意到出于效益考量或编程习惯等原因,恶意软件呈现代码复用、家族延续特点。对新出现的恶意软件若能对其进行正确的家族归因,则能极大程度上提高分析人员的分析效率,为溯源提供有力证据。依据检测时是否执行目标代码,现有的基于机器学习的恶意软件家族分类方法分为静态分析和动态分析。静态分析是指在不运行程序的条件下,进行程序分析的方法。针对恶意软件的静态分析对象一般为二进制程序操作码n-gram序列,PE头信息,字符串、灰度图等。动态分析需要在程序运行时才能进行,动态分析方法通过监控代码运行后的异常行为或对系统的影响进行恶意与否的检测,分类特征一般为API序列、系统日志,内存变化等。但是现有的方法普遍存在两个问题:

-分类准确率低。现存方法所选用特征的表达能力有限,如仅利用头部信息或字符串信息,仅考虑API序列而不考虑API函数参数,在面对分类类别细化、或可训练样本数量较少的场景时,没有足够的区分力,容易带来错误分类的问题。

-可解释性差。由于机器学习自身的黑盒属性,大多数方法只能给出分类结果。例如许多基于灰度图的CNN分类方法,利用灰度图纹理特征划分恶意软件家族,其解释性差,无法为应用落地提供证据,对分析人员没有帮助。少数方法如决策树可以给出特征重要性,但是抽象化的特征还是无法给予直观上的反馈。

发明内容

本发明的目的在于提供一种基于协同注意力的恶意软件分类方法和装置,重点利用设计的多源融合的特征编码算法、序列特征表示算法、恶意软件特征表示及分类算法、分类决策重要性可视化算法,分别数值化每一条汇编代码或API调用,并且分层计算每个软件实例的特征表示,特征表示用于进行恶意性判别,记录特征表示计算过程中的注意力值并可视化,以实现可解释的恶意软件分类。

本发明首先收集不同恶意软件家族的恶意软件实例,通过反汇编软件获取汇编指令序列、沙箱模拟执行获取API调用序列;利用设计的多源融合的特征编码算法对每一条汇编代码或API调用进行数值化编码;利用设计的恶意软件特征表示与分类算法构建每一个恶意软件实例的特征表示并计算其家族分布概率;然后,利用设计的恶意特征可视化分析算法,可视化恶意软件实例动静态特征的分类影响因子,以解释分类结果。

本发明采用的技术方案如下:

一种基于协同注意力的恶意软件分类方法,所述方法包括:

获取恶意软件的汇编指令序列和API调用序列;

计算汇编指令序列的特征表示序列S

在所述特征表示序列S

将所述形式化表示H

将所述静态特征表示v

进一步地,所述获取恶意软件的汇编指令序列和API调用序列,包括:

使用反汇编软件提取所述恶意软件中每一个函数的汇编代码,以得到汇编指令序列;

使用沙箱对所述恶意软件进行模型,以得到API调用序列。

进一步地,所述计算汇编指令序列的特征表示序列S

对所述汇编指令序列和所述API调用序列分别进行数值化编码之后,添加位置编码,以得到数值化编码序列

在所述数值化编码序列

将[CLS]对应位置的Transformer神经网络模型V′的输出作为该恶意软件的特征表示序列S

进一步地,所述对所述汇编指令序列进行数值化编码,包括:

使用word2vec对所述汇编指令序列中的操作码进行编码,得到所述汇编指令序列的第一数值化嵌入序列;

使用局部敏感哈希算法对所述汇编指令序列中的操作数进行编码,得到所述汇编指令序列的第二数值化嵌入序列;

统计操作数集合元素个数、每种操作数及注释信息类型以及可打印字符串出现次数,以得到所述汇编指令序列的第三数值化嵌入序列;

基于所述第一数值化嵌入序列、所述第二数值化嵌入序列和所述第三数值化嵌入序列,得到所述汇编指令序列的数值化编码结果。

进一步地,所述在所述特征表示序列S

在所述特征表示序列S

基于所述Transformer神经网络模型V的特征计算过程的形式化表式,得到自注意力层的输出O;其中,所述特征计算过程的形式化表式为

对所述输出O进行线性变换,并以[CLS]对应位置的Transformer神经网络模型V的输出作为该恶意软件的静态特征表示v

进一步地,所述将所述形式化表示H

计算所述形式化表示H

分别计算U

分别计算汇编函数的注意力权重

计算静态协同特征表示

进一步地,所述方法还包括:

记录分类影响因子;所述分类影响因子:所述基于自注意力机制的Transformer神经网络模型V计算的汇编指令、API调用对于汇编函数特征、API调用子序列特征构建的重要性系数,和基于协同注意力的神经网络模型计算的汇编函数、API调用子序列对于特征构建的重要性系数;

对所述分类因子可视化,以解释所述恶意软件的分类结果。

一种基于协同注意力的恶意软件分类装置,所述装置包括:

预处理模块,用于获取恶意软件的汇编指令序列和API调用序列;

动静态特征序列标准化模块,用于计算汇编指令序列的特征表示序列S

恶意软件特征表示与分类模块,用于在所述特征表示序列S

一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行上述任一项所述方法的指令。

一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现上述任一项所述的方法。

与现有技术相比,本发明至少具有以下优点:

1)利用本发明的方法可以结合使用样本静态和动态信息,进行细粒度编码,保留语义信息和自身参数信息。此外,利用层次化的基于自注意力和协同注意力的神经网络模型进行特征提取并分类,在特征提取时利用注意机制,在聚合编码信息的同时对分类结果进行更直观的解释。

2)本发明提出了一种针对恶意软件多源融合的特征编码算法,使用该方法可以综合利用操作码、操作数、API、API参数等多源信息,提高了特征的表达能力。

3)本发明提出了序列特征表示算法、恶意软件特征表示及分类算法,将这上述方法结合,可以恶意软件不限量,不定长动静态特征序列逐层映射到高维的特征表征空间中,关联中间层静态函数特征表示与动态API调用片段特征表示,具有更通用和高效的表征效果和分类能力。

4)本发明提出了一种分类决策重要性可视化算法,在每一个恶意软件特征表示计算过程中,记录基于协同注意力的神经网络模型计算的汇编函数/API调用子序列对于特征构建的重要性系数、汇编指令/API调用对于汇编函数特征/API调用子序列特征构建的重要性系数,基于以上重要性系数进行层次化的可视化呈现,给予安全分析人员直观的预测分类概率解释。

附图说明

图1是提出的基于协同注意力的恶意软件分类方法和系统的流程图。

图2是提出的恶意软件多源融合的特征编码方法操作数集合抽象的实例图。

图3是提出的恶意软件多源融合的特征编码方法API调用参数集合抽象的实例图。

图4是实例2的恶意软件分类结果汇编指令重要性可视化图

图5是实例2的恶意软件分类结果API调用重要性可视化图

具体实施方式

下面通过具体实施例和图例,对本发明做进一步详细说明。

本发明提供的基于协同注意力的恶意软件分类方法和装置,适用于融合恶意软件多源的动静态特征,提取恶意软件的向量化表示,同时对分类关键要素进行层次化的可视化呈现,给予安全分析人员直观的预测分类概率解释。

本发明的一种基于协同注意力的恶意软件分类方法,如图1所示,包括以下步骤:

步骤1:获取恶意软件的汇编指令序列和API调用序列。

本发明收集不同恶意软件家族的恶意软件实例;对于所有恶意软件实例通过反汇编软件获取汇编指令序列集合、沙箱模拟执行获取API调用序列集合。

本发明一个优选的实施方式中,为了得到更完备的恶意软件特征表示,需要尽可能全面地收集不同家族恶意软件的动静态信息,具体地,使用IDA对恶意软件进行反汇编,得到包含函数边界、系统API、数据段中的可读字符串变量等信息地反汇编代码;使用Cuckoo Sandbox监控恶意软件的动态行为信息,设计一个并行化的处理函数从Cuckoo分析报告中提取API调用序列。

步骤2:计算汇编指令序列的特征表示序列S

本步骤基于多源融合的特征编码算法和序列特征表示算法完成。

多源融合的特征编码算法对于一个恶意软件实例的汇编指令和API调用使用特征提取函数顺序地提取数值化嵌入序列,具体地,将该恶意软件每实例的每一条汇编指令或API调用,使用统计方法统计字段出现频率,得到重要特征字段出现频数编码(第三数值化嵌入序列);使用词嵌入算法对操作码、API函数名称进行编码以捕获的语义相似性,从而得到操作码/API调用名称的词嵌入表示(第一数值化嵌入序列);对于每一条汇编指令或API调用,使用局部敏感哈希算法对操作数、API函数参数进行编码以捕获操作集合的相似性,从而得到汇编指令中的操作数和API调用中的参数名称及参数取值的编码(第二数值化嵌入序列)。最后,基于第一数值化嵌入序列、第二数值化嵌入序列和第三数值化嵌入序列,得到所述汇编指令序列的数值化编码结果。

本发明一个优选的实施方式中,在多源融合的特征编码算法所述的操作码/API调用名称词嵌入编码技术:使用word2vec对操作码进行编码,word2vec是自然语言处理领域常用词嵌入方法,基于浅层神经网络。通过学习文本中单词的上下文信息去表征词的语义和句法信息,即通过学习一个单词原始空间到嵌入空间的映射使得语义上越相似的单词在嵌入空间中距离越近。将不同恶意软件地汇编函数指令序列/定长滑动窗口内API调用子序列作为语料库训练word2vec模型,分别得到操作码/API调用名称的词嵌入表示。

本发明一个优选的实施方式中,在多源融合的特征编码算法中所述的操作数/API参数局部敏感哈希编码技术:对于汇编指令中的操作数和API调用中的参数名称及参数取值,分别使用局部敏感哈希算法对其进行编码。局部敏感哈希算法能够使得在原来空间相似的样本集合,进行相关运算映射到特定范围空间时,仍是相似的,且原来不相似的哈希之后仍然极大概率不相似。具体地,将局部敏感哈希算法——Simhash应用到操作数编码的过程如下。首先,规范化操作数及注释信息。对操作数及注释信息中存在的一些容易导致Simhash编码特异性强,为特征学习带来困难的字段进行规范化,如操作数中存在一些立即数、注释信息中存在大量以地址自动命名的变量名等。使用预定义的字段对操作数及注释信息进行分类并抽象表示。定义REG、MEM、CONST、MARK(函数名、跳转地址、结构指针地址等)四类操作数及注释信息类型,以此重构原有操作数。然后进行Simhash计算,使用MD5作为hash算法,将计算出的hash值按照字段权重加和,形成加权数字串。然后对所得加权数字串进行降维,对于加权合并后的数字串上的某位,若其值大于0则将该位置为1,若其值小于0则将该位置为0。将Simhash应用到API调用参数编码的过程类似,其区别在于参数名称与参数取值被分别处理,且参数取值抽象字段不同。API参数取值被分为三类,数字、地址值和字符串。对于数字和地址值,使用CONST和ADDR抽象表示;对于字符串参数值,可能包含IP地址、URL、文件路径、DLL名称、注册表值等关键信息,对其进行更为细致的分析。若检测到IP地址和URL,则使用IP和URL抽象表示。若检测到文件路径、DLL名称、注册表值则对其进行分词并加入参数值集合。使用Simhash计算处理后的参数取值集合作为API参数取值编码。

本发明一个优选的实施方式中,在多源融合的特征编码算法中所述的统计特征编码技术:对于每一个汇编指令,将其操作码分为七类分别为数据传输指令、算术运算指令、逻辑运算指令、串指令、程序转移指令、伪指令、处理控制指令及其他,使用onehot进行编码,统计操作数集合元素个数、每种操作数及注释信息类型以及可打印字符串出现次数。对于每一个API调用,Cuckoo sandbox总共监控312个API调用并将其分为17类,使用onehot进行编码,统计每种类型的API参数取值、“MZ”出现次数,对规范化后的参数集合元素个数进行计数并计算字符串的平均长度,用以对集合进行整体概括。

序列特征表示算法是使用基于自注意力机制的深度神经网络模型进行特征提取。

本发明一个优选的实施方式中,在序列特征表示算法中所述的基于自注意力神经网络模型的层次化特征表示技术:对于数值化后的每一个汇编函数的指令编码序列/API调用片段的API调用编码序列,使用基于自注意力机制的Transformer提取其函数级/API调用片段级的特征表示。

以下是汇编函数的指令编码序列/API调用片段的API调用编码序列的形式化表示:

W

其中,W

以下是特征计算过程的形式化表式:

O

其中,

步骤3:在所述特征表示序列S

恶意软件特征表示及分类算法首先使用基于自注意力机制的深度神经网络模型逐层进行特征提取,针对每一个恶意软件的动静态特征序列,逐层计算函数级/API调用片段级和恶意软件级的动静态特征表示;使用基于协同注意力机制的神经网络模型提取反汇编函数级静态特征表示与API调用片段级的动态特征表示之间的语义关联,计算融合交叉信息的恶意软件级的动静态协同特征表示;连接上述恶意软件动静态特征表示,作为机器学习分类器的输入计算恶意软件的家族分类概率。

本发明一个优选的实施方式中,在恶意软件特征表示及分类算法中所述的基于自注意力神经网络模型的层次化特征表示技术:

对于所计算的每一个汇编函数特征表示序列/API调用片段特征表示序列,使用基于自注意力机制的Transformer提取恶意软件级的动静态特征表示。

以下是汇编函数特征表示序列/API调用片段特征表示序列的形式化表示:

S=(s

其中,S是恶意软件的静态汇编函数/动态调用片段在添加位置编码后的数值化特征表示序列。在S之前添加[CLS]字段的编码s

以下是特征计算过程的形式化表式:

O=A·V

其中,

本发明一个优选的实施方式中,在恶意软件特征表示及分类算法中所述的基于协同注意力神经网络模型的特征表示技术:给定某一恶意软件的每一个汇编函数特征表示序列/API调用片段特征表示序列,使用基于协同注意力机制的神经网络模型提取恶意软件级的动静态协同特征表示。

以下是汇编函数特征表示序列以及API调用片段特征表示序列的形式化表示:

其中,H

以下是关联矩阵计算过程的形式化表式:

U

U

其中,W

以下是动静态特征表示

本发明一个优选的实施方式中,在恶意软件特征表示及分类算法中所述的基于机器学习的恶意软件分类技术:给定某一恶意软件的动静态特征表示及动静态协同特征表示,将其加权求和并连接后,使用多层感知器模型以及传统机器学习模型对恶意软件进行分类。

本发明一个优选的实施方式中,本发明还包括分类决策重要性可视化方法。该分类决策重要性可视化方法是在恶意软件特征表示构建过程中,记录并可视化恶意软件实例动静态特征的分类影响因子,以解释分类结果。具体地,记录基于协同注意力的神经网络模型计算的汇编函数、API调用子序列对于特征构建的重要性系数;记录基于自注意力的神经网络模型计算的汇编指令、API调用对于汇编函数特征、API调用子序列特征构建的重要性系数;基于上述重要性系数进行层次化的可视化呈现,给予安全分析人员直观的预测分类概率解释。

本发明一个优选的实施方式中,在分类决策重要性可视化算法中所述的基于协同注意力的重要性计算技术:给定某一恶意软件的动静态协同特征表示,记录其注意力权重作为汇编函数/API片段的分类影响因子,标准化至[0,1]区间内,以颜色深浅可视化表示重要程度。

本发明一个优选的实施方式中,在分类决策重要性可视化算法中所述的基于自注意力的层次重要性计算技术:给定某一恶意软件的动静态特征表示,记录其注意力权重作为汇编函数/API片段的分类影响因子,标准化至[0,1]区间内,以颜色深浅可视化表示重要程度。给定某一恶意软件的汇编函数/API调用片段的特征表示序列,记录其计算过程中的注意力权重作

为汇编指令/API调用的分类影响因子,标准化至[0,1]区间内,以颜色深浅可视化表示重要程度。

图2,3是提出的恶意软件多源融合的特征编码方法的实例图。

实例1使用多源融合的特征编码算法和恶意软件特征表示及分类算法进行恶意软件家族分类。

以自收集数据集Dataset-I和两个公开数据集Big 2015、Catak 2019作为实例数据集,Dataset-I数据集包含了61个恶意软件家族的20070个恶意软件,使用IDA进行反汇编、Cuckoo Sandbox收集动态API调用序列;Big 2015数据集包含了9类恶意软件共计10809个恶意软件样本的操作码序列;Catak 2019数据集包含了8类恶意软件共计7107个恶意软件样本的API调用序列。

1)首先,对于三个数据集,分别进行三次实验,获取Dataset-I中恶意软件的动静态信息;

2)从1)中所得的动静态信息中提取恶意软件-汇编函数-汇编指令三级静态信息以及恶意软件-API调用片段-API调用三级动态信息;

3)使用2)中所得的汇编指令以及API调用分别训练word2vec词嵌入模型;

4)使用3)中得到的word2vec词嵌入模型,分别对汇编指令中的操作码以及API调用中的API名称进行数值化编码;

5)使用局部敏感哈希算法Simhash,分别对汇编指令中抽象化后的操作数和注释信息集合以及API调用中抽象化后的API参数名称和取值集合进行数值化编码,得到统计特征;

6)连接4)和5)中得到的数值化编码以及统计特征,对每一个函数中的汇编指令以及API片段中的API调用形成数值化编码序列;

7)对于6)中得到的函数中的汇编指令以及API片段中的API调用数值化编码序列,使用基于自注意力的神经网络模型计算函数级/API片段级的特征表示序列,在函数级/API片段级的特征表示序列的基础上,类似地使用基于自注意力的神经网络模型计算恶意软件级的静态/动态特征表示;在函数级/API片段级的特征表示序列的基础上,使用基于协同注意力的神经网络模型计算恶意软件级的静态/动态协同特征表示;将恶意软件级静态/动态特征表示和静态/动态协同特征表示加权求和并连接后得到恶意软件的特征表示;

8)使用7)中得到的恶意软件特征表示,训练恶意软件分类模型。对于Dataset-I数据集,构建其61个恶意软件家族的分类模型,对于Big 2015数据集,构建其9个恶意软件家族的分类模型,对于Catak 2019数据集,构建其8个恶意软件家族的分类模型。

比较本发明方法与其他方法的结果,基线方法(MalConv,CNN+SVM,BiLSTM)在Dataset-I数据集的训练集上进行训练,在划分的测试集上进行测试,并展示分类的准确率(%)和F1值(%)。

表1.本方法在与其他方法在Dataset-I数据集上进行恶意软件分类的准确率和F1值

比较本发明方法与其他方法的结果,基线方法(MalConv,MalCSV,CNN+BiLSTM)在Big 2015数据集的训练集上进行训练,在划分的测试集上进行测试,并展示分类的准确率(%)和F1值(%)。

表2.本方法在与其他方法在Big 2015数据集上进行恶意软件分类的准确率和F1值

比较本发明方法与其他方法的结果,基线方法(LSTM,Transformer,GRU)在Catak2019数据集的训练集上进行训练,在划分的测试集上进行测试,并展示分类的准确率(%)和F1值(%)。

表3.本方法在与其他方法在Catak 2019数据集上进行恶意软件分类的准确率和F1值

实例2使用分类决策重要性可视化算法解释恶意软件样本的分类概率

使用实例1中数据集Dataset-I的恶意软件家族Neshta中的一个恶意样本的案例研究说明本发明方法对恶意软件分类概率预测的解释性。

1)给定此恶意软件的动静态协同特征表示,记录其协同注意力权重以及对[CLS]字段的自注意力权重作为汇编函数/API片段的分类影响因子。加权并标准化至[0,1]区间内,以红色深浅可视化表示重要程度。

2)给定某一恶意软件的汇编函数/API调用片段的特征表示序列,记录其计算过程中的注意力权重作为汇编指令/API调用的分类影响因子,标准化至[0,1]区间内并乘以所在汇编函数/API调用片段的分类影响因子,以黄色深浅可视化表示重要程度。

根据表1,表2,表3和图4,图5的结果,体现了本发明方法提出的基于协同注意力的恶意软件分类方法的优越性。

本发明对于每一个待判定的恶意软件实例,使用统计特征、局部敏感哈希、词嵌入方法描述恶意反解汇编代码和API跟踪的语义和结构上的相似性,使用一个层次的协同注意力网络模型来提取恶意软件的向量化表示,用于家族分类,并通过计算出的每一层的注意力图来直观地解释分类结果。本发明首先对不同恶意软件家族的恶意软件实例,通过反汇编软件获取汇编指令序列、沙箱模拟执行获取API调用序列;然后利用设计的多源融合的特征编码算法将每一条汇编代码或API调用转化为数值化编码序列;然后利用设计的恶意软件特征表示及分类算法构建每一个恶意软件实例的特征表示并计算其家族分布概率;然后利用设计的分类决策重要性可视化算法记录并可视化恶意软件实例动静态特征的分类影响因子,以解释分类结果。

基于同一发明构思,本发明的另一实施例提供一种基于协同注意力的恶意软件分类系统,其包括:

预处理模块,用于获取恶意软件的汇编指令序列和API调用序列;

动静态特征序列标准化模块,用于计算汇编指令序列的特征表示序列S

恶意软件特征表示与分类模块,用于在所述特征表示序列S

本发明一个优选的实施方式中,本发明分类决策重要性可视化模块,用于在恶意软件特征表示构建过程中,记录并可视化恶意软件实例动静态特征的分类影响因子,以解释分类结果。

其中各模块的具体实施过程参见前文对本发明方法的描述。

基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。

基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如ROM/RAM、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

相关技术
  • 一种安卓恶意软件家族分类器构建方法及其分类方法
  • 一种基于层次注意力网络模型的恶意软件分类方法
  • 一种基于协同注意力的多模态情感分类方法及其应用
技术分类

06120116331545