基于多环境的逃避行为检测方法与流程

文档序号:21635379发布日期:2020-07-29 02:45阅读:188来源:国知局
基于多环境的逃避行为检测方法与流程
本发明属于信息安全
技术领域
,具体涉及一种基于多环境的逃避行为检测方法。
背景技术
:随着经济技术的发展和智能时代的来临,数据安全的重要性已经得到了人们越来越多的关注。现代恶意代码检测中,动态行为检测是比较常用的方式,即通过检测代码在沙箱中的执行过程来判定的是否有恶意行为。恶意代码提供者为了延长恶意程序的生命周期,会在恶意程序中添加环境探测代码,当探测运行环境是沙箱的时候就停止执行恶意行为,从而逃避恶意行为检测。逃避检测的行为导致恶意代码的动态分析工具产生错误的判定,将恶意程序识别为正常程序,从而产生网络安全事件,造成经济损失,对社会产生不良影响。为了抵御逃避行为,传统的解决方案是通过静态分析进行检测,基于预先设定的代码特征以及二进制文件特征来检测恶意程序中存在的逃避检测代码。但是这种检测方法难以适应恶逃避检测技术的发展速度,同时难以抵御加壳,混淆的恶意程序。为了弥补静态分析的不足,目前研究者们主要关注行为对比来检测逃避行为的方法,该方法通过对比逃避性恶意软件在物理机和虚拟机中的行为来检测逃避行为。但是该方法因为物理机的使用,难以实现系统快速恢复,同时大量样例的分析难以通过启动多个分析系统来提高分析效率。技术实现要素:本发明的目的在于提供一种可靠性高、实用性好且检测效率较高的基于多环境的逃避行为检测方法。本发明提供的这种基于多环境的逃避行为检测方法,包括如下步骤:s1.获取待分析的程序;s2.采用多环境虚拟化沙箱分析步骤s1获取的待分析程序;s3.提取每一个样例在每一个沙箱中的行为分析报告中的api调用序列;s4.将步骤s3获取的api调用序列转换为api字符序列;s5.基于smith-waterman算法,对同一个样例在不同沙箱中的api字符序列进行对比检测;s6.提取步骤s5中的对比检测结果中的差异子序列;s7.计算步骤s6得到的差异子序列的levenshtein距离,并对同一个样例在多环境下的api字符序列进行两两对比,从而判定待分析的程序是否存在逃避检测行为。步骤s2所述的采用多环境虚拟化沙箱分析步骤s1获取的待分析程序,具体为采用如下步骤进行待分析程序的分析:a.采用自动化动态分析工具,对待分析程序进行自动化行为捕获;b.采用若干种虚拟机工具搭建若干种不同的沙箱,并将待分析的程序在在所搭建的沙箱中进行运行,从而促使待分析的程序在不同环境下展现不隐藏的行为;c.获取待分析程序的行为报告,并提取行为报告中待分析程序的api调用信息;d.根据步骤c获取的api调用信息,对比api种类和api调用次数,从而筛选出可能存在的逃避行为。所述的自动化动态分析工具为cuckoo;所述的虚拟机工具分别为virtualbox工具、kvm工具和vmware工具。步骤s3所述的提取每一个样例在每一个沙箱中的行为分析报告中的api调用序列,具体为采用如下步骤提取api调用序列:a.过滤掉无行为的样例报告;b.过滤掉无api调用的样例报告;c.提取api调用序列;d.提取api调用种类和数量。步骤s4所述的将步骤s3获取的api调用序列转换为api字符序列,具体为采用如下步骤进行转换:(1)将获取的api调用序列按照进程进行切割;(2)将步骤(1)得到的切割后序列,根据api调用时间的顺序,将api序列映射成为一个字符序列。步骤s5所述的基于smith-waterman算法,对同一个样例在不同沙箱中的api字符序列进行对比检测,具体为采用如下步骤进行对比检测:1)将步骤s4获取的api字符序列作为输入;2)采用smith-waterman算法,实现两个api字符序列之间的最优对齐;3)将步骤2)得到的字符序列中的差异点置空。步骤s6所述的提取步骤s5中的对比检测结果中的差异子序列,具体为采用如下步骤提取差异子序列:ⅰ.获取步骤s5得到的对比结果中两个序列中的置空位;ⅱ.截取某一序列中置空位在另一个对应序列中对应位置上的字符,从而得到差异子序列。步骤s7所述的计算步骤s6得到的差异子序列的levenshtein距离,并对同一个样例在多环境下的api字符序列进行两两对比,从而判定待分析的程序是否存在逃避检测行为,具体为采用如下步骤进行判定:ⅰ.计算两个序列之间的编辑距离;ⅱ.获取两个序列之间的最大长度;ⅲ.计算编辑距离与最大长度的比例,从而得到levenshtein距离;ⅳ.根据两个子序列之间的levenshtein距离判断是否存在逃避行为。步骤ⅰ所述的编辑距离,具体为编辑距离的计算公式为其中s1和s2表示经过api序列对比之后存在的差异子序列,ld(s1,s2)为差异子序列s1和s2之间的编辑距离,eos(s1,s2)为差异子序列s1和s2相同所需要经过的编辑次数,max(s1.length,s2.length)为差异子序列s1和s2的最大长度。步骤ⅳ所述的根据两个子序列之间的levenshtein距离判断是否存在逃避行为,具体为采用如下规则判定是否存在逃避行为:将同一个样例在各种环境下的api字符序列进行两两对比:若对比中存在一次对比的levenshtein距离低于设定的阈值,则认定该待检测的程序存在逃避检测行为;否则认为该待检测的程序不存在逃避检测行为。本发明提供的这种基于多环境的逃避行为检测方法,通过多环境沙箱的动态分析,解决了传统静态分析无法检测混淆加壳的代码,借助不同虚拟化程度的沙箱,解决了使用物理机作为对比沙箱的低效率问题;通过使用api序列对比的方法,突出api调用序列上的差异性,解决了逃避行为检测率低下的困难;因此本发明方法的可靠性高、实用性好且检测效率较高。附图说明图1为本发明方法的方法流程示意图。图2为本发明方法中的api序列转换过程示意图。图3为本发明方法中的smith-waterman序列对比过程示意图。图4为本发明方法的有效性测试结果示意图。具体实施方式如图1所示为本发明方法的方法流程示意图:本发明提供的这种基于多环境的逃避行为检测方法,包括如下步骤:s1.获取待分析的程序;s2.采用多环境虚拟化沙箱分析步骤s1获取的待分析程序;具体为采用如下步骤进行待分析程序的分析:a.采用自动化动态分析工具,对待分析程序进行自动化行为捕获;b.采用若干种虚拟机工具搭建若干种不同的沙箱,并将待分析的程序在在所搭建的沙箱中进行运行,从而促使待分析的程序在不同环境下展现不隐藏的行为;c.获取待分析程序的行为报告,并提取行为报告中待分析程序的api调用信息;d.根据步骤c获取的api调用信息,对比api种类和api调用次数,从而筛选出可能存在的逃避行为;在具体实施时,自动化动态分析工具为cuckoo;虚拟机工具分别为virtualbox工具、kvm工具和vmware工具;多环境沙箱分析的目的是利用多种环境存在的差异使恶意程序在探测环境过程中探测不同的环境,进而逃避检测失败而展现出不同的行为;s3.提取每一个样例在每一个沙箱中的行为分析报告中的api调用序列;具体为采用如下步骤提取api调用序列:a.过滤掉无行为的样例报告;b.过滤掉无api调用的样例报告;c.提取api调用序列;d.提取api调用种类和数量;s4.将步骤s3获取的api调用序列转换为api字符序列;具体为采用如下步骤进行转换:(1)将获取的api调用序列按照进程进行切割;(2)将步骤(1)得到的切割后序列,根据api调用时间的顺序,将api序列映射成为一个字符序列;在具体实施时,如图2所示;按照进程切割api序列;对于恶意软件来说,在运行过程中,多进程运行是很常见的,需要对api序列按照进程切割,防止对进程运行期间因为时间顺序导致两个进程间的api调用序列混乱;然后,api序列转换为字符序列;对于smith-waterman这类适用于dna和蛋白质序列对比算法来说,将api序列转换为字符序列将更加符合smith-waterman的对比模式,将api调用序列转换为‘0123456’这类字符序列,每个单独的字符映射一种api,字符映射列表为0-9,a-z,a-z,ascii码中除‘|’,空格外的所有特殊字符;s5.基于smith-waterman算法,对同一个样例在不同沙箱中的api字符序列进行对比检测;具体为采用如下步骤进行对比检测:1)将步骤s4获取的api字符序列作为输入;2)采用smith-waterman算法,实现两个api字符序列之间的最优对齐;3)将步骤2)得到的字符序列中的差异点置空。具体实施时,如图3所示;对两个输入的字符序列建立相似分数矩阵;api序列中往往都会存在噪音,序列调用顺序上的不同,通过相似分数矩阵,序列中相似的子序列能够得到相对高的分数,简单噪音和序列调用顺序对api序列匹配的影响;获取序列最优相似匹配。通过相似分数矩阵,从相似分数最大的坐标开始回溯,获取两个序列的最优相似匹配结果,为了保证两个序列所有字符能够获得匹配,两个字符相似的相似分数奖励比较大;获取差异子序列;这一步的目的主要在于提取出api调用序列中的差异,遍历序列最优相似匹配结果,当遇到s1序列中存在字符空位是,提取s2中对应位置的字符,这个字符就是s2序列中存在的api调用差异;s6.提取步骤s5中的对比检测结果中的差异子序列;具体为采用如下步骤提取差异子序列:ⅰ.获取步骤s5得到的对比结果中两个序列中的置空位;ⅱ.截取某一序列中置空位在另一个对应序列中对应位置上的字符,从而得到差异子序列;s7.计算步骤s6得到的差异子序列的levenshtein距离,并对同一个样例在多环境下的api字符序列进行两两对比,从而判定待分析的程序是否存在逃避检测行为;具体为采用如下步骤进行判定:ⅰ.计算两个序列之间的编辑距离;具体为编辑距离的计算公式为其中s1和s2表示经过api序列对比之后存在的差异子序列,ld(s1,s2)为差异子序列s1和s2之间的编辑距离,eos(s1,s2)为差异子序列s1和s2相同所需要经过的编辑次数,max(s1.length,s2.length)为差异子序列s1和s2的最大长度;ⅱ.获取两个序列之间的最大长度;ⅲ.计算编辑距离与最大长度的比例,从而得到levenshtein距离;ⅳ.根据两个子序列之间的levenshtein距离判断是否存在逃避行为;具体为采用如下规则判定是否存在逃避行为:将同一个样例在各种环境下的api字符序列进行两两对比:若对比中存在一次对比的levenshtein距离低于设定的阈值,则认定该待检测的程序存在逃避检测行为;否则认为该待检测的程序不存在逃避检测行为;在具体实施时,差异子序列造成原因可能有多种,噪音,执行顺序,而为了避免应为噪音以及执行顺序不同造成的误差,需要编辑距离来判定差异子序列是否真的存在差异;统计两个差异子序列之间互相转换需要的最小操作次数,这里的操作次数包括删除字符,插入字符,替换字符;这里的编辑操作次数将量化两个子序列之间存在的差异;计算两个差异子序列之间的编辑距离;通过计算最小编辑操作次数与两个序列最长长度的比值,1减去这个比值就是这个两个差异子序列之间的编辑距离;判定恶意软件逃避性:通过指定阈值判定两个差异子序列是否是逃避检测行为造成的,如果两个差异子序列的编辑levenshtein距离小于指定阈值,则判定为具有逃避检测行为。以下以一个实施例,对本发明的有效性进行说明。测试环境:cpu为intelcorei7-7700处理器,内存128gb,windows操作系统首先通过正常样例与逃避性恶意样例进行分析,获取到正常样例与逃避行恶意样例之间存在的api调用差异,通过确定最优分类阈值,保证最高的识别真确率。表1数据示意表样例类型样例个数正常软件301具有逃避行为的软件292总计596通过表1中的数据确定阈值为0.66的情况下,能够达到89.4%的准确率,精确率与召回率如图4所示。实施例一本实施提供具体样例的逃避行为检测过程,主要包括:s1:提取待分析的程序01c0cec525d49d24bb314e5a94f17f0e.exe,其中01c0cec525d49d24bb314e5a94f17f0e为该程序的md5值,具有逃避虚拟机逃避行为的样例;s2:采用多环境虚拟化沙箱分析s1中的待分析程序,具体环境包括vmware,virtualbox以及kvm搭建的3中虚拟机环境,同时使用win7作为虚拟机环境的操作系统。获取s1中样例在三种环境下的分析报告,提取出三份报告中的api调用信息。通过对比api种类以及数量发现该样例在virtualbox环境下产生了更多的api调用行为,更多的api调用如表2所示。表2不同的api调用api名称多调用的次数ldrloaddll1ldrgetprocedureaddress2ntallocatevirtualmemory1ntcreatefile1ntcreatesection1ntmapviewofsection1ntprotectvirtualmemory2loadstringa2通过表2其中包含的api调用差异已经说明该样例具有行为上的差异,可能存在虚拟机逃避行为;s3:提取出01c0cec525d49d24bb314e5a94f17f0e.exe在三种沙箱中的行为分析报告中的api序列。并按照进程对api序列进行分割,01c0cec525d49d24bb314e5a94f17f0e.exe样例在运行过程中只创建了一个进程。将api调用序列转换为字符序列,该样例的api与字符映射关系如表3下;表3api-字符映射表01c0cec525d49d24bb314e5a94f17f0e.exe样例通过表3将api序列映射成为字符序列,表4为s1中样例在3中环境下的api调用序列按照时间顺序转换为字符序列的结果;表4字符序列s4:使用smith-waterman算法对表4中的字符序列进行对比,通过smith-waterman算法对3个字符序列进行两两对比检测,包括kvm字符序列与virtualbox字符序列对比,kvm字符序列与vmware字符序列对比以及virtualbox字符序列与vmware字符序列对比。表5为01c0cec525d49d24bb314e5a94f17f0e.exe样例的对比结果部分内容,该部分结果为api调用存在差异的对比结果区域;表5对比结果展示如表5所示,经过smith-waterman算法计算之后,两个字符序列的处于最优相似度对比情况中,而该样例中的virtualbox环境下产生的api序列相比于其他环境多出了一段隐藏的api调用序列,而在对比过程中,其他环境中的字符序列在这段隐藏的api调用序列处匹配不上,所以将该序列中的对应字符位置空;s5:提取出s4步骤对比结果中的差异子序列,通过表5中的对比结果,提取出的差异子序列也就是kvm-virtualbox与virtualbox-vmware的差异子序列为d33l4yz7722,这一段差异子序列也就是01c0cec525d49d24bb314e5a94f17f0e.exe样例在virtualbox中展现的隐藏行为,而在其他两种环境下没有产生的行为,所以kvm-vmware的没有差异子序列。如表6所示;表6差异子序列s6:计算步骤s5中获取的差异子序列的levenshtein距离,通过获取差异子序列之间转换所需要的编辑操作次数以及两个差异子序列之间的最长长度,最终计算得到两个差异子序列之间存在的levenshtein距离:01c0cec525d49d24bb314e5a94f17f0e.exe样例的levenshtein计算如表7所示。表7levenshtein计算结果对比类型编辑次数最长长度levenshtein距离kvm-virtualbox11110virtualbox-vmware11110kvm-vmware001如表所示,01c0cec525d49d24bb314e5a94f17f0e.exe样例经过levenshtein距离计算之后,kvm与virtualbox产生的api调用序列之间的levenshtein距离为0,vmware与virtualbox产生的api调用序列之间的levenshtein距离为0,而kvm与vmware产生的api调用序列之间的levenshtein距离为1,但是3个levenshtein距离最小值为0,低于0.66,所以判定01c0cec525d49d24bb314e5a94f17f0e.exe样例具有逃避行为。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1