恶意软件识别模型训练方法、恶意软件识别方法及装置与流程

文档序号:21409346发布日期:2020-07-07 14:44阅读:144来源:国知局
本发明涉及网络安全
技术领域
:,特别是涉及一种恶意软件识别模型训练方法、恶意软件识别方法及装置。
背景技术
::随着互联网不断发展,各类恶意软件层出不穷,其变形变异的数量更多,仅仅基于人工分析筛选特征并实施检测的效率难以满足规模化检测需求,因此基于pe(portableexecutable,可移植可执行)文件的机器学习检测方法逐渐应用到实际防护业务中。目前主要以人工提取特征构建检测模型为主,即解析pe头、导入表等样本文件结构等信息构建机器学习模型。代表性工作包括raff等提出的基于pe头结构信息构建神经网络检测模型,saxe等基于字节熵和字符串熵等构建深度学习检测模型。上述方法都有一定检测效果,但是上述方法均是根据样本文件结构等依赖样本本身的特征来构件机器学习模型的,因此当样本(即软件)不断变化时,需要不断重新训练才能维持检测效果,操作比较繁琐。技术实现要素:有鉴于此,本发明提供的一种恶意软件识别模型训练方法、恶意软件识别方法及装置,其目的在于解决现有的恶意软件识别模型需要随着软件变化而不断重新训练的问题。本发明的目的是采用以下技术方案来实现的:第一方面,本发明提供了一种恶意软件识别模型训练方法,所述方法包括:获取具有安全性标识的pe文件,所述安全性标识包括恶意标识和良性标识;根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵;基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型。可选的,根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵包括:基于反编译工具获取所述pe文件中每个函数对应的控制流图;通过解析所述pe文件中的代码,获取每个控制流图的基本块所包含的api名称,并识别所述api名称所对应的调用类型;统计所述pe文件的所有控制流图涉及的调用类型的种类数和任意两种调用类型在基本块中先后排列且相邻出现的次数;根据所述种类数和所述次数,计算所述转移概率矩阵。可选的,识别所述api名称所对应的调用类型包括:根据预先建立的包含api名称和调用类型映射关系的api类型字典,查找获取的api名称所对应的调用类型。可选的,根据所述种类数和所述次数,计算所述转移概率矩阵包括:构建一个矩阵元素为m(i,j),行数列数均为n的转移概率矩阵;其中,所述m(i,j)表示第i种调用类型与第j种调用种类型在基本块中先后排列且相邻出现的次数与所述第i种调用类型出现次数中拥有相邻的后继调用类型的次数,所述n表示所述种类数。可选的,获取具有安全性标识的pe文件包括:从具有安全性标识的软件安装包中提取pe文件;根据提取的pe文件的静态信息,判断所述提取的pe文件是否进行了加壳处理;若所述提取的pe文件进行了加壳处理,则将所述提取的pe文件放置到沙箱中运行,待所述提取的pe文件的行为触发完全后对其占用内存进行转储,并从转储文件中提取未加壳的pe文件。可选的,所述静态信息包括以下任一项或多项的组合:文件格式、程序入口点指令特征以及导入表。可选的,基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型包括:直接根据所述pe文件的转移概率矩阵和对应的安全性标识进行模型训练,获得所述恶意软件识别模型;或者,将所述pe文件的转移概率矩阵转换为一维的特征向量,并根据所述特征向量和对应的安全性标识进行模型训练,获得所述恶意软件识别模型。第二方面,本发明提供了一种恶意软件识别方法,所述方法包括:获取待识别pe文件;根据所述待识别pe文件中api的调用类型计算所述待识别pe文件的转移概率矩阵;利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件,所述恶意软件识别模型是根据第一方面所述的恶意软件识别模型训练方法训练得到的。可选的,利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件包括:直接将所述待识别pe文件的转移概率矩阵输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件;或者,将所述待识别pe文件的转移概率矩阵转换为一维的特征向量,并将转换得到的特征向量输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件。第三方面,本发明提供了一种恶意软件识别模型训练装置,所述装置包括:获取单元,用于获取具有安全性标识的pe文件,所述安全性标识包括恶意标识和良性标识;计算单元,用于根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵;训练单元,用于基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型。可选的,所述计算单元包括:第一获取模块,用于基于反编译工具获取所述pe文件中每个函数对应的控制流图;第二获取模块,用于通过解析所述pe文件中的代码,获取每个控制流图的基本块所包含的api名称;识别模块,用于识别所述api名称所对应的调用类型;统计模块,用于统计所述pe文件的所有控制流图涉及的调用类型的种类数和任意两种调用类型在基本块中先后排列且相邻出现的次数;计算模块,用于根据所述种类数和所述次数,计算所述转移概率矩阵。可选的,所述识别模块,用于根据预先建立的包含api名称和调用类型映射关系的api类型字典,查找获取的api名称所对应的调用类型。可选的,所述计算模块,用于构建一个矩阵元素为m(i,j),行数列数均为n的转移概率矩阵;其中,所述m(i,j)表示第i种调用类型与第j种调用种类型在基本块中先后排列且相邻出现的次数与所述第i种调用类型出现次数中拥有相邻的后继调用类型的次数,所述n表示所述种类数。可选的,所述获取单元包括:第一提取模块,用于从具有安全性标识的软件安装包中提取pe文件;判断模块,用于根据提取的pe文件的静态信息,判断所述提取的pe文件是否进行了加壳处理;转储模块,用于当所述提取的pe文件进行了加壳处理时,将所述提取的pe文件放置到沙箱中运行,待所述提取的pe文件的行为触发完全后对其占用内存进行转储;第二提取模块,用于从转储文件中提取未加壳的pe文件。可选的,所述判断模块根据的所述静态信息包括以下任一项或多项的组合:文件格式、程序入口点指令特征以及导入表。可选的,所述训练单元,用于直接根据所述pe文件的转移概率矩阵和对应的安全性标识进行模型训练,获得所述恶意软件识别模型;或者,将所述pe文件的转移概率矩阵转换为一维的特征向量,并根据所述特征向量和对应的安全性标识进行模型训练,获得所述恶意软件识别模型。第四方面,本发明提供了一种恶意软件识别装置,所述装置包括:获取单元,用于获取待识别pe文件;计算单元,用于根据所述待识别pe文件中api的调用类型计算所述待识别pe文件的转移概率矩阵;识别单元,用于利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件,所述恶意软件识别模型是根据第一方面所述的恶意软件识别模型训练方法训练得到的。可选的,所述识别单元,用于直接将所述待识别pe文件的转移概率矩阵输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件;或者,将所述待识别pe文件的转移概率矩阵转换为一维的特征向量,并将转换得到的特征向量输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件。第五方面,本发明提供了一种存储介质,所述存储介质存储有多条指令,所述指令适用于由处理器加载并执行如第一方面所述的恶意软件识别模型训练方法,或者加载并执行如第二方面所述的恶意软件识别方法。第六方面,本发明提供了一种电子设备,所述电子设备包括存储介质和处理器;所述处理器,适于实现各指令;所述存储介质,适于存储多条指令;所述指令适于由所述处理器加载并执行如第一方面所述的恶意软件识别模型训练方法,或者加载并执行如第二方面所述的恶意软件识别方法。借由上述技术方案,本发明提供的恶意软件识别模型训练方法、恶意软件识别方法及装置,能够先获取具有安全性标识的pe文件,然后根据该pe文件中api的调用类型计算该pe文件的转移概率矩阵,最后基于pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型,以便后续利用恶意软件识别模型进行恶意软件识别。由此可知,由于本发明的恶意软件识别模型是基于转移概率矩阵训练得到的,且转移概率矩阵捕捉了不同功能的系统调用之间的依赖关系,具有较高的抗攻击能力和鲁棒性,而不会随着软件结构的改变而改变,所以当软件不断变化时,无需再不断重新训练恶意软件识别模型,从而降低了恶意软件识别模型重新训练的频率。并且这种从根本上捕捉软件特征的方法,恶意代码作者也很难通过简单的代码混淆和变形手段绕过恶意软件检测。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了本发明实施例提供的一种恶意软件识别模型训练方法的流程图;图2示出了本发明实施例提供的一种恶意软件识别方法的流程图;图3示出了本发明实施例提供的一种恶意软件识别模型训练装置的组成框图;图4示出了本发明实施例提供的另一种恶意软件识别模型训练装置的组成框图;图5示出了本发明实施例提供的一种恶意软件识别装置的组成框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。本发明实施例提供了一种恶意软件识别模型训练方法,如图1所示,所述方法主要包括:101、获取具有安全性标识的pe文件。其中,所述安全性标识包括恶意标识和良性标识。具体的,可以收集一定规模的人工或者自动标注的恶意样本和良性样本作为样本库,当需要进行模型训练时,从恶意样本中获取具有恶意标识的pe文件,从良性样本中获取具有良性标识的pe文件。102、根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵。由于api转移概率矩阵能够捕捉不同功能的系统调用之间的依赖关系,具有较高的抗攻击能力和鲁棒性,所以在获取到具有安全性标识的pe文件后,可以分别对每个pe文件进行分析,确定每个pe文件中所有api的调用类型,然后根据这些调用类型计算pe文件的转移概率矩阵。103、基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型。其中,恶意软件识别模型可以为支持向量机模型,也可以为神经网络模型,也可以为其他模型。本发明实施例提供的恶意软件识别模型训练方法,能够先获取具有安全性标识的pe文件,然后根据该pe文件中api的调用类型计算该pe文件的转移概率矩阵,最后基于pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型,以便后续利用恶意软件识别模型进行恶意软件识别。由此可知,由于本发明实施例的恶意软件识别模型是基于转移概率矩阵训练得到的,且转移概率矩阵捕捉了不同功能的系统调用之间的依赖关系,具有较高的抗攻击能力和鲁棒性,而不会随着软件结构的改变而改变,所以当软件不断变化时,无需再不断重新训练恶意软件识别模型,从而降低了恶意软件识别模型重新训练的频率。并且这种从根本上捕捉软件特征的方法,恶意代码作者也很难通过简单的代码混淆和变形手段绕过恶意软件检测。在本发明的另一个实施例中,进一步介绍上述步骤102的一种可选实施方式,该方式包括:(1)基于反编译工具获取所述pe文件中每个函数对应的控制流图。反编译工具是指idapro(interactivedisassemblerprofessional,交互式反汇编器专业版)或r2等通过静态分析可以对pe文件代码段进行逆向分析的工具,pe文件经过反编译可以识别其中的函数,并从每个函数的入口得到一个控制流图,该控制流图中的节点为基本块,边为基本块之间的控制流转移关系。基本块是程序代码中的一个基本单元,执行时能且仅能从基本块第一条指令开始执行,并且一直执行到最后一条指令。每个函数有唯一入口,且有一个相应的控制流图,即控制流图通常包括多个非连通子图,每个子图对应唯一的函数入口。该步骤可通过编写idc脚本实现完全自动化获取。(2)通过解析所述pe文件中的代码,获取每个控制流图的基本块所包含的api名称,并识别所述api名称所对应的调用类型。其中,识别调用类型的具体实现方式可以为:根据预先建立的包含api名称和调用类型映射关系的api类型字典,查找获取的api名称所对应的调用类型。api调用是指kernel32.dll、ntdll.dll、advapi.dll等主要系统文件导出的函数,其中各类函数可以按照其实现的功能进行类别划分,例如,按其影响和操作的系统资源,将其划分为文件(如文件创建和读写等)、网络(如创建连接、数据发送和接收)、注册表(如注册表键值创建和读写)、进程(如进程创建和关闭等)、服务(如系统服务创建、启动和停止)、界面ui操作(如窗口绘制和销毁)。(3)统计所述pe文件的所有控制流图涉及的调用类型的种类数和任意两种调用类型在基本块中先后排列且相邻出现的次数。(4)根据所述种类数和任意两种调用类型相邻的次数,计算所述转移概率矩阵。构建一个矩阵元素为m(i,j),行数列数均为n的转移概率矩阵;其中,所述m(i,j)表示第i种调用类型与第j种调用种类型在基本块中先后排列且相邻出现的次数与所述第i种调用类型出现次数中拥有相邻的后继调用类型的次数,所述n表示所述种类数。比如某个基本块中,某个读文件操作完成后,立刻将文件发送到网络上,第一个操作是文件类型,第二个操作是网络类型,那文件类型和网络类型就在相应矩阵中的某一项统计次数中加1。本步骤需要针对所有控制流图中的所有基本块,统计各种windowsapi类型的转移次数。示例性的,若某pe文件中只有3种调用类型,第1种调用类型与第2种调用类型先后相邻出现的次数是2,第1种调用类型与第3种调用类型先后相邻出现的次数是3,第2种调用类型与第1种调用类型先后相邻出现的次数是1,第2种调用类型与第3种调用类型先后相邻出现的次数是4,第3种调用类型与第1种调用类型先后相邻出现的次数的2,第3中调用类型与第2中调用类型先后相邻出现的次数是2,则转移概率矩阵为在本发明的另一个实施例中,进一步介绍上述步骤101的一种可选实施方式,该方式包括:从具有安全性标识的软件安装包中提取pe文件;根据提取的pe文件的静态信息,判断所述提取的pe文件是否进行了加壳处理;若所述提取的pe文件进行了加壳处理,则将所述提取的pe文件放置到沙箱中运行,待所述提取的pe文件的行为触发完全后对其占用内存进行转储,并从转储文件中提取未加壳的pe文件。其中,所述静态信息包括以下任一项或多项的组合:文件格式、程序入口点指令特征以及导入表。加壳是指程序经过第三方软件或恶意软件作者的保护性处理,导致pe文件无法通过静态分析对其进行分析。针对加壳pe文件进行内存转储,需要在可控封闭环境(如vmware或virtualbox等虚拟机环境)中执行加壳pe文件,在启动加壳pe文件一段时间或检测到加壳pe文件触发网络行为时,通过虚拟执行环境的内存转储功能获取内存快照映像,并基于pe结构搜索内存映像,恢复其中脱壳后的pe文件。在本发明的另一个实施例中,进一步介绍上述步骤103的一种可选实施方式,该方式包括:直接根据所述pe文件的转移概率矩阵和对应的安全性标识进行模型训练,获得所述恶意软件识别模型;或者,将所述pe文件的转移概率矩阵转换为一维的特征向量,并根据所述特征向量和对应的安全性标识进行模型训练,获得所述恶意软件识别模型。也就是说,转移概率矩阵是二维向量,可以直接使用支持多维向量的机器学习算法训练恶意软件识别模型,也可以先将二维向量转换为一维向量,再使用指出一维向量的机器学习算法训练恶意软件识别模型。进一步的,依据上述方法实施例,本发明的另一个实施例还提供了一种恶意软件识别方法,如图2所示,所述方法包括:201、获取待识别pe文件。具体的,可以先从待识别软件安装包中提取待识别pe文件;然后根据提取的pe文件的静态信息,判断所述提取的pe文件是否进行了加壳处理;若所述提取的pe文件进行了加壳处理,则将所述提取的pe文件放置到沙箱中运行,待所述提取的pe文件的行为触发完全后对其占用内存进行转储,并从转储文件中提取未加壳的pe文件。202、根据所述待识别pe文件中api的调用类型计算所述待识别pe文件的转移概率矩阵。具体的,可以先基于反编译工具获取所述待识别pe文件中每个函数对应的控制流图;然后通过解析所述待识别pe文件中的代码,获取每个控制流图的基本块所包含的api名称,并识别所述api名称所对应的调用类型;再统计所述待识别pe文件的所有控制流图涉及的调用类型的种类数和任意两种调用类型相邻的次数;最后根据所述种类数和任意两种调用类型相邻的次数,计算所述转移概率矩阵。更具体的实现方法可参见上述步骤102的详解。203、利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件。所述恶意软件识别模型是根据上述的恶意软件识别模型训练方法训练得到的。恶意软件识别模型可以为支持向量机模型,也可以为神经网络模型,也可以为其他模型。本发明实施例提供的恶意软件识别方法,能够在获取待识别pe文件后,先根据该待识别pe文件中api的调用类型计算该待识别pe文件的转移概率矩阵,再利用该待识别pe文件的转移概率矩阵和预先基于大量已知良恶的pe文件的转移概率矩阵建立得到的恶意软件识别模型,识别该待识别文件所对应的软件是否为恶意软件。由此可知,由于本发明实施例的恶意软件识别模型是基于转移概率矩阵训练得到的,且转移概率矩阵捕捉了不同功能的系统调用之间的依赖关系,具有较高的抗攻击能力和鲁棒性,而不会随着软件结构的改变而改变,所以当软件不断变化时,无需再不断重新训练恶意软件识别模型,从而降低了恶意软件识别模型重新训练的频率。并且这种从根本上捕捉软件特征的方法,恶意代码作者也很难通过简单的代码混淆和变形手段绕过恶意软件检测。在本发明的另一个实施例中,进一步介绍上述步骤103的一种可选实施方式,该方式包括:当恶意软件识别模型是直接根据转移概率矩阵训练而得时,直接将所述待识别pe文件的转移概率矩阵输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件;或者,当恶意软件识别模型是直接根据转移概率矩阵转换成的一维特征向量训练而得时,将所述待识别pe文件的转移概率矩阵转换为一维的特征向量,并将转换得到的特征向量输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件。进一步的,依据上述方法实施例,本发明的另一个实施例还提供了一种恶意软件识别模型训练装置,如图3所示,所述装置包括:获取单元31,用于获取具有安全性标识的pe文件,所述安全性标识包括恶意标识和良性标识;计算单元32,用于根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵;训练单元33,用于基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型。可选的,如图4所示,所述计算单元32包括:第一获取模块321,用于基于反编译工具获取所述pe文件中每个函数对应的控制流图;第二获取模块322,用于通过解析所述pe文件中的代码,获取每个控制流图的基本块所包含的api名称;识别模块323,用于识别所述api名称所对应的调用类型;统计模块324,用于统计所述pe文件的所有控制流图涉及的调用类型的种类数和任意两种调用类型在基本块中先后排列且相邻出现的次数;计算模块325,用于根据所述种类数和所述次数,计算所述转移概率矩阵。可选的,所述识别模块323,用于根据预先建立的包含api名称和调用类型映射关系的api类型字典,查找获取的api名称所对应的调用类型。可选的,所述计算模块325,用于构建一个矩阵元素为m(i,j),行数列数均为n的转移概率矩阵;其中,所述m(i,j)表示第i种调用类型与第j种调用种类型在基本块中先后排列且相邻出现的次数与所述第i种调用类型出现次数中拥有相邻的后继调用类型的次数,所述n表示所述种类数。可选的,如图4所示,所述获取单元31包括:第一提取模块311,用于从具有安全性标识的软件安装包中提取pe文件;判断模块312,用于根据提取的pe文件的静态信息,判断所述提取的pe文件是否进行了加壳处理;转储模块313,用于当所述提取的pe文件进行了加壳处理时,将所述提取的pe文件放置到沙箱中运行,待所述提取的pe文件的行为触发完全后对其占用内存进行转储;第二提取模块314,用于从转储文件中提取未加壳的pe文件。可选的,所述判断模块根据的所述静态信息包括以下任一项或多项的组合:文件格式、程序入口点指令特征以及导入表。可选的,所述训练单元33,用于直接根据所述pe文件的转移概率矩阵和对应的安全性标识进行模型训练,获得所述恶意软件识别模型;或者,将所述pe文件的转移概率矩阵转换为一维的特征向量,并根据所述特征向量和对应的安全性标识进行模型训练,获得所述恶意软件识别模型。本发明实施例提供的恶意软件识别模型训练装置,能够先获取具有安全性标识的pe文件,然后根据该pe文件中api的调用类型计算该pe文件的转移概率矩阵,最后基于pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型,以便后续利用恶意软件识别模型进行恶意软件识别。由此可知,由于本发明实施例的恶意软件识别模型是基于转移概率矩阵训练得到的,且转移概率矩阵捕捉了不同功能的系统调用之间的依赖关系,具有较高的抗攻击能力和鲁棒性,而不会随着软件结构的改变而改变,所以当软件不断变化时,无需再不断重新训练恶意软件识别模型,从而降低了恶意软件识别模型重新训练的频率。并且这种从根本上捕捉软件特征的方法,恶意代码作者也很难通过简单的代码混淆和变形手段绕过恶意软件检测。进一步的,依据上述方法实施例,本发明的另一个实施例还提供了一种恶意软件识别装置,如图5所示,所述装置包括:获取单元41,用于获取待识别pe文件;计算单元42,用于根据所述待识别pe文件中api的调用类型计算所述待识别pe文件的转移概率矩阵;识别单元43,用于利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件,所述恶意软件识别模型是根据上述的恶意软件识别模型训练方法训练得到的。可选的,所述识别单元43,用于直接将所述待识别pe文件的转移概率矩阵输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件;或者,将所述待识别pe文件的转移概率矩阵转换为一维的特征向量,并将转换得到的特征向量输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件。本发明实施例提供的恶意软件识别装置,能够在获取待识别pe文件后,先根据该待识别pe文件中api的调用类型计算该待识别pe文件的转移概率矩阵,再利用该待识别pe文件的转移概率矩阵和预先基于大量已知良恶的pe文件的转移概率矩阵建立得到的恶意软件识别模型,识别该待识别文件所对应的软件是否为恶意软件。由此可知,由于本发明实施例的恶意软件识别模型是基于转移概率矩阵训练得到的,且转移概率矩阵捕捉了不同功能的系统调用之间的依赖关系,具有较高的抗攻击能力和鲁棒性,而不会随着软件结构的改变而改变,所以当软件不断变化时,无需再不断重新训练恶意软件识别模型,从而降低了恶意软件识别模型重新训练的频率。并且这种从根本上捕捉软件特征的方法,恶意代码作者也很难通过简单的代码混淆和变形手段绕过恶意软件检测。进一步的,依据上述方法实施例,本发明的另一个实施例还提供了一种存储介质,所述存储介质存储有多条指令,所述指令适用于由处理器加载并执行如上所述的恶意软件识别模型训练方法,或者加载并执行如上所述的恶意软件识别方法。存储介质可能包括计算机可读介质中的非永久性存储介质,随机存取存储介质(ram)和/或非易失性内存等形式,如只读存储介质(rom)或闪存(flashram),存储介质包括至少一个存储芯片。进一步的,依据上述方法实施例,本发明的另一个实施例还提供了一种电子设备,所述电子设备包括存储介质和处理器;所述处理器,适于实现各指令;所述存储介质,适于存储多条指令;所述指令适于由所述处理器加载并执行如上所述的恶意软件识别模型训练方法,或者加载并执行如上所述的恶意软件识别方法。本申请还提供了一种计算机程序产品,当在电子设备上执行时,适于执行初始化有如下方法步骤的程序代码:获取具有安全性标识的pe文件,所述安全性标识包括恶意标识和良性标识;根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵;基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型。本申请还提供了一种计算机程序产品,当在电子设备上执行时,适于执行初始化有如下方法步骤的程序代码:获取待识别pe文件;根据所述待识别pe文件中api的调用类型计算所述待识别pe文件的转移概率矩阵;利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件,所述恶意软件识别模型是根据上述所述的恶意软件识别模型训练方法训练得到的。本发明实施例还公开了:a1、一种恶意软件识别模型训练方法,所述方法包括:获取具有安全性标识的pe文件,所述安全性标识包括恶意标识和良性标识;根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵;基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型。a2、根据a1所述的方法,根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵包括:基于反编译工具获取所述pe文件中每个函数对应的控制流图;通过解析所述pe文件中的代码,获取每个控制流图的基本块所包含的api名称,并识别所述api名称所对应的调用类型;统计所述pe文件的所有控制流图涉及的调用类型的种类数和任意两种调用类型在基本块中先后排列且相邻出现的次数;根据所述种类数和所述次数,计算所述转移概率矩阵。a3、根据a2所述的方法,识别所述api名称所对应的调用类型包括:根据预先建立的包含api名称和调用类型映射关系的api类型字典,查找获取的api名称所对应的调用类型。a4、根据a2所述的方法,根据所述种类数和所述次数,计算所述转移概率矩阵包括:构建一个矩阵元素为m(i,j),行数列数均为n的转移概率矩阵;其中,所述m(i,j)表示第i种调用类型与第j种调用种类型在基本块中先后排列且相邻出现的次数与所述第i种调用类型出现次数中拥有相邻的后继调用类型的次数,所述n表示所述种类数。a5、根据a1所述的方法,获取具有安全性标识的pe文件包括:从具有安全性标识的软件安装包中提取pe文件;根据提取的pe文件的静态信息,判断所述提取的pe文件是否进行了加壳处理;若所述提取的pe文件进行了加壳处理,则将所述提取的pe文件放置到沙箱中运行,待所述提取的pe文件的行为触发完全后对其占用内存进行转储,并从转储文件中提取未加壳的pe文件。a6、根据a5所述的方法,所述静态信息包括以下任一项或多项的组合:文件格式、程序入口点指令特征以及导入表。a7、根据a1-a6中任一项所述的方法,基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型包括:直接根据所述pe文件的转移概率矩阵和对应的安全性标识进行模型训练,获得所述恶意软件识别模型;或者,将所述pe文件的转移概率矩阵转换为一维的特征向量,并根据所述特征向量和对应的安全性标识进行模型训练,获得所述恶意软件识别模型。b8、一种恶意软件识别方法,所述方法包括:获取待识别pe文件;根据所述待识别pe文件中api的调用类型计算所述待识别pe文件的转移概率矩阵;利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件,所述恶意软件识别模型是根据1-7中任一项所述的恶意软件识别模型训练方法训练得到的。b9、根据b8所述的方法,利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件包括:直接将所述待识别pe文件的转移概率矩阵输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件;或者,将所述待识别pe文件的转移概率矩阵转换为一维的特征向量,并将转换得到的特征向量输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件。c10、一种恶意软件识别模型训练装置,所述装置包括:获取单元,用于获取具有安全性标识的pe文件,所述安全性标识包括恶意标识和良性标识;计算单元,用于根据所述pe文件中api的调用类型计算所述pe文件的转移概率矩阵;训练单元,用于基于所述pe文件的转移概率矩阵和安全性标识进行模型训练,获得恶意软件识别模型。c11、根据c10所述的装置,所述计算单元包括:第一获取模块,用于基于反编译工具获取所述pe文件中每个函数对应的控制流图;第二获取模块,用于通过解析所述pe文件中的代码,获取每个控制流图的基本块所包含的api名称;识别模块,用于识别所述api名称所对应的调用类型;统计模块,用于统计所述pe文件的所有控制流图涉及的调用类型的种类数和任意两种调用类型在基本块中先后排列且相邻出现的次数;计算模块,用于根据所述种类数和所述次数,计算所述转移概率矩阵。c12、根据c11所述的装置,所述识别模块,用于根据预先建立的包含api名称和调用类型映射关系的api类型字典,查找获取的api名称所对应的调用类型。c13、根据c11所述的装置,所述计算模块,用于构建一个矩阵元素为m(i,j),行数列数均为n的转移概率矩阵;其中,所述m(i,j)表示第i种调用类型与第j种调用种类型在基本块中先后排列且相邻出现的次数与所述第i种调用类型出现次数中拥有相邻的后继调用类型的次数,所述n表示所述种类数。c14、根据c10所述的装置,所述获取单元包括:第一提取模块,用于从具有安全性标识的软件安装包中提取pe文件;判断模块,用于根据提取的pe文件的静态信息,判断所述提取的pe文件是否进行了加壳处理;转储模块,用于当所述提取的pe文件进行了加壳处理时,将所述提取的pe文件放置到沙箱中运行,待所述提取的pe文件的行为触发完全后对其占用内存进行转储;第二提取模块,用于从转储文件中提取未加壳的pe文件。c15、根据c14所述的装置,所述判断模块根据的所述静态信息包括以下任一项或多项的组合:文件格式、程序入口点指令特征以及导入表。c16、根据c10-c15中任一项所述的装置,所述训练单元,用于直接根据所述pe文件的转移概率矩阵和对应的安全性标识进行模型训练,获得所述恶意软件识别模型;或者,将所述pe文件的转移概率矩阵转换为一维的特征向量,并根据所述特征向量和对应的安全性标识进行模型训练,获得所述恶意软件识别模型。d17、一种恶意软件识别装置,所述装置包括:获取单元,用于获取待识别pe文件;计算单元,用于根据所述待识别pe文件中api的调用类型计算所述待识别pe文件的转移概率矩阵;识别单元,用于利用所述待识别pe文件的转移概率矩阵和预先建立的恶意软件识别模型,识别所述待识别文件所对应的软件是否为恶意软件,所述恶意软件识别模型是根据a1-a7中任一项所述的恶意软件识别模型训练方法训练得到的。d18、根据d17所述的装置,所述识别单元,用于直接将所述待识别pe文件的转移概率矩阵输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件;或者,将所述待识别pe文件的转移概率矩阵转换为一维的特征向量,并将转换得到的特征向量输入到所述恶意软件识别模型中进行恶意识别,以确定所述待识别pe文件所对应的软件是否为恶意软件。e19、一种存储介质,所述存储介质存储有多条指令,所述指令适用于由处理器加载并执行如a1-a7中任一项所述的恶意软件识别模型训练方法,或者加载并执行如b8-b9中任一项所述的恶意软件识别方法。f20、一种电子设备,所述电子设备包括存储介质和处理器;所述处理器,适于实现各指令;所述存储介质,适于存储多条指令;所述指令适于由所述处理器加载并执行如a1-a7中任一项所述的恶意软件识别模型训练方法,或者加载并执行如b8-b9中任一项所述的恶意软件识别方法。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求防护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求防护的实施例的任意之一都可以以任意的组合方式来使用。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的恶意软件识别模型训练方法、恶意软件识别方法及装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1