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

恶意代码的同源分析方法及装置

文献发布时间:2024-04-18 20:02:18


恶意代码的同源分析方法及装置

技术领域

本申请涉及网络安全技术领域,具体涉及一种恶意代码的同源分析方法及装置。

背景技术

恶意代码是当今主要的互联网安全威胁之一。为实现恶意代码的识别,可通过恶意代码同源分析的方式,来识别代码是否为恶意代码。其中,恶意代码同源分析是通过分析恶意代码内外部特性以及生成和传播方面的规律,可以发现恶意代码之间的关联性,进而可以辅助检测恶意代码变体或零日恶意代码、发掘未知家族、关联组织关系等。

相关技术中,对恶意代码的同源分析,是通过提取恶意代码的图像特征或者序列特征进行分类,以确定恶意代码所属的类别,从而实现对恶意代码的同源分析。然而,这种同源分析是基于恶意代码的单一特征来对恶意代码进行分类,而单一特征容易被伪造,且仅能反映恶意代码某一方面的特征,无法在各类恶意代码上均获得有效的分析结果,影响恶意代码同源性分析的精确度。

发明内容

本申请旨在至少解决相关技术中存在的技术问题之一。为此,本申请提出一种恶意代码的同源分析方法及装置,能够提高对恶意代码的同源性分析的精确度。

根据本申请第一方面实施例的恶意代码的同源分析方法,包括:

对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征;

根据各所述代码特征,得到所述目标恶意代码的分类结果;

其中,各所述代码特征包括所述目标恶意代码的图像特征、序列特征以及控制流图特征。

本申请实施例提供的恶意代码的同源分析方法,通过对获取到的目标恶意代码进行多模态特征提取,来得到包括目标恶意代码的图像特征、序列特征以及控制流图特征,再基于目标恶意代码的图像特征、序列特征以及控制流图特征,来对目标恶意代码进行分类,得到目标恶意代码的分类结果,从而能够充分提取目标恶意代码的有效特征来对目标恶意代码进行分类,以解决基于单一特征的恶意代码的分类精度低的问题,进而提高对恶意代码的同源性分析的精确度。

根据本申请的一个实施例,所述目标恶意代码通过对恶意代码文件进行二进制读取得到。

根据本申请的一个实施例,对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征,包括:

根据单个字节的数据量,对所述目标恶意代码进行切分,得到所述目标恶意代码的字节流;

根据所述字节流中各字节的字符信息,将所述字节流转化为整数灰度值,得到灰度值矩阵;

根据所述灰度值矩阵,得到所述目标恶意代码的灰度图像;

根据所述灰度图像,得到所述目标恶意代码的图像特征。

根据本申请的一个实施例,根据所述灰度图像,得到所述目标恶意代码的图像特征,包括:

将所述灰度图像,输入训练好的图像特征提取模型进行图像特征提取,得到所述目标恶意代码的图像特征;

其中,所述图像特征提取模型通过多个灰度图像样本训练得到,所述灰度图像样本为从恶意代码提取到的灰度图像。

根据本申请的一个实施例,对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征,包括:

对所述目标恶意代码进行反汇编,得到所述目标恶意代码对应的汇编代码;

对汇编代码的操作码序列进行向量转换,得到所述操作码序列的操作码向量;

根据所述操作码向量,得到所述目标恶意代码的序列特征。

根据本申请的一个实施例,根据所述操作码向量,得到所述目标恶意代码的序列特征,包括:

将所述操作码向量,输入训练好的时序特征提取模型进行时序特征提取,得到所述操作码序列的时序特征;

根据所述操作码序列的时序特征,得到所述目标恶意代码的序列特征;

其中,所述时序特征提取模型通过多个操作码向量样本训练得到,所述操作码向量样本为从恶意代码中提取到的操作码序列的操作码向量。

根据本申请的一个实施例,对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征,包括:

对所述目标恶意代码进行反汇编,得到所述目标恶意代码对应的汇编代码;

提取所述汇编代码对应的控制流图;

根据所述控制流图的各顶点,生成所述控制流图的拉普拉斯矩阵;

根据所述控制流图的拉普拉斯矩阵,到所述目标恶意代码的控制流图特征。

根据本申请的一个实施例,根据所述控制流图的拉普拉斯矩阵,到所述目标恶意代码的控制流图特征,包括:

将所述控制流图的拉普拉斯矩阵,输入训练好的控制流图特征提取模型进行特征提取,得到所述目标恶意代码的控制流图特征;

其中,所述控制流图特征提取模型通过多个拉普拉斯矩阵样本训练得到,所述拉普拉斯矩阵样本为与恶意代码对应的控制流图的拉普拉斯矩阵。

根据本申请的一个实施例,根据各所述代码特征,得到所述目标恶意代码的分类结果,包括:

对各所述代码特征进行归一化,得到多个待处理特征;

将各所述待处理特征进行拼接,得到目标特征;

将所述目标特征输入训练好的分类模型,得到所述目标恶意代码的分类结果;

其中,所述分类模型通过多个特征样本训练得到,所述特征样本由恶意代码的图像特征、序列特征以及控制流图特征分别进行归一化后拼接得到。

根据本申请第二方面实施例的恶意代码的同源分析装置,包括:

特征获取模块,用于对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征;

同源分析模块,用于根据各所述代码特征,得到所述目标恶意代码的分类结果;

其中,各所述代码特征包括所述目标恶意代码的图像特征、序列特征以及控制流图特征。

根据本申请第三方面实施例的电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述计算机程序时实现上述任一实施例所述的恶意代码的同源分析方法。

根据本申请第四方面实施例的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的恶意代码的同源分析方法。

根据本申请第五方面实施例的计算机程序产品,包括:所述计算机程序被处理器执行时实现如上述任一实施例所述的恶意代码的同源分析方法。

附图说明

为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的恶意代码的同源分析方法的第一流程示意图;

图2是本申请实施例提供的恶意代码的同源分析方法的第二流程示意图;

图3是本申请实施例提供的恶意代码的同源分析方法的第三流程示意图;

图4是本申请实施例提供的恶意代码的同源分析方法的第四流程示意图;

图5是本申请实施例提供的恶意代码的同源分析方法的第五流程示意图;

图6是本申请实施例提供的恶意代码的同源分析装置的结构示意图;

图7是本申请实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合附图对本申请技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。

在本申请实施例的描述中,技术术语“第一”“第二”等仅用于区别不同对象,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量、特定顺序或主次关系。在本申请实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

在本申请实施例的描述中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

在本申请实施例的描述中,术语“多个”指的是两个以上(包括两个),同理,“多组”指的是两组以上(包括两组)。

恶意代码是当今主要的互联网安全威胁之一。为实现恶意代码的识别,可通过恶意代码同源分析的方式,来识别代码是否为恶意代码。其中,恶意代码同源分析是通过分析恶意代码内外部特性以及生成和传播方面的规律,可以发现恶意代码之间的关联性,进而可以辅助检测恶意代码变体或零日恶意代码、发掘未知家族、关联组织关系等。研究发现,同一类型或同一家族的恶意代码具有许多相似的编码特性,涉及系统调用、关键字符串、代码结构、符号、操作码等,通过分析这些相似特征,就可以追踪溯源恶意代码的家族信息。为此,相关技术中,是通过提取恶意代码的图像特征或者序列特征进行分类,以确定恶意代码所属的类别,从而实现对恶意代码的同源分析。如将恶意代码的可执行文件转换为图像,然后通过卷积神经网络来对图像进行分类,进而实现对恶意代码的分类。然而,这种同源分析是基于恶意代码的单一特征来对恶意代码进行分类,而单一特征容易被伪造,且仅能反映恶意代码某一方面的特征,无法在各类恶意代码上均获得有效的分析结果,影响恶意代码同源性分析的精确度。

针对上述技术问题,本申请实施例通过对获取到的目标恶意代码进行多模态特征提取,来得到包括目标恶意代码的图像特征、序列特征以及控制流图特征,再基于目标恶意代码的图像特征、序列特征以及控制流图特征,来对目标恶意代码进行分类,得到目标恶意代码的分类结果,从而能够充分提取目标恶意代码的有效特征来对目标恶意代码进行分类,以解决基于单一特征的恶意代码的分类精度低的问题,进而提高对恶意代码的同源性分析的精确度。

本申请实施例公开的恶意代码的同源分析方法以及恶意代码的同源分析方法可应用于服务器中,用于实现恶意代码的同源分析。其中,服务器可以是独立的服务器或者是多个服务器组成的服务器集群来实现,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能采样点设备等基础云计算服务的云服务器。

根据本申请的一些实施例提供的一种恶意代码的同源分析方法,该恶意代码的同源分析方法可应用于前述的服务器中。如图1所示,该恶意代码的同源分析方法包括:

步骤101,对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征;

步骤102,根据各所述代码特征,得到所述目标恶意代码的分类结果;

其中,各所述代码特征包括所述目标恶意代码的图像特征、序列特征以及控制流图特征。

在一些实施例中,服务器可预先获取任一需要进行同源分析的恶意代码的恶意代码文件,如恶意代码的可执行文件,然后对该恶意代码文件进行读取,以获取恶意代码文件中的恶意代码,作为需要进行同源性分析的目标恶意代码。

而为方便对目标恶意代码进行特征提取,在一些实施例中,目标恶意代码可以通过对恶意代码文件进行二进制读取得到。示例性的,服务器可预先获取任一需要进行同源分析的恶意代码的恶意代码文件,然后以二进制的形式读取该恶意代码文件,从而得到二进制流的目标恶意代码。

在获取到目标恶意代码后,可对该目标恶意代码进行图像特征提取、序列特征提取以及控制流图可证提取。示例性的,对目标恶意代码进行图像特特征提取,可以是对目标恶意代码以8位为一组进行分组,得到该目标恶意代码的字节流,然后按照预先设定好矩阵的宽度,对目标恶意代码的字节流进行重组,将其排布为矩阵形式,得到恶意代码的字节矩阵。在得到恶意代码的字节矩阵后,将字节矩阵的各字节转换为灰度值,得到恶意代码的灰度矩阵,以将该灰度矩阵转换为灰度图像,从而得到目标恶意代码的图像特征。

或者,服务器可对该二进制的目标恶意代码进行逐比特读取,并且将其转化为0-255的整数,以得到该目标恶意代码对应的二进制数据。在得到该二进制数据后,将该二进制数据转化为宽度为1024的二维矩阵,以表示灰度图像。此时,该灰度图像即可为目标恶意代码的图像特征。或者,将该灰度图像缩放至n*n大小,如256*256大小,以得到目标恶意代码的图像特征。

而对目标恶意代码进行序列特征提取和控制流图特征提取,可以是将目标恶意代码输入反汇编工具进行反汇编,如将二进制的目标恶意代码输入反汇编工具进行反汇编,来得到目标恶意代码对应的汇编代码,然后通过反汇编工具提取汇编代码的操作码字段,以根据汇编代码的操作码字段来确定目标恶意代码的序列特征。如将汇编代码的操作码字段作为目标恶意代码的序列特征。同时,从反汇编工具中获取来目标恶意代码进行反汇编后得到的控制流图,以根据该控制流图,确定目标恶意代码的控制流图特征,如将控制流图作为目标恶意代码的控制流图特征。其中,控制流图也叫控制流程图,是一个过程或程序的抽象表现,可由反汇编工具在对目标恶意代码进行反汇编操作后形成。反汇编工具为服务器内置的应用程序,可以将机器代码转换为目标处理器专用的汇编代码或汇编指令。示例性的,反汇编工具可以是IDA ProIDA Pro、Hopper以及Radare2等。

在得到目标恶意代码的图像特征、序列特征以及控制流图特征后,即可根据目标恶意代码的图像特征、序列特征以及控制流图特征,来确定目标恶意代码的分类结果。示例性的,可将目标恶意代码的图像特征、序列特征以及控制流图特征,与任一类别下各恶意代码的图像特征、序列特征以及控制流图特征进行相似度匹配。若某一类别下的恶意代码的图像特征、序列特征以及控制流图特征,与目标恶意代码的图像特征、序列特征以及控制流图特征的相似度均大于预设相似度,则确定该目标恶意代码属于该类别。

或者,将目标恶意代码的图像特征、序列特征以及控制流图特征,输入训练好的分类模型,如Resnet50模型进行分类。其中,分类模型的训练,可以是将大量恶意代码的恶意特征样本依次输入分类模型中,来对分类模型进行训练。恶意特征样本包括恶意代码的图像特征、序列特征以及控制流图特征。在将恶意特征样本输入分类模型,得到分类模型输出的分类结果后,将该分类结果与恶意特征样本预先设定的类别标签进行比对,以根据比对结果计算损失函数后,执行反向传播算法,调整分类模型各层的权重,再输入下一恶意特征样本对分类模型进行训练,直至每次分类模型输出恶意特征样本的分类结果,均与该恶意特征样本的预先设定的类别标签相同,则完成分类模型的训练。在完成分类模型的训练后,即可将目标恶意代码的图像特征、序列特征以及控制流图特征,输入训练好的分类模型,以得到目标恶意代码的分类结果,即确定目标恶意代码是属于哪个家族的恶意代码。

通过对获取到的目标恶意代码进行多模态特征提取,来得到包括目标恶意代码的图像特征、序列特征以及控制流图特征,再基于目标恶意代码的图像特征、序列特征以及控制流图特征,来对目标恶意代码进行分类,得到目标恶意代码的分类结果,从而能够充分提取目标恶意代码的有效特征来对目标恶意代码进行分类,以解决基于单一特征的恶意代码的分类精度低的问题,进而提高对恶意代码的同源性分析的精确度。

而为提高提取到的图像特征的准确性,在一些实施例中,如图2所示,对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征,包括:

步骤201,根据单个字节的数据量,对所述目标恶意代码进行切分,得到所述目标恶意代码的字节流;

步骤202,根据所述字节流中各字节的字符信息,将所述字节流转化为整数灰度值,得到灰度值矩阵;

步骤203,根据所述灰度值矩阵,得到所述目标恶意代码的灰度图像;

步骤204,根据所述灰度图像,得到所述目标恶意代码的图像特征。

在一些实施例中,在获取到目标恶意代码,如二进制流的目标恶意代码后,由于一个字节为8比特,因此可根据单个字节的数据量,即安8比特位对二进制流的目标恶意代码进行切分,来得到目标恶意代码的字节流。在得到目标恶意代码的字节流后,可先按照预先设定的矩阵宽度,将字节流重排为字节矩阵,然后根据字节矩阵中各字节的字符信息,将各字节中的字符转换为10进制,以得到各字节的整数灰度值,从而将字节矩阵转换为灰度值矩阵。

在得到目标恶意代码的灰度值矩阵后,即可直接将该灰度值矩阵转换为灰度图像。而为使获取到的灰度图像更为准确,可按照预先设定的矩阵长度,对灰度值矩阵进行数值填充后,再将填充后的灰度值矩阵进行转换,来得到灰度图像。其中,矩阵长度和矩阵宽度可根据实际需求进行设定。

在得到灰度图像后,即可根据该灰度图像,得到目标恶意代码的图像特征。如将该灰度图像作为目标恶意代码的图像特征。或者,将该灰度图像缩放至n*n大小,如256*256大小,以得到目标恶意代码的图像特征。

而为使获取到的图像特征更为准确,在一些实施例中,在得到灰度图像后,可将该灰度图像输入训练好的图像特征提取模型进行图像特征提取,得到所述目标恶意代码的图像特征;其中,所述图像特征提取模型通过多个灰度图像样本训练得到,所述灰度图像样本为从恶意代码提取到的灰度图像。

在一些实施例中,考虑到若直接将目标恶意代码的灰度图像作为其图像特征,可能会因灰度图像中存在与代码语义无关的区域,而导致后续的分类结果不够准确。因此,在得到目标恶意代码的灰度图像后,可以将该灰度图像,输入训练好的图像特征提取模型,如ResNet、MobileNet等模型进行图像特征提取。其中,图像特征提取模型包括若干卷积层。图像特征提取模型的训练,可以是将从大量恶意代码中提取到的灰度图像作为灰度图像样本,然后将各灰度图像样本依次输入图像特征提取模型中,来对图像特征提取模型进行训练。在将灰度图像样本输入图像特征提取模型,得到图像特征提取模型输出的图像特征后,将该图像特征与灰度图像样本预先设定的图像特征标签进行比对,以根据比对结果计算损失函数后,执行反向传播算法,调整图像特征提取模型各层的权重,再输入下一灰度图像样本对图像特征提取模型进行训练,直至每次图像特征提取模型输出灰度图像样本的图像特征,均与该灰度图像样本的预先设定的图像特征标签相同,则完成图像特征提取模型的训练。在完成图像特征提取模型的训练后,即可将目标恶意代码的灰度图像输入训练好的图像特征提取模型,以得到目标恶意代码的图像特征。这样,便可使获取到的目标恶意代码的图像特征更为准确。

而为使获取到的序列特征更为准确,在一些实施例中,如图3所示,对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征,包括:

步骤301,对所述目标恶意代码进行反汇编,得到所述目标恶意代码对应的汇编代码;

步骤302,对汇编代码的操作码序列进行向量转换,得到所述操作码序列的操作码向量;

步骤302,根据所述操作码向量,得到所述目标恶意代码的序列特征。

在一些实施例中,在获取到目标恶意代码,如二进制流的目标恶意代码后,可先通过反汇编工具,对目标恶意代码进行反汇编,以得到目标恶意代码对应的汇编代码。然后利用反汇编工具,提取汇编代码的操作码序列后,对操作码序列中的每一条指令进行编码,如通过One-Hot编码或数值编码的方式,对操作码序列中的每一条指令进行编码,以将操作码序列转换为向量,得到操作码序列的操作码向量。在得到操作码序列的操作码向量后,即可将该操作码向量作为目标恶意代码的序列特征。

而为使获取到的序列特征更为准确,在一些实施例中,在得到目标恶意代码的操作码向量后,可以将该操作码向量,输入训练好的时序特征提取模型进行时序特征提取。其中,时序特征提取模型包括若干循环神经网络层。时序特征提取模型的训练,可以是将从大量恶意代码中提取到的操作码序列的操作码向量,作为操作码向量样本,然后将各操作码向量样本依次输入时序特征提取模型中,来对时序特征提取模型进行训练。在将操作码向量样本输入时序特征提取模型,得到时序特征提取模型输出的时序特征后,将该时序特征与操作码向量样本预先设定的时序特征标签进行比对,以根据比对结果计算损失函数后,执行反向传播算法,调整时序特征提取模型各层的权重,再输入下一操作码向量样本对时序特征提取模型进行训练,直至每次时序特征提取模型输出操作码向量样本的时序特征,均与该操作码向量样本的预先设定的时序特征标签相同,则完成时序特征提取模型的训练。在完成时序特征提取模型的训练后,即可将目标恶意代码的操作码向量输入训练好的时序特征提取模型,以得到目标恶意代码的时序特征。这样,便可使获取到的目标恶意代码的时序特征更为准确。

而为使获取到的控制流图特征更为准确,在一些实施例中,如图4所示,对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征,包括:

步骤401,对所述目标恶意代码进行反汇编,得到所述目标恶意代码对应的汇编代码;

步骤402,提取所述汇编代码对应的控制流图;

步骤403,根据所述控制流图的各顶点,生成所述控制流图的拉普拉斯矩阵;

步骤404,根据所述控制流图的拉普拉斯矩阵,到所述目标恶意代码的控制流图特征。

在一些实施例中,在一些实施例中,在获取到目标恶意代码,如二进制流的目标恶意代码后,可先通过反汇编工具,对目标恶意代码进行反汇编,以得到目标恶意代码对应的汇编代码。在得到汇编代码后,可利用反汇编工具,提取汇编代码的控制流图。在提取到汇编代码的控制流图后,可根据控制流图的各顶点,来提取控制流图的邻接矩阵和度矩阵,以根据邻接矩阵和度矩阵,来得到控制流图的拉普拉斯矩阵。示例性的,对于邻接矩阵的获取,可以是根据控制流图中的n个顶点,构造一个n维的方阵,其中,若在控制流图中第i个顶点和第j个顶点之间存在一条边,则将矩阵第(i,j)位置设为1,从而将构建得到的n维方阵,作为控制流图的邻接矩阵。对于度矩阵的获取,可以是根据控制流图中的n个顶点,构造一个n维的对角方阵,其中,对于第i个顶点,若其连接了m条边,则将对角线第i个元素设为m。从而将构建得到的n维对角方阵,作为控制流图的度矩阵。在得到控制流图的邻接矩阵和度矩阵后,即可将度矩阵减去邻接矩阵,得到控制流图的拉普拉斯矩阵。

在得到控制流图的拉普拉斯矩阵后,即可将该拉普拉斯矩阵作为目标恶意代码的控制流图特征。

而为使获取到的序列特征更为准确,在一些实施例中,在得到目标恶意代码对应的拉普拉斯矩阵后,可以将该拉普拉斯矩阵,输入训练好的控制流图特征提取模型进行控制流图特征提取。其中,控制流图特征提取模型包括若干图神经网络层。控制流图特征提取模型的训练,可以是将从大量恶意代码中提取到的控制流图的拉普拉斯矩阵,作为拉普拉斯矩阵样本,然后将各拉普拉斯矩阵样本依次输入控制流图特征提取模型中,来对控制流图特征提取模型进行训练。在将拉普拉斯矩阵样本输入控制流图特征提取模型,得到控制流图特征提取模型输出的控制流图特征后,将该控制流图特征与拉普拉斯矩阵样本预先设定的控制流图特征标签进行比对,以根据比对结果计算损失函数后,执行反向传播算法,调整控制流图特征提取模型各层的权重,再输入下一拉普拉斯矩阵样本对控制流图特征提取模型进行训练,直至每次控制流图特征提取模型输出拉普拉斯矩阵样本的控制流图特征,均与该拉普拉斯矩阵样本的预先设定的控制流图特征标签相同,则完成控制流图特征提取模型的训练。在完成控制流图特征提取模型的训练后,即可将目标恶意代码对应的拉普拉斯矩阵输入训练好的控制流图特征提取模型,以得到目标恶意代码的控制流图特征。这样,便可使获取到的目标恶意代码的控制流图特征更为准确。

而为提高图像特征提取模型、时序特征提取模型以及控制流图特征提取模型的置信度,在一些实施例中,可同时对图像特征提取模型、时序特征提取模型以及控制流图特征提取模型进行训练。示例性的,可先提取任一恶意代码的灰度图像样本、操作码向量样本以及拉普拉斯矩阵样本。然后将该恶意代码的灰度图像样本、操作码向量样本以及拉普拉斯矩阵样本,分别输入图像特征提取模型、时序特征提取模型以及控制流图特征提取模型,以分别输出该恶意代码的图像特征、序列特征以及控制流图特征。在得到恶意代码的图像特征、序列特征以及控制流图特征后,再将该恶意代码的图像特征、序列特征以及控制流图特征,输入训练好的分类模型,得到分类模型输出的分类结果后,将该分类结果与该恶意代码预先设定的类别标签进行比对,以根据比对结果计算损失函数后,执行反向传播算法,调整图像特征提取模型、时序特征提取模型以及控制流图特征提取模型各层的权重,再向输入图像特征提取模型、时序特征提取模型以及控制流图特征提取模型,分别输入下一恶意代码的图像特征、序列特征以及控制流图特征,直至每次分类模型输出恶意代码的分类结果,均与该恶意代码的预先设定的类别标签相同,则同时完成图像特征提取模型、时序特征提取模型以及控制流图特征提取模型的训练,从而提高图像特征提取模型、时序特征提取模型以及控制流图特征提取模型的置信度。

而在通过训练好的图像特征提取模型、时序特征提取模型以及控制流图特征提取模型,提取目标恶意代码的图像特征、序列特征以及控制流图特征后,便可将目标恶意代码的图像特征、序列特征以及控制流图特征,输入训练好的分类模型,以得到目标恶意代码的分类结果。

而为进一步提高获取到的分类结果的准确性,在一些实施例中,如图5所示,根据各所述代码特征,得到所述目标恶意代码的分类结果,包括:

步骤501,对各所述代码特征进行归一化,得到多个待处理特征;

步骤502,将各所述待处理特征进行拼接,得到目标特征;

步骤503,将所述目标特征输入训练好的分类模型,得到所述目标恶意代码的分类结果;

其中,所述分类模型通过多个特征样本训练得到,所述特征样本由恶意代码的图像特征、序列特征以及控制流图特征拼接得到。

考虑到获取图像特征、序列特征以及控制流图特征时,其处理的方式和对象不统一,因此在得到图像特征、序列特征以及控制流图特征后,可分别对图像特征、序列特征以及控制流图特征进行归一化,得到图像特征归一化后的待处理特征、序列特征归一化后的待处理特征以及控制流图特征归一化后的待处理特征,以减少因特征的处理的方式和对象不统一而对分类结果造成的影响。

在得到各待处理特征后,由于各待处理特征此时的数据类型相同,因此可将各待处理特征进拼接,来得到目标恶意代码对应的目标特征,以在得到目标恶意代码对应的目标特征后,再将该目标特征输入训练好的分类模型,以通过分类模型的若干全连接层和softmax函数,输出目标恶意代码的分类结果。可以理解的,当需要输入分类模型的特征为各待处理特征拼接后的目标特征时,则输入分类模型进行训练的训练样本,为恶意代码的图像特征、序列特征以及控制流图特征分别进行归一化后拼接成的特征样本。

通过对各代码特征进行归一化,得到多个待处理特征后,再将各待处理特征进行拼接,得到目标特征输入训练好的分类模型进行目标恶意代码的分类,从而可减少因特征的处理的方式和对象不统一而对分类结果造成的影响,提高获取到的分类结果的准确性。

下面对本申请提供的恶意代码的同源分析装置进行描述,下文描述的恶意代码的同源分析装置与上文描述的恶意代码的同源分析方法可相互对应参照。

在一实施例中,如图6所示,提供了一种恶意代码的同源分析装置,包括:

特征获取模块210,用于对获取到的目标恶意代码进行多模态特征提取,得到所述目标恶意代码的多个代码特征;

同源分析模块220,用于根据各所述代码特征,得到所述目标恶意代码的分类结果;

其中,各所述代码特征包括所述目标恶意代码的图像特征、序列特征以及控制流图特征。

通过对获取到的目标恶意代码进行多模态特征提取,来得到包括目标恶意代码的图像特征、序列特征以及控制流图特征,再基于目标恶意代码的图像特征、序列特征以及控制流图特征,来对目标恶意代码进行分类,得到目标恶意代码的分类结果,从而能够充分提取目标恶意代码的有效特征来对目标恶意代码进行分类,以解决基于单一特征的恶意代码的分类精度低的问题,进而提高对恶意代码的同源性分析的精确度。

在一实施例中,所述目标恶意代码通过对恶意代码文件进行二进制读取得到。

在一实施例中,特征获取模块210具体用于:

根据单个字节的数据量,对所述目标恶意代码进行切分,得到所述目标恶意代码的字节流;

根据所述字节流中各字节的字符信息,将所述字节流转化为整数灰度值,得到灰度值矩阵;

根据所述灰度值矩阵,得到所述目标恶意代码的灰度图像;

根据所述灰度图像,得到所述目标恶意代码的图像特征。

在一实施例中,特征获取模块210具体用于:

将所述灰度图像,输入训练好的图像特征提取模型进行图像特征提取,得到所述目标恶意代码的图像特征;

其中,所述图像特征提取模型通过多个灰度图像样本训练得到,所述灰度图像样本为从恶意代码提取到的灰度图像。

在一实施例中,特征获取模块210具体用于:

对所述目标恶意代码进行反汇编,得到所述目标恶意代码对应的汇编代码;

对汇编代码的操作码序列进行向量转换,得到所述操作码序列的操作码向量;

根据所述操作码向量,得到所述目标恶意代码的序列特征。

在一实施例中,特征获取模块210具体用于:

将所述操作码向量,输入训练好的时序特征提取模型进行时序特征提取,得到所述操作码序列的时序特征;

根据所述操作码序列的时序特征,得到所述目标恶意代码的序列特征;

其中,所述时序特征提取模型通过多个操作码向量样本训练得到,所述操作码向量样本为从恶意代码中提取到的操作码序列的操作码向量。

在一实施例中,特征获取模块210具体用于:

对所述目标恶意代码进行反汇编,得到所述目标恶意代码对应的汇编代码;

提取所述汇编代码对应的控制流图;

根据所述控制流图的各顶点,生成所述控制流图的拉普拉斯矩阵;

根据所述控制流图的拉普拉斯矩阵,到所述目标恶意代码的控制流图特征。

在一实施例中,特征获取模块210具体用于:

将所述控制流图的拉普拉斯矩阵,输入训练好的控制流图特征提取模型进行特征提取,得到所述目标恶意代码的控制流图特征;

其中,所述控制流图特征提取模型通过多个拉普拉斯矩阵样本训练得到,所述拉普拉斯矩阵样本为与恶意代码对应的控制流图的拉普拉斯矩阵。

在一实施例中,同源分析模块220具体用于:

对各所述代码特征进行归一化,得到多个待处理特征;

将各所述待处理特征进行拼接,得到目标特征;

将所述目标特征输入训练好的分类模型,得到所述目标恶意代码的分类结果;

其中,所述分类模型通过多个特征样本训练得到,所述特征样本由恶意代码的图像特征、序列特征以及控制流图特征分别进行归一化后拼接得到。

图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)810、通信接口(Communication Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的计算机程序,以执行上述任一实施例中的恶意代码的同源分析方法。

此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

另一方面,本申请实施例还提供一种存储介质,存储介质包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,计算机程序被处理器执行时,计算机能够执行上述各实施例所提供的恶意代码的同源分析方法。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

相关技术
  • 恶意代码同源性分析方法和恶意代码同源性分析装置
  • 恶意代码同源性分析方法和恶意代码同源性分析装置
技术分类

06120116579210