HK1246905B - Behavioral malware detection using an interpreter virtual machine - Google Patents
Behavioral malware detection using an interpreter virtual machineInfo
- Publication number
- HK1246905B HK1246905B HK18106493.9A HK18106493A HK1246905B HK 1246905 B HK1246905 B HK 1246905B HK 18106493 A HK18106493 A HK 18106493A HK 1246905 B HK1246905 B HK 1246905B
- Authority
- HK
- Hong Kong
- Prior art keywords
- bytecode
- routine
- malware
- client system
- event
- Prior art date
Links
Description
背景技术Background Art
本发明涉及用于保护计算机系统免受恶意软件侵害的系统及方法。The present invention relates to systems and methods for protecting computer systems from malware.
恶意软件(也被称为恶意软件)影响世界范围内的大量计算机系统。恶意软件以其例如计算机病毒、蠕虫、木马、未经请求的广告软件、勒索软件及间谍软件等许多形式向数百万计算机用户造成严重的风险,使其容易丢失数据及敏感信息、身份盗用以及生产力损失等等。恶意软件可能会进一步显示某些用户认为是淫秽、过度暴力、骚扰或其它令人反感的材料。Malicious software (also known as malware) affects a large number of computer systems worldwide. In its many forms, such as computer viruses, worms, Trojans, unsolicited adware, ransomware, and spyware, malware poses a serious risk to millions of computer users, exposing them to loss of data and sensitive information, identity theft, and lost productivity. Malware may also display material that some users may find obscene, excessively violent, harassing, or otherwise objectionable.
安全软件可用于检测感染用户的计算机系统的恶意软件,并且另外用于移除或以其它方式使此恶意软件失能。所属领域已知有若干恶意软件检测技术。一些依赖于将恶意软件代理的代码片段与恶意软件指示性签名的库相匹配。其它常规方法检测恶意软件代理的一组恶意软件指示性的行为。Security software can be used to detect malware that infects a user's computer system and, in addition, to remove or otherwise disable such malware. Several malware detection techniques are known in the art. Some rely on matching malware agent code snippets with a library of malware-indicative signatures. Other conventional methods detect a set of malware-indicative behaviors in a malware agent.
恶意软件迅速发展,以便于保持领先检测算法。为解决此类快速改变的威胁,安全软件的提供者通常例如通过重新训练分类器以检测新的恶意软件版本来以几分钟到几小时的规模调整检测方法及/或参数。通常,此重新训练在计算上是昂贵的。此外,引入新的行为检测算法或甚至改变现有算法通常需要大量的测试以及对相应安全软件的源代码进行重新编译。只有这样才能将新软件版本递送给客户端,例如作为软件更新。相比之下,在基于签名的检测系统中,可容易地将新恶意软件签名添加到现有签名组。Malware evolves rapidly, and to stay ahead of detection algorithms, security software providers typically adjust detection methods and/or parameters on a scale of minutes to hours, for example by retraining classifiers to detect new malware versions. This retraining is typically computationally expensive. Furthermore, introducing new behavioral detection algorithms or even changing existing ones typically requires extensive testing and recompiling the source code of the corresponding security software. Only then can the new software version be delivered to clients, for example as a software update. In contrast, in signature-based detection systems, new malware signatures can be easily added to the existing signature set.
因此,人们对开发能够迅速更新算法及/或参数的反恶意软件解决方案以跟上恶意软件的不断改变的性质有极大的兴趣。Therefore, there is great interest in developing anti-malware solutions that can rapidly update algorithms and/or parameters to keep pace with the ever-changing nature of malware.
发明内容Summary of the Invention
根据一个方面,一种客户端系统包括至少一个硬件处理器,其经配置以形成例程调度器、字节代码解译虚拟机及行为评估引擎。所述例程调度器经配置以响应于检测到触发事件的发生而从多个反恶意软件字节代码例程选择反恶意软件字节代码例程用于执行,根据所述触发事件选择所述反恶意软件字节代码例程。所述触发事件的所述发生是由在所述客户端系统内执行的受监测过程引起。所述字节代码解译虚拟机经配置以执行所述反恶意软件字节代码例程以确定所述触发事件的所述发生是否指示恶意软件,其中执行所述反恶意软件字节代码例程包括:将所述反恶意软件字节代码例程的一组字节代码指令解译成本机处理器指令序列,以及执行所述本机处理器指令序列。所述行为评估引擎经配置以根据所述字节代码解译虚拟机执行所述反恶意软件字节代码例程的结果来确定所述客户端系统是否包括恶意软件。According to one aspect, a client system includes at least one hardware processor configured to form a routine scheduler, a bytecode interpretation virtual machine, and a behavior evaluation engine. The routine scheduler is configured to select an anti-malware bytecode routine from a plurality of anti-malware bytecode routines for execution in response to detecting the occurrence of a triggering event, the anti-malware bytecode routine being selected based on the triggering event. The occurrence of the triggering event is caused by a monitored process executing within the client system. The bytecode interpretation virtual machine is configured to execute the anti-malware bytecode routine to determine whether the occurrence of the triggering event indicates malware, wherein executing the anti-malware bytecode routine includes: interpreting a set of bytecode instructions of the anti-malware bytecode routine into a native processor instruction sequence, and executing the native processor instruction sequence. The behavior evaluation engine is configured to determine whether the client system includes malware based on the result of the bytecode interpretation virtual machine executing the anti-malware bytecode routine.
根据另一方面,一种计算机实施的方法包括采用客户端系统的至少一个硬件处理器,响应于检测到触发事件的发生,根据所述触发事件从多个字节代码例程选择反恶意软件字节代码例程,所述反恶意软件字节代码例程经配置以确定所述触发事件的所述发生是否指示恶意软件。所述触发事件是由在所述客户端系统内执行的受监测过程引起。所述方法进一步包括采用所述客户端系统的至少一个硬件处理器,响应于选择所述反恶意软件字节代码例程,将所述反恶意软件字节代码例程的一组字节代码指令解译成本机处理器指令序列,并执行所述本机处理器指令序列。所述方法进一步包括采用所述客户端系统的至少一个硬件处理器根据执行所述本机处理器指令序列的结果来确定所述客户端系统是否包括恶意软件。According to another aspect, a computer-implemented method includes, in response to detecting an occurrence of a triggering event, selecting, from a plurality of bytecode routines, an anti-malware bytecode routine based on the triggering event, the anti-malware bytecode routine configured to determine whether the occurrence of the triggering event indicates malware. The triggering event is caused by a monitored process executing within the client system. The method further includes, in response to selecting the anti-malware bytecode routine, interpreting, in response to selecting the anti-malware bytecode routine, a set of bytecode instructions of the anti-malware bytecode routine into a native processor instruction sequence and executing the native processor instruction sequence. The method further includes, in response to executing the native processor instruction sequence, determining, in response to the at least one hardware processor of the client system, whether the client system includes malware.
根据另一方面,一种非暂时性计算机可读媒体存储计算机程序,所述计算机程序在由客户端系统的至少一个硬件处理器执行时致使所述客户端系统形成例程调度器、字节代码解译虚拟机及行为评估引擎。所述例程调度器经配置以响应于检测到触发事件的发生而根据所述触发事件从多个反恶意软件字节代码例程选择反恶意软件字节代码例程用于执行,所述反恶意软件字节代码例程经配置以确定所述触发事件的所述发生是否指示恶意软件。所述触发事件是由在所述客户端系统内执行的受监测过程引起。所述字节代码解译虚拟机经配置以执行所述反恶意软件字节代码例程,其中执行所述反恶意软件字节代码例程包括将所述反恶意软件字节代码例程的一组字节代码指令解译成本机处理器指令序列,以及执行所述本机处理器指令序列。所述行为评估引擎经配置以根据所述字节代码解译虚拟机执行所述反恶意软件字节代码例程的结果来确定所述客户端系统是否包括恶意软件。According to another aspect, a non-transitory computer-readable medium stores a computer program that, when executed by at least one hardware processor of a client system, causes the client system to form a routine scheduler, a bytecode interpretation virtual machine, and a behavior evaluation engine. The routine scheduler is configured to, in response to detecting the occurrence of a triggering event, select an anti-malware bytecode routine from a plurality of anti-malware bytecode routines for execution based on the triggering event, the anti-malware bytecode routine being configured to determine whether the occurrence of the triggering event indicates malware. The triggering event is caused by a monitored process executing within the client system. The bytecode interpretation virtual machine is configured to execute the anti-malware bytecode routine, wherein executing the anti-malware bytecode routine includes interpreting a set of bytecode instructions of the anti-malware bytecode routine into a native processor instruction sequence and executing the native processor instruction sequence. The behavior evaluation engine is configured to determine whether the client system includes malware based on the result of the bytecode interpretation virtual machine executing the anti-malware bytecode routine.
根据另一方面,一种非暂时性计算机可读媒体存储反恶意软件字节代码例程,所述反恶意软件字节代码例程可由在包括至少一个硬件处理器的客户端系统上形成的字节代码解译虚拟机执行,其中执行所述反恶意软件字节代码例程致使所述至少一个硬件处理器确定所述客户端系统内的触发事件的发生是否指示恶意软件。执行所述反恶意软件字节代码例程包括将所述反恶意软件字节代码例程的一组字节代码指令解译成本机处理器指令序列,以及执行所述本机处理器指令序列。所述客户端系统进一步包括例程调度器及行为评估引擎。所述例程调度器经配置以响应于检测到所述触发事件的所述发生,根据所述触发事件从所述多个字节代码例程选择所述反恶意软件字节代码例程。所述行为评估引擎经配置以根据所述字节代码解译虚拟机执行所述反恶意软件字节代码例程的结果来确定所述客户端系统是否包括恶意软件。According to another aspect, a non-transitory computer-readable medium stores an anti-malware bytecode routine that is executable by a bytecode interpretation virtual machine formed on a client system including at least one hardware processor, wherein executing the anti-malware bytecode routine causes the at least one hardware processor to determine whether an occurrence of a triggering event within the client system indicates malware. Executing the anti-malware bytecode routine includes interpreting a set of bytecode instructions of the anti-malware bytecode routine into a native processor instruction sequence, and executing the native processor instruction sequence. The client system further includes a routine scheduler and a behavior evaluation engine. The routine scheduler is configured to, in response to detecting the occurrence of the triggering event, select the anti-malware bytecode routine from the plurality of bytecode routines based on the triggering event. The behavior evaluation engine is configured to determine whether the client system includes malware based on a result of execution of the anti-malware bytecode routine by the bytecode interpretation virtual machine.
附图说明BRIEF DESCRIPTION OF THE DRAWINGS
通过阅读以下详细描述并参考附图,将更好地理解本发明的前述方面及优点,其中:The foregoing aspects and advantages of the present invention will be better understood by reading the following detailed description and referring to the accompanying drawings, in which:
图1展示根据本发明的一些实施例的防范计算机安全威胁(例如,恶意软件)的示范性客户端系统。FIG. 1 shows an exemplary client system for protecting against computer security threats (eg, malware) according to some embodiments of the present invention.
图2展示根据本发明的一些实施例的客户端计算机系统的示范性硬件配置。FIG2 shows an exemplary hardware configuration of a client computer system according to some embodiments of the present invention.
图3说明根据本发明的一些实施例的安全应用程序的示范性结构。FIG3 illustrates an exemplary structure of a security application according to some embodiments of the present invention.
图4说明环境中的一组过程的示范性执行流程。实线箭头指示没有事件拦截器时的流程。虚线箭头指示对执行流程的修改,所述修改由根据本发明的一些实施例操作的多个事件拦截器引入。Figure 4 illustrates an exemplary execution flow of a set of processes in an environment. Solid arrows indicate the flow without event interceptors. Dashed arrows indicate modifications to the execution flow introduced by multiple event interceptors operating according to some embodiments of the present invention.
图5展示根据本发明的一些实施例的由安全应用程序执行以配置恶意软件检测的示范性步骤序列。5 shows an exemplary sequence of steps performed by a security application to configure malware detection, according to some embodiments of the invention.
图6展示根据本发明的一些实施例的示范性字节代码例程。FIG6 shows an exemplary byte code routine according to some embodiments of the invention.
图7说明根据本发明的一些实施例的由例程调度器(图3)执行的示范性步骤序列。FIG. 7 illustrates an exemplary sequence of steps performed by the routine scheduler ( FIG. 3 ), according to some embodiments of the invention.
图8展示根据本发明的一些实施例的由例程调度器执行以处理事件队列的示范性步骤序列。FIG8 shows an exemplary sequence of steps performed by a routine scheduler to process an event queue according to some embodiments of the invention.
图9展示根据本发明的一些实施例的由字节代码解译VM(图3)执行的示范性步骤序列。FIG. 9 shows an exemplary sequence of steps performed by the bytecode interpretation VM ( FIG. 3 ), according to some embodiments of the invention.
图10说明根据本发明的一些实施例的示范性软件更新过程。FIG. 10 illustrates an exemplary software update process according to some embodiments of the present invention.
具体实施方式DETAILED DESCRIPTION
在下文描述中,应理解,结构之间的所有陈述的连接可为直接操作连接或通过中间结构的间接操作连接。一组元件包含一或多个元件。元件的任何陈述被理解为指至少一个元件。多个元件包含至少两个元件。除非另外要求,否则任何所描述的方法步骤不一定必须以特定说明顺序执行。从第二元件导出的第一元件(例如,数据)涵盖等于第二元件的第一元件,以及通过处理第二元件及任选其它数据产生的第一元件。根据参数做出确定或决定涵盖根据参数并且任选地根据其它数据做出确定或决定。除非另有规定,否则一些数量/数据的指示符可能是数量/数据本身,或是与数量/数据本身不同的指示符。计算机安全涵盖保护用户及装备免遭意外或未经授权的数据及/或硬件访问,防止意外或未经授权的数据及/或硬件的修改以及数据及/或硬件的破坏。计算机程序是实行任务的处理器指令序列。在本发明的一些实施例中描述的计算机程序可为其它计算机程序的独立软件实体或子实体(例如,子例程,库)。除非另外规定,否则过程是计算机程序的例子,例如应用程序或操作系统的一部分,并且特征在于具有为其指派的至少一个执行线程及虚拟存储器空间,其中相应虚拟存储器空间的内容包含可执行代码。术语平台用于表示特定物理或虚拟化硬件配置(例如,包括特定模型或处理器系列)。虚拟平台包括虚拟化硬件,例如虚拟化处理器。本文的术语字节代码是指计算机程序的多平台编码,意思是字节代码指令可以相同的形式被递送到不同平台。与字节代码指令相反,本机处理器指令包括特定于执行相应本机处理器指令的物理或虚拟平台的指令集架构(ISA)的指令。计算机可读媒体涵盖例如磁性、光学及半导体存储媒体的非暂时性媒体(例如,硬盘驱动器、光盘、闪存、DRAM),以及例如导电缆线及光纤链路的通信链路。根据一些实施例,本发明尤其提供包括经编程以执行本文描述的方法的硬件(例如,一或多个微处理器)的计算机系统,以及编码用于执行本文描述的方法的指令的计算机可读媒体。In the following description, it should be understood that all stated connections between structures may be direct operational connections or indirect operational connections through intermediate structures. A group of elements includes one or more elements. Any statement of an element is understood to refer to at least one element. A plurality of elements includes at least two elements. Unless otherwise required, any described method steps do not necessarily have to be performed in the specific order described. A first element (e.g., data) derived from a second element encompasses a first element that is equal to the second element, as well as a first element generated by processing the second element and optionally other data. Making a determination or decision based on a parameter encompasses making a determination or decision based on the parameter and, optionally, other data. Unless otherwise specified, an indicator of some quantity/data may be the quantity/data itself, or an indicator different from the quantity/data itself. Computer security covers protecting users and equipment from accidental or unauthorized access to data and/or hardware, preventing accidental or unauthorized modification of data and/or hardware, and destruction of data and/or hardware. A computer program is a sequence of processor instructions that performs a task. The computer programs described in some embodiments of the present invention may be independent software entities or sub-entities (e.g., subroutines, libraries) of other computer programs. Unless otherwise specified, a process is an example of a computer program, such as an application or part of an operating system, and is characterized by having at least one execution thread assigned to it and a virtual memory space, wherein the contents of the corresponding virtual memory space contain executable code. The term platform is used to refer to a specific physical or virtualized hardware configuration (e.g., including a specific model or processor family). A virtual platform includes virtualized hardware, such as a virtualized processor. The term bytecode herein refers to a multi-platform encoding of a computer program, meaning that the bytecode instructions can be delivered in the same form to different platforms. In contrast to bytecode instructions, native processor instructions include instructions specific to the instruction set architecture (ISA) of the physical or virtual platform on which the corresponding native processor instructions are executed. Computer-readable media encompasses non-transitory media such as magnetic, optical, and semiconductor storage media (e.g., hard drives, optical disks, flash memory, DRAM), as well as communication links such as conductive cables and fiber optic links. According to some embodiments, the present invention provides, among other things, a computer system comprising hardware (e.g., one or more microprocessors) programmed to perform the methods described herein, and a computer-readable medium encoding instructions for performing the methods described herein.
以下描述以实例的方式且不一定以限制的方式说明本发明的实施例。The following description illustrates embodiments of the invention by way of example and not necessarily by way of limitation.
图1展示根据本发明的一些实施例的在受保护而免受计算机安全威胁的客户端系统10上执行的一组示范性软件对象。客户端系统10可表示计算机系统(例如,最终用户计算机、公司服务器等等)。其它示范性客户端系统10包含移动计算装置(例如,膝上型计算机、平板计算机)、电信装置(例如,智能手机)、数字娱乐设备(TV、游戏控制台等等)、可佩戴式计算装置(例如智能手表)、或具有处理器及存储器并且需要计算机安全保护的任何其它电子装置。FIG1 shows a set of exemplary software objects executed on a client system 10 protected from computer security threats according to some embodiments of the present invention. Client system 10 may represent a computer system (e.g., an end-user computer, a corporate server, etc.). Other exemplary client systems 10 include mobile computing devices (e.g., laptops, tablets), telecommunication devices (e.g., smartphones), digital entertainment devices (TVs, game consoles, etc.), wearable computing devices (e.g., smart watches), or any other electronic device having a processor and memory and requiring computer security protection.
在一些实施例中,操作系统(OS)30包括提供到客户端系统10的硬件的接口的软件,并且充当用于一组软件应用程序32a到c及40的主机。OS 30可包括例如或等的任何广泛可用的操作系统。应用程序32a到c通常表示用户软件,其可包含例如文字处理、图像处理、数据库、浏览器及电子通信应用程序等等。在一些实施例中,安全应用程序40与应用程序32a到c同时执行并且经配置以确定在客户端系统10上执行的任何软件(包含应用程序32a到c及OS 30)是否构成计算机安全威胁。例如,应用程序40可检测在客户端系统10上操作的恶意软件(例如,病毒、间谍软件、广告软件等等)。应用程序40可进一步经配置为擦除或以其它方式使此类恶意的软件失能,并且提醒客户端系统10的用户或系统管理员。安全应用程序40可为独立的程序,或可形成尤其包括反恶意软件、反垃圾邮件及防欺诈组件的软件套件的部分。下文详细描述安全应用程序40的操作。In some embodiments, operating system (OS) 30 includes software that provides an interface to the hardware of client system 10 and serves as a host for a set of software applications 32a-c and 40. OS 30 may include any widely available operating system, such as Windows XP or Windows XP. Applications 32a-c generally represent user software and may include, for example, word processing, image processing, database, browser, and electronic communication applications. In some embodiments, security application 40 executes concurrently with applications 32a-c and is configured to determine whether any software executing on client system 10 (including applications 32a-c and OS 30) constitutes a computer security threat. For example, application 40 may detect malware (e.g., viruses, spyware, adware, etc.) operating on client system 10. Application 40 may further be configured to remove or otherwise disable such malicious software and alert the user or system administrator of client system 10. Security application 40 may be a stand-alone program or may form part of a software suite that includes, among other things, anti-malware, anti-spam, and anti-fraud components. The operation of security application 40 is described in detail below.
图2说明客户端系统10的示范性硬件配置,其中客户端系统10是计算机系统。技术人员将了解,例如平板计算机、移动电话、智能手表等等的其它装置的硬件配置可不同于所说明的配置,但本描述可适用于此类装置。客户端系统10包括一组物理装置,其包含硬件处理器12、存储器单元14、一组输入装置16、一组输出装置18、一组存储装置20以及一组网络适配器22,全部通过控制器集线器24互连。FIG2 illustrates an exemplary hardware configuration of a client system 10, where the client system 10 is a computer system. A skilled artisan will appreciate that the hardware configuration of other devices, such as tablet computers, mobile phones, smart watches, and the like, may differ from the configuration illustrated, but the present description is applicable to such devices. The client system 10 comprises a set of physical devices, including a hardware processor 12, a memory unit 14, a set of input devices 16, a set of output devices 18, a set of storage devices 20, and a set of network adapters 22, all interconnected via a controller hub 24.
在一些实施例中,处理器12包括经配置以利用一组信号及/或数据执行计算及/或逻辑操作的物理装置(例如,形成在半导体衬底上的微处理器、多核集成电路)。在一些实施例中,此类逻辑操作以处理器指令序列(例如,机器代码或其它类型的软件)的形式从存储器单元14传输到处理器12。存储器单元14可包括存储由处理器12在实行指令的进程中访问或产生的数据/信号的易失性计算机可读媒体(例如,RAM)。输入装置16可包含计算机键盘、鼠标及麦克风等等,其包含允许用户将数据及/或指令引入客户端系统10的相应硬件接口及/或适配器。输出装置18可包含显示装置,例如监测器及扬声器等等以及例如图形卡的硬件接口/适配器,从而允许客户端系统10将数据传达给用户。在一些实施例中,输入装置16及输出装置18可共享共同硬件,如在触摸屏装置的情况下。存储装置20包含启用处理器指令及/或数据的非易失性存储、读取及写入的计算机可读媒体。示范性存储装置20包含磁盘及光盘以及闪存装置,以及例如CD及/或DVD盘及驱动器的可装卸式媒体。所述组网络适配器22使得客户端系统10能够连接到网络(例如,局域网、无线网络等等)及/或其它装置/计算机系统。控制器集线器24通常表示能够促进在处理器12与装置14、16、18、20及22之间进行通信的多个系统、外围装置及/或芯片组总线,及/或所有其它电路。例如,控制器集线器22可包括将处理器12连接到存储器14的北桥,及/或将处理器12连接到装置16、18、20及22的南桥。In some embodiments, processor 12 comprises a physical device (e.g., a microprocessor or multi-core integrated circuit formed on a semiconductor substrate) configured to perform computations and/or logical operations using a set of signals and/or data. In some embodiments, such logical operations are transmitted to processor 12 from memory unit 14 in the form of a sequence of processor instructions (e.g., machine code or other types of software). Memory unit 14 may include volatile computer-readable media (e.g., RAM) that stores data/signals accessed or generated by processor 12 in the process of executing instructions. Input devices 16 may include a computer keyboard, mouse, microphone, etc., including corresponding hardware interfaces and/or adapters that allow a user to enter data and/or instructions into client system 10. Output devices 18 may include display devices such as monitors and speakers, etc., as well as hardware interfaces/adapters such as graphics cards, allowing client system 10 to communicate data to the user. In some embodiments, input devices 16 and output devices 18 may share common hardware, such as in the case of a touchscreen device. Storage device 20 includes computer-readable media that enables non-volatile storage, reading, and writing of processor instructions and/or data. Exemplary storage devices 20 include magnetic and optical disks, as well as flash memory devices, and removable media such as CD and/or DVD disks and drives. The set of network adapters 22 enables client system 10 to connect to a network (e.g., a local area network, a wireless network, etc.) and/or other devices/computer systems. Controller hub 24 generally represents a plurality of system, peripheral, and/or chipset buses, and/or all other circuitry, that facilitates communication between processor 12 and devices 14, 16, 18, 20, and 22. For example, controller hub 22 may include a northbridge that connects processor 12 to memory 14, and/or a southbridge that connects processor 12 to devices 16, 18, 20, and 22.
在一些实施例中,客户端系统10经配置以操作虚拟平台(例如,虚拟机)。可使用硬件虚拟化技术(例如,管理程序)来设置此类配置。虚拟平台可包括虚拟化硬件组件,每一此虚拟化组件至少部分模拟客户端系统10的对应硬件组件的功能性。例如,虚拟平台可包含虚拟化处理器、虚拟化存储器单元及虚拟输入/输出装置。操作系统30以及应用程序32a到c及安全应用程序40可在相应虚拟平台上执行,与虚拟化硬件交互。当软件采用相应平台的虚拟化处理器执行时,软件称为在虚拟平台上执行。In some embodiments, client system 10 is configured to operate a virtual platform (e.g., a virtual machine). Such a configuration may be set up using hardware virtualization technology (e.g., a hypervisor). The virtual platform may include virtualized hardware components, each of which at least partially emulates the functionality of a corresponding hardware component of client system 10. For example, the virtual platform may include a virtualized processor, a virtualized memory unit, and virtual input/output devices. Operating system 30, as well as application programs 32a-c and security application 40, may execute on the respective virtual platforms and interact with the virtualized hardware. When software is executed using the virtualized processor of the respective platform, the software is said to be executed on the virtual platform.
图3展示根据本发明的一些实施例的安全应用程序40的示范性组件。安全应用程序40包括例程调度器32、行为评估引擎38及连接到调度器32及评估引擎38的字节代码解译虚拟机(BTVM)34。在一些实施例中,应用程序40进一步包括连接到BTVM 34及/或评估引擎38的辅助器模块36。例程调度器32可进一步管理事件队列31,如下文进一步详细描述。3 shows exemplary components of a security application 40 according to some embodiments of the present invention. The security application 40 includes a routine scheduler 32, a behavior evaluation engine 38, and a bytecode interpreting virtual machine (BTVM) 34 connected to the scheduler 32 and the evaluation engine 38. In some embodiments, the application 40 further includes a facilitator module 36 connected to the BTVM 34 and/or the evaluation engine 38. The routine scheduler 32 may further manage an event queue 31, as described in further detail below.
在一些实施例中,例程调度器32从安装于在客户端系统10上执行的各种软件对象内的一组事件拦截器28a到c接收一组事件通知42。事件通知42可因此告知调度器32关于在软件执行期间的各种事件的发生。示范性通知事件尤其可包含创建过程或线程、代码注入、系统调用、创建新磁盘文件的尝试、写入现有磁盘文件的尝试、尝试编辑系统寄存器键,以及尝试写入特定存储器部分。一些通知的事件可为恶意软件指示性的。其它事件本身可能并不指示安全威胁,但可能表示与其它事件一起发生时的潜在威胁。响应于接收到通知42,调度器32的一些实施例可根据通知42的细节来选择字节代码例程,并且将相应字节代码例程连同一组通知事件的事件参数47一起发送到字节代码解译VM 34用于执行。相应字节代码例程的执行可将评估指示符50供应给行为评估引擎38。引擎38可维持多个此类评估指示符(例如分数),并且在至少一个此指示符指示计算机安全威胁时可提出警报。下文详细描述组件32、34及38的操作。In some embodiments, the routine scheduler 32 receives a set of event notifications 42 from a set of event interceptors 28a-c installed within various software objects executing on the client system 10. Event notifications 42 may inform the scheduler 32 of various events occurring during software execution. Exemplary notification events may include, among others, the creation of a process or thread, code injection, a system call, an attempt to create a new disk file, an attempt to write to an existing disk file, an attempt to edit a system register key, and an attempt to write to a specific memory portion. Some of the notified events may be indicative of malware. Other events may not indicate a security threat on their own, but may represent a potential threat when combined with other events. In response to receiving notifications 42, some embodiments of the scheduler 32 may select a bytecode routine based on the details of notifications 42 and send the corresponding bytecode routine, along with a set of event parameters 47 for the notification event, to the bytecode interpretation VM 34 for execution. Execution of the corresponding bytecode routine may supply an evaluation indicator 50 to the behavior assessment engine 38. The engine 38 may maintain multiple such evaluation indicators (e.g., scores) and may raise an alert if at least one such indicator indicates a computer security threat. The operation of components 32, 34, and 38 is described in detail below.
为说明事件拦截器28a到c的操作,图4展示根据本发明的一些实施例的一组软件实体60a到b的示范性执行流程。为简单起见,所选择的实体60a到b是在OS的例子中执行的过程;举例来说,可为例如Linux的其它操作系统呈现类似的图。实线箭头表示没有事件拦截器时的执行流程。虚线箭头表示由于存在根据本发明的一些实施例执行的事件拦截器28a到c而对流程的修改。To illustrate the operation of event interceptors 28a-c, FIG4 shows an exemplary execution flow for a set of software entities 60a-b according to some embodiments of the present invention. For simplicity, the entities 60a-b are selected to represent processes executed in an example operating system; similar diagrams can be presented for other operating systems, such as Linux, for example. Solid arrows represent the execution flow without event interceptors. Dashed arrows represent modifications to the flow due to the presence of event interceptors 28a-c executed according to some embodiments of the present invention.
示范性过程60a加载多个动态链接库(DLL)62a到c;在图4的实例中,DLL 62c由(可能是恶意的)过程60b注入过程60a。当过程60a(或其加载的DLL中的一者)执行调用某个系统功能性的指令(例如)以将某些内容写入磁盘文件或编辑注册表项时,相应指令调用用户模式API,例如KERNEL32.DLL或NTDLL.DLL。在图4的实例中,相应用户模式API调用由用户级事件拦截器28a拦截。此类拦截器可通过例如DLL注入或挂钩等方法来实现。挂钩是所属领域中用于拦截在软件组件之间传递的函数调用、消息或事件的方法的通用术语。一种示范性挂钩方法包括通过插入指令(在此情况下,事件拦截器28a)将执行重定向到第二函数来改变目标函数的入口点。在此挂钩之后,第二函数可替代目标函数执行或在执行目标函数之前执行。在图4的实例中,安全应用程序40可钩入KERNEL32.DLL及/或NTDLL.DLL库的某些功能,以指示相应功能以将执行重定向到应用程序40的组件。因此,应用程序40可为每当过程60a正在尝试执行根据挂钩功能标识的特定动作时被通知。Exemplary process 60a loads multiple dynamic link libraries (DLLs) 62a through c; in the example of FIG. 4 , DLL 62c is injected into process 60a by (possibly malicious) process 60b. When process 60a (or one of its loaded DLLs) executes an instruction that calls a system functionality (e.g., to write something to a disk file or edit a registry key), the corresponding instruction calls a user-mode API, such as KERNEL32.DLL or NTDLL.DLL. In the example of FIG. 4 , the corresponding user-mode API call is intercepted by user-level event interceptor 28a. Such interceptors can be implemented through methods such as DLL injection or hooking. Hooking is a general term in the art for methods used to intercept function calls, messages, or events passed between software components. One exemplary hooking method involves changing the entry point of a target function by inserting an instruction (in this case, event interceptor 28a) to redirect execution to a second function. Following this hooking, the second function can execute in place of the target function or before the target function. 4 , security application 40 may hook into certain functions of the KERNEL32.DLL and/or NTDLL.DLL libraries to instruct the corresponding functions to redirect execution to components of application 40. Thus, application 40 may be notified whenever process 60 a is attempting to perform a specific action identified by the hooked functions.
在典型的执行流程中,由实体60a调用的用户模式API函数可从操作系统的内核请求服务。在一些实施例中,通过在x86平台上发出系统调用(例如SYSCALL及SYSENTER)来实行此类操作。在图4的实例中,此类系统调用由事件拦截器28b拦截。在一些实施例中,此拦截包括例如通过改变存储在处理器12的模型特定寄存器(MSR)中的值来修改系统调用处置器例程,其有效地将相应处置器例程的执行重定向到拦截器28b,或直接到应用程序40的组件。此类技术在所属领域中被称为MSR挂钩,并且可允许每当软件实体尝试执行某些系统调用时通知安全应用程序40。In a typical execution flow, a user-mode API function called by entity 60a may request a service from the kernel of the operating system. In some embodiments, such operations are performed by issuing system calls (e.g., SYSCALL and SYSENTER) on an x86 platform. In the example of FIG. 4 , such system calls are intercepted by event interceptor 28b. In some embodiments, this interception includes modifying a system call handler routine, for example, by changing a value stored in a model-specific register (MSR) of processor 12, which effectively redirects execution of the corresponding handler routine to interceptor 28b, or directly to a component of application 40. Such a technique is known in the art as MSR hooking and may allow security application 40 to be notified whenever a software entity attempts to execute certain system calls.
在系统调用之后,处理器的控制通常被转交到OS 30的内核。在一些实施例中,内核级别事件拦截器28c经配置以拦截OS内核的某些动作,并且因此确定评估过程正尝试执行某些操作,这可为恶意软件指示性的。为拦截此类动作,一些实施例可采用内置于OS 30中并由OS 30揭露的一组过滤机制。举例来说,在OS中,FltRegisterFilter可用于拦截如创建、打开、写入及删除文件的操作。在另一个实例中,事件拦截器28c可使用ObRegisterCallback来拦截创建或复制对象处置操作,或PsSetCreateProcessNotifyRoutine拦截新过程的创建。在另一个实例中,可使用CmRegisterCallbackEx拦截Windows注册表操作,例如创建及设置注册表项/值。所属领域中已知用于例如的其它操作系统的类似事件过滤机制。响应于检测到特定事件/动作的发生,事件拦截器28可将通知42传输到安全应用程序40。After the system call, control of the processor is typically transferred to the kernel of the OS 30. In some embodiments, the kernel-level event interceptor 28c is configured to intercept certain actions of the OS kernel and, therefore, determine that the evaluation process is attempting to perform certain operations, which may be indicative of malware. To intercept such actions, some embodiments may employ a set of filtering mechanisms built into and exposed by the OS 30. For example, in the OS, FltRegisterFilter may be used to intercept operations such as creating, opening, writing, and deleting files. In another example, the event interceptor 28c may use ObRegisterCallback to intercept create or copy object disposal operations, or PsSetCreateProcessNotifyRoutine to intercept the creation of a new process. In another example, CmRegisterCallbackEx may be used to intercept Windows registry operations, such as creating and setting registry keys/values. Similar event filtering mechanisms for other operating systems, such as , are known in the art. In response to detecting the occurrence of a specific event/action, the event interceptor 28 may transmit a notification 42 to the security application 40.
图5展示根据本发明的一些实施例的由安全应用程序40执行的用于建立对计算机安全威胁的检测的示范性步骤序列。例如,当安全应用程序40启动时,可执行所说明的步骤序列。在步骤102中,应用程序40例如通过挂钩OS 30的各种功能,修改调度表的条目等来安装事件拦截器28a到c。用于安装此类拦截器的各种方法在所属领域中是已知的(例如,修补、MSR挂钩、代码注入等)。步骤104设置事件队列31,由例程调度器的一些实施例使用来存储关于通知事件的信息以及已发生此类事件的顺序。在一些实施例中,事件队列31被组织为先进先出(FIFO)队列。示范性队列31可为简单链接、无锁、多生产者、多消费者队列。Figure 5 shows an exemplary sequence of steps performed by the security application 40 for establishing detection of computer security threats according to some embodiments of the present invention. For example, when the security application 40 is started, the illustrated sequence of steps may be performed. In step 102, the application 40 installs event interceptors 28a to c, for example, by hooking various functions of the OS 30, modifying entries of the dispatch table, etc. Various methods for installing such interceptors are known in the art (e.g., patching, MSR hooking, code injection, etc.). Step 104 sets up an event queue 31, which is used by some embodiments of the routine scheduler to store information about notification events and the order in which such events have occurred. In some embodiments, the event queue 31 is organized as a first-in, first-out (FIFO) queue. The exemplary queue 31 may be a simple linked, lock-free, multi-producer, multi-consumer queue.
步骤106到108的序列访问例程数据库26(参见例如图3),并将来自数据库26的一组字节代码例程加载到存储器的一部分中。数据库26可驻留在客户端系统10的存储装置20上或通信地耦合到客户端系统10的计算机可读媒体上。The sequence of steps 106 to 108 accesses a routine database 26 (see, e.g., FIG3 ) and loads a set of bytecode routines from the database 26 into a portion of memory. The database 26 may reside on the storage device 20 of the client system 10 or on a computer-readable medium communicatively coupled to the client system 10.
在一些实施例中,存储在数据库26中的每一字节代码例程包括一组字节代码指令,其在由BTVM 34执行时使BTVM 34实行与计算机安全相关的特定任务。一个示范性字节代码例程应用一组启发式测试来确定特定软件对象(或对象群组)是否是恶意的。字节代码例程的另一实例检查在客户端系统10上特定事件序列(行为签名)的发生。不是序列的所有事件都需要由相同实体引起。然而,此序列事件的发生可为恶意软件指示性的。在一个此实例中,恶意活动被划分在实体群组中,所述群组的每一成员实行一小部分恶意活动。经配置以关联对应于此类分布式活动的事件的字节代码例程因此可检测整个群组的恶意实体。In some embodiments, each bytecode routine stored in database 26 includes a set of bytecode instructions that, when executed by BTVM 34, causes BTVM 34 to perform specific tasks related to computer security. One exemplary bytecode routine applies a set of heuristic tests to determine whether a particular software object (or group of objects) is malicious. Another instance of a bytecode routine checks for the occurrence of a particular sequence of events (behavioral signature) on client system 10. Not all events of a sequence need be caused by the same entity. However, the occurrence of such a sequence of events may be indicative of malware. In one such instance, malicious activity is divided into groups of entities, with each member of the group performing a small portion of the malicious activity. A bytecode routine configured to associate events corresponding to such distributed activity can therefore detect an entire group of malicious entities.
其它示范性字节代码例程执行簿记及/或统计任务(例如,计数事件、相关事件参数)。其它字节代码例程可改变软件及/或客户端系统10的用户与OS 30及/或硬件装置交互的方式(例如,例程可防止软件对象写入到磁盘或访问网络适配器22)。每一字节代码例程可体现相异检测方法及/或启发式。在一些实施例中,每一字节代码例程可经配置以检测恶意代理的特定类别、族群、类型或变体的存在。若干相异例程可协作检测恶意代理的单个类别、族群、类型或变体。在一些实施例中,单个例程可参与检测恶意软件的若干类别、类型、族群或变体。Other exemplary bytecode routines perform bookkeeping and/or statistical tasks (e.g., counting events, correlating event parameters). Other bytecode routines may alter the way the software and/or users of client system 10 interact with OS 30 and/or hardware devices (e.g., a routine may prevent a software object from being written to disk or accessing network adapter 22). Each bytecode routine may embody a distinct detection method and/or heuristic. In some embodiments, each bytecode routine may be configured to detect the presence of a specific class, family, type, or variant of a malicious agent. Several distinct routines may collaborate to detect a single class, family, type, or variant of a malicious agent. In some embodiments, a single routine may participate in detecting several classes, types, families, or variants of malware.
图6展示根据本发明的一些实施例的示范性字节代码例程70。例程70包括触发指示符72及字节代码区段74。在一些实施例中,触发指示符72编码一或多个条件用于执行相应字节代码例程。可由例程调度器32及/或BTVM 34评估相应条件,以便确定是否应响应于检测到特定类型的事件的发生而执行相应字节代码例程。示范性条件需要确定特定触发表达式是评估为真(TRUE)还是假(FALSE),并且当表达式为TRUE时确定满足条件。在一些实施例中,相应触发表达式包括事件类型的指示符(例如,过程创建、特定的系统调用等等)。触发表达式可进一步包括事件参数,例如路径、文件名,过程ID等等。在一些实施例中,触发表达式可包括由BTVM 34及/或例程调度器32使用的变量(参见下文的实例)。FIG6 shows an exemplary bytecode routine 70 according to some embodiments of the present invention. Routine 70 includes a trigger indicator 72 and a bytecode segment 74. In some embodiments, trigger indicator 72 encodes one or more conditions for executing the corresponding bytecode routine. The corresponding conditions can be evaluated by routine scheduler 32 and/or BTVM 34 to determine whether the corresponding bytecode routine should be executed in response to detecting the occurrence of a specific type of event. The exemplary conditions require determining whether a specific trigger expression evaluates to true (TRUE) or false (FALSE), and the condition is determined to be satisfied when the expression is TRUE. In some embodiments, the corresponding trigger expression includes an indicator of the event type (e.g., process creation, a specific system call, etc.). The trigger expression may further include event parameters, such as a path, file name, process ID, etc. In some embodiments, the trigger expression may include variables used by BTVM 34 and/or routine scheduler 32 (see examples below).
触发指示符72可进一步包括指示是否应该以同步或异步方式执行相应例程/字节代码段的旗标。本文使用术语同步来表示执行字节代码例程的方式,其中执行产生触发相应例程的执行的事件的过程(为简单起见,在本文被视为触发过程)在相应例程被执行时暂停。一些实施例使用触发过程的线程执行上下文来执行相应字节代码例程,这隐含地暂停触发过程(或者至少是相应过程的线程)的执行达执行例程的持续时间。触发过程执行的暂停及/或恢复可由相应事件的拦截器来实现。例如,拦截器28a到c可劫持触发过程的线程,及/或仅仅响应于来自例程调度器32的信号而恢复触发过程的执行。与同步执行相反,异步执行是指执行其中触发过程被允许继续执行的字节代码例程的方式,而触发通知的事件被插入到事件队列中用于稍后处理。具有与每一例程或字节代码区段相关联的同步旗标可帮助例程调度器32确定如何处置事件通知(下文给出进一步细节)。The trigger indicator 72 may further include a flag indicating whether the corresponding routine/byte code segment should be executed in a synchronous or asynchronous manner. The term synchronous is used herein to refer to a manner of executing a byte code routine in which the process that generates the event that triggers the execution of the corresponding routine (for simplicity, considered as the triggering process herein) is suspended while the corresponding routine is executed. Some embodiments use the thread execution context of the triggering process to execute the corresponding byte code routine, which implicitly suspends the execution of the triggering process (or at least the thread of the corresponding process) for the duration of the execution of the routine. The suspension and/or resumption of the execution of the triggering process can be implemented by an interceptor of the corresponding event. For example, the interceptor 28a to c can hijack the thread of the triggering process and/or resume the execution of the triggering process only in response to a signal from the routine scheduler 32. In contrast to synchronous execution, asynchronous execution refers to a manner of executing a byte code routine in which the triggering process is allowed to continue execution, while the event that triggered the notification is inserted into an event queue for later processing. Having a synchronization flag associated with each routine or byte code section may help routine scheduler 32 determine how to handle event notifications (further details given below).
在一些实施例中,字节代码区段74包括连续的字节代码指令74a到c,其指示BTVM34执行与例程70相关联的计算机安全任务。在一些实施例中,每一字节代码指令是BTVM 34的虚拟处理器的本机指令。在示范性实施例中,BTVM 34是虚拟机,且字节代码指令74a到c是语言的指令。为使字节代码指令由硬件处理器12执行,相应字节代码指令首先被解译(解释或编译)成本机处理器指令序列,例如,解译成处理器12的指令集架构(ISA)的指令。此类解译至少部分由BTVM 34执行。当安全应用程序40在虚拟平台上执行时,BTVM 34可将每一字节代码指令解译成对于相应虚拟平台的虚拟处理器来说是本机的处理器指令序列。In some embodiments, bytecode segment 74 includes consecutive bytecode instructions 74a-c that instruct BTVM 34 to perform computer security tasks associated with routine 70. In some embodiments, each bytecode instruction is a native instruction for the virtual processor of BTVM 34. In an exemplary embodiment, BTVM 34 is a virtual machine, and bytecode instructions 74a-c are instructions of a language. In order for the bytecode instructions to be executed by hardware processor 12, the corresponding bytecode instructions are first interpreted (or compiled) into a sequence of native processor instructions, for example, into instructions of the instruction set architecture (ISA) of processor 12. This interpretation is performed, at least in part, by BTVM 34. When security application 40 is executed on a virtual platform, BTVM 34 may interpret each bytecode instruction into a sequence of processor instructions that are native to the virtual processor of the corresponding virtual platform.
示范性的字节代码指令集可尤其包括用于设置值、比较值、执行跳转的字节代码指令、循环指令及用于调用外部功能(例如图3中的辅助器模块36的功能)的指令。在一些实施例中,每一字节代码指令包含指示操作的操作代码字段76及指示至少一个操作数的操作数字段78。An exemplary bytecode instruction set may include, among other things, bytecode instructions for setting values, comparing values, performing jumps, looping instructions, and instructions for calling external functions, such as the functions of helper module 36 in FIG 3. In some embodiments, each bytecode instruction includes an opcode field 76 indicating an operation and an operand field 78 indicating at least one operand.
一些字节代码例程可具有多个区段,其中每一区段可具有相异触发指示符。在此类配置中,例程的每一区段可由相异条件触发。在一个此实例中,字节代码例程70可针对检测勒索软件,即加密用户的文件并要求用户在解密相应文件之前支付赎金的恶意软件。勒索软件的实例包括CryptoWall、CryptoLocker及CTB-Locker恶意软件等等。此恶意软件通常会调用加密API、枚举用户的文件、并显示赎金消息。检测此恶意软件的示范性字节代码例程可包含四个区段:Some bytecode routines may have multiple sections, each of which may have a different trigger indicator. In such a configuration, each section of the routine may be triggered by a different condition. In one such example, the bytecode routine 70 may be directed to detecting ransomware, i.e., malware that encrypts a user's files and demands a ransom before decrypting the corresponding files. Examples of ransomware include CryptoWall, CryptoLocker, and CTB-Locker malware, among others. This malware typically calls cryptographic APIs, enumerates the user's files, and displays a ransom message. An exemplary bytecode routine for detecting this malware may include four sections:
区段1:Trigger:EventType=call to a cryptographic functionSection 1: Trigger:EventType=call to a cryptographic function
Output:set static variable CryptoAPICall=TRUEOutput:set static variable CryptoAPICall=TRUE
区段2:Trigger:[EventType=enumerate files using FindFirstFile APIandCryptoAPICall=TRUE]Section 2: Trigger:[EventType=enumerate files using FindFirstFile APIandCryptoAPICall=TRUE]
Do:Check file extension of enumerated filesDo:Check file extension of enumerated files
Output:set static variable RansomDocSearch=TRUE if enumeratedfileshave extensions PDF,DOCX,JPG,...Output:set static variable RansomDocSearch=TRUE if enumeratedfileshave extensions PDF,DOCX,JPG,...
区段3:Trigger:[EventType=attempt to write to a disk file andRansomDocSearch=TRUE]Section 3: Trigger:[EventType=attempt to write to a disk file andRansomDocSearch=TRUE]
Do:determine whether file is among enumerated filesDo:determine whether file is among enumerated files
Output:set RansomActivity=TRUE and increase evaluation score by30pointsOutput:set RansomActivity=TRUE and increase evaluation score by30points
区段4:Trigger:[EventType=change of screen background andRansomActivity=TRUE]Section 4: Trigger:[EventType=change of screen background andRansomActivity=TRUE]
Output:increase evaluation score by 20pointsOutput:increase evaluation score by 20 points
在上文实例中,区段2仅在区段1已至少执行一次时执行,区段3将仅在区段2已执行时执行,等等。In the above example, segment 2 will only execute if segment 1 has been executed at least once, segment 3 will only execute if segment 2 has been executed, and so on.
在一些实施例中,每一字节代码例程进一步包括初始化区段、清除区段及错误区段。初始化区段可包括变量初始化,并且在相应字节代码例程被加载到存储器中时可执行一次(例如,在图5中的步骤108)。清除区段可在相应例程终止时执行。错误区段可包括在相应字节代码例程的任何其它区段的执行期间发生错误的情况下执行的指令。In some embodiments, each bytecode routine further includes an initialization section, a cleanup section, and an error section. The initialization section may include variable initialization and may be executed once when the corresponding bytecode routine is loaded into memory (e.g., at step 108 in FIG. 5 ). The cleanup section may be executed when the corresponding routine terminates. The error section may include instructions that are executed if an error occurs during the execution of any other section of the corresponding bytecode routine.
在一些实施例中,在步骤110(图5)中,安全应用程序40可解析所加载的字节代码例程并创建指示由相应事件类型触发的事件类型与字节代码例程之间的关联的关联指示符(例如,表或散列索引)。此关联使得例程调度器32能够响应于检测到某些事件的发生而选择例程用于执行。In some embodiments, in step 110 ( FIG. 5 ), security application 40 may parse the loaded bytecode routines and create an association indicator (e.g., a table or hash index) indicating the association between event types and bytecode routines triggered by corresponding event types. This association enables routine scheduler 32 to select a routine for execution in response to detecting the occurrence of certain events.
图7展示根据本发明的一些实施例由例程调度器32执行的示范性步骤序列。步骤序列112到114侦听来自拦截器28a到c的事件通知。响应于接收到事件通知42,步骤116确定相应通知事件的一组事件参数47。此类参数可为事件特定的。一些示范性事件参数尤其包含执行通知动作的过程或线程(例如,过程ID)的标识符、文件名、路径、存储器地址以及处理器指令的操作数。事件参数可由拦截器28a到c确定并且包含在事件通知42中,或可由例程调度器32响应于接收到通知42而被确定。在其中通知事件是尝试创建新的磁盘文件的一个实例中,事件参数可包含正在创建的文件的名称。相应文件名可由事件拦截器确定并作为通知42的一部分传输给例程调度器32。在另一实例中,执行特定动作的过程的标识可由例程调度器32直接确定,例如通过解析由OS 30使用来管理当前执行的过程的数据结构。在OS中,每一过程被表示为执行过程块(EPROCESS),其尤其包括到相应过程的线程中的每一者的句柄,以及允许OS 30从多个执行过程标识相应过程的唯一过程ID。类似过程/线程表示可用于其它OS,例如Linux。FIG7 illustrates an exemplary sequence of steps performed by the routine scheduler 32 according to some embodiments of the present invention. The sequence of steps 112 through 114 listens for event notifications from the interceptors 28a through c. In response to receiving an event notification 42, step 116 determines a set of event parameters 47 for the corresponding notification event. Such parameters may be event-specific. Some exemplary event parameters include, among other things, an identifier of the process or thread performing the notification action (e.g., a process ID), a file name, a path, a memory address, and operands of a processor instruction. The event parameters may be determined by the interceptors 28a through c and included in the event notification 42, or may be determined by the routine scheduler 32 in response to receiving the notification 42. In one example where the notification event is an attempt to create a new disk file, the event parameters may include the name of the file being created. The corresponding file name may be determined by the event interceptor and transmitted to the routine scheduler 32 as part of the notification 42. In another example, the identity of the process performing a particular action may be determined directly by the routine scheduler 32, for example by parsing a data structure used by the OS 30 to manage currently executing processes. In the OS, each process is represented as an executing process block (EPROCESS), which includes, among other things, a handle to each of the threads of the corresponding process and a unique process ID that allows the OS 30 to identify the corresponding process from multiple executing processes. Similar process/thread representations are available for other OSes, such as Linux.
某些事件的发生可能需要同步执行相关联的字节代码例程。此类事件的实例尤其包含对相应客户端系统具有实质及/或不可逆的后果的事件,例如终止过程、删除文件及删除注册表项。为管理同步执行,例程调度器32的一些实施例可维护<事件、例程>元组的列表,其中每一元组指示相应例程应响应于相应事件的发生而被同步执行。此类元组可为静态的,例如,每次相应触发发生时,必须以同步方式执行一些例程(或者例程的区段)。静态元组可例如根据与相应例程/区段相关联的同步旗标的值来标识(参见上文)。其它<事件、例程>元组可为情境式的,即可能仅在某些情况下才有效。例如响应于其它事件的发生等,此类元组可被动态地添加及/或从列表移除。在一些实施例中,为同步处理而注册的<事件、例程>元组的列表可根据集由相应客户端系统的用户(例如,管理员)指示的一组选项。一般来说,字节代码例程的同步处理/执行可提供更高的安全性,但可通过减慢一些任务而对用户体验产生负面影响。不同用户可能偏好不同的安全设置。在一些实施例中,每一设置(例如,期望的安全级别)可对应于<事件、例程>列表的不同组成。The occurrence of certain events may require the synchronous execution of associated bytecode routines. Examples of such events include, in particular, events that have substantial and/or irreversible consequences for the corresponding client system, such as terminating a process, deleting a file, and deleting a registry entry. To manage synchronous execution, some embodiments of the routine scheduler 32 may maintain a list of <event, routine> tuples, each of which indicates that a corresponding routine should be executed synchronously in response to the occurrence of a corresponding event. Such tuples may be static, for example, requiring that certain routines (or sections of routines) be executed synchronously each time a corresponding trigger occurs. Static tuples may be identified, for example, by the value of a synchronization flag associated with the corresponding routine/section (see above). Other <event, routine> tuples may be situational, meaning they may only be valid in certain circumstances. For example, such tuples may be dynamically added and/or removed from the list in response to the occurrence of other events. In some embodiments, the list of <event, routine> tuples registered for synchronous processing may be based on a set of options specified by a user (e.g., an administrator) of the corresponding client system. Generally speaking, synchronous processing/execution of bytecode routines can provide greater security, but can negatively impact the user experience by slowing down some tasks. Different users may prefer different security settings. In some embodiments, each setting (e.g., desired security level) can correspond to a different component of the <event, routine> list.
在步骤120中,例程调度器32确定由当前事件通知指示的触发事件的发生是否保证同步处理,例如通过确定是否存在包括相应事件的至少一个<事件、例程>元组。步骤120中的确定可根据相应事件的类型、根据通知42的同步旗标或根据字节代码例程的触发指示符进一步进行。In step 120, routine scheduler 32 determines whether the occurrence of the trigger event indicated by the current event notification warrants synchronous processing, for example, by determining whether there is at least one <event, routine> tuple that includes the corresponding event. The determination in step 120 may be further performed based on the type of the corresponding event, based on a synchronization flag of notification 42, or based on a trigger indicator of the bytecode routine.
在步骤122中,当相应事件的发生不需要同步处理时,例程调度器32将相应事件插入到事件队列31中。进一步步骤124向拦截器28a到c发信号以恢复引起相应事件通知的过程/线程的执行。In step 122, when the occurrence of the corresponding event does not require synchronous processing, the routine scheduler 32 inserts the corresponding event into the event queue 31. A further step 124 signals the interceptors 28a to c to resume execution of the process/thread that caused the corresponding event notification.
在步骤126中,在当前通知事件的发生需要同步处理时,例程调度器32根据相应事件来选择字节代码例程。步骤126可包含标识与当前事件的类型相关联的字节代码例程的子组,并评估每一此例程的触发条件。步骤130包括启动用相应字节代码例程例示的BTVM34的例子。一些实施例使用触发处理的执行线程来执行BTVM 34的相应例子。当步骤126标识由当前事件通知触发的一个以上字节代码例程时,可针对每一此例程重新执行步骤128到130的序列。In step 126, when the occurrence of the current notification event requires synchronous processing, routine scheduler 32 selects a bytecode routine based on the corresponding event. Step 126 may include identifying a subset of bytecode routines associated with the type of the current event and evaluating the triggering condition for each such routine. Step 130 includes launching an instance of BTVM 34 instantiated with the corresponding bytecode routine. Some embodiments use the execution thread of the triggering process to execute the corresponding instance of BTVM 34. If step 126 identifies more than one bytecode routine triggered by the current event notification, the sequence of steps 128 through 130 may be re-executed for each such routine.
在一些实施例中,在步骤132中,例程调度器32等待来自行为评估引擎38及/或BTVM 34的指示对引起通知42的过程的安全性评估的结果的响应。例如,评估可指示相应过程是否是恶意的。在替代实施例中,在步骤132中,调度器32可等待,直到BTVM34完成执行当前字节代码例程。当相应例程已完成执行及/或安全评估完成时,调度器32可向事件拦截器28a到c发信号以恢复执行引起事件通知42的过程。In some embodiments, in step 132, the routine scheduler 32 waits for a response from the behavior assessment engine 38 and/or the BTVM 34 indicating the results of the security assessment of the process that caused the notification 42. For example, the assessment may indicate whether the corresponding process is malicious. In alternative embodiments, in step 132, the scheduler 32 may wait until the BTVM 34 completes execution of the current bytecode routine. When the corresponding routine has completed execution and/or the security assessment is complete, the scheduler 32 may signal the event interceptors 28a-c to resume execution of the process that caused the event notification 42.
图8说明根据本发明的一些实施例的由例程调度器32执行以处理事件队列31的示范性步骤序列。序列步骤142到144等待直到队列31含有至少一个项目。步骤146从队列移除事件。当队列31是FIFO类型时,事件将按照其插入的顺序被删除。在步骤148中,例程调度器32根据事件的类型及/或参数评估触发条件,以标识由相应事件触发的字节代码例程的子组。在步骤序列150到152到154中,调度器32选择每一此例程并将其发送到BTVM 34用于执行。FIG8 illustrates an exemplary sequence of steps performed by routine scheduler 32 to process event queue 31 according to some embodiments of the present invention. Sequence steps 142 through 144 wait until queue 31 contains at least one item. Step 146 removes the event from the queue. When queue 31 is a FIFO type, events are removed in the order in which they were inserted. In step 148, routine scheduler 32 evaluates the triggering conditions based on the type and/or parameters of the event to identify a subset of bytecode routines triggered by the corresponding event. In sequence steps 150 through 152 through 154, scheduler 32 selects each such routine and sends it to BTVM 34 for execution.
图9展示在执行字节代码例程时由字节代码解译虚拟机34执行的示范性步骤序列。在一些实施例中,BTVM 34包括计算机系统的软件仿真,其包括虚拟处理器、虚拟存储器及一组虚拟寄存器。BTVM 34的虚拟处理器将字节代码指令视为其本机指令集。然而,因为字节代码指令不是安全应用程序40在其上执行的平台的本机指令,所以执行字节代码指令包含将每一字节代码指令解译成对于相应平台的处理器来说是本机的处理器指令序列。在一些实施例中,BTVM 34包括代码解释器,其经配置以逐个解释并执行字节代码指令。在替代实施例中,BTVM 34可包含经配置以将字节代码例程的所有指令一起编译成本机代码例程的即时(JIT)编译器。经编译的本机代码例程接着作为一个整体执行。在一些实施例中,BTVM 34包括在处理器12的本机指令集中编码的功能库(例如,类),其中每一类型的字节代码指令对应于所述库的相异功能。在此类情况下,解释字节代码指令可包括根据字节代码指令标识适当的功能,并且执行相应功能。示范性字节代码解译虚拟机尤其包含及虚拟机。FIG9 shows an exemplary sequence of steps performed by the bytecode interpretation virtual machine 34 when executing a bytecode routine. In some embodiments, the BTVM 34 comprises a software emulation of a computer system, including a virtual processor, virtual memory, and a set of virtual registers. The virtual processor of the BTVM 34 treats the bytecode instructions as if they were its native instruction set. However, because the bytecode instructions are not native to the platform on which the security application 40 is executing, executing the bytecode instructions involves interpreting each bytecode instruction into a sequence of processor instructions native to the processor of the corresponding platform. In some embodiments, the BTVM 34 comprises a code interpreter configured to interpret and execute the bytecode instructions one by one. In alternative embodiments, the BTVM 34 may comprise a just-in-time (JIT) compiler configured to compile all instructions of the bytecode routine together into a native code routine. The compiled native code routine is then executed as a whole. In some embodiments, the BTVM 34 comprises a library of functions (e.g., classes) encoded in the native instruction set of the processor 12, wherein each type of bytecode instruction corresponds to a distinct function of the library. In such cases, interpreting the bytecode instructions may include identifying the appropriate function based on the bytecode instructions and executing the corresponding function.Exemplary bytecode interpreting virtual machines include, among others, the bytecode interpreting virtual machines.
在一些实施例中,BTVM 34的虚拟存储器空间被划分成若干区,每一区存储相异类型的变量。一些变量可为LOCAL类型的;此类变量的值对于相应例程或字节代码区段的当前例子可能是唯一的。其它变量可为STATIC类型(专用于特定例程类型,在所述特定类型的例程的所有代码区段中共享,在相同例程/字节代码区段的多个例子中保持其值)。其它变量可为GLOBAL类型(在所有字节代码例程及例子中共享)。BTVM 34的一些实施例也可使用PROCESS类型的变量来操作—这些变量可唯一地附接到例程-处理元组,在所述特定类型的例程的所有代码区段中共享,在相同例程/字节代码区段的多个例子中保持其值,但每一过程都不同。当BTVM 34的虚拟存储器经配置以存储PROCESS类型的变量时,对于由事件拦截器28a到c监测的每一个过程,此类变量可被初始化一次,并且在相应过程终止时被擦除。In some embodiments, the virtual memory space of the BTVM 34 is divided into several areas, each area storing variables of a different type. Some variables may be of type LOCAL; the value of such variables may be unique to the current instance of the corresponding routine or bytecode segment. Other variables may be of type STATIC (specific to a specific routine type, shared across all code segments of that specific type of routine, and retain their value across multiple instances of the same routine/bytecode segment). Other variables may be of type GLOBAL (shared across all bytecode routines and instances). Some embodiments of the BTVM 34 may also operate using variables of type PROCESS—these variables may be uniquely attached to a routine-process tuple, shared across all code segments of that specific type of routine, and retain their value across multiple instances of the same routine/bytecode segment, but different for each process. When the virtual memory of the BTVM 34 is configured to store variables of type PROCESS, such variables may be initialized once for each process monitored by the event interceptors 28a to c and erased when the corresponding process terminates.
在一些实施例中,安全应用程序40维护供BTVM 34使用的线程池。在一个实例中,线程池包括与处理器12的逻辑CPU的计数相同数目的线程。线程池的所有线程可被设置为相同的优先级。当调度字节代码例程时,调度器32可等待下一个可用线程。BTVM34的相异例子因此可在任意的存储器背景中独立并且同时运行。在一些实施例中,BTVM 34的实例可乱序执行,即,不一定按照对其进行触发的事件被插入事件队列31中的相同顺序来执行。In some embodiments, the security application 40 maintains a thread pool for use by the BTVM 34. In one example, the thread pool includes the same number of threads as the number of logical CPUs of the processor 12. All threads of the thread pool can be set to the same priority. When scheduling a byte code routine, the scheduler 32 can wait for the next available thread. Different instances of the BTVM 34 can thus run independently and simultaneously in any memory context. In some embodiments, instances of the BTVM 34 can execute out of order, that is, not necessarily in the same order in which the events that triggered them were inserted into the event queue 31.
响应于从例程调度器32接收到例程指示符46(例如,字节代码例程的存储器地址),BTVM 34可访问字节代码区段74。不失一般性,接下来所说明的步骤描述其中BTVM 34解释并依次执行每一字节代码指令的实施例。技术人员将了解,本描述可适用于描述使用即时(JIT)编译的实施例的操作。在步骤166到168的序列中,BTVM 34可解释字节代码指令并执行由相应指令指示的一组操作。In response to receiving a routine indicator 46 (e.g., the memory address of a bytecode routine) from the routine dispatcher 32, the BTVM 34 may access the bytecode segment 74. Without loss of generality, the steps described below describe an embodiment in which the BTVM 34 interprets and sequentially executes each bytecode instruction. Those skilled in the art will appreciate that this description is applicable to describing the operation of an embodiment using just-in-time (JIT) compilation. In the sequence of steps 166 through 168, the BTVM 34 may interpret the bytecode instructions and perform a set of operations indicated by the corresponding instructions.
一些字节代码指令要求复杂的功能性,例如为由OS 30的功能提供的功能性。为将BTVM 34的复杂性保持最小并减少BTVM 34的攻击表面,一些实施例经由体现为辅助器模块36(图3)的应用程序接口(API)向BTVM 34提供此功能性。模块36可包括一组辅助器函数,其经配置以辅助BTVM 34,执行例如验证文件的存在、尝试将存储器区段的内容与恶意软件指示性签名匹配、枚举文件以及设置评估分数的任务等等。在步骤170中,在当前字节代码指令调用辅助器函数时,字节代码解译VM 34向辅助器模块36发出API调用48。辅助器模块36可进一步与OS 30介接。Some bytecode instructions require complex functionality, such as functionality provided by functions of the OS 30. To minimize the complexity of the BTVM 34 and reduce the attack surface of the BTVM 34, some embodiments provide this functionality to the BTVM 34 via an application programming interface (API) embodied as a helper module 36 ( FIG. 3 ). Module 36 may include a set of helper functions configured to assist the BTVM 34, performing tasks such as verifying the existence of files, attempting to match the contents of memory segments with malware-indicative signatures, enumerating files, and setting assessment scores. In step 170, when the current bytecode instruction calls a helper function, the bytecode interpreting VM 34 issues an API call 48 to the helper module 36. The helper module 36 may further interface with the OS 30.
在一些实施例中,辅助器模块36可具有响应于来自字节代码解译VM 34的API调用(参见例如图3)将新事件添加到事件队列31的功能性。在一个此实例中,字节代码例程的第一部分被同步处理。BTVM 34接着可通过调用辅助器模块36以将新事件添加到队列31而致使相应例程的第二部分稍后(以异步方式)执行,新事件被选择以触发执行例程的第二部分。在另一实例中,所描述的机制可用于执行字节代码例程的级联,其中每一例程通过指示辅助器模块36将新事件插入到事件队列31中来确定级联的下一成员的执行。In some embodiments, facilitator module 36 may include functionality to add new events to event queue 31 in response to an API call from bytecode interpretation VM 34 (see, e.g., FIG3 ). In one such example, the first portion of a bytecode routine is processed synchronously. BTVM 34 may then cause the second portion of the corresponding routine to be executed later (asynchronously) by calling facilitator module 36 to add a new event to queue 31, the new event being selected to trigger execution of the second portion of the routine. In another example, the described mechanism may be used to execute a cascade of bytecode routines, with each routine determining execution of the next member of the cascade by instructing facilitator module 36 to insert a new event into event queue 31.
一些字节代码例程将评估指示符50输出到行为评估引擎38,例如经由API调用到引擎38或到辅助器模块36。评估指示符50可包含指示特定受监测对象(例如,过程)是恶意的可能性的评估分数。另一示范性评估指示符50包括将被添加到由评估引擎38针对相应对象维护的评估分数的分数增量。另一示范性指示符50包含判决结果(例如,干净/恶意)。在一些实施例中,步骤174到176的序列确定是否满足评估条件(例如,是否已计算分数增量),并且在满足评估条件的情况下,将指示符50传输到评估引擎38。Some bytecode routines output an evaluation indicator 50 to the behavior evaluation engine 38, for example, via an API call to the engine 38 or to the facilitator module 36. The evaluation indicator 50 may include an evaluation score indicating the likelihood that a particular monitored object (e.g., a process) is malicious. Another exemplary evaluation indicator 50 includes a score increment to be added to the evaluation score maintained by the evaluation engine 38 for the corresponding object. Another exemplary indicator 50 includes a decision result (e.g., clean/malicious). In some embodiments, the sequence of steps 174 to 176 determines whether an evaluation condition is satisfied (e.g., whether a score increment has been calculated) and, if the evaluation condition is satisfied, transmits the indicator 50 to the evaluation engine 38.
步骤178可验证是否满足终止条件,并且在不满足终止条件的情况下,BTVM 34可前进到当前例程的下一个字节代码指令(参见上文步骤166)。在一些实施例中,步骤178可包括确定是否已执行当前例程/字节代码区段的最后字节代码指令。一些字节代码例程可经配置以执行最长时间;在此类情况下,步骤178可确定自启动当前字节代码例程/区段来执行以来最大允许时间段是否已过去。无论何时在执行相应例程/字节代码区段期间发生错误,都可满足另一示范性终止条件。当满足终止条件时,步骤180可终止BTVM 34的当前例子,并将相应线程释放到线程池中。Step 178 may verify whether a termination condition is satisfied, and if the termination condition is not satisfied, BTVM 34 may proceed to the next bytecode instruction of the current routine (see step 166 above). In some embodiments, step 178 may include determining whether the last bytecode instruction of the current routine/bytecode segment has been executed. Some bytecode routines may be configured to execute for a maximum time; in such cases, step 178 may determine whether the maximum allowed time period has elapsed since the current bytecode routine/bytecode segment was started for execution. Another exemplary termination condition may be satisfied whenever an error occurs during the execution of the corresponding routine/bytecode segment. When the termination condition is satisfied, step 180 may terminate the current instance of BTVM 34 and release the corresponding thread to the thread pool.
在一些实施例中,行为评估引擎38维护受监测软件实体(例如在客户端系统10上执行的过程及线程)的集中式知识库。对于每一此实体,引擎38可存储父子关系指示符(例如,以指示主从关系、注入代码的过程与此代码注入的接收者之间的关系等等)。评估引擎38的一些实施例进一步存储与每一受监测实体相关联的一组评估分数。可根据相异准则来确定每一此分数(例如,每一分数由特定的字节代码例程更新)。在一些实施例中,评分引擎38经配置以根据此类分数确定每一受监测实体是否构成计算机安全威胁。当标识此威胁时,引擎38可针对相应恶意实体采取反恶意软件动作,例如停止相应软件对象的执行或以其它方式使相应软件对象失能。引擎38可进一步提醒客户端系统10及/或系统管理员的用户。In some embodiments, the behavior assessment engine 38 maintains a centralized knowledge base of monitored software entities (e.g., processes and threads executing on the client system 10). For each such entity, the engine 38 may store a parent-child relationship indicator (e.g., to indicate a master-slave relationship, the relationship between the process injecting code and the recipient of such code injection, etc.). Some embodiments of the assessment engine 38 further store a set of assessment scores associated with each monitored entity. Each such score may be determined based on different criteria (e.g., each score is updated by a specific bytecode routine). In some embodiments, the scoring engine 38 is configured to determine whether each monitored entity poses a computer security threat based on such scores. When such a threat is identified, the engine 38 may take anti-malware actions against the corresponding malicious entity, such as stopping the execution of the corresponding software object or otherwise disabling the corresponding software object. The engine 38 may further alert the user of the client system 10 and/or the system administrator.
上述示范性系统及方法允许保护客户端系统免受例如恶意软件及间谍软件的计算机安全威胁。对于多个可执行实体(例如当前在客户端系统上执行的过程及线程)中的每一者,安全应用程序维护一组评估分数,这可指示相应实体构成威胁的可能性。在一些实施例中,响应于执行多个检测例程而产生此类评分,每一例程经配置以根据特定于每一检测例程的准则来评估受监测实体。检测例程可实施各种计算机安全启发式;单独例程可能对应于相异启发式。例如,一个例程可确定受监测实体是否执行恶意软件指示性的动作序列,在所属领域中被称为行为签名。检测例程的执行可响应于检测到特定触发事件的发生而被选择性地触发。The exemplary systems and methods described above allow for protection of client systems from computer security threats such as malware and spyware. For each of a plurality of executable entities (e.g., processes and threads currently executing on the client system), a security application maintains a set of evaluation scores that may indicate the likelihood that the respective entity poses a threat. In some embodiments, such scores are generated in response to executing a plurality of detection routines, each of which is configured to evaluate the monitored entity according to criteria specific to each detection routine. The detection routines may implement various computer security heuristics; separate routines may correspond to different heuristics. For example, a routine may determine whether a monitored entity performs a sequence of actions indicative of malware, known in the art as a behavioral signature. Execution of a detection routine may be selectively triggered in response to detecting the occurrence of a particular triggering event.
在本发明的一些实施例中,以字节代码形式表示检测例程,即,使用不容易由相应客户端系统的处理器执行的自定义指令集。取而代之的是,在执行相应指令之前,在字节代码解译虚拟机内执行检测例程,所述字节代码解译虚拟机使用解释或即时编译技术来将每一字节代码例程解译成对于相应平台的处理器来说是本机的一组处理器指令。In some embodiments of the present invention, the detection routines are expressed in bytecode form, i.e., using a custom instruction set that is not easily executed by the processor of the corresponding client system. Instead, before executing the corresponding instructions, the detection routines are executed within a bytecode interpretation virtual machine, which uses interpretation or just-in-time compilation techniques to interpret each bytecode routine into a set of processor instructions that are native to the processor of the corresponding platform.
在常规计算机安全系统中,检测例程通常被预编译成目标平台的本机代码,并与安全应用程序的其余组件打包在一起。尽管此类配置允许相应检测例程的经优化快速的执行,但其可能难于开发、保持最新并且部署到客户端计算机系统。举例来说,检测例程中的任何小的改变或引入新检测例程/启发式,都可能需要重新编译安全应用程序的大量代码,并且需要部署相对较大的软件更新(例如,若干兆字节)。此外,更新中的软件故障可潜在地降低整个安全应用程序的性能,因此在递送到客户端之前更新通常需要经过大量测试。In conventional computer security systems, detection routines are precompiled into the native code of the target platform usually and are packaged together with the rest of the components of the security application. Although this type of configuration allows the execution of the corresponding detection routine through optimization fast, it may be difficult to develop, keep up to date and be deployed to the client computer system. For example, any little change in the detection routine or the introduction of new detection routine/heuristics may need to recompile a large amount of code of the security application, and need to deploy relatively large software updates (for example, several megabytes). In addition, software failures in the update can potentially reduce the performance of the whole security application, so the update usually needs to be tested before being delivered to the client.
相反,字节代码检测例程的使用允许本发明的一些实施例大大缩短安全解决方案的上市时间,并且简化软件更新过程。由于字节代码检测例程被即时解释或编译,因此可将其开发并递送到与安全解决方案的主要组件分离的客户端。可完全独立于现有例程来开发及实施新检测启发式。如图10中所展示,软件更新可仅包括一组字节代码例程70,总计少至几百字节。为激活新检测能力,可将相应字节代码例程引入到例程数据库26中,并且随后向例程调度器32注册。此外,由于每一检测例程在字节代码解译虚拟机的例子内并且与安全应用程序的其它组件分离地执行,因此字节代码例程内存在的错误或软件故障被包含并且不太可能影响其它软件的操作。In contrast, the use of bytecode detection routines allows some embodiments of the present invention to significantly reduce the time to market for security solutions and simplify the software update process. Because bytecode detection routines are interpreted or compiled on the fly, they can be developed and delivered to clients separate from the main components of the security solution. New detection heuristics can be developed and implemented completely independently of existing routines. As shown in Figure 10, a software update may include only a set of bytecode routines 70, totaling as few as a few hundred bytes. To activate new detection capabilities, the corresponding bytecode routines can be introduced into the routine database 26 and then registered with the routine scheduler 32. In addition, because each detection routine is executed within an instance of the bytecode interpretation virtual machine and separately from other components of the security application, errors or software failures present within the bytecode routines are contained and are less likely to affect the operation of other software.
本发明的一些实施例可使用广泛可用的字节代码解译虚拟机(例如虚拟机或虚拟机)来实现检测例程的解释及/或JIT编译。然而,为最小化架构复杂性并减少字节代码解译虚拟机的攻击表面,一些实施例采用赋予最小功能性的定制解译虚拟机。当在检测例程内调用更复杂的功能性时,一些实施例通过单独辅助器API提供所需的功能性。Some embodiments of the present invention may use widely available bytecode interpreting virtual machines (e.g., virtual machines or VMs) to implement interpretation and/or JIT compilation of the detection routines. However, to minimize architectural complexity and reduce the attack surface of bytecode interpreting virtual machines, some embodiments employ custom interpreting virtual machines with minimal functionality. When more complex functionality is called within the detection routines, some embodiments provide the required functionality through a separate helper API.
由于字节代码解译虚拟机的每一例子可在单独的、独立存储器背景内执行,因此本发明的一些实施例可提供与例如通过容器化提供的相同的安全优点。本发明的其它优点包含便携性。虽然所提出的安全解决方案的一些组件可能需要针对每一类型的客户端装置(例如,计算机系统、智能手机等等)单独编译,但字节代码例程在相同检测例程(包含更新)可递送到所有平台及客户端装置的意义上是平台独立的。Because each instance of the bytecode interpreting virtual machine can execute within a separate, independent memory context, some embodiments of the present invention can provide the same security advantages as provided, for example, by containerization. Other advantages of the present invention include portability. While some components of the proposed security solution may need to be compiled separately for each type of client device (e.g., computer system, smartphone, etc.), the bytecode routines are platform-independent in the sense that the same detection routines (including updates) can be delivered to all platforms and client devices.
本发明的此类优点可能以存储器开销及处理速度为代价。虽然预编译的解决方案针对特定平台的最大性能而被优化,但检测例程的解释及/或JIT编译可使得本发明的一些实施例比预编译的安全应用程序更慢。Such advantages of the present invention may come at the expense of memory overhead and processing speed. Although pre-compiled solutions are optimized for maximum performance on a particular platform, interpretation and/or JIT compilation of detection routines may make some embodiments of the present invention slower than pre-compiled security applications.
所属领域的技术人员将清楚的是,在不脱离本发明的范围的情况下,上文实施例可以许多方式改变。因此,本发明的范围应由随附权利要求书及其合法等效物来确定。It will be apparent to those skilled in the art that the above embodiments can be modified in many ways without departing from the scope of the invention. Therefore, the scope of the invention should be determined by the appended claims and their legal equivalents.
Claims (20)
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/738,548 | 2015-06-12 | ||
| US14/738,548 US9460284B1 (en) | 2015-06-12 | 2015-06-12 | Behavioral malware detection using an interpreter virtual machine |
| PCT/EP2016/062882 WO2016198392A1 (en) | 2015-06-12 | 2016-06-07 | Behavioral malware detection using an interpreter virtual machine |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1246905A1 HK1246905A1 (en) | 2018-09-14 |
| HK1246905B true HK1246905B (en) | 2022-01-21 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN107690645B (en) | Behavioral Malware Detection Using Interpreter Virtual Machines | |
| US10949247B2 (en) | Systems and methods for auditing a virtual machine | |
| KR102297133B1 (en) | Computer security systems and methods using asynchronous introspection exceptions | |
| US10140448B2 (en) | Systems and methods of asynchronous analysis of event notifications for computer security applications | |
| AU2015378729B2 (en) | Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine | |
| US9323931B2 (en) | Complex scoring for malware detection | |
| CN105393255B (en) | Process assessment for the malware detection in virtual machine | |
| US10049211B1 (en) | Hardware-accelerated prevention of code reuse attacks | |
| JP2018524756A (en) | System and method for tracking malicious behavior across multiple software entities | |
| US9596261B1 (en) | Systems and methods for delivering context-specific introspection notifications | |
| US9536084B1 (en) | Systems and methods for delivering event-filtered introspection notifications | |
| US9531735B1 (en) | Systems and methods for delivering introspection notifications from a virtual machine | |
| HK1246905B (en) | Behavioral malware detection using an interpreter virtual machine | |
| HK1254084B (en) | System and methods for auditing a virtual machine | |
| HK1220523B (en) | Complex scoring for malware detection |