一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

对于恶意软件不可检测的沙箱的制作方法

2023-02-02 04:50:08 来源:中国专利 TAG:

对于恶意软件不可检测的沙箱


背景技术:

1.动态恶意软件分析观察在受控分析环境(沙盒)中引爆(执行)每个潜在恶意软件的样本时可疑代码的行为。可疑代码的动作然后被研究。这些研究的结果可以包含妥协指标(ioc)。此外,执行期间可疑代码的行为被用来确定代码是否是恶意的。ioc的提取的数据将用于:
2.·
扩展对未来变种的防御,
3.·
阻止其他相关的恶意活动,
4.·
剖析感兴趣的恶意软件族以了解其操作,
5.·
打击负责的恶意软件行动者
6.许多沙盒被实现为虚拟化系统,一旦分析完成其可以轻松回滚到干净状态。然而,这些虚拟化系统可能无法在一个或多个方面实际地模拟真实用户的机器。考虑到沙盒的使用来标识恶意软件威胁,攻击者已采用多种技术来检测此类虚拟环境的存在,并基于此检测更改恶意软件应用行为的行为。此外,现今的一些恶意软件被设计成使用多种不同的规避技术来绕过引爆。大量时间和精力被恶意被软件研究人员花费在标识这些规避技术和修补引爆环境上,以避免此类检查。
附图说明
7.图1是实施一个或多个所公开实施例的示例系统的概览图。
8.图2是实施一个或多个所公开实施例的示例系统的概览图。
9.图3是在一个或多个所公开的实施例中实现的示例沙盒体系结构内的示例数据流的数据流图。
10.图4示出了由一个或多个所公开实施例实现的沙箱体系结构的另一实施例。
11.图5示出了根据本公开的一些示例的示例机器学习模块。
12.图6是用于修改应用的执行的方法的流程图。
13.图7是用于修改应用的执行的方法的流程图。
14.图8图示了示例机器800的框图,其中可以执行本文讨论的任何一种或多种技术(例如,方法)。
具体实施方式
15.所公开的实施例提供了恶意软件引爆的改进方法和系统。如上所述,许多安全研究人员依靠沙箱环境来分析恶意软件应用并更好地理解其行为。这种理解用于多种目的,包含开发更有效的恶意软件检测技术,标识现有软件中的安全漏洞,并提供签名或行为配置文件以改进恶意软件应用的运行时检测。
16.随着恶意软件变得越来越复杂,技术被恶意软件作者引入来检测恶意软件何时在沙箱环境中运行。一旦检测到这一点,恶意软件就会抑制其功能中的一个或多个,使收集取证更加困难和/或不可能。例如,一些恶意软件监视执行恶意软件的系统的cpu的数目。由于
许多沙箱环境都是虚拟化的,因此由操作系统报告的cpu数目通常很少,例如一(1)个。相比之下,许多常见的台式计算机包含多个cpu码,通常报告更多数字。在某些实施例中,恶意软件使用少量cpu作为其可能在沙箱环境中运行的证据。另一种技术是为恶意软件分析“文档”文件夹。如果文档日期中包含的文件数目和/或所述文档的修改日期对于真正的用户计算机来说不是典型的,一些恶意软件会将其视为沙盒环境的证据。因此,出现了一个技术问题,即在沙盒测试环境中引爆恶意软件可能变得越来越困难,其中有关恶意软件的信息可以经由分析和基于分析采取的缓解措施来被获取。
17.为了解决这个技术问题,并使沙盒环境对于被分析的潜在恶意软件不太可见,公开的实施例拦截恶意软件的程序执行,以掩盖沙盒环境的某些特征,并使恶意软件执行与真实的非沙盒环境一致的分析。如果恶意软件不能检测到沙盒,它通常会正常工作,允许对其操作方法进行全面分析。
18.为了防止检测到沙盒环境,一些实施例拦截或以其他方式挂钩可疑恶意软件应用的编程执行。在一些实施例中,每个单独的指令,例如汇编级指令或机器级指令、字节码、预编译码(p码)、其他中间码指令,甚至在某些实施例中的源码级指令,都被拦截并提供给强化学习模型。强化学习模型被训练,以基于拦截的汇编指令提供修改指令。修改指令指示对可疑恶意软件应用的程序执行的一个或多个修改。例如,在各种实施例中的修改指令指示以下一项或多项:修改寄存器值、修改函数返回值、修改功能输入参数、修改恶意软件代码中的条件评估或修改恶意代码中的分支指令。
19.一些实施例不拦截由上述可疑恶意软件执行的指令,而是拦截对一个或多个外部应用(多个)编程接口(多个)api的函数调用。例如,一些实施例拦截javascript库api调用和/或操作系统api调用。在拦截api调用时,与api调用相关的信息将被提供给强化学习模型。与api调用相关的信息可以包含传递给api调用的输入参数、可疑恶意软件应用的调用堆栈,以及在某些情况下,临近于api调用的可疑应用的代码的指示。如上所述,强化学习模型被配置为根据所提供的信息提供程序执行修改指令。在各种实施例中,强化学习模型指示修改api的返回值、api的输出参数、api的输入参数、对可疑恶意软件应用自身中的条件评估的修改、对可疑恶性软件应用自身中的分支指令的修改或其他修改。
20.图1是实施一个或多个所公开实施例的示例系统100的概览图。系统100包含网页爬虫计算机102,其经由防火墙106访问网络104(例如,互联网)。网页爬虫计算机102经由网络104(例如,通过网站)标识可用的数据,并标识尝试在下载数据的计算机上运行的应用。例如,在某些示例中,网页爬虫标识的网站尝试在下载中机器上下载并安装可执行文件,和/或由下载中计算机提供的浏览器环境中运行脚本语言应用。在一些实施例中,这些标识的应用由网页爬虫计算机102提供给沙箱环境108。在一些实施例中,潜在的恶意软件应用被手动标识。沙箱环境108尝试执行这些应用。沙箱环境108至少部分地与系统100内的其他环境隔离,以减轻这些标识的应用的执行可能造成的任何潜在损害。
21.在沙箱环境108中执行的分析结果之一是恶意软件应用的标识,或在特定计算机上执行时具有恶意意图的应用。恶意软件应用可以有多种目标,包含数据销毁、数据收集或对其能够访问的网络进行持续监视。一些恶意软件应用利用其主机作为其他邪恶活动的代理。例如,一些服务攻击的拒绝是由大量其他无辜的计算机策划的,这些计算机已经感染了恶意软件自动程序,其被配置为在接收到来自中央控制器的命令后实施服务攻击的拒绝,
在某些情况下,这些计算机位于海外难以管理的管辖区。
22.恶意软件应用被标识后,在一些实施例中,它存储在恶意软件数据存储110中。然后,在各种实施例中恶意软件数据储存110被使用来改进对恶意软件应用的保护。例如,在一些实施例中,存储在恶意软件数据存储110中的恶意软件被进行了研究,以标识可由保护大多数现代计算系统的动态威胁评估应用检测到的行为模式。至少在一些实施例中,还将存储在恶意软件数据存储110中的恶意软件用于标识广泛使用的计算机操作系统和/或应用的设计和/或体系结构中的漏洞。
23.图2是执行一个或多个所公开实施例的示例系统200的概览图。系统200包含浏览器应用202和第一潜在恶意软件应用204。浏览器应用202和第一潜在恶意软件应用中的每一项都是由操作系统206管理的应用。浏览器应用202和第一个潜在恶意软件应用204都经由操作系统应用编程接口(api)208与操作系统206接口。当操作系统206是基于微软视窗的操作系统时,至少在一些实施例中,浏览器应用202和第一潜在恶意软件应用204是“exe”或“.com”文件。当操作系统206是linux操作系统时,在一些实施例中,浏览器应用202和第一潜在恶意软件应用204包含与运行操作系统206的硬件平台兼容的目标代码。
24.图2还示出了第二潜在恶意软件应用210。第二潜在恶意软件应用210与第一潜在恶性软件应用204不同,因为第二潜在恶意软件应用210在浏览器应用202提供的环境内运行。在一些实施例中,第二潜在恶意软件应用是javascript应用。浏览器应用202提供了脚本api 212,用于在由浏览器应用202提供的环境内运行的第二潜在恶意软件应用210使用。第二潜在恶意软件应用210与脚本api212接口,以完成各种功能。在一些实施例中,脚本api 212根据需要调用os api 208来执行这些功能中的至少一部分。
25.如下所述,所公开的实施例拦截由第一潜在恶意软件应用204和/或第二潜在恶意软件应用210执行的指令和/或api调用。这些拦截的指令和/或api调用被提供给机器学习模型,并且要对第一潜在恶意软件应用204和/或第二潜在恶意软件应用210做出修改。
26.图3是在一个或多个所公开实施例中实现的示例沙盒体系结构300内的示例数据流的数据流图。图3示出了潜在的恶意软件应用302。我们将该应用称为潜在恶意软件应用软件302,因为在某些情况下,该应用是恶意软件应用,而在某些其他情况下,它可能是完全良性的应用。潜在恶意软件应用302包含代码304。在一些实施例中,代码304是可实行代码。例如,在一些实施例中,代码304是与潜在恶意软件应用在上执行的硬件平台和操作系统兼容的本地汇编代码或机器语言代码。在其他实施例中,代码304是中间代码,例如p码或甚至脚本源代码,其在硬件处理器执行之前至少部分地被解释。
27.图3示出了由一些公开实施例实现的api挂钩306。api挂钩306被配置为拦截对一个或多个api(例如,脚本api 212或os api 208)的函数调用,其由潜在恶意软件应用302和代码304执行。在一些实施例中,api挂钩306是调试应用。在这些实施例中,调试应用被配置为当访问潜在恶意软件应用302代码304之外的地址(例如,访问api库,如下面进一步讨论的api库309)时,拦截潜在恶意软件应用302的程序执行。在一些实施例中,支持沙箱体系结构300的操作系统(例如,操作系统206)提供api挂钩能力,因此不需要调试器。一些实施例利用硬件仿真器来实现api挂钩306。例如,在一些实施例中,计算机的传统硬件处理器被硬件仿真器取代,其能够模拟oem硬件电路装置的操作,并且允许监控和/或拦截由模拟硬件处理器执行的编程活动。
28.在拦截api调用308(或任何函数调用)时,api挂钩306确定与挂钩api调用相关的信息。在各种实施例中,此信息包含api调用308的函数名310的指示符中的一个或多个,从潜在恶意软件应用302传递到api调用308的输入参数312的值,api调用308被做出时潜在恶意软件应用302的调用堆栈,在api调用308附近或邻近的潜在恶意软件应用302的代码,潜在恶意软件应用属性314(例如,潜在恶意软件的名称,潜在恶意软件的大小等)的或机器学习模型316的其他信息。关于提供与api调用相邻的代码的实施例,一些实施例在潜在恶意软件应用302的图像(文件)中提供api调用前的预定义数目字节的代码,以及在潜在恶意软件应用302图像(文件)中的api调用后的第二预定义数目字节的代码。一些实施例在api调用之前和之后提供潜在恶意软件应用的预定义数目的指令(汇编/机器指令或中间代码指令或源指令)。
29.模型410包含数据,其定义先前建议的修改与潜在恶意软件应用成功执行或不成功执行之间的关系,如下所述,以及基于提供给模型410的输入确定修改的算法,以及定义关系的数据。基于api挂钩306提供的信息,机器学习模型316被训练以确定对潜在恶意软件应用302的建议的修改318。在一些实施例中,ml模型实现了强化学习算法。在一些实施例中,机器学习模型316被训练,以生成建议的修改,从而最大限度地提高潜在恶意软件应用302成功完成的概率。成功完成有具体取决于实施例的多种定义,但对潜在恶意软件应用302的执行设置一个或多个条件。一些实施例将成功完成定义为潜在恶意软件应用与远程设备建立网络连接,创建和/或写入文件,写入系统注册表(例如,微软视窗注册表),生成一个或多个新进程或新线程(不同于恶意软件应用本身)。一些实施例评估潜在恶意软件应用302是否创建或写入任何文件,作为评估恶意软件应用是否成功操作的一个标准。一些实施例计数潜在恶意软件应用发出的api调用数目。一些实施例基于计数是否超过预定阈值来确定潜在恶意软件应用是否已成功执行。
30.建议的修改318被提供给执行修改器组件320,其在执行潜在恶意软件应用302时实现修改322。在一些实施例中,建议的修改318指示对api调用308的api返回值的修改。在这种情况下,执行修改器唤起api库309中与api调用308相对应的真实api,但将来自api库309中的api中的任何返回值替换为不同的返回值。
31.在一些实施例中,不同的返回值是从挂钩api的公共(例如,n个最频繁返回的)返回值列表中选择的。然后将选定的返回值作为不同的返回值。在一些实施例中,建议的修改不是修改。在这种情况下,执行修改器320仅充当代理,并唤起真实api库的挂钩api,以未修改的形式传递任何输入参数、输出参数和返回值。
32.在一些实施例中,建议的修改是对包含在潜在恶意软件应用302自身中的部分代码的执行的修改。例如,一些实施例指示对api调用308之后的条件的修改,例如条件324。条件324的修改是通过各种实施例使用各种手段完成的。一些实施例修改潜在恶意软件应用302中包含的指令,该指令实现条件324以执行备选操作。其他实施例拦截条件324的操作,并修改更改条件结果所需的寄存器之或存储器值。作为修改过程的一部分,api调用被允许通过执行修改器320将控制326返回给执行程序。
33.图4示出了由一个或多个所公开实施例实现的沙箱体系结构400的另一个实施例。沙盒体系结构400包含潜在恶意软件应用402。潜在恶意软件应用402执行指令流404,每个该指令流都被提供给调试器406。在一些实施例中,潜在恶意软件应用402在调试器406的“控制”下运行,其能够“单步”通过潜在恶意软件应用402执行的每个指令。一些其他实施例不使用如图4所图示的调试器来拦截指令流404。相反,例如,一些实施例使用硬件仿真器,以与上文关于图3所述的类似的方式,拦截指令流404。
34.指令流由调试器406提供给指令流处理器408。指令流处理器408向机器学习模型410提供指令流404。在至少一些实施例中,机器学习模型410实现强化学习算法。模型410包含数据,定义了之前建议的修改与应用建议修改的程序成功执行或失败执行之间的关系,以及基于提供给模型410的输入确定修改的算法,以及定义关系的数据。经由机器学习模型410的按序应用,模型410开发了定义建议的修改与由其获得的任何结果之间关系的数据,并能够使用此数据来提供建议的修改412,从而最大限度地成功执行潜在恶意软件应用402。
35.如上所述,一些实施例将成功执行定义为引起潜在恶意软件应用402与远程设备建立网络连接和/或产生调用至少一个额外进程或线程(不同于恶意软件进程/线程本身)的执行。各种实施例还可以使用一个或多个文件i/o活动、系统注册表项的创建和/或写入,和/或潜在恶意软件应用做出的api调用的数目来确定恶意软件应用是否已成功执行。
36.建议的修改412指示在各种实施例中的各种修改。例如,在某些情况下,建议的修改412指示指令流404执行过程内特定位置处的寄存器或存储器值的修改。在某些情况中,建议的修改412指示对指令流404中包含的一个或多个指令的修改。例如,一个或多个指令被修改以更改潜在恶意软件应用402内的分支条件、分支或其他条件逻辑的操作。
37.建议的修改412被提供给执行修改器414,其执行416所指示的修改。
38.图5示出了根据本公开的一些示例的示例机器学习系统500。机器学习系统500利用预测模块520。
39.在预测模块520中,当前信息590被输入到特征确定模块550b。当前信息590标示所公开实施例分析的潜在恶意软件应用的特性(例如,潜在恶意软件应用302或潜在恶意软件应用402)。特征确定模块550b从当前信息590确定一组特征570。在一些实施例中,该组特征包含潜在恶意软件应用的指令流、潜在恶意软件应用的api调用、api调用的输入参数、api调用处的潜在恶意软件应用的调用堆栈,潜在恶意软件应用的属性或潜在恶意软件应用的其他特性。一组特征570被提供给机器学习模型410,以生成建议的修改595。潜在恶意软件应用是否成功操作的指示作为模型输入596返回给模型410。
40.图6是用于修改应用的执行的流程图。在一些实施例中,下面讨论的关于图6和方法600的一个或多个功能由硬件处理电路装置执行。在一些实施例中,存储在存储器(例如,下面讨论的存储器804和/或806)中的指令(例如,824)配置硬件处理器(例如,后面讨论的处理器802),以执行下面关于图6和方法600讨论的一个或多个功能。
41.在开始操作602之后,方法600移动到操作604,其中执行中的应用的指令序列被拦截。如上文关于图4所讨论的,在一些实施例中,指令流(例如指令流404)被使用调试器406拦截。备选实施例利用其他技术拦截指令,例如硬件仿真器。在一些实施例中,执行中的应用是“本地”应用,例如第一潜在恶意软件应用204,其执行其操作的硬件的本地指令集。在一些实施例中,执行中的应用是被解释的应用或基于脚本的应用,例如第二潜在恶意软件应用210,也在上文关于图2的讨论中。在这种情况下,指令序列不是硬件的“本地”指令,而是中间指令,例如p码,甚至是一些实施例的源码指令。
42.在一些实施例中,指令序列包含函数调用指令或换句话说,api函数调用。
43.在操作606中,指令序列被提供给机器学习模型。如上所述,一些实施例使用被配置为实现强化学习方法的机器学习模型。机器学习模型被训练,以最大限度地提高执行中的应用成功执行的可能性。在不同的实施例中,成功执行具有不同的定义。一些实施例将成功执行定义为执行中的应用执行与远程计算机建立网络连接、生成新进程或新线程或创建或写入文件中的至少一项。
44.在操作608中,来自机器学习模型的建议的修改被接收。建议的修改是响应于操作606所提供的指令序列。如上所述,在各种状况下几种不同的修改被建议给机器学习模型。在某些情况下,修改不被建议。在某些情况下,机器学习模型指示在执行中的应用的特定执行点处修改执行中的应用的寄存器值或数据值。在某些情况下,修改指示api函数的返回值或输入参数被修改。在一些实施例中,建议的修改是更改执行中的应用自身中的条件语句的操作,例如,通过修改执行中的应用内的指令本身,或通过修改寄存器值和/或数据值来更改执行中的应用的条件操作。
45.在操作614中,所指示的修改被执行。方法600的一些实施例以迭代方式被执行,其中单个应用正在被执行。如上所述,所公开的实施例提供了用于在沙箱环境中增加潜在恶意软件的成功操作。通过使潜在恶意软件成功执行,有关该恶意软件的额外信息可以被获得。在一些实施例中,此信息用于配置运行时恶意软件检测软件,标识现有软件中的漏洞,或进一步改进沙盒测试环境。操作614后,方法600移动到结束操作620。
46.方法600的一些实施例维持对潜在恶意软件应用所做修改的日志或记录。因此,至少在一些实施例中,在本日志中一系列修改被提供。在沙箱环境中执行特定潜在恶意软件应用后,一些实施例生成一个或多个报告,提供或显示日志中的至少一部分数据。因此,此报告将标识使潜在恶意软件应用成功执行所需的修改。
47.在一些实施例中,此修改的序列用于修改沙盒环境,以使沙盒环境对其他潜在恶意软件应用不可检测。例如,如果将api调用值修改为特定值经常能够成功地促进潜在恶意软件应用的成功执行,则沙盒的配置会被修改,在某些情况下,api调用值会返回特定值,而不会受到公开实施例的任何干预。例如,如果api调用被修改以返回沙盒计算机中包含的多个处理器数量,其中值为八(8)提供给潜在恶意软件应用的成功执行,则修改操作系统的配置文件被修改,使api返回值为八(8)。
48.一些实施例提供了算法,该算法分析修改的日志并自动(例如,无需人工干预)生成对沙箱环境的修改,以避免此类修改的需要。例如,在一些实施例中,算法标识一个或多个api的修改返回值,并自动更改沙盒配置,以使沙盒配置与修改的返回值一致。这将减少额外潜在恶意软件应用的动态执行期间所要求的修改次数。
49.图7是用于修改应用的执行的方法的流程图。在一些实施例中,下面讨论的关于图7和方法700的一个或多个功能由硬件处理电路装置执行。在一些实施例中,存储在存储器(例如,下面讨论的存储器804和/或806)中的指令(例如,下文讨论的824)配置硬件处理器(例如,后面讨论的处理器802)以执行下面关于图7和方法700讨论的一个或多个功能。在一些实施方案中,方法700包含在上面关于图6讨论的方法600中。例如,方法600的一些实施例与方法700的实施例的至少部分重叠。
50.在开始操作702之后,方法700移动到操作704,其拦截执行中的应用的函数调用。
在一些实施例中,执行中的应用在沙箱环境内执行。沙箱环境是至少在一些实施例中的虚拟化计算环境。至少在一些实施例中,该应用被怀疑是恶意软件应用。因此,应用至少有可能包含恶意软件(例如邪恶的)特征,但不一定是恶意软件。在某些情况下,潜在恶意软件应用是完全良性和无害的应用。然而,一些其他潜在恶意软件实际上是恶意软件,被配置为破坏计算资源,或执行其他邪恶活动,如未经授权数据的复制或传输、勒索软件或其他被理解为包含在术语恶意软件中的功能。
51.如上文关于图3所讨论的,一些实施例拦截执行中的应用做出的api调用。在一些实施例中,执行中的应用是“本地”应用,例如第一潜在恶意软件应用204,其执行本机指令集,该指令集是在其上操作的硬件。在一些实施例中,执行中的应用是被解释的应用或基于脚本的应用,例如第二潜在恶意软件应用210,也在上文关于图2的讨论中。在某些实施例中(例如,api库309),调用的函数包含在api库中。操作704的一些实施例捕获或拦截一系列函数调用。在这些实施例中,对于每个捕获的函数调用,下面讨论的关于操作706和708的每个函数被重复。
52.在操作706中,函数调用的输入参数值被确定。在一些实施例中,函数调用不包含输入参数。一些实施例还获得执行中的应用的调用堆栈。例如,一些实施例向java进程发送信号3,其使向标准输出(stdout)设备生成堆栈跟踪。一些实施例使用命令行中被称为jstack的实用程序来获取执行中的应用的调用堆栈。虽然这些解决方案应用于基于java的解决方案,但其他技术也存在其他解决方案,如微软视窗。例如,微软为视窗提供了调试工具。操作706的一些实施例还捕获执行中的应用的一部分。例如,在执行中的应用内的api调用之前和/或之后捕获预定数目的字节或预定数目的指令。
53.在操作708中,在操作706中捕获或收集的信息被提供给机器学习模型。如上所述,在一些实施例中,机器学习模型被配置为使用强化学习算法。在一些实施例中,机器学习算法被训练,以最大限度地提高执行中的应用成功执行的概率,在某些实施例中成功执行由一个或多个执行中的应用打开到远程设备的网络连接、生成新进程或线程、写入数据或以其他方式创建文件来定义。
54.在操作712中,建议的修改被从机器学习模型中获取。建议的修改是响应于或以其他方式基于操作708中提供给机器学习模型的信息,例如被提供的调用堆栈和api调用的输入参数值。在一些实施例中,建议的修改基于所指示的函数调用序列,如上文所述,先前通过操作708被提供给机器学习模型。
55.如上所述,在各种状况下几种不同的修改被机器学习模型提出。在某些情况下,不建议修改。在某些情况下,机器学习模型指示在执行中的应用的特定执行点处修改执行中的应用的寄存器值或数据值。在某些情况下,修改指示api函数的返回值或输入参数被修改。在一些实施例中,建议修改是更改执行中的应用自身中条件语句的操作,例如,通过修改执行中的应用中的指令本身,或通过修改寄存器和/或数据值来更改执行中的应用的条件操作。例如,在一些实施例中,条件分支被修改为采用第一路径而不是第二路径。
56.在操作714中,所指示的修改被执行。方法700的一些实施例在执行单个应用时迭代执行。如上所述,所公开的实施例提供了在沙箱环境中增加潜在恶意软件的成功操作。通过使潜在恶意软件成功执行,有关该恶意软件的其他信息可以被获得。
57.在一些实施例中,此信息用于配置运行时恶意软件检测软件,标识现有软件中的
漏洞,或进一步改进沙盒测试环境。例如,如果经由所公开的实施例,恶意软件应用成功被执行并证明一个或多个恶意软件类型的影响(负面影响),在一些实施例中,恶意应用的签名(例如,哈希或校验和)被添加到安全数据库中。然后安全数据库与执行中的应用的签名被进行比较,以检测恶意软件应用的实例。在一些实施例中,安全数据库被下载到客户端设备,例如由组织管理的客户端设备。病毒扫描过滤器在客户端设备上执行并检测执行中的应用。病毒扫描过滤器然后计算检测到的执行中的应用的签名,并将它与安全数据库中的签名进行比较。然后,病毒扫描过滤器检测执行中的应用的动态确定签名之间的匹配,并将它与安全数据库中包含的一个或多个签名进行比较。如果匹配被检测到,病毒扫描过滤器使应用的执行暂停、中止或以其他方式缓解。
58.因此,所公开的实施例创造了几种技术效果,并表示了几种技术解决方案。一阶技术效果是,恶意软件应用将检测沙箱环境并因此抑制其一个或多个功能的执行,而不是检测沙盒环境并执行这些一个或多个功能。通过特征的执行(例如建立网络连接、删除文件、生成额外进程等),应用的行为可以被更准确地分析和概述。然后,该概述可用于标识非沙箱环境(如操作环境)中的恶意软件应用的其他实例。
59.所公开实施例提供的额外技术解决方案和/或效果是对已知恶意软件应用的签名信息的增加的准确性和/或增加的完整性。通过促进在沙箱环境中对恶意软件应用进行更完整的分析,与其他方式相比所公开的实施例提供了对恶意软件的执行中的增强洞察力。这种增加的分析能力将导致安全数据库中包含额外的和更准确的签名信息,从而全面减少成功恶意软件攻击的实例。
60.操作714之后,方法700移动到结束操作718。
61.图8示出了示例机器800的框图,其中可以执行本文讨论的任何一种或多种技术(例如,方法)。在备选实施例中,机器800可以作为独立设备操作,或者连接(例如,联网)到其他机器。在联网部署中,机器800可以在服务器-客户端网络环境中以服务器机器、客户端机器或两者的身份操作。在示例中,机器800可以作为对等(p2p)(或其他分布式)网络环境中的对等机器。机器800是个人计算机(pc)、平板电脑、机顶盒(stb)、个人数字助理(pda)、移动电话、智能手机、万维网转接器、网络路由器、交换机或网桥、服务器计算机、数据库、会议室装置或任何能够执行指定该机器要采取的动作的指令(顺序或其他)的机器。在各种实施例中,机器800可以执行上述关于上面图1到图7的一个或多个过程。此外,虽然只有单个机器被图示了,但术语“机器”还应包含单独或联合执行一组(或多组)指令以执行本文讨论的任何一种或多种方法的任何机器集合,例如云计算、软件即服务(saas)和其他计算机群集配置。
62.如本文所述,示例可以包含逻辑或多个组件、模块或机制(以下统称为“模块”),也可以在其上操作。模块是能够执行特定操作的有形实体(例如硬件),并以某种方式被配置或被排列。在示例中,电路以指定的方式作为模块排列(例如,内部或相对于外部实体,例如其他电路)。在示例中,一个或多个计算机系统(例如,独立客户端或服务器计算机系统)的全部或部分或一个或多个硬件处理器通过固件或软件(例如,指令、应用部分或应用)被配置为一个模块,其用于执行特定的操作。在示例中,软件可以驻留在非临时计算机可读存储介质或其他机器可读介质上。在示例中,当软件由模块的底层硬件执行时,会导致硬件执行特定的操作。
63.因此,术语“模块”被理解为包含有形实体,是指物理构造、具体配置(例如硬接线)或临时配置(例如临时编程)以特定方式操作或执行本文所述任何部分或全部操作的实体。考虑到临时配置模块的示例,每个模块都不需要在任何时候实例化。例如,其中模块包括使用软件配置的通用硬件处理器,则通用硬件处理器在不同时间配置为各自的不同模块。软件可以相应地配置硬件处理器,例如,在一个时间示例构成特定模块,在不同的时间实例构成不同的模块。
64.机器(例如,计算机系统)800可以包含硬件处理器802(例如,中央处理单元(cpu)、图形处理单元(gpu)、硬件处理器内核或它们的任何组合)、主存储器804和静态存储器806,其中一些或全部可以经由互连808(例如,总线)相互通信。机器800可以进一步包含显示单元810、字母数字输入设备812(例如,键盘)和用户界面(ui)导航设备814(例如鼠标)。在示例中,显示单元810、输入设备812和ui导航设备814是触摸屏显示器。机器800可以额外包含存储设备(例如,驱动单元)816、信号生成设备818(例如,扬声器)、网络接口设备820和一个或多个传感器821,例如全球定位系统(gps)传感器、罗盘、加速器或其他传感器。机器800可以包含输出控制器828,例如串行(例如通用串行总线(usb)、并行或其他有线或无线(例如红外(ir)、近场通信(nfc)等)连接,以与之通信或控制一个或多个外围设备(例如打印机、读卡器等)。
65.存储设备816可以包含机器可读介质822,其上存储了一组或多组数据结构或指令824(例如,软件),该数据结构或指示体现了本文所述的任何一个或多个技术或功能或由其利用。指令824也可以完全或至少部分地驻留在主存储器804内、静态存储器806内,或在机器800执行期间驻留在硬件处理器802内。例如,硬件处理器802、主存储器804、静态存储器806或存储设备816的一个或任意组合可以构成机器可读介质。
66.虽然机器可读介质822被图示为单个介质,但术语“机器可读介质”可包含被配置为存储一个或多个指令824的单个介质或多个介质(例如,集中式数据库或分布式数据库,和/或相关联的缓存和服务器)。
67.术语“机器可读介质”可以包含能够存储、编码或携带用于机器800执行的指令的任何介质,并且使机器800执行本公开的任何一种或多种技术,或者能够存储、编码或携带用于此类指令或与此类指令相关联的数据结构的任何介质。非限制性机器可读介质示例可包含固态存储器、光学和磁性介质。机器可读介质的具体示例可能包含:非易失性存储器,例如半导体存储器设备(例如,电可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom))和闪存设备;磁盘,例如内部硬盘和可移动磁盘;磁光盘;随机存取存储器(ram);固态硬盘(ssd);以及cd-rom和dvd-rom盘。在一些示例中,机器可读介质可以包含非临时机器可读介质。在一些示例中,机器可读介质可以包含不是临时传播信号的机器可读介质。
68.指令824可以使用传输介质经由网络接口设备820在通信网络826上进一步被传输或被接收。机器800可以使用一个或多个传输协议(例如,帧中继、互联网协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)、,超文本传输协议(http)等)。示例通信网络可以包含局域网(lan)、广域网(wan)、分组数据网络(例如,internet)、移动电话网络(例如,蜂窝网络)、普通旧电话(pots)网络和无线数据网络(例如,电气与电子工程师学会(ieee)802.11系列标准,称为ieee802.16系列标准(称为)、ieee 80215.4系列标准、长期演进(lte)系列标准、通用移动通信系统(umts)系列标准以及对等(p2p)网络等。在
示例中,网络接口设备820可以包含一个或多个物理插孔(例如,以太网、同轴或电话插孔)或一个或多个天线,以连接到通信网络826。在示例中,网络接口设备820可以包含多个天线,以使用单输入多输出(simo),多输入多输出(mimo)或多输入单输出(miso)技术中的至少一个进行无线通信。在一些示例中,网络接口设备820可以使用多用户mimo技术进行无线通信。
69.如本文所述,示例可能包含逻辑或多个组件、模块或机制,也可能对其进行操作。模块是能够执行特定操作的有形实体(例如硬件),并以某种方式被配置或被排列。在示例中,电路以特定的方式作为模块被排列(例如,内部或相对于外部实体,例如其他电路)。在示例中,一个或多个计算机系统(例如,独立客户端或服务器计算机系统)或一个或多个硬件处理器的全部或部分通过固件或软件(例如,指令、应用部分或应用)被配置为一个模块,其用于执行指定的操作。在示例中,软件可能驻留在机器可读介质上。在示例中,当软件由模块的底层硬件执行时,使硬件执行特定的操作。
70.示例1是方法,包括:拦截执行中的应用的指令序列;向机器学习模型提供指令序列;从机器学习模型接收基于所提供的指令序列的、对执行中的应用的修改的指示。
71.在示例2中,示例1的主题可选地包含其中指令序列是机器指令或字节码指令。
72.在示例3中,示例1-示例2中的任何一个或多个的主题可选地包含其中指令序列包含函数调用指令,该方法还包含:确定执行中的应用在函数调用指令处的调用堆栈;确定函数调用的参数;以及将调用堆栈和参数提供给机器学习模型,其中修改的指示进一步基于所提供的调用堆栈和参数。
73.在示例4中,示例3的主题可选地包含确定第二函数调用的第二参数,并向机器学习模型提供第二函数调用的第二参数,其中修改的指示进一步基于所提供的第二参数。
74.在示例5中,示例3-示例4的任何一个或多个的主题可选地包含其中修改是对函数调用的输出的修改。
75.在示例6中,示例5的主题可选地包含从函数调用的返回值列表中选择返回值,并将输出设置为选择的返回值。
76.在示例7中,示例3-示例6的任何一个或多个的主题可选地包含标识执行中的应用的控制流指令,其中修改是对控制流指令的修改。
77.在示例8中,示例3-示例7的任何一个或多个的主题可选地包含捕获执行中的应用的可执行代码的、在函数调用的预定义邻近度内的部分,并且将部分提供给机器学习模型,其中修改的指示基于所提供的部分。
78.在示例9中,示例3-示例8任何一个或多个的主题可选地包含捕获执行中的应用的函数调用序列,以及向机器学习模型提供指示函数调用序列的数据,其中修改的指示基于所指示的函数调用序列。
79.在示例10中,示例1-示例9的任何一个或多个的主题可选地包含,其中机器学习模型被配置为应用强化学习算法,机器学习模型被训练以生成引起执行中的应用的成功执行的修改。
80.在示例11中,示例10的主题可选地包含,当执行中的应用创建新进程、创建新文件、创建新注册表项、建立网络连接或执行中的应用唤起超过预定义阈值的多个api调用时,其中成功的执行被检测到。
81.在示例12中,示例1-示例11的任何一个或多个的主题可选地包含在数据存储中存储记录,该记录指示对执行中的应用的修改。
82.在示例13中,示例12的主题可选地包含基于数据存储中的多个记录进行标识,这是多个记录共用的修改;以及修改沙箱环境配置,使得配置与标识的修改一致。
83.示例14是系统,包含:硬件处理电路装置;存储指令的一个或多个硬件存储器,该指令当被执行时配置硬件处理电路装置以执行操作,包含:拦截执行中的应用的指令序列;向机器学习模型提供指令序列;从机器学习模型接收基于所提供的指令序列的、对执行中的应用的修改的指示;并执行所指示的修改。
84.在示例15中,示例14的主题可选地包含其中指令序列是机器指令或字节码指令。
85.在示例16中,示例14-示例15的任何一个或多个的主题可选地包含其中指令序列包含函数调用指令,操作进一步包含:确定执行中的应用在函数调用指令处的调用堆栈;确定函数调用的参数;以及将调用堆栈和参数提供给机器学习模型,其中修改的指示进一步基于所提供的调用堆栈和参数。
86.在示例17中,示例16的主题可选地包含确定第二函数调用的第二参数,并向机器学习模型提供第二函数调用的第二参数,其中修改的指示进一步基于所提供的第二参数。
87.在示例18中,示例16-示例17的任何一个或多个的主题可选地包含其中修改是对函数调用的输出的修改。
88.在示例19中,示例18的主题可选地包含从函数调用的返回值列表中选择返回值,并将输出设置为选择的返回值。
89.在示例20中,示例16-示例19中任何一个或多个的主题可选地包含标识执行中的应用的控制流指令,其中修改是对控制流指令的修改。
90.在示例21中,示例16-示例20中任何一个或多个的主题可选地包含捕获执行中的应用的可执行代码的、在函数调用的预定义邻近度内的部分,并且将部分提供给机器学习模型,其中修改的指示基于所提供的部分。
91.在示例22中,示例16-示例21中任何一个或多个的主题可选地包含捕获执行中的应用的函数调用序列,以及向机器学习模型提供指示函数调用序列的数据,其中修改的指示基于所指示的函数调用序列。
92.在示例23中,示例14-示例22中任何一个或多个的主题可选地包含,其中机器学习模型被配置为应用强化学习算法,机器学习模型被训练以生成引起执行中的应用的成功执行的修改。
93.在示例24中,示例23的主题可选地包含,其中当执行中的应用创建新进程、创建新文件、创建新注册表项、建立网络连接或执行中的应用唤起超过预定义阈值的多个api调用时,成功执行被检测。
94.在示例25中,示例14-示例24中任何一个或多个的主题可选地包含在数据存储中存储记录,该记录指示对执行中的应用的修改。
95.在示例26中,示例25的主题可选地包含基于数据存储中的多个记录标识,多个记录共用的修改;以及修改沙箱环境配置,使得配置与标识的修改一致。
96.示例27是非暂时性计算机可读存储介质,其包含指令,该指令当被执行时配置硬件处理电路装置以执行操作,包含:拦截执行中的应用的指令序列;向机器学习模型提供指
令序列;从机器学习模型接收基于所提供的指令序列的、对执行中的应用的修改的指示;并执行所指示的修改。
97.在示例28中,示例27的主题可选地包含其中指令序列是机器指令或字节码指令。
98.在示例29中,示例27-示例28中任何一个或多个的主题可选地包含其中指令序列包含函数调用指令,操作进一步包含:确定执行中的应用在函数调用指令处的调用堆栈;确定函数调用的参数;以及将调用堆栈和参数提供给机器学习模型,其中修改的指示进一步基于所提供的调用堆栈和参数。
99.在示例30中,示例29的主题可选地包含确定第二函数调用的第二参数,并向机器学习模型提供第二函数调用的第二参数,其中修改的指示进一步基于所提供的第二参数。
100.在示例31中,示例29-示例30中任何一个或多个的主题可选地包含其中修改是对函数调用的输出的修改。
101.在示例32中,示例31的主题可选地包含从函数调用的返回值列表中选择返回值,并将输出设置为选择的返回值。
102.在示例33中,示例31-示例32中任何一个或多个的主题可选地包含标识执行中的应用的控制流指令,其中修改是对控制流指令的修改。
103.在示例34中,示例31-示例33中任何一个或多个的主题可选地包含捕获执行中的应用的可执行代码的、在函数调用的预定义邻近度内的部分,并且将部分提供给机器学习模型,其中修改的指示基于所提供的部分。
104.在示例35中,示例31-示例34中任何一个或多个的主题可选地包含捕获执行中的应用的函数调用序列,以及向机器学习模型提供指示函数调用序列的数据,其中修改的指示基于所指示的函数调用序列。
105.在示例36中,示例27-示例35中任何一个或多个的主题可选地包含,其中机器学习模型被配置为应用强化学习算法,机器学习模型经过训练以生成引起成功执行执行中的应用的修改。
106.在示例37中,示例36的主题可选地包含,其中当执行中的应用创建新进程、创建新文件、创建新注册表项、建立网络连接或执行中的应用唤起超过预定义阈值的多个api调用时,成功执行被检测。
107.在示例38中,示例27-示例37中任何一个或多个的主题可选地包含在数据存储中存储记录,该记录指示对执行中的应用的修改。
108.在示例39中,示例38的主题可选地包含基于数据存储中的多个记录标识,多个记录共用的修改;以及修改沙箱环境配置,使得配置与标识的修改一致。
109.因此,术语“模块”被理解为包含有形实体,是指物理构造、具体配置(例如硬接线)或临时配置(例如临时编程)以特定方式操作或执行本文所述任何部分或全部操作的实体。考虑到临时配置模块的示例,每个模块都不需要在任何时候实例化。例如,如果模块包含使用软件配置的通用硬件处理器,则通用硬件处理器在不同时间配置为各自的不同模块。软件可以相应地配置硬件处理器,例如,在一个时间点构成特定模块,在不同的时间点构成不同的模块。
110.各种实施例完全或部分地以软件和/或固件实现。此软件和/或固件可采取包含在非暂时性计算机可读存储介质中或其上的指令的形式。然后,这些指令可由一个或多个处
理器读取和执行,以使本文所述的操作得以执行。这些指令以任何合适的形式存在,例如但不限于源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等。这种计算机可读介质可以包含任何有形的非暂时性介质,用于以一种或多种计算机可读的形式存储信息,例如但不限于只读存储器(rom);随机存取存储器(ram);磁盘存储介质;光学存储介质;闪存等。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献