CN108399332B - 在虚拟机中针对恶意性对文件进行分析的系统和方法 - Google Patents
在虚拟机中针对恶意性对文件进行分析的系统和方法 Download PDFInfo
- Publication number
- CN108399332B CN108399332B CN201710451089.7A CN201710451089A CN108399332B CN 108399332 B CN108399332 B CN 108399332B CN 201710451089 A CN201710451089 A CN 201710451089A CN 108399332 B CN108399332 B CN 108399332B
- Authority
- CN
- China
- Prior art keywords
- file
- thread
- processor
- event
- context
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Abstract
本发明涉及在虚拟机中针对恶意性对文件进行分析的系统和方法。一种示例性方法包括:通过处理器在虚拟机中打开并执行文件;拦截在打开所述文件时所创建的进程的线程的执行过程中出现的事件;停止执行所述线程;读取所述处理器的上下文,其中在所述处理器上正在执行所述线程;将所述处理器的所述上下文与一个或多个规则相比较;以及基于所述比较的结果,执行如下项中的至少一者:将所述文件识别为恶意的;停止执行在打开所述文件时所创建的所述进程;改变所述处理器的所述上下文;以及等待下一个拦截的事件。
Description
技术领域
本发明总体涉及网络安全的领域,以及更具体地涉及在虚拟机中针对恶意性对文件进行分析的系统和方法。
背景技术
目前,设计成既对用户的数据又对被恶意程序入侵的电子设备的实际用户造成伤害的恶意程序(诸如计算机病毒、特洛伊(Trojan)木马、网络蠕虫)的量日益增加。该伤害可以通过损害或删除用户文件、将用户的计算设备的资源用于加密货币的“开采”、盗用电子机密用户数据(通信、图像、登录名、密码、银行卡信息)和其它动作来引起。此外,恶意软件不断改变,这是因为恶意软件的创造者采用常新的对抗安全应用程序的攻击和防御机制。使用各种机制,诸如恶意代码的模糊处理(换言之,例如,将程序的源文本或可执行代码转换为保留其功能但抵抗分析的形式、理解工作算法、以及对反编译的修改)或模拟抵抗机制的使用(例如,向恶意程序给出识别其何时在模拟器中被执行的能力,且该恶意程序不显现其有害的活动)。
此外,恶意程序经常不立刻显现其恶意活动,而是该恶意程序执行大量(以百万的级别)的API函数调用、庞大的周期(以十亿次迭代的级别),以及紧接在被启动之后的特定时间(例如使用“Sleep()”函数的1小时)内停止其工作。用户的现代计算设备具有高性能、多核处理器(也称为多处理器系统),因此用户可以不注意或不关注多核之一的工作负荷。此外,在设备已被开启达1小时以上之后,用户正常地使用该设备。因此,如果该设备已被启动,则对于恶意程序来说无需立刻显示其活动。
为了应对提及的技术,安全应用程序(诸如防病毒应用程序)的制造者为了文件的安全执行而采用使用孤立环境形式的虚拟机的检测方法。经常,这类虚拟机被称为沙盒。这类虚拟机在其控制下运行的管理程序包含用于拦截由其中执行的应用程序所进行的功能的机制。
应当注意,安全应用程序采用用于确定恶意程序的各种方法,诸如签名技术和/或启发式分析技术。如果在分析的过程中未将文件确定为恶意的,则可以通过用于分析文件行为的安全应用程序将该文件移交到前文提及的虚拟机(例如,如果该文件不具有可信软件制造商的数字签名)。然后在虚拟机中执行移交的文件,以及在其执行过程中拦截由不同函数调用所进行的该文件的动作和事件,所拦截的事件和动作被保存在日志中且之后被安全应用程序或信息安全方面的专家分析。
因此,已知的用于拦截和聚集事件和动作的系统在两个步骤中工作。在第一步骤中,采集信息;在第二步骤中,分析信息。
已知的系统和方法的缺点在于,它们在文件的执行过程中不影响执行过程。例如,如果从被分析的文件(或从打开被分析的文件的应用程序)发起的进程已停止其执行达1小时或通过利用保存的密码访问文件而攻击特定电子邮件客户端或报信者(用于交换消息的程序),则被攻击的程序将缺席虚拟机,以及文件行为的恶意性将不被发现(因为还未找到具有密码的所需文件,恶意文件自身将终止其执行且将不显现其恶意活动)。
发明内容
公开了在虚拟机中针对恶意性对文件进行分析的系统和方法。所公开的系统和方法的一个技术效果和改进在于:当针对恶意性对文件进行分析时,这些系统和方法影响虚拟机中的文件执行的过程。在一个示例性方面中,一种用于针对恶意性对文件进行分析的方法包括:通过处理器在虚拟机中打开并执行文件;通过所述处理器拦截在打开所述文件时所创建的进程的线程的执行过程中出现的事件;在拦截所述事件时停止执行所述进程的所述线程;读取所述处理器的上下文,其中在所述处理器上正在执行在打开所述文件时所创建的所述进程的所述线程;通过所述处理器将所述处理器的所述上下文与一个或多个规则相比较,所述一个或多个规则检测:所述文件的路径、所述文件的类型、所述文件的扩展、在打开所述文件时所创建的所述进程的所述线程的行为、通过所述进程的所述线程对所述文件的属性的改变、以及所述进程的所述线程对因特网的访问;以及基于所述比较的结果,执行如下项中的至少一者:将所述文件识别为恶意的;停止执行在打开所述文件时所创建的所述进程;改变所述处理器的所述上下文;以及等待下一个拦截的事件。
在一个示例性方面中,拦截的所述事件包括如下项中的一者或多者:由所述线程对API函数的调用;来自API函数的返回;系统调用;来自系统调用的返回;以及来自操作系统的通知。
在一个示例性方面中,拦截事件还包括:确定被所述线程调用的API函数的编码约定。
在一个示例性方面中,所述处理器的所述上下文至少包含所述处理器的寄存器值。
在一个示例性方面中,拦截的事件和读取的所述处理器的所述上下文被保存在日志中。
在一个示例性方面中,所述规则包含用于所述分析的深度的条件或所述事件的聚集深度的条件。
在一个示例性方面中,所述规则包含用于增大周期的变量的条件。
在另一个示例性方面中,一种用于针对恶意性对文件进行分析的系统包括:硬件处理器,所述硬件处理器配置成:在虚拟机中打开并执行文件;拦截在打开所述文件时所创建的进程的线程的执行过程中出现的事件;在拦截所述事件时停止执行所述进程的所述线程;读取所述处理器的上下文,其中在所述处理器上正在执行在打开所述文件时所创建的所述进程的所述线程;将所述处理器的所述上下文与一个或多个规则相比较,所述一个或多个规则检测:所述文件的路径、所述文件的类型、所述文件的扩展、在打开所述文件时所创建的所述进程的所述线程的行为、通过所述进程的所述线程对所述文件的属性的改变、以及所述进程的所述线程对因特网的访问;以及基于所述比较的结果,执行如下项中的至少一者:将所述文件识别为恶意的;停止执行在打开所述文件时所创建的所述进程;改变所述处理器的所述上下文;以及等待下一个拦截的事件。
在又一个示例性方面中,一种其上存储用于在虚拟机中针对恶意性对文件进行分析的计算机可执行指令的非易失性计算机可读介质包括用于如下操作的指令:通过处理器在虚拟机中打开并执行文件;拦截在打开所述文件时所创建的进程的线程的执行过程中出现的事件;在拦截所述事件时停止执行所述进程的所述线程;读取所述处理器的上下文,其中在所述处理器上正在执行在打开所述文件时所创建的所述进程的所述线程;将所述处理器的所述上下文与一个或多个规则相比较,所述一个或多个规则检测:所述文件的路径、所述文件的类型、所述文件的扩展、在打开所述文件时所创建的所述进程的所述线程的行为、通过所述进程的所述线程对所述文件的属性的改变、以及所述进程的所述线程对因特网的访问;以及基于所述比较的结果,执行如下项中的至少一者:将所述文件识别为恶意的;停止执行在打开所述文件时所创建的所述进程;改变所述处理器的所述上下文;以及等待下一个拦截的事件。
以上对本发明的示例性方面的简要概述用于提供对本发明的基本理解。该概述不是对所有预期方面的广泛综述,并且既不旨在标识所有方面的关键的要素或主要的要素,也不旨在勾画本发明的任何方面或所有方面的范围。为了实现前述内容,本发明的一个或多个方面包括在权利要求中所描述的且特别指出的特征。
附图说明
并入本说明书中并构成本说明书的一部分的附图示出了本发明的一个或多个示例性方面,以及连同详细的描述一起用来阐述这些示例性方面的原理和实现方式。
图1示出在虚拟机中针对恶意性对文件进行分析的示例。
图2示出用于在虚拟机中针对恶意性对文件进行分析的示例性系统。
图3示出用于在虚拟机中针对恶意性对文件进行分析的示例性方法。
图4为其上可实施在虚拟机中针对恶意性对文件进行分析的系统和方法的方面的通用计算机系统的示例。
具体实施方式
本文中在用于在虚拟机中针对恶意性对文件进行分析的系统、方法和计算机程序产品的背景下描述本发明的示例性方面。本领域的普通技术人员将认识到,以下描述仅仅是说明性的,而不旨在以任何方式进行限制。其它方面将很容易将其自身暗示给了解本发明的优点的本领域的技术人员。现在将详细地参考如附图中所示的示例性方面的实现方式。贯穿附图和以下描述将尽可能地使用相同的附图标记来指代相同或类似的项目。
图1示出在虚拟机中针对恶意性对文件进行分析的示例。在一般情况下,为了分析恶意性,在孤立环境形式的虚拟机120中打开文件100,用以执行文件。安全模块110将文件100转发到虚拟机120。在一个示例性方面中,虚拟机120由安全模块110创建。在另一个示例性方面中,虚拟机120由安全模块110从先前创建的虚拟机中选择。虚拟机可以包括将主机操作系统的资源提供给客户操作系统的软件和硬件,其中,该客户操作系统不具有去往主机操作系统的链接。
应当注意,文件100可以包括但不限于:可执行文件;动态库;由给定解释器执行的脚本(诸如微软PowerShell文件);包含用于执行的脚本的文件(诸如Microsoft Office或Adobe Acrobat格式的文件);网页;图像;链路(诸如URL);或在被其它应用程序执行或打开时可对计算设备的用户的数据造成伤害的其它类型的文件。
在一般情况下,在虚拟机120的操作系统中打开文件100之后进行对该文件100的分析。文件100的打开包括但不限于:通过应用程序对可执行文件100的执行或对非可执行文件100的打开。
打开文件100的结果是进程的创建及进程执行在虚拟机120中的启动,以及至少一个执行线程的创建。
在一个示例性方面中,在用户的计算设备上执行安全模块110和虚拟机的监控器(在后文中,管理程序)115,虚拟机120在该监控器115的控制下工作。在给定情况下,安全模块110为安全应用程序(诸如防病毒应用程序)。在另一情况下,安全模块110和管理程序115被执行在远程服务器上(或不同服务器上)或作为云服务。在该情况下,安全模块110从第三方源(例如从在用户的计算设备上运行的安全模块110)获得文件100,并将该文件100转发到虚拟机120,在此发生文件100的打开。
在一般情况下,管理程序115包含拦截模块130(该拦截模块130为管理程序115的模块、部件、或功能部分)。拦截模块130拦截在虚拟机120中打开文件100时创建的进程的线程的API函数调用,并读取处理器的上下文,其中在该处理器上正在执行进行API函数调用的线程。应当注意,处理器的上下文至少包含该处理器的寄存器值。在一个示例性方面中,拦截模块130同样地通过使用包含在处理器寄存器中的先前读取的对应于堆栈的数据来读取堆栈(例如,处于来自ESP寄存器和EBP寄存器的地址的存储器)。此外,在打开文件100时所创建的进程执行之后,拦截模块130聚集提及的数据、保存该数据(例如保存在数据库中或日志150中)、以及将该数据转发到安全模块110。安全模块110反过来基于来自拦截模块130的数据宣布关于文件100的恶意性的判决。在一般情况下,例如根据由在打开文件100时所创建的进程的线程对API函数的调用中的序列和参数,在分析所保存的文件之后宣布判决。在一个示例性方面中,如果没有宣布判决,则通过安全模块110将由拦截模块130保存的数据转发到信息安全方面的专家(在图1中未示出)以供分析。
图2示出用于在虚拟机中针对恶意性对文件进行分析的示例性系统。与图1的系统相比,在图2的系统中,拦截模块130还包含分析模块140。在一个示例性方面中,管理程序115包含分析模块140。在另一个示例性方面中,分析模块140为安全模块110的部件(模块、功能部分)。在一般情况下,拦截模块130拦截在打开文件100时所创建的进程的线程中的事件。
所拦截的事件可以包括但不限于:由线程对API函数的调用;来自API函数的返回;系统调用或换言之,通过线程访问操作系统的内核以执行特定操作(系统调用);来自系统调用的返回;以及来自操作系统的消息(通知)(例如,线程的创建、进程的创建、模块的加载)。
当事件被拦截时,通过拦截模块130停止线程的执行。应当注意,在虚拟机120的操作系统的不同保护环上,拦截是可行的,实现了系统的硬件分区和特权的用户等级,使得能够拦截处于内核级(内核模式)和/或应用级(用户模块)的事件。在一个示例性方面中,可以通过停止执行线程的指令来停止执行该线程。
应当注意,在打开文件100时所创建的进程的线程的执行期间,拦截模块130确定被线程调用的API函数的编码约定。这允许将处理器的寄存器用于将参数发送到被调用的API函数的不同确定。因此,例如,调用的参数将在寄存器ECX(第一参数)、EDX(第二参数)中找到,以及剩余的参数将在堆栈(ESP寄存器)中。此外,编码约定实现了返回值的不同确定。例如,如果API函数返回值“0”,则这在寄存器EAX中进行。
通过拦截模块将拦截的事件和处理器的上下文保存在日志150中。在保存之后,通过拦截模块130将日志150转发到分析模块140。分析模块140使用一组模板。在一个示例性方面中,模板被存储在数据结构(诸如树)中。可以在虚拟机120的开机期间通过分析模块140将模板添加到数据结构。在另一个示例性方面中,模板由分析模块140从数据库中选择。
在一般情况下,模板包含一个或多个规则。在一个方面中,每个规则被分配优先级。在另一方面中,以非特定次序将规则添加到模板。
规则为基于逻辑操作数(诸如“如果”或“逻辑或”)的使用的逻辑条件。此外,规则可以彼此相关。在一个示例性方面中,规则利用所保存的处理器的上下文。在另一个示例性方面中,规则包含改变处理器的上下文的逻辑和用于改变处理器的上下文的数据。在又一个示例性方面中,规则包含分析模块140将打开的文件100识别为恶意的所利用的逻辑。
上文提及的规则的示例为:
规则1:“如果”调用FileOpen(“$SytemDrive:\<random name>”),“则”继续执行。
规则2:“如果”规则1和FileWrite(“$SytemDrive:\<random name>”,文本行),“则”继续执行。
在上述示例中,在打开文件100时所创建的进程的线程请求系统硬盘的根中的随机(所需)文件。创建(或读取)所需文件的单纯事件不是恶意的,但是它经常是恶意功能的开端。因此,分析模块140基于规则做出继续执行提及的线程的决定。之后,写入请求的文件。根据请求的文件的类型和写入该文件的信息,请求的文件可以具有恶意功能。
下面提供系统的工作和规则的更详细示例:
规则10:“如果”文件100未被标记,则继续执行。
规则11:“如果”规则10,“且”文件100已调用FileOpen(“$SytemDrive:\<randomname>”),“则”将返回值变为“成功”,“且”继续执行。
规则12:“如果”规则11,“且”文件100已调用FileWrite(“$SytemDrive:\<randomname>”,在打开文件100时所创建的进程所使用的存储器剪贴板),“则”将文件100识别为恶意的“且”终止执行。
应当注意,在呈现的规则的示例中,“文件100”用于规则的更清楚且更可全面的呈现。在一般情况下,规则使用在打开文件100时所创建的进程的线程。
在上述示例中,文件100未被标记,即,文件100的供应者(创造者)是未知的。随后,在打开文件100时所创建的进程的线程在其执行过程中也访问系统硬盘的根中的随机文件。然而,操作系统通常禁止在系统硬盘的根中创建文件(恶意文件可以尝试其它路径,直到该文件被创建)。因此,分析模块140基于规则做出将被返回的结果变为“成功”的决定,在拦截模块130的帮助下替换该结果,以及然后继续执行在打开文件100时所创建的进程的线程。然后,写入所创建的文件。如果存储器剪贴板已被写入所创建的文件,则该文件可以为恶意的(具有恶意功能)。有意义的是停止对文件100的分析、然后执行对所创建的文件的分析、以及从对所创建的文件的分析结果宣布关于文件100的恶意性的裁决。
应当注意,上文仅描述了规则的示例。在一般情况下,规则可以是更大量的,例如,它们可以沿着不同路径跟踪文件的创建、跟踪被创建文件的扩展、分析被创建文件的类型、允许文件的创建以及跟踪在打开文件100时所创建的进程的线程的进一步行为(例如,是否将具有以某种已知方式将创建的文件添加到操作系统的启动列表的尝试?)、跟踪通过线程对文件100或其它文件的属性的改变、以及跟踪线程对因特网的访问。
在一个示例性方面中,分析模块140也利用(检查的)专家数据工作,该专家数据存储在单独的数据库中。该数据也可以被用在模板的规则中。这类规则的示例可以为:
规则21:“如果”文件100访问网络资源,“且”该网络资源已被分配恶意类别,“则”将文件100识别为恶意的。
应当注意,在上述示例中,被在虚拟机中打开文件100时所创建的进程的线程访问的网络资源类别先前已利用已知方法来确定(分配)且被保存在单独的数据库中。
在一个示例性方面中,规则可以包含用于分析的深度的条件或事件的聚集深度的条件。例如:
规则31:“如果”文件100执行一个周期,“且”API函数调用的事件的上下文不改变,“则”不拦截从API函数的返回事件。
规则的这个示例使得可以通过减少事件拦截的次数并读取上下文来加速文件100的执行。如果在打开文件100时所创建的进程的线程已调用达到以十亿迭代的等级持续的一个周期(包括调用“CreateWindow()”和“CloseWindow()”),则拦截且保存每个事件的上下文是没有意义的。如上所述的拦截模块130被触发至少四十亿次(在该周期中,调用两个API函数,该事件为来自API函数的调用和返回)且将正如多次读取处理器的上下文。
在一个示例性方面中,规则包含用于增大周期的变量的条件。例如:
规则41:“如果”文件100执行一个周期,“且”API函数调用的事件的上下文不改变,“则”在每10次迭代之后将周期变量的值增大5倍。
上述示例可以用于通过在虚拟机120中打开文件100时所创建的进程的线程来加速周期的执行。分析模块确定周期性执行的线程调用特定事件。没有事情发生在该进程中,该进程是用于反模拟的已知脚本之一。为了使在打开文件100时所创建的进程的线程最完全地显示其功能,需要尽快完成周期且继续执行。由于上述规则,因此该周期将快几倍完成。
因此,分析模块140在从拦截模块130获得日志150之后分析发生的事件(即保存在日志150中的事件(当前的和先前的))和发生事件的数据(例如,对应于特定事件的处理器的上下文)。该分析包括将已发生的事件与模板相比较。将事件连续地与保存在模板中的每个规则相比较(根据模板中的规则的次序或规则的优先级)。基于比较,分析模块140做出如下决定中的至少一者:将文件100识别为恶意的决定;停止执行在打开文件100时所创建的进程的决定;改变处理器的上下文的决定;和等待下一事件的决定。
应当注意,分析模块140可以组合上文提及的决定。例如,如果将文件100识别为恶意的,则在一个示例性方面中,可以停止执行在打开文件100时所创建的进程。在另一个示例性方面中,可以继续执行在打开文件100时所创建的进程,即,等待下一事件,用以进一步分析该进程的线程的行为和日志150的创建。在一个示例性方面中,将文件100识别为恶意的,但是改变处理器的上下文并等待下一事件。这类动作序列对于文件100的功能的更完整启示是必需的。例如,在分析过程中创建包含恶意代码的另一文件之后,已将文件100识别为恶意的。然而,在某些实例中(例如线程试图从恶意网络资源下载东西),有意义的是继续拦截事件并填充日志150,用以分析在打开文件100时所创建的进程的线程的进一步行为。在另一个示例性方面中,即使未将文件100识别为恶意的(例如,在执行过程中打开窗口,等待来自用户的数据输入),也做出停止执行在打开文件100时所创建的进程的决定。
分析模块140将做出的决定转发到拦截模块130。拦截模块130根据所做出的决定执行动作。在分析模块140做出等待下一事件的决定的情况下,恢复被拦截模块130停止的线程的执行。
在一个示例性方面中,分析模块140发起虚拟机120的重新启动。例如,如果在文件100的分析过程中创建新文件(通向该新文件的路径已被添加到虚拟机120的操作系统的启动列表中),则分析模块140发起重新启动以便针对恶意性检查所创建文件的功能。
在一般情况下,在虚拟机120中完成文件100的分析之后,拦截模块130将日志150转发到安全模块110。可以以常规方式(在打开文件100时所创建的进程的线程自身完成执行)或通过分析模块140的决定(分析模块140已宣布停止在打开文件100时所创建的进程的决定)来完成文件100的分析。
因此,该系统能够基于来自分析模块140的决定(即基于是否宣布将文件100识别为恶意的决定)来揭示文件100的恶意性。
图3示出用于在虚拟机中针对恶意性对文件进行分析的示例性方法。在一般情况下,安全模块110将文件100发送到虚拟机120,用以分析其恶意性。在虚拟机120的操作系统中打开文件100之后进行对该文件100的分析。在开始步骤310中,使用拦截模块130拦截在打开文件100时所创建的进程的线程执行过程中出现的事件。该事件为如下项中的至少一者:由线程对API函数的调用;来自API函数的返回;系统调用;来自系统调用的返回;以及来自操作系统的通知。伴随事件的拦截,拦截模块130还可以停止执行在打开文件100时所创建的进程的线程。
接着,在步骤320中,拦截模块130读取至少一个处理器的上下文,其中在该至少一个处理器上正在执行在打开文件100时所创建的进程的线程。在该情况下,处理器的上下文至少包含该处理器的寄存器值。通过拦截模块130将拦截的事件和读取的处理器的上下文保存在日志150中。
接着,在步骤330中,分析模块140将保存在日志150中的数据与至少一个模板相比较,该至少一个模板又包含至少一个规则。在一个示例性方面中,规则包含至少一个事件。在另一个示例性方面中,规则包含至少一个处理器上下文。作为比较保存在日志150中的数据与包含在模板中的规则的结果,使用分析模块140做出如下决定中的至少一者:将文件100识别为恶意的决定;停止执行在打开文件100时所创建的进程的决定;改变处理器的上下文的决定;和等待下一事件的决定。
接着,在步骤340中,将由分析模块140做出的决定提供给拦截模块130以及拦截模块130根据所做出的决定执行动作。
图4为示出根据本发明的示例性方面的其上可实施用于在虚拟机中针对恶意性对文件进行分析的系统和方法的方面的示例性计算机系统的图。如所示,该计算机系统20(其可以是个人计算机或服务器)包括中央处理单元21、系统存储器22和连接各种系统部件的系统总线23,各种系统部件包括与中央处理单元21相关联的存储器。如将由本领域的普通技术人员所领会,系统总线23可以包括总线存储器或总线存储器控制器、外围总线、以及能够与任何其它的总线架构交互的本地总线。系统存储器可以包括永久性存储器(ROM)24和随机存取存储器(Random-Access Memory,RAM)25。基本输入/输出系统(Basic Input/Output System,BIOS)26可以存储用于在计算机系统20的元件之间的信息传输的基本程序,例如在使用ROM 24加载操作系统时的那些基本程序。
计算机系统20还可以包括用于读取和写入数据的硬盘27、用于在可移动磁盘29上读取和写入的磁盘驱动器28、以及用于读取和写入可移动光盘31(诸如CD-ROM、DVD-ROM和其它光学媒介)的光盘驱动器30。硬盘27、磁盘驱动器28和光盘驱动器30分别通过硬盘接口32、磁盘接口33和光盘驱动器接口34而连接到系统总线23。驱动器和对应的计算机信息媒介为用于存储计算机系统20的计算机指令、数据结构、程序模块和其它数据的电源独立的模块。
示例性方面包括借助控制器55使用连接到系统总线23的硬盘27、可移动磁盘29和可移动光盘31的系统。将由本领域的普通技术人员所理解,也可以利用能够以计算机可读的形式存储数据的任何类型的媒介56(固态驱动器、闪存卡、数字盘、随机存取存储器(RAM)等等)。
计算机系统20具有可以存储操作系统35的文件系统36、以及额外的程序应用37、其它程序模块38和程序数据39。计算机系统20的用户可以使用键盘40、鼠标42、或本领域的普通技术人员已知的任何其它输入设备(诸如但不限于麦克风、操纵杆、游戏控制器、扫描器等)输入命令和信息。这些输入设备通常通过串行端口46插入到计算机系统20中,串行端口46转而连接到系统总线,但是本领域的普通技术人员将领会,输入设备也可以以其它方式来连接,诸如但不限于借助并行端口、游戏端口、或通用串行总线(Universal SerialBus,USB)来连接。监控器47或其它类型的显示设备也可以通过接口(例如视频适配器48)连接到系统总线23。除了监控器47,个人计算机还可以装备有其它的外围输出设备(未示出),例如扬声器、打印机等。
计算机系统20可以使用与一个或多个远程计算机49的网络连接而在网络环境中工作。一个或多个远程计算机49可以为本地计算机工作站或服务器,其包括在描述计算机系统20的性质时的上述元件中的大多数元件或全部元件。其它设备也可以存在于计算机网络中,诸如但不限于路由器、网站、对等设备或其它的网络节点。
网络连接可以形成局域计算机网络(Local-Area computer Network,LAN)50和广域计算机网络(Wide-Area computer Network,WAN)。这些网络用在企业计算机网络和公司内部网络中,并且这些网络通常有权访问因特网。在LAN或WAN网络中,个人计算机20通过网络适配器或网络接口51连接到局域网50。当使用网络时,计算机20系统可以采用调制解调器54或本领域的普通技术人员所熟知的、实现与广域计算机网络(诸如因特网)的通信的其它模块。调制解调器54可以是内部设备或外部设备,可以通过串行端口46连接到系统总线23。本领域的普通技术人员将领会,所述网络连接是使用通信模块建立一个计算机与另一个计算机的连接的许多熟知方式的非限制性示例。
在各个方面中,本文中所描述的系统和方法可以以硬件、软件、固件或它们的任何组合来实施。如果以软件来实施,则上述方法可以作为一个或多个指令或代码而被存储在非易失性计算机可读介质上。计算机可读介质包括数据存储器。以示例性而非限制性的方式,这种计算机可读介质可以包括RAM,ROM,EEPROM,CD-ROM,闪存或其它类型的电存储介质、磁存储介质或光存储介质,或可用来携带或存储所期望的指令或数据结构形式的程序代码并可以被通用计算机的处理器访问的任何其它介质。
在各个方面中,本发明中所描述的系统和方法可以按照模块来处理。本文中所使用的术语“模块”指的是例如现实世界的设备、部件、或使用硬件(例如通过专用集成电路(Application Specific Integrated Circuit,ASIC)或现场可编程门阵列(Field-Programmable Gate Array,FPGA))实现的部件的布置,或者指的是硬件和软件的组合,例如通过微处理器系统和软件指令集、以及基于神经形态芯片(神经突触芯片)以实现模块功能的软件指令集(该软件指令集在被执行时将微处理器系统转换成专用设备)来实现这样的组合。一个模块还可以被实施为两个模块的组合,其中单独地通过硬件促进某些功能,并且通过硬件和软件的组合促进其它功能。在某些实现方式中,模块的至少一部分(以及在一些情况下,模块的全部)可以被执行在通用计算机(例如上文在图1至图4中更详细描述的通用计算机)的处理器上。因此,每个模块可以以各种适合的配置来实现,而不应受限于本文中所例示的任何特定的实现方式。
为了清楚起见,本文中没有公开各个方面的所有例程特征。应当领会的是,在本发明的任何实际的实现方式的开发中,必须做出许多特定实现方式的决定,以便实现开发者的特定目标,并且这些特定目标将对于不同的实现方式和不同的开发者变化。应当理解的是,这种开发努力会是复杂的且费时的,但对于了解本发明的优点的本领域的普通技术人员来说仍然是工程的例行任务。
此外,应当理解的是,本文中所使用的措辞或术语出于描述而非限制的目的,从而本说明书的术语或措辞应当由本领域技术人员根据本文中所提出的教导和指导结合相关领域技术人员的知识来解释。此外,不旨在将本说明书或权利要求中的任何术语归于不常见的或特定的含义,除非明确如此阐述。本文中所公开的各个方面包括本文中以说明性方式所引用的已知模块的现在和未来已知的等同物。此外,尽管已经示出并描述了各个方面和应用,但是对于了解本发明的优点的本领域技术人员将显而易见的是,在不脱离本文中所公开的发明构思的前提下,相比于上文所提及的内容而言的更多修改是可行的。
Claims (21)
1.一种用于针对恶意性对文件进行分析的方法,所述方法包括:
通过处理器在虚拟机中打开并执行文件;
通过所述处理器拦截在打开所述文件时所创建的进程的线程的执行中出现的事件;
在拦截所述事件时停止执行所述进程的所述线程;
读取所述处理器的上下文,其中在所述处理器上正在执行在打开所述文件时所创建的所述进程的所述线程;
通过所述处理器将所述处理器的所述上下文与一个或多个规则相比较,所述一个或多个规则检测:所述文件的路径、所述文件的类型、所述文件的扩展、在打开所述文件时所创建的所述进程的所述线程的行为、通过所述进程的所述线程对所述文件的属性的改变、以及所述进程的所述线程对因特网的访问;以及
基于所述比较的结果,执行如下项中的至少一者:将所述文件识别为恶意的、停止执行在打开所述文件时所创建的所述进程、改变所述处理器的所述上下文、以及等待下一个拦截的事件。
2.如权利要求1所述的方法,其中,拦截的所述事件包括如下项中的一者或多者:由所述线程对API函数的调用;来自API函数的返回;系统调用;来自系统调用的返回;以及来自操作系统的通知。
3.如权利要求1所述的方法,其中,拦截所述事件还包括:确定被所述线程调用的API函数的编码约定。
4.如权利要求1所述的方法,其中,所述处理器的所述上下文至少包含所述处理器的寄存器值。
5.如权利要求1所述的方法,其中,拦截的所述事件和读取的所述处理器的所述上下文被保存在日志中。
6.如权利要求1所述的方法,其中,所述一个或多个规则中的一规则包含用于所述分析的深度的条件或事件的聚集深度的条件。
7.如权利要求1所述的方法,其中,所述一个或多个规则中的一规则包含用于增大周期的变量的条件。
8.一种用于针对恶意性对文件进行分析的系统,所述系统包括:
硬件处理器,所述硬件处理器配置成:
在虚拟机中打开并执行文件;
拦截在打开所述文件时所创建的进程的线程的执行中出现的事件;
在拦截所述事件时停止执行所述进程的所述线程;
读取所述处理器的上下文,其中在所述处理器上正在执行在打开所述文件时所创建的所述进程的所述线程;
将所述处理器的所述上下文与一个或多个规则相比较,所述一个或多个规则检测:所述文件的路径、所述文件的类型、所述文件的扩展、在打开所述文件时所创建的所述进程的所述线程的行为、通过所述进程的所述线程对所述文件的属性的改变、以及所述进程的所述线程对因特网的访问;以及
基于所述比较的结果,执行如下项中的至少一者:将所述文件识别为恶意的、停止执行在打开所述文件时所创建的所述进程、改变所述处理器的所述上下文、以及等待下一个拦截的事件。
9.如权利要求8所述的系统,其中,拦截的所述事件包括如下项中的一者或多者:由所述线程对API函数的调用;来自API函数的返回;系统调用;来自系统调用的返回;以及来自操作系统的通知。
10.如权利要求8所述的系统,其中,拦截所述事件还包括:确定被所述线程调用的API函数的编码约定。
11.如权利要求8所述的系统,其中,所述处理器的所述上下文至少包含所述处理器的寄存器值。
12.如权利要求8所述的系统,其中,拦截的所述事件和读取的所述处理器的所述上下文被保存在日志中。
13.如权利要求8所述的系统,其中,所述一个或多个规则中的一规则包含用于所述分析的深度的条件或事件的聚集深度的条件。
14.如权利要求8所述的系统,其中,所述一个或多个规则中的一规则包含用于增大周期的变量的条件。
15.一种非易失性计算机可读介质,所述非易失性计算机可读介质上存储用于在虚拟机中针对恶意性对文件进行分析的计算机可执行指令,所述计算机可执行指令包括用于如下操作的指令:
通过处理器在虚拟机中打开并执行文件;
拦截在打开所述文件时所创建的进程的线程的执行中出现的事件;
在拦截所述事件时停止执行所述进程的所述线程;
读取所述处理器的上下文,其中在所述处理器上正在执行在打开所述文件时所创建的所述进程的所述线程;
将所述处理器的所述上下文与一个或多个规则相比较,所述一个或多个规则检测:所述文件的路径、所述文件的类型、所述文件的扩展、在打开所述文件时所创建的所述进程的所述线程的行为、通过所述进程的所述线程对所述文件的属性的改变、以及所述进程的所述线程对因特网的访问;以及
基于所述比较的结果,执行如下项中的至少一者:将所述文件识别为恶意的、停止执行在打开所述文件时所创建的所述进程、改变所述处理器的所述上下文、以及等待下一个拦截的事件。
16.如权利要求15所述的非易失性计算机可读介质,其中,拦截的所述事件包括如下项中的一者或多者:由所述线程对API函数的调用;来自API函数的返回;系统调用;来自系统调用的返回;以及来自操作系统的通知。
17.如权利要求15所述的非易失性计算机可读介质,其中,拦截所述事件还包括:确定被所述线程调用的API函数的编码约定。
18.如权利要求15所述的非易失性计算机可读介质,其中,所述处理器的所述上下文至少包含所述处理器的寄存器值。
19.如权利要求15所述的非易失性计算机可读介质,其中,拦截的所述事件和读取的所述处理器的所述上下文被保存在日志中。
20.如权利要求15所述的非易失性计算机可读介质,其中,所述一个或多个规则中的一规则包含用于所述分析的深度的条件或事件的聚集深度的条件。
21.如权利要求15所述的非易失性计算机可读介质,其中,所述一个或多个规则中的一规则包含用于增大周期的变量的条件。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2017104135A RU2665911C2 (ru) | 2017-02-08 | 2017-02-08 | Система и способ анализа файла на вредоносность в виртуальной машине |
RU2017104135 | 2017-02-08 | ||
US15/451,850 | 2017-03-07 | ||
US15/451,850 US10339301B2 (en) | 2017-02-08 | 2017-03-07 | System and method of analysis of files for maliciousness in a virtual machine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108399332A CN108399332A (zh) | 2018-08-14 |
CN108399332B true CN108399332B (zh) | 2022-03-08 |
Family
ID=63037270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710451089.7A Active CN108399332B (zh) | 2017-02-08 | 2017-06-15 | 在虚拟机中针对恶意性对文件进行分析的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10339301B2 (zh) |
JP (1) | JP6588945B2 (zh) |
CN (1) | CN108399332B (zh) |
RU (1) | RU2665911C2 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201708340D0 (en) * | 2017-05-24 | 2017-07-05 | Petagene Ltd | Data processing system and method |
US10382468B2 (en) * | 2017-07-03 | 2019-08-13 | Juniper Networks, Inc. | Malware identification via secondary file analysis |
RU2708355C1 (ru) * | 2018-06-29 | 2019-12-05 | Акционерное общество "Лаборатория Касперского" | Способ обнаружения вредоносных файлов, противодействующих анализу в изолированной среде |
US11070632B2 (en) * | 2018-10-17 | 2021-07-20 | Servicenow, Inc. | Identifying computing devices in a managed network that are involved in blockchain-based mining |
RU2724790C1 (ru) * | 2018-12-28 | 2020-06-25 | Акционерное общество "Лаборатория Касперского" | Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине |
CN111723361A (zh) * | 2019-03-21 | 2020-09-29 | 北京京东尚科信息技术有限公司 | 一种恶意用户拦截方法和系统 |
US11080394B2 (en) * | 2019-03-27 | 2021-08-03 | Webroot Inc. | Behavioral threat detection virtual machine |
CN112395593B (zh) * | 2019-08-15 | 2024-03-29 | 奇安信安全技术(珠海)有限公司 | 指令执行序列的监测方法及装置、存储介质、计算机设备 |
CN112579249A (zh) * | 2019-09-30 | 2021-03-30 | 奇安信安全技术(珠海)有限公司 | 多cpu虚拟机的运行方法及装置、存储介质、计算机设备 |
US11531755B2 (en) * | 2020-11-25 | 2022-12-20 | Microsoft Technology Licensing, Llc | Detecting ransomware among files using information that is not included in content of the files |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542207A (zh) * | 2010-12-07 | 2012-07-04 | 微软公司 | 虚拟机的反恶意软件保护 |
CN102750475A (zh) * | 2012-06-07 | 2012-10-24 | 中国电子科技集团公司第三十研究所 | 基于虚拟机内外视图交叉比对恶意代码行为检测方法及系统 |
CN103827882A (zh) * | 2011-06-08 | 2014-05-28 | 迈可菲公司 | 用于虚拟分区监视的系统和方法 |
CN106682513A (zh) * | 2016-11-28 | 2017-05-17 | 北京奇虎科技有限公司 | 一种目标样本文件的检测方法和装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3085899B2 (ja) * | 1995-06-19 | 2000-09-11 | 株式会社東芝 | マルチプロセッサシステム |
JP3688773B2 (ja) * | 1995-10-31 | 2005-08-31 | 株式会社東芝 | Mri装置 |
US7908653B2 (en) * | 2004-06-29 | 2011-03-15 | Intel Corporation | Method of improving computer security through sandboxing |
US7779472B1 (en) | 2005-10-11 | 2010-08-17 | Trend Micro, Inc. | Application behavior based malware detection |
US8290763B1 (en) * | 2008-09-04 | 2012-10-16 | Mcafee, Inc. | Emulation system, method, and computer program product for passing system calls to an operating system for direct execution |
US9594656B2 (en) * | 2009-10-26 | 2017-03-14 | Microsoft Technology Licensing, Llc | Analysis and visualization of application concurrency and processor resource utilization |
US8479286B2 (en) | 2009-12-15 | 2013-07-02 | Mcafee, Inc. | Systems and methods for behavioral sandboxing |
US9501644B2 (en) * | 2010-03-15 | 2016-11-22 | F-Secure Oyj | Malware protection |
US8479276B1 (en) * | 2010-12-29 | 2013-07-02 | Emc Corporation | Malware detection using risk analysis based on file system and network activity |
US8555385B1 (en) * | 2011-03-14 | 2013-10-08 | Symantec Corporation | Techniques for behavior based malware analysis |
US9177146B1 (en) | 2011-10-11 | 2015-11-03 | Trend Micro, Inc. | Layout scanner for application classification |
US9619346B2 (en) | 2013-10-31 | 2017-04-11 | Assured Information Security, Inc. | Virtual machine introspection facilities |
US9262635B2 (en) * | 2014-02-05 | 2016-02-16 | Fireeye, Inc. | Detection efficacy of virtual machine-based analysis with application specific events |
JP2015166952A (ja) | 2014-03-04 | 2015-09-24 | 順子 杉中 | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 |
RU2580030C2 (ru) | 2014-04-18 | 2016-04-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ распределения задач антивирусной проверки между виртуальными машинами в виртуальной сети |
US20150379268A1 (en) * | 2014-06-27 | 2015-12-31 | Prabhat Singh | System and method for the tracing and detection of malware |
US9984230B2 (en) * | 2015-06-26 | 2018-05-29 | Mcafee, Llc | Profiling event based exploit detection |
-
2017
- 2017-02-08 RU RU2017104135A patent/RU2665911C2/ru active
- 2017-03-07 US US15/451,850 patent/US10339301B2/en active Active
- 2017-06-15 CN CN201710451089.7A patent/CN108399332B/zh active Active
- 2017-06-28 JP JP2017126206A patent/JP6588945B2/ja active Active
-
2019
- 2019-05-17 US US16/415,328 patent/US10642973B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102542207A (zh) * | 2010-12-07 | 2012-07-04 | 微软公司 | 虚拟机的反恶意软件保护 |
CN103827882A (zh) * | 2011-06-08 | 2014-05-28 | 迈可菲公司 | 用于虚拟分区监视的系统和方法 |
CN102750475A (zh) * | 2012-06-07 | 2012-10-24 | 中国电子科技集团公司第三十研究所 | 基于虚拟机内外视图交叉比对恶意代码行为检测方法及系统 |
CN106682513A (zh) * | 2016-11-28 | 2017-05-17 | 北京奇虎科技有限公司 | 一种目标样本文件的检测方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20180225447A1 (en) | 2018-08-09 |
RU2017104135A3 (zh) | 2018-08-08 |
US20190272371A1 (en) | 2019-09-05 |
JP2018129019A (ja) | 2018-08-16 |
JP6588945B2 (ja) | 2019-10-09 |
US10642973B2 (en) | 2020-05-05 |
RU2665911C2 (ru) | 2018-09-04 |
US10339301B2 (en) | 2019-07-02 |
CN108399332A (zh) | 2018-08-14 |
RU2017104135A (ru) | 2018-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108399332B (zh) | 在虚拟机中针对恶意性对文件进行分析的系统和方法 | |
US10242186B2 (en) | System and method for detecting malicious code in address space of a process | |
KR102206115B1 (ko) | 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지 | |
US11048795B2 (en) | System and method for analyzing a log in a virtual machine based on a template | |
US9336390B2 (en) | Selective assessment of maliciousness of software code executed in the address space of a trusted process | |
JP6700351B2 (ja) | プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法 | |
RU2724790C1 (ru) | Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине | |
JP2018041438A (ja) | ファイル中の悪意のあるコードの検出システム及び方法 | |
US20170090929A1 (en) | Hardware-assisted software verification and secure execution | |
US10678918B1 (en) | Evaluating malware in a virtual machine using copy-on-write | |
RU2649794C1 (ru) | Система и способ формирования журнала в виртуальной машине для проведения антивирусной проверки файла | |
CN110659478B (zh) | 在隔离的环境中检测阻止分析的恶意文件的方法 | |
CN113821297A (zh) | 仿真器和仿真方法 | |
EP2881883B1 (en) | System and method for reducing load on an operating system when executing antivirus operations | |
EP3361406A1 (en) | System and method of analysis of files for maliciousness in a virtual machine | |
RU2592383C1 (ru) | Способ формирования антивирусной записи при обнаружении вредоносного кода в оперативной памяти | |
RU2757409C1 (ru) | Эмулятор и способ эмуляции | |
EP4312401A1 (en) | Methods and systems for analyzing environment-sensitive malware with coverage-guided fuzzing | |
EP3674940A1 (en) | System and method of forming a log when executing a file with vulnerabilities in a virtual machine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |