首页 / 专利库 / 电脑安全 / 计算机病毒 / 一种基于逆向与机器学习的恶意软件检测及分析系统

一种基于逆向与机器学习的恶意软件检测及分析系统

阅读:166发布:2020-05-08

专利汇可以提供一种基于逆向与机器学习的恶意软件检测及分析系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于逆向与 机器学习 的恶意 软件 检测及分析系统,包括客户端,用户在客户端上传需要检测的PE文件,通过网络传输到达服务端,将其解析为二进制文件并保存为二进制文件P2, 服务器 基于熵的壳检测技术来检测上传的PE文件是否存在保护;PE文件存在保护时,服务器进行脱壳处理后进行第二次扫描检测;PE文件未存在保护:服务器直接进行第二次扫描检测;服务器对PE文件进行第二次扫描检测时,检测PE文件是否存在敏感字符串或调用恶意API函数;将敏感字符串或调用恶意API函数映射到预先设置的数据格式A;将A输出到训练好的ML模型进行识别,通过客户端显示四种不同等级的提醒。,下面是一种基于逆向与机器学习的恶意软件检测及分析系统专利的具体信息内容。

1.一种基于逆向与机器学习的恶意软件检测及分析系统,其特征在于:包括客户端,用户在客户端上传需要检测的PE文件,通过网络传输到达服务端,将其解析为二进制文件并保存为二进制文件P2,
服务器基于熵的壳检测技术来检测上传的PE文件是否存在保护;PE文件存在保护时,服务器进行脱壳处理后进行第二次扫描检测;PE文件未存在保护:服务器直接进行第二次扫描检测;
服务器对PE文件进行第二次扫描检测时,检测PE文件是否存在敏感字符串或调用恶意API函数;将敏感字符串或调用恶意API函数映射到预先设置的数据格式A;将A输出到训练好的ML模型进行识别,通过客户端显示四种不同等级的提醒;
其中,ML模型通过以下步骤训练;
S1:通过解析提取文件头部信息、标签和行为字节码;静态分析数据:原始数据和一系列指令;
S2:将生成的数据提取并缩放值为0~1的矩阵中,即如果将原始值缩放到0~1之间以减少计算复杂性
如指令或序列给出了API调用,他被投射到N*M矩阵中,其中N为指令序列的数量,M为类型的数量;
S3:将转化来的数据,输入SVM、随机森林、KNN、朴素贝叶斯算法、CNN等学习模型进行训练;
S4:将它们的输出结果都交于“EnsembleMethod”对每一个进行评价打分,最后给出最佳的学习模型;
S5:利用上一步骤得到的最佳模型,对数据进行预测,并给出是否为敏感字符串或调用恶意API函数的结论。
2.根据权利要求1所述的一种基于逆向与机器学习的恶意软件检测及分析系统,其特征在于:所述步骤5中的敏感字符串或调用恶意API函数包括计算机病毒、特洛伊木、蠕虫、后、Rookit、间谍软件
3.根据权利要求1所述的一种基于逆向与机器学习的恶意软件检测及分析系统,其特征在于:所述脱壳过程,使用命令行传递文件路径,使用启发式方法找到程序入口OriginalEntryPoint,其中有四种启发方法:熵、跳到节外、长跳转、pushad和popad;之后修复ImportDirectory重构可执行版本,最终输出脱壳结果。
4.根据权利要求1所述的一种基于逆向与机器学习的恶意软件检测及分析系统,其特征在于:所述数据格式A通过以下步骤得到:
SS1:输入类型(X1):
有exe、DLL、OCX、SYS等PE文件格式类型
这个数据类型属于虚拟变量,需要进行虚拟变量处理
SS2:提权操作(X2):
根据不同的提权操作函数赋予值并添加权重,其结果位于X2
SS3:网络行为(X3):
根据记录在文件中与IP\FTP操作相关行为赋予值并添加权重,其结果位于X3SS4:硬盘操作(X4):
根据不同的硬盘操作函数赋予值并添加权重,其结果位于X4
SS5:进程附加(X5):
根据不同的硬盘操作函数赋予值并添加权重,其结果位于X5
SS6:其他待定义(Xn)
SS7:y:得到的结果。

说明书全文

一种基于逆向与机器学习的恶意软件检测及分析系统

技术领域

[0001] 本发明属于机器学习领域,涉及一种基于逆向与机器学习的恶意软件检测及分析系统。

背景技术

[0002] 计算机网络是信息社会的基础,已经进入了社会的各个落,经济、文化、军事和社会生活越来越多依赖计算机网络。然而,计算机在给人们带来巨大便利的同时,也带来了不可忽视的问题,那就是计算机病毒给网络系统的安全运行带来了极大的挑战。2017年5月12日,全球爆发的勒索病毒WannaCry借助高危漏洞“永恒之蓝”(EternalBlue)在世界范围内爆发,据报道包括美国、英国、中国、俄罗斯、西班牙、意大利、越南等百余个国家均遭受大规模攻击。我国的许多行业机构和大型企业也被攻击,有的单位甚至“全军覆没”,损失之严重为近年来所罕见。通过这种网络安全事件的影响表明,恶意软件已经成为威胁网络和信息安全的关键因素之一。恶意软件除了本身的恶意功能之外,恶意软件的作者会花费更多的时间在软件绑或加壳等技术上,用来进一步加强恶意软件的传播功能以及规避检测机制。这使得对恶意软件的检测变得更加困难。因此,恶意软件检测问题是当前恶意软件防范的重点,同时也是难点。

发明内容

[0003] 本发明的目的在于:提供了一种基于逆向与机器学习的恶意软件检测及分析系统,完成恶意软件的检测。
[0004] 本发明采用的技术方案如下:
[0005] 一种基于逆向与机器学习的恶意软件检测及分析系统,包括客户端,用户在客户端上传需要检测的PE文件,通过网络传输到达服务端,将其解析为二进制文件并保存为二进制文件P2,服务器基于熵的壳检测技术来检测上传的PE文件是否存在保护;PE文件存在保护时,服务器进行脱壳处理后进行第二次扫描检测;PE文件未存在保护:服务器直接进行第二次扫描检测;服务器对PE文件进行第二次扫描检测时,检测PE文件是否存在敏感字符串或调用恶意API函数;将敏感字符串或调用恶意API函数映射到预先设置的数据格式A;将A输出到训练好的ML模型进行识别,通过客户端显示四种不同等级的提醒;其中,ML模型通过以下步骤训练;
[0006] S1:通过解析提取文件头部信息、标签和行为字节码;静态分析数据:原始数据和一系列指令;
[0007] S2:将生成的数据提取并缩放值为0~1的矩阵中,即如果将原始值缩放到0~1之间以减少计算复杂性
[0008] 如指令或序列给出了API调用,他被投射到N*M矩阵中,其中N为指令序列的数量,M为类型的数量;
[0009] S3:将转化来的数据,输入SVM、随机森林、KNN、朴素贝叶斯算法、CNN等学习模型进行训练;
[0010] S4:将它们的输出结果都交于“EnsembleMethod”对每一个进行评价打分,最后给出最佳的学习模型;
[0011] S5:利用上一步骤得到的最佳模型,对数据进行预测,并给出是否为敏感字符串或调用恶意API函数的结论。
[0012] 为了解决传统问题的不足,本发明采用机器学习,首选训练ML模型,通过ML模型来对数据进行预测,并给出是否为敏感字符串或调用恶意API函数的结论;不同类型的恶意代码有着不同的数据特征,单一的分类算法(即文章开头提到的各种机器学习模型)。所以,我们的思路是利用现今对于这六类恶意代码有着良好分类性能的分类算法对训练数据集进行训练。比如说,我们有500个一类病毒(计算机病毒)数据,输入图一中进行训练。分类算法1—分类算法5都会对着500个数据进行训练,分成5批,然后一批一批输出给“EnsembleMethod”;“EnsembleMethod”阶段,借用集成学习的思想。大概的思路是:因为是
500个训练集,因此它们都事先贴好了标签,“EnsembleMethod”会接收到分类算法1—分类算法5的分类结果。比如说,一共有五种分类算法在模型内,那么“EnsembleMethod”给予每种分类算法的权重都是0.2。分类算法1对于第一批数据的准确率是90%,分类算法2对于第一批数据的准确率是80%,分类算法3对于第一批数据的准确率是70%·那么给予分类算法1合适的权重加成,算法一的权重就会变为0.3,而其他算法或增或减,总值为1不变。这样一批批数据过后,算法一就会有极高的权重,也代表着这种算法对于当前“计算机病毒”这一类病毒有着良好的分类效果。如上所述,每一类的恶意代码的数据都经过训练后,分类算法1—分类算法5对于各类恶意代码都有着对应的权重和识别效果;这样模型就训练好了,当用户输入新的恶意代码时,分类算法1—分类算法N都会对其进行分类识别,每种算法都会有不同的识别程度,例如会输出:
[0013] 若五种算法,都判断是非恶意病毒,那么就输出给用户:恶意病毒若五种算法中,有算法一和算法二判断是恶意代码“计算机病毒”,而其他3种算法判断是非恶意代码,那么“EnsembleMethod”就会根据训练过程中,分类算法1—分类算法5对于“计算机病毒”的相关权重进行计算。所述恶意病毒为敏感字符串或调用恶意API函数。所述四种不同等级包括高危、警告、未知和安全,每种等级中列出搜索到的敏感操作,ML模型会对这些操作进行打分,不同的分数反应不同的危险程度。
[0014] 进一步,所述步骤5中的敏感字符串或调用恶意API函数包括计算机病毒、特洛伊木、蠕虫、后、Rookit、间谍软件
[0015] 进一步,所述脱壳过程,使用命令行传递文件路径,使用启发式方法找到程序入口OriginalEntryPoint,其中有四种启发方法:熵、跳到节外、长跳转、pushad和popad;之后修复ImportDirectory重构可执行版本,最终输出脱壳结果。本系统,使用Dynamic Binary Instrumentation(DBI)frameworks对程序进行动态分析。DBI提供分析二进制文件非常细粒度的控制,可以全面控制程序执行的代码,深入分析程序做了什么,对反调试和反汇编技术免疫,有丰富且文档完备的API集合用于从程序中提取出信息,能改变程序运行时的行为。加壳程序往往违反程序的一个内存地址要么可写要么可执行的规则,即WritexorExecution(WxorX)。通用脱壳原理:加壳可执行文件必须运行时脱壳,脱壳过程中会向内存写入新的代码,然后执行写入的代码,利用上述特性构建通用脱壳工具。脱壳过程,使用命令行传递文件路径,使用启发式方法找到程序入口OriginalEntryPoint(OEP),其中有四种启发方法:1、熵;2、跳到节外;3、长跳转;4、pushad和popad,之后修复ImportDirectory重构可执行版本,最终输出脱壳结果。
[0016] 进一步,所述数据格式A通过以下步骤得到:
[0017] SS1:输入类型(X1):
[0018] 有exe、DLL、OCX、SYS等PE文件格式类型
[0019] 这个数据类型属于虚拟变量,需要进行虚拟变量处理
[0020] SS2:提权操作(X2):
[0021] 根据不同的提权操作函数赋予值并添加权重,其结果位于X2
[0022] SS3:网络行为(X3):
[0023] 根据记录在文件中与IP\FTP操作相关行为赋予值并添加权重,其结果位于X3[0024] SS4:硬盘操作(X4):
[0025] 根据不同的硬盘操作函数赋予值并添加权重,其结果位于X4
[0026] SS5:进程附加(X5):
[0027] 根据不同的硬盘操作函数赋予值并添加权重,其结果位于X5
[0028] SS6:其他待定义(Xn)
[0029] SS7:y:得到的结果,
[0030] 综上所述,由于采用了上述技术方案,本发明的有益效果是:
[0031] 1.市面上一些恶意软件检测产品需要将用户的PE文件上传到网络或检测网站,需要网络,本产品有比对样本库可以离线处理。
[0032] 2.本发明中机器学习算法中采用同态算法。
[0033] 3.待检文件作为新的样本用于算法修正,判断率随着该系统使用率增大而提高,使用该系统的用户越多判断越精确。附图说明
[0034] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图,其中:
[0035] 图1是本发明系统流程图
[0036] 图2是本发明ML模型训练流程图
[0037] 图3是本发明客户端操作流程图
[0038] 图4是本发明机器学习流程图

具体实施方式

[0039] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
[0040] 因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041] 需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0042] 实际工作时:后台框架使用Java作为主框架,兼容python进行机器学习,调用函数实现外部应用调用,网络接口使用Java,脱壳接口使用gattime开放子线程调用外部应用脱壳,分析处理直接使用Java调用python实现。如,java的Runtime.getRuntime().exec(commandStr)
[0043] 具体的:
[0044] 在java中新建线程启动Windows命令解释器的一个新实例:
[0045] 参数规则:
[0046]
[0047] 可以调用执行cmd指令,处理脱壳使用的是命令行软件,直接使用Java写入bat批处理,然后调用cmd执行。
[0048] 下面结合实施例对本发明的特征和性能作进一步的详细描述。
[0049] 实施例一
[0050] 一种基于逆向与机器学习的恶意软件检测及分析系统,包括客户端,用户在客户端上传需要检测的PE文件,通过网络传输到达服务端,将其解析为二进制文件并保存为二进制文件P2,服务器基于熵的壳检测技术来检测上传的PE文件是否存在保护;PE文件存在保护时,服务器进行脱壳处理后进行第二次扫描检测;PE文件未存在保护:服务器直接进行第二次扫描检测;服务器对PE文件进行第二次扫描检测时,检测PE文件是否存在敏感字符串或调用恶意API函数;将敏感字符串或调用恶意API函数映射到预先设置的数据格式A;将A输出到训练好的ML模型进行识别,通过客户端显示四种不同等级的提醒;其中,ML模型通过以下步骤训练;
[0051] S1:通过解析提取文件头部信息、标签和行为字节码;静态分析数据:原始数据和一系列指令;
[0052] S2:将生成的数据提取并缩放值为0~1的矩阵中,即如果将原始值缩放到0~1之间以减少计算复杂性
[0053] 如指令或序列给出了API调用,他被投射到N*M矩阵中,其中N为指令序列的数量,M为类型的数量;
[0054] S3:将转化来的数据,输入SVM、随机森林、KNN、朴素贝叶斯算法、CNN等学习模型进行训练;
[0055] S4:将它们的输出结果都交于“EnsembleMethod”对每一个进行评价打分,最后给出最佳的学习模型;
[0056] S5:利用上一步骤得到的最佳模型,对数据进行预测,并给出是否为敏感字符串或调用恶意API函数的结论。
[0057] 工作时:我们将在服务器上建立多个字符串规则库及二进制特征库。例如一般木马所特有的特征库、恶意API函数特征库、混淆加密相关特征库、敏感注册表路径规则库、比特币地址正则表达式规则库等。关于二进制特征库的建立,将使用N-gram特征提取方法和变长N-gram滑动窗口特征提取方法进行特征的提取。
[0058] 实施例二
[0059] 本发明在实施例提一的基础上:所述脱壳过程,使用命令行传递文件路径,使用启发式方法找到程序入口OriginalEntryPoint,其中有四种启发方法:熵、跳到节外、长跳转、pushad和popad;之后修复ImportDirectory重构可执行版本,最终输出脱壳结果。
[0060] 工作时:本系统,使用Dynamic Binary Instrumentation(DBI)frameworks对程序进行动态分析。DBI提供分析二进制文件非常细粒度的控制,可以全面控制程序执行的代码,深入分析程序做了什么,对反调试和反汇编技术免疫,有丰富且文档完备的API集合用于从程序中提取出信息,能改变程序运行时的行为。加壳程序往往违反程序的一个内存地址要么可写要么可执行的规则,即WritexorExecution(WxorX)。通用脱壳原理:加壳可执行文件必须运行时脱壳,脱壳过程中会向内存写入新的代码,然后执行写入的代码,利用上述特性构建通用脱壳工具。
[0061] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明的保护范围,任何熟悉本领域的技术人员在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈