首页 / 专利库 / 电脑零配件 / 计算机系统 / 软件 / 基于机器学习引擎生成检测模型的方法及系统及相关装置

基于机器学习引擎生成检测模型的方法及系统及相关装置

阅读:733发布:2023-05-28

专利汇可以提供基于机器学习引擎生成检测模型的方法及系统及相关装置专利检索,专利查询,专利分析的服务。并且本 申请 公开了基于 机器学习 引擎生成检测模型的方法,所述方法包括对可执行文件的文件内容进行字母大小写转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件;提取所述待输入可执行文件中的静态特征;将所述静态特征输入至机器学习引擎,以生成检测模型。本方法能够稳定的提取可执行文件的静态特征使得机器学习引擎生成的检测模型具有较强鲁棒性的识别率。本申请还公开了基于机器学习引擎生成检测模型的系统、一种计算机可读存储介质及一种基于机器学习引擎生成检测模型装置,具有以上有益效果。,下面是基于机器学习引擎生成检测模型的方法及系统及相关装置专利的具体信息内容。

1.一种基于机器学习引擎生成检测模型的方法,其特征在于,包括:
对可执行文件的文件内容进行字母大小写转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件;
提取所述待输入可执行文件中的静态特征;
将所述静态特征输入至机器学习引擎,以生成检测模型。
2.根据权利要求1所述方法,其特征在于,所述对可执行文件的文件内容进行大小写字母转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件包括:
将所述可执行文件的导入表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导入表;
将所述可执行文件的导出表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导出表;
其中,所述待输入文件包括所述待输入导入表和所述待输入导出表。
3.根据权利要求1所述方法,其特征在于,在提取所述待输入可执行文件中的静态特征之前,还包括:
利用静态分析技术搜索所述可执行文件的导入表,过滤掉所述导入表中没有被调用的dll文件与函数。
4.根据权利要求1所述方法,其特征在于,在提取所述待输入可执行文件中的静态特征之前,还包括:
判断所述可执行文件的导入表中的dll文件名称与函数的汇编代码中是否存在jmp跳转访问指令;
若否,则过滤掉不存在所述jmp跳转访问指令的dll文件名称和函数。
5.根据权利要求1所述方法,其特征在于,在提取所述待输入可执行文件中的静态特征之前,还包括:
遍历所述可执行文件的导出表中所有函数地址的RVA;
判断所述函数地址的RVA是否非空且所述RVA在代码段的地址区域中;
若否,则过滤掉所述函数地址对应的函数;
若是,则判断所述函数地址的RVA指向的汇编代码是否符合函数头部特征;若否,则过滤掉所述函数地址对应的函数。
6.根据权利要求1所述方法,其特征在于,在将所述静态特征输入至机器学习引擎生成检测模型之前,还包括:
遍历所述可执行文件,将所述可执行文件中的ascci字符串与unicode字符串转化为统一编码的ascci字符串与统一编码的unicode字符串;
过滤掉所述统一编码的ascci字符串与所述统一编码的unicode字符串中的非可读字符串。
7.根据权利要求6所述方法,其特征在于,过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串包括:
判断所述ascci字符串与所述unicode字符串中是否存在所述非可读字符串;其中,所述非可读字符串为字节数小于预设值的字符串或随机字符串;
过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
8.权利要求1至7任一项所述方法,其特征在于,还包括:
将loadlibrary函数调用次数和getprocaddress函数调用次数设置为所述检测模型识别恶意软件特征的标准。
9.一种基于机器学习引擎生成检测模型的系统,其特征在于,包括:
大小写转化模,用于对可执行文件的文件内容进行字母大小写转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件;
静态特征提取模块,用于提取所述待输入可执行文件中的静态特征;
检测模型生成模块,用于将所述静态特征输入至机器学习引擎,以生成检测模型。
10.根据权利要求9所述系统,其特征在于,所述大小写转化模块包括:
导入表大小写转化单元,用于将所述可执行文件的导入表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导入表;
导出表大小写转化单元,用于将所述可执行文件的导出表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导出表;
其中,所述待输入文件包括所述待输入导入表和所述待输入导出表。
11.根据权利要求9所述系统,其特征在于,还包括:
第一导入表过滤模块,用于利用静态分析技术搜索所述可执行文件的导入表,过滤掉所述导入表中没有被调用的dll文件与函数。
12.根据权利要求9所述系统,其特征在于,还包括:
Jmp指令判断模块,用于判断所述可执行文件的导入表中的dll文件名称与函数的汇编代码中是否存在jmp跳转访问指令;
第二导入表过滤模块,用于当不存在所述jmp跳转访问指令时,过滤掉不存在所述jmp跳转访问指令的dll文件名称和函数。
13.根据权利要求9所述系统,其特征在于,还包括:
导出表遍历模块,用于遍历所述可执行文件的导出表中所有函数地址的RVA;
RVA判断模块,用于判断所述函数地址的RVA是否非空且所述RVA在代码段的地址区域中;
导出表过滤模块,用于当所述函数地址的RVA为空和/或所述RVA在代码段的地址区域中时,过滤掉所述函数地址对应的函数;还用于当所述函数地址的RVA非空且所述RVA在代码段的地址区域中,则判断所述函数地址的RVA指向的汇编代码是否符合函数头部特征,若不符合函数头部特征,则过滤掉所述函数地址对应的函数。
14.根据权利要求9所述系统,其特征在于,还包括:
编码统一模块,用于遍历所述可执行文件,将所述可执行文件中的ascci字符串与unicode字符串转化为统一编码的ascci字符串与统一编码的unicode字符串;
字符串精简模块,用于过滤掉所述统一编码的ascci字符串与所述统一编码的unicode字符串中的非可读字符串。
15.根据权利要求14所述系统,其特征在于,所述字符串精简模块包括:
字符串长度判断单元,用于判断所述ascci字符串与所述unicode字符串中是否存在所述非可读字符串;其中,所述非可读字符串为字节数小于预设值的字符串或随机字符串;
字符串过滤掉单元,用于过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
16.根据权利要求9至15任一项所述系统,其特征在于,还包括:
隐藏函数标准设定模块,用于将loadlibrary函数调用次数和getprocaddress函数调用次数设置为所述检测模型识别恶意软件特征的标准。
17.一种基于机器学习引擎生成检测模型的装置,其特征在于,包括:
存储器,用于存储计算机程序
处理器,用于执行所述计算机程序时执行如权利要求1至8任一项所述的基于机器学习引擎生成检测模型的方法的步骤。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的基于机器学习引擎生成检测模型的方法的步骤。

说明书全文

基于机器学习引擎生成检测模型的方法及系统及相关装置

技术领域

[0001] 本发明涉及机器学习技术领域,特别涉及一种基于机器学习引擎生成检测模型的方法、系统、一种计算机可读存储介质及一种基于机器学习引擎生成检测模型的装置。

背景技术

[0002] 大数据和机器学习技术是当前工业界和学术界研究的热点,机器学习和大数据技术被越来越多的用于了信息安全方面,并取得了不错的效果。其中,基于机器学习的恶意软件检测技术取得长足的进步,业界也涌现了一大批基于机器学习做恶意软件检测的公司,比如Cylance等,这些新兴公司颇受VC的青睐,也取得一些很好的成果。
[0003] 目前主流的机器学习都是基于可执行文件的静态特征实现的,但是由于直接提取的可执行文件静态特征不够稳定易更改,因此利用直接提取的可执行文件静态特征进行机器学习得到的模型容易受到攻击,提取特征的过程解释性差容易被绕过。现有技术中,尚不存在以提升静态特征的稳定性为目的的技术方案,大多是只进行把数字转换成字符的预操作,但并不能改变可执行文件的静态特征稳定性较差的问题。以PE(Portable Executable,可移植的可执行)可执行文件为例,由于基于PE静态特征的机器学习引擎对特征较为敏感,仅仅增加或减少导入表、导出表、节等PE结构化信息会对PE静态特征产生较大的影响,进而影响机器学习识别引擎生成的检测模型的识别效果。
[0004] 因此,如何稳定的提取可执行文件的静态特征使得机器学习引擎生成的检测模型具有较强鲁棒性的识别率,是本领域技术人员目前需要解决的技术问题。

发明内容

[0005] 本申请的目的是提供一种基于机器学习引擎生成检测模型的方法、系统、一种计算机可读存储介质及一种基于机器学习引擎生成检测模型的装置,能够稳定的提取可执行文件的静态特征使得机器学习引擎生成的检测模型具有较强鲁棒性的识别率。
[0006] 为解决上述技术问题,本申请提供基于机器学习引擎生成检测模型的方法,该方法包括:
[0007] 对可执行文件的文件内容进行字母大小写转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件;
[0008] 提取所述待输入可执行文件中的静态特征;
[0009] 将所述静态特征输入至机器学习引擎,以生成检测模型。
[0010] 可选的,所述对可执行文件的文件内容进行大小写字母转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件包括:
[0011] 将所述可执行文件的导入表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导入表;
[0012] 将所述可执行文件的导出表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导出表;
[0013] 其中,所述待输入文件包括所述待输入导入表和所述待输入导出表。
[0014] 可选的,在提取所述待输入可执行文件中的静态特征之前,还包括:
[0015] 利用静态分析技术搜索所述可执行文件的导入表,过滤掉所述导入表中没有被调用的dll文件与函数。
[0016] 可选的,在提取所述待输入可执行文件中的静态特征之前,还包括:
[0017] 判断所述可执行文件的导入表中的dll文件名称与函数的汇编代码中是否存在jmp跳转访问指令;
[0018] 若否,则过滤掉不存在所述jmp跳转访问指令的dll文件名称和函数。
[0019] 可选的,在提取所述待输入可执行文件中的静态特征之前,还包括:
[0020] 遍历所述可执行文件的导出表中所有函数地址的RVA;
[0021] 判断所述函数地址的RVA是否非空且所述RVA在代码段的地址区域中;
[0022] 若否,则过滤掉所述函数地址对应的函数;
[0023] 若是,则判断所述函数地址的RVA指向的汇编代码是否符合函数头部特征;若否,则过滤掉所述函数地址对应的函数。
[0024] 可选的,在将所述静态特征输入至机器学习引擎生成检测模型之前,还包括:
[0025] 遍历所述可执行文件,将所述可执行文件中的ascci字符串与unicode字符串转化为统一编码的所述ascci字符串与所述unicode字符串;
[0026] 过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
[0027] 可选的,过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串包括:
[0028] 判断所述ascci字符串与所述unicode字符串中是否存在所述非可读字符串;其中,所述非可读字符串为字节数小于预设值的字符串或随机字符串;
[0029] 过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
[0030] 可选的,还包括:
[0031] 将loadlibrary函数调用次数和getprocaddress函数调用次数设置为所述检测模型识别恶意软件特征的标准。
[0032] 本申请还提供了一种基于机器学习引擎生成检测模型的系统,该系统包括:
[0033] 大小写转化模,用于对可执行文件的文件内容进行字母大小写转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件;
[0034] 静态特征提取模块,用于提取所述待输入可执行文件中的静态特征;
[0035] 检测模型生成模块,用于将所述静态特征输入至机器学习引擎,以生成检测模型。
[0036] 可选的,所述大小写转化模块包括:
[0037] 导入表大小写转化单元,用于将所述可执行文件的导入表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导入表;
[0038] 导出表大小写转化单元,用于将所述可执行文件的导出表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导出表;
[0039] 其中,所述待输入文件包括所述待输入导入表和所述待输入导出表。
[0040] 可选的,还包括:
[0041] 第一导入表过滤模块,用于利用静态分析技术搜索所述可执行文件的导入表,过滤掉所述导入表中没有被调用的dll文件与函数。
[0042] 可选的,还包括:
[0043] Jmp指令判断模块,用于判断所述可执行文件的导入表中的dll文件名称与函数的汇编代码中是否存在jmp跳转访问指令;
[0044] 第二导入表过滤模块,用于当不存在所述jmp跳转访问指令时,过滤掉不存在所述jmp跳转访问指令的dll文件名称和函数。
[0045] 可选的,还包括:
[0046] 导出表遍历模块,用于遍历所述可执行文件的导出表中所有函数地址的RVA;
[0047] RVA判断模块,用于判断所述函数地址的RVA是否非空且所述RVA在代码段的地址区域中;
[0048] 导出表过滤模块,用于当所述函数地址的RVA为空和/或所述RVA在代码段的地址区域中时,过滤掉所述函数地址对应的函数;还用于当所述函数地址的RVA非空且所述RVA在代码段的地址区域中,则判断所述函数地址的RVA指向的汇编代码是否符合函数头部特征,若不符合函数头部特征,则过滤掉所述函数地址对应的函数。
[0049] 可选的,还包括:
[0050] 编码统一模块,用于遍历所述可执行文件,将所述可执行文件中的ascci字符串与unicode字符串转化为统一编码的所述ascci字符串与所述unicode字符串;
[0051] 字符串精简模块,用于过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
[0052] 可选的,所述字符串精简模块包括:
[0053] 字符串长度判断单元,用于判断所述ascci字符串与所述unicode字符串中是否存在所述非可读字符串;其中,所述非可读字符串为字节数小于预设值的字符串或随机字符串;
[0054] 字符串过滤掉单元,用于过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
[0055] 可选的,还包括:
[0056] 隐藏函数标准设定模块,用于将loadlibrary函数调用次数和getprocaddress函数调用次数设置为所述检测模型识别恶意软件特征的标准。
[0057] 本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述基于机器学习引擎生成检测模型的方法执行的步骤。
[0058] 本申请还提供了一种基于机器学习引擎生成检测模型的装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述基于机器学习引擎生成检测模型的方法执行的步骤。
[0059] 本发明提供了一种基于机器学习引擎生成检测模型的方法,包括:对可执行文件的文件内容进行字母大小写转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件;提取所述待输入可执行文件中的静态特征;将所述静态特征输入至机器学习引擎,以生成检测模型。
[0060] 由于造成机器学习引擎生成的检测模型识别效果较差的主要原因是静态特征中存在大写字母和小写字母混合存在的情况。虽然大小写字母混合存在不会改变程序的执行,但是严重影响了机器学习引擎利用静态特征进行学习时产生混淆的情况进而影响了检测模型的识别效果。本发明通过将可执行文件中的文件内容进行字母大小写转化得到统一字母大小写格式的稳定的静态特征,机器学习引擎利用字母大小写格式一致的静态特征进行学习时能够得到具有较好识别效果的检测模型。相对于现有技术中,不对可执行文件执行任何操作增强静态特征稳定性的方案,本方案通过深度学习的方式对可执行文件进行预处理,得到了便于机器学习引擎学习的静态特征,故本方案能够稳定的提取可执行文件的静态特征使得机器学习引擎生成的检测模型具有较强鲁棒性的识别率。本申请同时还提供了基于机器学习引擎生成检测模型的系统、一种计算机可读存储介质和基于机器学习引擎生成检测模型的装置,具有上述有益效果,在此不再赘述。附图说明
[0061] 为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0062] 图1为本申请实施例所提供的一种基于机器学习引擎生成检测模型的方法的流程图
[0063] 图2为本申请实施例所提供的一种基于机器学习引擎生成检测模型的方法中对文件内容进行字母大小写转化的流程图;
[0064] 图3为本申请实施例所提供的一种基于机器学习引擎生成检测模型的方法中精简导出表的流程图;
[0065] 图4为本申请实施例所提供的一种基于机器学习引擎生成检测模型的方法中过滤掉可执行文件中非可读字符串的流程图;
[0066] 图5为本申请实施例所提供的一种优选的基于机器学习引擎生成检测模型的方法的流程图;
[0067] 图6为本申请实施例所提供的一种基于机器学习引擎生成检测模型的系统的结构示意图。

具体实施方式

[0068] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0069] 下面请参见图1,图1为本申请实施例所提供的一种基于机器学习引擎生成检测模型的方法的流程图。
[0070] 具体步骤可以包括:
[0071] S101:对可执行文件的文件内容进行字母大小写转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件;
[0072] 其中,本步骤是整个方案之所以能够提升检测模型的识别率的关键,可执行文件是指是可以由操作系统进行加载执行的文件,在不同的操作系统环境下,可执行文件的呈现方式不一样,例如在Windows系统下可执行文件的格式为PE文件,在Linux、Mac、Android等系统中均有其对应的可执行文件格式。此处不对可执行文件所在的系统进行具体的限定,本方案可以对多种系统下的可执行文件进行操作。
[0073] 通常来说,可执行文件中的内容是大写字母和小写字母同时存在的,为了消除字母大小写对于静态特征的稳定性的影响,本步骤对可执行文件中的文件内容进行了字母大小写的统一转化,即得到文件内容均由大写字母构成的可执行文件,或得到文件内容均由小写字母构成的可执行文件。作为一种优选的实施方式,可以先判断文件内容中大写字母所占的比例小还是小写字母所占的比例小,将文件内容中所在比例较小的字母转化为比例较大的字母的大小写格式。例如文件内容中大写字母占20%,小写字母占80%,则将文件内容中所有的大写字母转化为小写字母;例如文件内容中大写字母占70%,小写字母占30%,则将文件内容中所有的小写字母转化为大写字母。
[0074] 值得注意的是,本步骤中提到的文件内容是指进行特征提取所用到的可执行文件中的数据分块,例如可以是可执行文件的导入表、导出表等。
[0075] S102:提取所述待输入可执行文件中的静态特征;
[0076] 其中,本步骤是建立在对可执行文件执行了字母大小写统一转化操作的基础上提取可执行文件中的静态特征,由于不存在大小写混合存在的情况,本步骤提取的静态特征具有较好的稳定性。
[0077] S103:将所述静态特征输入至机器学习引擎,以生成检测模型。
[0078] 其中,本步骤是将S102提取得到的静态特征输入至机器学习引擎,训练机器学习引擎中的模型最终得到检测模型。由于机器学习所用的样本——静态特征具有较好的稳定性,本步骤生成的检测模型具有较为鲁棒的识别率。
[0079] 由于造成机器学习引擎生成的检测模型识别效果较差的主要原因是静态特征中存在大写字母和小写字母混合存在的情况。虽然大小写字母混合存在不会改变程序的执行,但是严重影响了机器学习引擎利用静态特征进行学习时产生混淆的情况进而影响了检测模型的识别效果。本实施例通过将执行文件中的文件内容进行字母大小写转化得到统一字母大小写格式的稳定的静态特征,机器学习引擎利用字母大小写格式一致的静态特征进行学习时能够得到具有较好识别效果的检测模型。相对于现有技术中,不对可执行文件执行任何操作增强静态特征稳定性的方案,本实施例通过深度学习的方式对可执行文件进行预处理,得到了便于机器学习引擎学习的静态特征,故本实施例能够稳定的提取可执行文件的静态特征使得机器学习引擎生成的检测模型具有较强鲁棒性的识别率。
[0080] 下面请参见图2,图2为本申请实施例所提供的一种基于机器学习引擎生成检测模型的方法中对文件内容进行字母大小写转化的流程图;在本实施例中对第一个实施例中的S101进行了更为具体的说明。
[0081] 对文件内容进行字母大小写转化的方式包括但不限于下述方式:
[0082] S201:将可执行文件的导入表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的函数与dll文件名称,以使得到待输入导入表;
[0083] S202:将可执行文件的导出表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的函数与dll文件名称,以使得到待输入导出表;
[0084] 本实施例是对第一个实施例中文件内容的具体限定,由于导入表和导出表都是可执行文件中进行静态特征提取的主要特征。值得注意的是在对导入表和导出表进行静态特征提取时只对其中的函数(整个函数)和dll文件名称进行提取,因此在进行字母大小写统一转化的过程中需要对导入表中的dll文件名称与函数进行提取。需要提醒的是,此处进行大小写的是函数的全部内容和dll文件名称,并不是指函数的名称和dll文件的名称。
[0085] 可以理解的是,由于导入表、导出表均包括各自的函数和dll文件名称,因此S201和S202的操作基本相同,只是实施的对象不同,两个步骤不存在逻辑上的先后关系,可以根据实际情况改变执行顺序。上面两个实施例均是通过字母大小写转化的方式增强静态特征的稳定性,可以理解的是,导入表增强静态特征的稳定性的方式有很多,例如对导入表和/或导出表进行精简。
[0086] 其中,导入表可能会存在实际使用过程中不会用到的函数或dll文件,还可能存在程序的核心流程不会被调用的函数或dll文件,这些不会被调用或用到的函数或dll文件将会大大影响静态特征提取的稳定性。对于精简导入表的操作可以包括利用静态分析技术搜索所述可执行文件的导入表,过滤掉所述导入表中没有被调用的dll文件与函数;还可以包括判断所述可执行文件的导入表中的dll文件名称与函数的汇编代码中是否存在jmp跳转访问指令;若否,则过滤掉不存在所述jmp跳转访问指令的dll文件名称和函数。上述被过滤掉的dll文件名称和函数不会作为机器学习引擎的特征输入,提升了静态特征的稳定性,进而使检测模型具有较为鲁棒的识别率。值得注意的是,虽然上述操作是可执行文件的导入表执行的操作,但是由于待输入文件的待输入导入表也存在dll文件与函数,故在将本实施例与上面任意一个实施例相结合时,本实施例中的操作同样适用于对待输入文件的待输入导入表中的操作,同样能够提升静态特征的稳定性。
[0087] 下面请参见图3,图3为本申请实施例所提供的一种基于机器学习引擎生成检测模型的方法中精简导出表的流程图。本实施例是对第一个实施例中提升静态特征稳定性方法的补充,增加了对于导出表进行精简操作的方案,可以与第一个实施例或第二个实施例中描述的方案相结合。
[0088] 精简导出表的方式包括但不限于下述方式:
[0089] S301:遍历可执行文件的导出表中所有函数地址的RVA;
[0090] S302:判断函数地址的RVA是否非空且RVA在代码段的地址区域中;若否,则进入S303;若是,则进入S304;
[0091] S303:过滤掉函数地址对应的函数;
[0092] S304:判断函数地址的RVA指向的汇编代码是否符合函数头部特征;若否,则进入S303;若是,则结束流程。
[0093] 在本实施例中遍历导出表中的函数名和对应函数地址的RVA(Relative Virual Address,相对虚拟地址),判断RVA是否为非空且在代码段的地址区域中,如果根据上述规则判断RVA不正确,就过滤掉该RVA对应的函数;如果根据上述规则判断RVA正确,则可以再判断RVA指向的汇编代码是否符合函数头部的特征,如果符合则保留该RVA对应的函数,反之则删除所述函数。
[0094] 可以理解的是,上述RVA不满足“非空且在代码段的地址区域中”的情况和RVA指向的汇编代码不符合函数头部的特征的情况,都表示该RVA对应的函数为无效的函数,如果在静态特征提取过程中将这些无效的函数也进行提取的话,将会大大影响静态特征的稳定性。故本实施例对可执行文件的导入表中无效的函数进行过滤,提高了提取静态特征的稳定性,进而使得检测模型具有较为鲁棒的识别率。
[0095] 值得注意的是,虽然本步骤是可执行文件的导出表执行的操作,但是由于待输入文件的待输入导出表也存在函数,故在将本实施例与上面任意一个实施例相结合时,本实施例中的操作同样适用于对待输入文件的待输入导出表中的操作,同样能够提升静态特征的稳定性。
[0096] 下面请参见图4,图4为本申请实施例所提供的一种基于机器学习引擎生成检测模型的方法中过滤掉可执行文件中非可读字符串的流程图。本实施例是对第一个实施例中提升静态特征稳定性方法的补充,增加了对于字符串特征进行精简操作的方案,可以与第一个实施例、第二个实施例以及第三个实施例中描述的方案相结合。
[0097] 过滤掉可执行文件中非可读字符串的方式包括但不限于下述方式:
[0098] S401:遍历可执行文件,将可执行文件中的ascci字符串与unicode字符串转化为统一编码的ascci字符串与统一编码的unicode字符串;
[0099] 其中,本步骤将可执行文件中的ascci字符串转化为统一编码的ascci字符串,将可执行文件中的unicode字符串转化为统一编码的unicode字符串。将ascci字符串与unicode字符串进行统一编码(如统一为大写编码或统一为小写编码)能够便于识别可执行文件中的非可读字符串。
[0100] S402:过滤掉ascci字符串与unicode字符串中的非可读字符串。
[0101] 其中,非可读字符串的来源主要为二进制文件中正好存在某些二进制序列匹配字符串的特征的情况,非可读字符串一般比较短,如2个或3个字符且包括标点符号,可以采用长度、特殊字符集合等方式把字符串过滤一遍得到。若不进行上述处理,未被过滤掉的非可读字符串会使静态特征的稳定性较差。当然,程序中没有被引用的字符串也属于非可读字符串。
[0102] 下面通过一个例子解释S402中的操作:首先判断所述ascci字符串与所述unicode字符串中是否存在所述非可读字符串;其中,所述非可读字符串为字节数小于预设值的字符串或随机字符串;然后过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
[0103] 本实施例从非可读字符串的度进行过滤提升了静态特征的稳定性,进而使得检测模型具有较为鲁棒的识别率。
[0104] 除了上述四个实施例均是通过从增加静态特征稳定性的角度提升检测模型识别率,作为一种优选的实施方案还可以将loadlibrary函数调用次数和getprocaddress函数调用次数设置为所述检测模型识别恶意软件特征的标准;其中,loadlibrary函数和getprocaddress函数均是调用隐藏函数的实现方式。由于存在某些针对函数名称的编码或者变形等方式加载函数的方式,如恶意用户不把调用的API写入导入表中,只写入一个合法的API,但这个API能在程序运行过程中采用动态加载的方式调用危险的API,通过这种方式逃过检测。故可以使用loadlibrary函数调用次数和getprocaddress函数调用次数作为机器学习引擎的学习特征,能够对抗动态加载函数的特征隐藏方法。
[0105] 值得注意的是,虽然本步骤是对可执行文件中的ascci字符串与unicode字符串执行的操作,但是由于待输入文件也存在ascci字符串与unicode字符串,故在将本实施例与上面任意一个实施例相结合时,本实施例中的操作同样适用于对待输入文件中的操作,同样能够提升静态特征的稳定性。
[0106] 下面请参见图5,图5为本申请实施例所提供的一种优选的基于机器学习引擎生成检测模型的方法的流程图。
[0107] 具体步骤可以包括:
[0108] S501:将可执行文件的导入表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导入表;
[0109] S502:将可执行文件的导出表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的函数与dll文件名称,以使得到待输入导出表;
[0110] S503:判断可执行文件的导入表中的dll文件名称与函数的汇编代码中是否存在jmp跳转访问指令;若是,则进入S505;若否,则进入S504;
[0111] S504:过滤掉不存在所述jmp跳转访问指令的dll文件名称和函数,进入S505;
[0112] S505:遍历待输入导出表中所有函数地址的RVA;
[0113] S506:判断所述函数地址的RVA是否非空且所述RVA在代码段的地址区域中;若是,则进入S508;若否,则进入S507;
[0114] S507:过滤掉函数地址对应的函数,进入S509;
[0115] S508:判断函数地址的RVA指向的汇编代码是否符合函数头部特征;若否,则过滤掉函数地址对应的函数,进入S509;
[0116] S509:遍历待输入可执行文件,将待输入可执行文件中的ascci字符串与unicode字符串转化为统一编码的所述ascci字符串与所述unicode字符串;
[0117] S510:过滤掉ascci字符串与unicode字符串中的非可读字符串。
[0118] S511:得到包括待输入导入表和待输入导出表的待输入文件。
[0119] S512:提取待输入可执行文件中的静态特征;
[0120] S513:将loadlibrary函数调用次数和getprocaddress函数调用次数设置为检测模型识别恶意软件特征的标准。
[0121] S514:将静态特征输入至机器学习引擎,以生成检测模型。
[0122] 请参见图6,图6为本申请实施例所提供的一种基于机器学习引擎生成检测模型的系统的结构示意图;
[0123] 该系统可以包括:
[0124] 大小写转化模块100,用于对可执行文件的文件内容进行字母大小写转化,得到均由大写字母构成或均由小写字母构成的待输入可执行文件;
[0125] 静态特征提取模块200,用于提取所述待输入可执行文件中的静态特征;
[0126] 检测模型生成模块300,用于将所述静态特征输入至机器学习引擎,以生成检测模型。
[0127] 进一步的,大小写转化模块100包括:
[0128] 导入表大小写转化单元,用于将所述可执行文件的导入表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导入表;
[0129] 导出表大小写转化单元,用于将所述可执行文件的导出表中的函数与dll文件名称进行字母大小写转化,生成均由大写字母构成或均由小写字母构成的所述函数与所述dll文件名称,以使得到待输入导出表;
[0130] 其中,所述待输入文件包括所述待输入导入表和所述待输入导出表。
[0131] 进一步的,该系统还包括:
[0132] 第一导入表过滤模块,用于利用静态分析技术搜索所述可执行文件的导入表,过滤掉所述导入表中没有被调用的dll文件与函数。
[0133] 进一步的,该系统还包括:
[0134] Jmp指令判断模块,用于判断所述可执行文件的导入表中的dll文件名称与函数的汇编代码中是否存在jmp跳转访问指令;
[0135] 第二导入表过滤模块,用于当不存在所述jmp跳转访问指令时,过滤掉不存在所述jmp跳转访问指令的dll文件名称和函数。
[0136] 进一步的,该系统还包括:
[0137] 导出表遍历模块,用于遍历所述可执行文件的导出表中所有函数地址的RVA;
[0138] RVA判断模块,用于判断所述函数地址的RVA是否非空且所述RVA在代码段的地址区域中;
[0139] 导出表过滤模块,用于当所述函数地址的RVA为空和/或所述RVA在代码段的地址区域中时,过滤掉所述函数地址对应的函数;还用于当所述函数地址的RVA非空且所述RVA在代码段的地址区域中,则判断所述函数地址的RVA指向的汇编代码是否符合函数头部特征,若不符合函数头部特征,则过滤掉所述函数地址对应的函数。
[0140] 进一步的,该系统还包括:
[0141] 编码统一模块,用于遍历所述可执行文件,将所述可执行文件中的ascci字符串与unicode字符串转化为统一编码的所述ascci字符串与所述unicode字符串;
[0142] 字符串精简模块,用于过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
[0143] 进一步的,所述字符串精简模块包括:
[0144] 字符串长度判断单元,用于判断所述ascci字符串与所述unicode字符串中是否存在所述非可读字符串;其中,所述非可读字符串为字节数小于预设值的字符串或随机字符串;
[0145] 字符串过滤掉单元,用于过滤掉所述ascci字符串与所述unicode字符串中的非可读字符串。
[0146] 进一步的,该系统还包括:
[0147] 隐藏函数标准设定模块,用于将loadlibrary函数调用次数和getprocaddress函数调用次数设置为所述检测模型识别恶意软件特征的标准。
[0148] 由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
[0149] 本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0150] 本申请还提供了一种基于机器学习引擎生成检测模型的装置,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述基于机器学习引擎生成检测模型的装置还可以包括各种网络接口,电源等组件。
[0151] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
[0152] 还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈