[go: up one dir, main page]

HK1216930B - Process evaluation for malware detection in virtual machines - Google Patents

Process evaluation for malware detection in virtual machines Download PDF

Info

Publication number
HK1216930B
HK1216930B HK16104719.4A HK16104719A HK1216930B HK 1216930 B HK1216930 B HK 1216930B HK 16104719 A HK16104719 A HK 16104719A HK 1216930 B HK1216930 B HK 1216930B
Authority
HK
Hong Kong
Prior art keywords
evaluated
score
virtual machine
evaluator
host system
Prior art date
Application number
HK16104719.4A
Other languages
Chinese (zh)
Other versions
HK1216930A1 (en
Inventor
山多尔.卢卡奇
瓦西里.托萨 劳尔-
丹尼尔.博卡 保罗-
弗洛兰.哈嘉玛山 格奥尔基-
弗拉德.鲁塔斯 安德烈-
Original Assignee
比特梵德知识产权管理有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US13/936,058 external-priority patent/US9117080B2/en
Application filed by 比特梵德知识产权管理有限公司 filed Critical 比特梵德知识产权管理有限公司
Publication of HK1216930A1 publication Critical patent/HK1216930A1/en
Publication of HK1216930B publication Critical patent/HK1216930B/en

Links

Description

用于虚拟机中的恶意软件检测的过程评估Process Evaluation for Malware Detection in Virtual Machines

技术领域Technical Field

本发明涉及用于保护计算机系统不受恶意软件攻击的系统及方法,且尤其涉及使用硬件虚拟化技术的反恶意软件系统。The present invention relates to a system and method for protecting a computer system from malware attacks, and more particularly to an anti-malware system using hardware virtualization technology.

背景技术Background Art

恶意软件(Malicious software)(其英文简称为malware)影响世界范围内的大量计算机系统。恶意软件以其众多的形式(例如,计算机病毒、蠕虫及rootkits)对数以百万计的计算机用户造成严重的威胁,使计算机用户易于丢失数据及敏感信息、身份盗用及生产率损失等。Malicious software (malware) affects a large number of computer systems worldwide. In its many forms, such as computer viruses, worms, and rootkits, malware poses a serious threat to millions of computer users, exposing them to data and sensitive information loss, identity theft, and productivity loss.

硬件虚拟化技术允许通常被称作虚拟机的模拟计算机环境的创建,其在许多方面表现为物理计算机系统。在典型应用(例如,服务器整合及基础结构即服务(IAAS))中,若干虚拟机可同时在同一物理机上运行,共享它们之间的硬件资源,因此降低投资及操作成本。每一虚拟机可独立于其它虚拟机而运行其自己的操作系统及/或软件应用程序。归因于恶意软件的稳定增殖,在此环境中操作的每一虚拟机潜在地需要恶意软件保护。Hardware virtualization technology allows the creation of simulated computer environments, often called virtual machines, that behave in many ways like physical computer systems. In typical applications, such as server consolidation and Infrastructure as a Service (IaaS), several virtual machines can run simultaneously on the same physical machine, sharing hardware resources between them and thus reducing investment and operating costs. Each virtual machine can run its own operating system and/or software applications independently of the other virtual machines. Due to the steady proliferation of malware, each virtual machine operating in such an environment potentially requires malware protection.

通常在所属领域中使用的虚拟化解决方案包括管理程序(还被称作虚拟机监视器),其由在计算硬件与虚拟机的操作系统(OS)之间操作的软件层组成,且与相应OS相比较具有更多处理器特权。由于一些恶意软件(例如,rootkits)以OS特权级操作,因此开发以管理程序的特权级执行的反恶意软件解决方案是有利的。Virtualization solutions commonly used in the field include a hypervisor (also known as a virtual machine monitor), which consists of a software layer that operates between the computing hardware and the virtual machine's operating system (OS) and has more processor privileges than the corresponding OS. Because some malware (e.g., rootkits) operate at the OS privilege level, it is advantageous to develop anti-malware solutions that execute at the hypervisor's privilege level.

发明内容Summary of the Invention

根据一个方面,主机系统包括至少一个处理器,所述主机系统经配置以执行:管理程序,其经配置以公开虚拟机;过程评估器,其在所述虚拟机内执行;存储器自省引擎,其在所述虚拟机的外部执行;及过程评分模块。所述过程评估器经配置以确定在所述虚拟机内执行的被评估过程是否执行动作,且作为响应,当所述被评估过程执行所述动作时,将第一过程评估指示符传输到所述过程评分模块,所述第一过程评估指示符是针对所述被评估过程确定。所述存储器自省引擎经配置以拦截对操作系统功能的调用,以检测在所述虚拟机内执行的受保护过程的启动,其中所述操作系统功能经配置以将所述受保护过程添加到在所述虚拟机内执行的过程列表,且响应于检测到所述启动,确定所述被评估过程是否尝试修改所述受保护过程的存储器页,且作为响应,当所述被评估过程尝试修改所述存储器页时,将第二过程评估指示符传输到所述过程评分模块,所述第二过程评估指示符是针对所述被评估过程确定。所述过程评分模块经配置以接收所述第一及第二过程评估指示符,且作为响应,根据所述第一及第二过程评估指示符来确定所述被评估过程是否为恶意的。According to one aspect, a host system includes at least one processor configured to execute: a hypervisor configured to expose a virtual machine; a process evaluator executing within the virtual machine; a memory introspection engine executing external to the virtual machine; and a process scoring module. The process evaluator is configured to determine whether an evaluated process executing within the virtual machine performs an action, and in response, transmits a first process evaluation indicator to the process scoring module when the evaluated process performs the action, the first process evaluation indicator being determined for the evaluated process. The memory introspection engine is configured to intercept calls to operating system functions to detect the launch of a protected process executing within the virtual machine, wherein the operating system function is configured to add the protected process to a list of processes executing within the virtual machine, and in response to detecting the launch, determine whether the evaluated process attempts to modify a memory page of the protected process, and in response, transmits a second process evaluation indicator to the process scoring module when the evaluated process attempts to modify the memory page, the second process evaluation indicator being determined for the evaluated process. The process scoring module is configured to receive the first and second process evaluation indicators and, in response, determine whether the evaluated process is malicious based on the first and second process evaluation indicators.

根据另一方面,一种非暂时性计算机可读媒体编码指令,所述指令当在包括至少一个处理器的主机系统上执行时导致所述主机系统形成:管理程序,其经配置以公开虚拟机;过程评估器,其在所述虚拟机内执行;存储器自省引擎,其在所述虚拟机的外部执行;及过程评分模块。所述过程评估器经配置以确定在所述虚拟机内执行的被评估过程是否执行动作,且作为响应,当所述被评估过程执行所述动作时,将第一过程评估指示符传输到所述过程评分模块,所述第一过程评估指示符是针对所述被评估过程确定。所述存储器自省引擎经配置以拦截对操作系统功能的调用,以检测在所述虚拟机内执行的受保护过程的启动,其中所述操作系统功能经配置以将所述受保护过程添加到在所述虚拟机内执行的过程列表,且响应于检测到所述启动,确定所述被评估过程是否尝试修改所述受保护过程的存储器页,且作为响应,当所述被评估过程尝试修改所述存储器页时,将第二过程评估指示符传输到所述过程评分模块,所述第二过程评估指示符是针对所述被评估过程确定。所述过程评分模块经配置以接收所述第一及第二过程评估指示符,且作为响应,根据所述第一及第二过程评估指示符来确定所述被评估过程是否为恶意的。According to another aspect, a non-transitory computer-readable medium encodes instructions that, when executed on a host system comprising at least one processor, cause the host system to form: a hypervisor configured to expose a virtual machine; a process evaluator executing within the virtual machine; a memory introspection engine executing external to the virtual machine; and a process scoring module. The process evaluator is configured to determine whether an evaluated process executing within the virtual machine performs an action, and in response, transmit a first process evaluation indicator to the process scoring module when the evaluated process performs the action, the first process evaluation indicator being determined for the evaluated process. The memory introspection engine is configured to intercept a call to an operating system function to detect the launch of a protected process executing within the virtual machine, wherein the operating system function is configured to add the protected process to a list of processes executing within the virtual machine, and in response to detecting the launch, determine whether the evaluated process attempts to modify a memory page of the protected process, and in response, transmit a second process evaluation indicator to the process scoring module when the evaluated process attempts to modify the memory page, the second process evaluation indicator being determined for the evaluated process. The process scoring module is configured to receive the first and second process evaluation indicators and, in response, determine whether the evaluated process is malicious based on the first and second process evaluation indicators.

根据另一方面,一种方法包括使用主机系统的至少一个处理器以接收针对被评估过程而确定的第一过程评估指示符,所述被评估过程在由在所述主机系统上执行的管理程序公开的虚拟机内执行。所述方法进一步包括使用所述至少一个处理器以接收针对所述被评估过程而确定的第二过程评估指示符,且响应于接收到所述第一及第二过程评估指示符,使用所述至少一个处理器以根据所述第一及第二过程评估指示符来确定所述被评估过程是否为恶意的。确定所述第一过程评估指示符包括使用在所述虚拟机内执行的过程评估器来确定所述被评估过程是否执行第一动作。确定所述第二过程评估指示符包括使用在所述虚拟机的外部执行的存储器自省引擎来确定所述被评估过程是否执行第二动作。According to another aspect, a method includes, using at least one processor of a host system, receiving a first process evaluation indicator determined for an evaluated process, the evaluated process executing within a virtual machine exposed by a hypervisor executing on the host system. The method further includes, using the at least one processor, receiving a second process evaluation indicator determined for the evaluated process, and in response to receiving the first and second process evaluation indicators, using the at least one processor to determine whether the evaluated process is malicious based on the first and second process evaluation indicators. Determining the first process evaluation indicator includes determining, using a process evaluator executing within the virtual machine, whether the evaluated process performs a first action. Determining the second process evaluation indicator includes determining, using a memory introspection engine executing external to the virtual machine, whether the evaluated process performs a second action.

根据另一方面,一种方法包括使用主机系统的至少一个处理器以执行存储器自省引擎,所述存储器自省引擎在由在所述主机系统上执行的管理程序公开的虚拟机的外部执行,其中执行所述存储器自省引擎包括检测在所述虚拟机内执行的过程的启动。所述方法进一步包括响应于所述存储器自省引擎检测到所述过程的所述启动,使用所述至少一个处理器以确定所述过程的第一及第二过程评估指示符。所述方法进一步包括响应于确定所述第一及第二评估指示符,使用所述至少一个处理器以根据所述第一及第二过程评估指示符来确定所述过程是否为恶意的。According to another aspect, a method includes, using at least one processor of a host system to execute a memory introspection engine, the memory introspection engine executing outside of a virtual machine exposed by a hypervisor executing on the host system, wherein executing the memory introspection engine includes detecting the launch of a process executing within the virtual machine. The method further includes, in response to the memory introspection engine detecting the launch of the process, determining, using the at least one processor, first and second process evaluation indicators for the process. The method further includes, in response to determining the first and second evaluation indicators, determining, using the at least one processor, whether the process is malicious based on the first and second process evaluation indicators.

附图说明BRIEF DESCRIPTION OF THE DRAWINGS

在阅读以下详细描述后及在参考图式后就将更好地理解本发明的前述方面及优点,在图式中:The foregoing aspects and advantages of the present invention will be better understood after reading the following detailed description and after referring to the accompanying drawings, in which:

图1展示根据本发明的一些实施例的受保护而不受恶意软件攻击的主机计算机系统的示范性硬件配置。FIG. 1 shows an exemplary hardware configuration of a host computer system protected from malware attacks according to some embodiments of the present invention.

图2展示根据本发明的一些实施例的由在图1的所述主机系统上执行的管理程序公开的虚拟机的示范性集合,及结合存储器自省引擎操作以保护虚拟机的安全应用程序。2 shows an exemplary set of virtual machines exposed by a hypervisor executing on the host system of FIG. 1 , and a security application operating in conjunction with a memory introspection engine to protect the virtual machines, according to some embodiments of the present invention.

图3说明在各种处理器特权级的主机系统上执行的软件对象的示范性阶层,包含根据本发明的一些实施例的反恶意软件对象的集合。3 illustrates an exemplary hierarchy of software objects executing on a host system at various processor privilege levels, including a set of anti-malware objects according to some embodiments of the present invention.

图4展示根据本发明的一些实施例的接收由多个过程评估器针对过程而确定的多个过程评估指示符的示范性过程评分模块。4 shows an exemplary process scoring module that receives a plurality of process evaluation indicators determined for a process by a plurality of process evaluators, according to some embodiments of the invention.

图5展示根据本发明的一些实施例的由图4的过程评分模块执行的示范性步骤序列。FIG. 5 shows an exemplary sequence of steps performed by the process scoring module of FIG. 4 , according to some embodiments of the present invention.

图6展示根据本发明的一些实施例的图2的系统配置中的存储器地址的示范性映射。6 shows an exemplary mapping of memory addresses in the system configuration of FIG. 2 , according to some embodiments of the present invention.

图7说明在环境中的过程的集合的示范性执行流程。实线箭头指示在不存在反恶意软件系统的情况下的示范性执行流程。虚线箭头指示对所述执行流程的修改,所述修改由根据本发明的一些实施例而操作的多个过程评估器引入。Figure 7 illustrates an exemplary execution flow of a collection of processes in an environment. Solid arrows indicate the exemplary execution flow in the absence of an anti-malware system. Dashed arrows indicate modifications to the execution flow introduced by a plurality of process evaluators operating in accordance with some embodiments of the present invention.

图8说明根据本发明的一些实施例由图2到3的存储器自省引擎执行的示范性步骤序列。8 illustrates an exemplary sequence of steps performed by the memory introspection engine of FIGs. 2-3, according to some embodiments of the invention.

图9展示根据本发明的一些实施例的由存储器自省引擎执行以保护存储器页的示范性步骤序列。9 shows an exemplary sequence of steps performed by a memory introspection engine to protect a memory page, according to some embodiments of the invention.

图10说明包括经由计算机网络连接到安全服务器的多个主机系统的示范性配置。FIG. 10 illustrates an exemplary configuration including multiple host systems connected to a secure server via a computer network.

图11展示根据本发明的一些实施例的主机系统与安全服务器之间的示范性反恶意软件事务。11 shows an exemplary anti-malware transaction between a host system and a secure server according to some embodiments of the present invention.

具体实施方式DETAILED DESCRIPTION

在以下描述中,应理解,结构之间的所有列举的连接可为直接操作连接或通过中介结构的间接操作连接。元件集合包含一或多个元件。元件的任何列举应被理解为是指至少一个元件。多个元件包含至少两个元件。除非另有要求,否则任何所描述的方法步骤未必需要按所说明的特定顺序执行。来源于第二元件的第一元件(例如,数据)涵盖等于第二元件的第一元件,以及通过处理第二元件而产生的第一元件及任选的其它数据。根据参数做出确定或决定涵盖根据参数且任选地根据其它数据做出确定或决定。除非另有指定,否则一些数量/数据的指示符可为所述数量/数据自身,或为与所述数量/数据自身不同的指示符。除非另有指定,否则过程表示计算机程序的例子,其中计算机程序为确定计算机系统以执行指定任务的指令序列。除非另有指定,否则页代表个别地映射到计算机系统的物理存储器的虚拟化物理存储器的最小单元。计算机可读媒体涵盖例如磁性、光学及半导体存储媒体(例如,硬盘驱动器、光盘、块闪存储器、DRAM)的非暂时性媒体,以及例如导电电缆及光纤链路的通信链路。根据一些实施例,本发明尤其提供包括硬件(例如,一或多个处理器)以及计算机可读媒体的计算机系统,所述硬件经编程以执行本文中所描述的方法,所述计算机可读媒体编码指令以执行本文中所描述的方法。In the following description, it should be understood that all enumerated connections between structures may be direct operational connections or indirect operational connections through intermediary structures. An element set includes one or more elements. Any enumeration of elements should be 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 need 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 and optionally other data generated by processing the second element. Making a determination or decision based on a parameter encompasses making a determination or decision based on a parameter and optionally based on 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. Unless otherwise specified, a process represents an example of a computer program, wherein a computer program is a sequence of instructions that determines a computer system to perform a specified task. Unless otherwise specified, a page represents the smallest unit of virtualized physical memory that is individually mapped to the physical memory of a computer system. Computer-readable media encompasses non-transitory media such as magnetic, optical, and semiconductor storage media (e.g., hard drives, optical disks, block 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 processors) programmed to perform the methods described herein and a computer-readable medium encoding instructions to perform 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可表示公司计算装置(例如,企业服务器)或最终用户装置(例如,个人计算机或智能电话等)。其它主机系统包含娱乐装置,例如,电视机及游戏机,或具有支持虚拟化且需要恶意软件保护的存储器及处理器的任何其它装置。图1展示用于说明性目的的计算机系统;其它客户端装置(例如,移动电话或平板计算机)可具有不同配置。在一些实施例中,系统10包括物理装置的集合,其包含处理器12、存储器单元14、输入装置16的集合、输出装置18的集合、存储装置20的集合及网络适配器22的集合,其全部由总线24的集合连接。FIG1 shows an exemplary hardware configuration of a host system 10 that performs anti-malware operations according to some embodiments of the present invention. Host system 10 may represent a corporate computing device (e.g., an enterprise server) or an end-user device (e.g., a personal computer or smartphone, etc.). Other host systems include entertainment devices, such as televisions and game consoles, or any other device with memory and a processor that supports virtualization and requires malware protection. FIG1 shows a computer system for illustrative purposes; other client devices (e.g., mobile phones or tablet computers) may have different configurations. In some embodiments, system 10 includes a collection of physical devices, including a processor 12, a memory unit 14, a collection of input devices 16, a collection of output devices 18, a collection of storage devices 20, and a collection of network adapters 22, all connected by a collection of buses 24.

在一些实施例中,处理器12包括物理装置(例如,多核集成电路),其经配置以用信号及/或数据集合来执行计算及/或逻辑运算。在一些实施例中,此类逻辑运算是以处理器指令序列(例如,机器码或其它软件类型)的形式递送到处理器12。存储器单元14可包括易失性计算机可读媒体(例如,RAM),其存储由处理器12在进行指令期间存取或产生的数据/信号。输入装置16可包含计算机键盘、鼠标及麦克风等等,其包含允许用户将数据及/或指令引入到系统10中的相应硬件接口及/或适配器。输出装置18可包含显示装置(例如,显示器及扬声器等等),以及硬件接口/适配器(例如,图形卡),其允许系统10向用户传达数据。在一些实施例中,输入装置16及输出装置18可共享硬件的公用部分,在触摸屏装置的情况下就是如此。存储装置20包含计算机可读媒体,其实现软件指令及/或数据的非易失性存储、读取及写入。示范性存储装置20包含磁盘与光盘及快闪存储器装置,以及可装卸式媒体(例如,CD及/或DVD盘与驱动器)。网络适配器22的集合使系统10能够连接到计算机网络及/或其它装置/计算机系统。总线24共同地表示多个系统、外围设备及芯片集总线,及/或实现主机系统10的装置12到22的互相通信的所有其它电路。举例来说,总线24可包括将处理器12连接到存储器14的北桥,及/或将处理器12连接到装置16到22的南桥等等。In some embodiments, processor 12 comprises a physical device (e.g., a multi-core integrated circuit) configured to perform computations and/or logical operations using signals and/or data sets. In some embodiments, such logical operations are delivered to processor 12 in the form of a sequence of processor instructions (e.g., machine code or other software type). Memory unit 14 may comprise volatile computer-readable media (e.g., RAM) that stores data/signals accessed or generated by processor 12 during the execution of 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 system 10. Output devices 18 may include a display device (e.g., a monitor and speakers, etc.), as well as hardware interfaces/adapters (e.g., a graphics card) that allow system 10 to communicate data to the user. In some embodiments, input devices 16 and output devices 18 may share common hardware, as is the case in the case of a touchscreen device. Storage device 20 comprises computer-readable media that enables non-volatile storage, reading, and writing of software instructions and/or data. Exemplary storage devices 20 include magnetic and optical disks and flash memory devices, as well as removable media (e.g., CD and/or DVD disks and drives). A collection of network adapters 22 enables system 10 to connect to a computer network and/or other devices/computer systems. Bus 24 collectively represents multiple system, peripheral, and chipset buses, and/or all other circuitry that enables intercommunication among devices 12-22 of host system 10. For example, bus 24 may include a north bridge that connects processor 12 to memory 14, and/or a south bridge that connects processor 12 to devices 16-22, and so on.

图2展示根据本发明的一些实施例的在主机系统10上执行且由管理程序30公开的客户虚拟机32a到b的示范性集合。虚拟机(VM)在所属领域中通常被称作实际物理机/计算机系统的软件模拟,其各自能够独立于其它VM而运行其自己的操作系统及软件。管理程序30包括允许由主机系统10的硬件资源的多个虚拟机的多路复用(共享)的软件,例如,处理器操作、存储器、存储、输入/输出及联网装置。在一些实施例中,管理程序30使多个虚拟机及/或操作系统(OS)能够在主机系统10上同时运行,具有各种程度的隔离。为实现此类配置,管理程序30的软件形成部分可产生多个虚拟化(即)经软件模拟的装置,每一虚拟化装置模拟系统10的物理硬件装置,例如,处理器12及存储器14等等。管理程序30可进一步将虚拟装置的集合指派到在主机系统10上操作的每一VM。因此,每一VM 32a到b如同其拥有其自己的物理装置的集合而操作,即,作为或多或少完整的计算机系统。流行的管理程序的实例包含来自VMware公司(VMware Inc)的VMware vSphereTM,及开源Xen管理程序(open-sourceXen hypervisor)等等。FIG2 shows an exemplary set of guest virtual machines 32a-b executing on a host system 10 and exposed by a hypervisor 30, according to some embodiments of the present invention. A virtual machine (VM) is generally referred to in the art as a software emulation of an actual physical machine/computer system, each capable of running its own operating system and software independently of other VMs. Hypervisor 30 includes software that allows multiple virtual machines to multiplex (share) the hardware resources of host system 10, such as processor operations, memory, storage, input/output, and networking devices. In some embodiments, hypervisor 30 enables multiple virtual machines and/or operating systems (OSs) to run simultaneously on host system 10 with varying degrees of isolation. To achieve such a configuration, the software component of hypervisor 30 may generate multiple virtualized (i.e., software-emulated) devices, each emulating a physical hardware device of system 10, such as processor 12 and memory 14, etc. Hypervisor 30 may further assign a set of virtual devices to each VM operating on host system 10. Thus, each VM 32a-b operates as if it had its own collection of physical devices, ie, as a more or less complete computer system. Examples of popular hypervisors include VMware vSphere from VMware Inc, and the open-source Xen hypervisor, among others.

在一些实施例中,管理程序30包含存储器自省引擎40,其经配置以执行反恶意软件操作,如下文进一步描述。引擎40可并入管理程序30中,或可作为与管理程序30不同且独立于管理程序30的软件组件而被递送,但以与管理程序30实质上类似的处理器特权级执行。单个引擎40可经配置以保护在主机系统10上执行的多个VM不受恶意软件的攻击。In some embodiments, hypervisor 30 includes a memory introspection engine 40 that is configured to perform anti-malware operations, as described further below. Engine 40 may be incorporated into hypervisor 30, or may be delivered as a software component distinct and independent from hypervisor 30, but executing at a substantially similar processor privilege level as hypervisor 30. A single engine 40 may be configured to protect multiple VMs executing on host system 10 from malware.

尽管为简单起见,图2仅展示两个VM 32a到b,但主机系统10可同时执行大量的(例如,几百个)VM,且此类VM的数目可在主机系统10的操作期间改变。在一些实施例中,VM 32a到b各自同时且独立于在主机系统10上运行的其它VM而分别执行客户操作系统34a到b及/或软件应用程序42a到b、42c及44的集合。OS 34a到b各自包括向相应VM 32a到b的(虚拟化)硬件提供接口的软件,且充当在相应OS上执行的软件应用程序的主机。操作系统34a到b可包括任何广泛可用的操作系统,例如,或AndroidTM等等。应用程序42a到c可包含文字处理、图像处理、数据库、浏览器及电子通信应用程序等等。在以下描述中,据称在虚拟机的虚拟处理器上执行的软件在相应虚拟机内执行。例如,在图2中,据称应用程序42b在VM 32a内执行,同时据称应用程序42c在VM 32b内执行。相反,据称存储器自省引擎40在VM 32a到b的外部执行。Although FIG2 shows only two VMs 32a-b for simplicity, host system 10 can execute a large number (e.g., hundreds) of VMs simultaneously, and the number of such VMs can change during operation of host system 10. In some embodiments, each VM 32a-b executes a guest operating system 34a-b and/or a collection of software applications 42a-b, 42c, and 44, respectively, simultaneously and independently of other VMs running on host system 10. Each OS 34a-b includes software that provides an interface to the (virtualized) hardware of the respective VM 32a-b and serves as a host for software applications executing on the respective OS. Operating systems 34a-b can include any widely available operating system, such as iOS or Android , among others. Applications 42a-c can include word processing, image processing, database, browser, and electronic communication applications, among others. In the following description, software executing on a virtual processor of a virtual machine is said to be executing within the respective virtual machine. 2, application 42b is said to be executing within VM 32a, while application 42c is said to be executing within VM 32b. In contrast, memory introspection engine 40 is said to be executing external to VMs 32a-b.

在图2的实例中,安全应用程序44在客户OS 34b上执行,应用程序44经配置以结合存储器自省引擎40而执行反恶意软件(AM)操作(如下文所描述)以保护虚拟机32b不受恶意软件的攻击。在一些实施例中,应用程序44的例子可在在主机系统10上操作的多个VM中的每一者上执行,每一此例子经配置以与自省引擎40介接以保护相应虚拟机。安全应用程序44可为独立程序,或可形成包括反恶意软件、反垃圾邮件及反间谍软件组件等等的软件套件的部分。2 , a security application 44 is executed on guest OS 34 b, with application 44 being configured to perform anti-malware (AM) operations (as described below) in conjunction with memory introspection engine 40 to protect virtual machine 32 b from malware. In some embodiments, an instance of application 44 may be executed on each of a plurality of VMs operating on host system 10, each such instance being configured to interface with introspection engine 40 to protect the respective virtual machine. Security application 44 may be a standalone program, or may form part of a software suite that includes anti-malware, anti-spam, and anti-spyware components, among others.

图3说明根据本发明的一些实施例的在主机系统10上执行的软件对象的阶层。图3是从处理器特权级的角度来表示,在所属领域还被称作层或保护环。在一些实施例中,每一此层或保护环的特征在于指令的集合,其允许执行在相应处理器特权级处执行的软件对象。当软件对象尝试执行在相应特权级内不允许的指令时,所述尝试可触发处理器事件,例如,异常、故障或虚拟机退出事件。在一些实施例中,特权级之间的切换可经由专用指令的集合来实现。此类示范性指令包含SYSCALL/SYSENTER,其从用户级向内核级切换;SYSRET/SYSEXIT,其从内核级向用户级切换;VMCALL,其从用户级或内核级向根级切换;及VMRESUME,其从根级向内核级或用户级切换。Figure 3 illustrates a hierarchy of software objects executing on a host system 10 according to some embodiments of the present invention. Figure 3 is presented from the perspective of processor privilege levels, also known in the art as layers or protection rings. In some embodiments, each such layer or protection ring is characterized by a set of instructions that allow execution of software objects executing at the corresponding processor privilege level. When a software object attempts to execute an instruction that is not allowed within the corresponding privilege level, the attempt may trigger a processor event, such as an exception, fault, or virtual machine exit event. In some embodiments, switching between privilege levels may be accomplished via a set of specialized instructions. Such exemplary instructions include SYSCALL/SYSENTER, which switches from user level to kernel level; SYSRET/SYSEXIT, which switches from kernel level to user level; VMCALL, which switches from user level or kernel level to root level; and VMRESUME, which switches from root level to kernel level or user level.

在一些实施例中,管理程序30控制在最高特权级的处理器12(例如,支持虚拟化的VMXroot on平台,且也被称作环-1或根模式),因此创建呈现为虚拟机32的硬件虚拟化平台到在主机系统10上执行的其它软件。操作系统34(例如,图2中的OS 34a到b)在VM 32的虚拟环境内执行,OS 34具有与管理程序30相比较更少的处理器特权(例如,Intel平台上的环0,或内核模式)。应用程序42d到e的集合以与OS 34相比较更少的处理器特权执行(例如,环3,或用户模式)。In some embodiments, hypervisor 30 controls processor 12 at the highest privilege level (e.g., VMX root on platforms that support virtualization, and also referred to as ring-1 or root mode), thereby creating a hardware virtualization platform that appears as virtual machines 32 to other software executing on host system 10. An operating system 34 (e.g., OS 34 a-b in FIG. 2 ) executes within the virtual environment of VM 32, with OS 34 having fewer processor privileges (e.g., ring 0, or kernel mode, on Intel platforms) than hypervisor 30. A collection of application programs 42 d-e executes with fewer processor privileges (e.g., ring 3, or user mode) than OS 34.

在一些实施例中,安全应用程序44的部分可在用户级处理器特权(即,与应用程序42d到e相同的级)执行。例如,此类部分可包括图形用户接口,其通知用户在相应VM上检测到的任何恶意软件或安全威胁,且从用户接收指示(例如)针对应用程序44的所要配置选项的输入。在用户级执行的组件的另一实例为用户级处理评估器,如下文详细描述。应用程序44的其它部分可在内核特权级执行。例如,应用程序44可安装反恶意软件驱动器36及过程评分模块38,两者皆在内核模式中操作。示范性AM驱动器36向反恶意软件应用程序44提供功能(例如)以扫描存储器是否有恶意软件签名及/或检测过程及/或在OS 34上执行的其它软件对象的恶意软件指示行为。In some embodiments, portions of security application 44 may execute at user-level processor privileges (i.e., at the same level as applications 42d-e). For example, such portions may include a graphical user interface that notifies the user of any malware or security threats detected on the respective VM and receives input from the user indicating, for example, desired configuration options for application 44. Another example of a component executing at user level is a user-level process evaluator, as described in detail below. Other portions of application 44 may execute at kernel privilege levels. For example, application 44 may install an anti-malware driver 36 and a process scoring module 38, both of which operate in kernel mode. The exemplary AM driver 36 provides functionality to anti-malware application 44, for example, to scan memory for malware signatures and/or detect malware-indicative behavior in processes and/or other software objects executing on OS 34.

在一些实施例中,过程评分模块38经配置以从多个软件组件接收过程评估数据,针对被评估过程确定所述过程评估数据,并且根据相应数据来确定所述被评估过程是否为恶意的。过程为计算机程序(例如,应用程序或操作系统的部分)的例子,且其特征在于具有至少一个执行线程及由所述操作系统指派到所述至少一个执行线程的虚拟存储器的区段,相应区段包括可执行代码。在一些实施例中,所述操作系统管理当前在主机系统10上(或虚拟机32内(在虚拟化的情形中))执行的过程,此管理包含将虚拟存储器指派到每一过程及针对执行而调度每一过程或其线程等等。In some embodiments, the process scoring module 38 is configured to receive process evaluation data from a plurality of software components, determine the process evaluation data for an evaluated process, and determine whether the evaluated process is malicious based on the corresponding data. A process is an example of a computer program (e.g., an application or part of an operating system) and is characterized by having at least one thread of execution and a segment of virtual memory assigned to the at least one thread of execution by the operating system, the segment comprising executable code. In some embodiments, the operating system manages the processes currently executing on the host system 10 (or within the virtual machine 32 (in the case of virtualization)), such management including, among other things, assigning virtual memory to each process and scheduling each process or its thread for execution.

图4展示接收多个过程评估指示符52a到d的示范性过程评分模块38,每一指示符52a到d由过程评估器组件确定。在图4中,此评估组件包含用户级过程评估器50a、内核级过程评估器50b及系统调用评估器50c等等。评估器50a到c可由反恶意程序驱动器36建立或形成反恶意程序驱动器36的部分。每一此评估器可独立于其它评估器而执行,且各自可确定被评估过程的多个不同过程评估指示符。下文将进一步详细描述评估器50a到c的操作。在一些实施例中,一些过程评估指示符(例如,图4中的指示符52a到c)由在VM 32内执行的组件来确定,而其它过程评估指示符(例如,52d)由在VM32外部执行的组件(例如,由存储器自省引擎40)来确定。FIG4 shows an exemplary process scoring module 38 that receives a plurality of process evaluation indicators 52a through d, each of which is determined by a process evaluator component. In FIG4 , this evaluation component includes a user-level process evaluator 50a, a kernel-level process evaluator 50b, and a system call evaluator 50c, among others. Evaluators 50a through c may be established by or form part of the anti-malware driver 36. Each of these evaluators may execute independently of the other evaluators and may each determine a plurality of different process evaluation indicators for the evaluated process. The operation of evaluators 50a through c will be described in further detail below. In some embodiments, some process evaluation indicators (e.g., indicators 52a through c in FIG4 ) are determined by components executing within the VM 32, while other process evaluation indicators (e.g., 52d) are determined by components executing outside the VM 32 (e.g., by the memory introspection engine 40).

一些评估指示符可为恶意软件指示的(即,可指示被评估过程为恶意的)。一些评估指示符自身可不为恶意软件指示的,但当其与其它评估指示符组合时可指示恶意。可根据不同方法或标准来确定每一评估指示符52a到d。针对被评估过程确定的示范性过程评估指示符可包含(例如)行为指示符,其指示被评估过程是否执行或尝试执行特定动作(例如编辑VM 32的系统寄存器密钥或写入归属于受保护软件对象的存储器页)。另一示范性过程评估指示符可指示归属于被评估过程的存储器的区段是否含有恶意软件指示签名。在一些实施例中,每一过程评估指示符52a到d包括过程识别指示符(例如,过程ID、标签或散列索引),从而允许模块38识别过程(针对所述过程而确定相应指示符)。Some evaluation indicators may be malware-indicative (i.e., may indicate that the evaluated process is malicious). Some evaluation indicators may not be malware-indicative on their own, but may be indicative of maliciousness when combined with other evaluation indicators. Each evaluation indicator 52a-d may be determined according to different methods or criteria. Exemplary process evaluation indicators determined for an evaluated process may include, for example, a behavior indicator indicating whether the evaluated process performs or attempts to perform a particular action (e.g., edits a system register key of VM 32 or writes to a memory page belonging to a protected software object). Another exemplary process evaluation indicator may indicate whether a segment of memory belonging to the evaluated process contains a malware-indicative signature. In some embodiments, each process evaluation indicator 52a-d includes a process identification indicator (e.g., a process ID, a tag, or a hash index) to allow module 38 to identify the process for which the corresponding indicator is determined.

在一些实施例中,过程评估指示符可包括由相应过程评估器确定的数值得分,所述得分指示相应过程的恶意程度。替代地,此类得分可由模块38根据过程评估指示符52a到d来确定。恶意得分可为二进制(1/0、是/否),或可在连续范围的值中变化。可在一定范围的值内变化的示范性恶意得分包括指示被评估过程为恶意的可能性的数字(例如,概率);此得分可在(例如)0与1之间或0%与100%之间变化。得分值可为行为特定的。举例来说,被评估过程可在其创建磁盘文件时接收0.2的恶意得分,且在其修改Windows注册表值时接收0.7的恶意得分。In some embodiments, a process evaluation indicator may include a numerical score determined by a corresponding process evaluator that indicates the degree of maliciousness of the corresponding process. Alternatively, such a score may be determined by module 38 based on process evaluation indicators 52a-d. The maliciousness score may be binary (1/0, yes/no) or may vary within a continuous range of values. An exemplary maliciousness score that may vary within a range of values includes a number (e.g., a probability) indicating the likelihood that the evaluated process is malicious; such a score may vary, for example, between 0 and 1 or between 0% and 100%. The score values may be behavior-specific. For example, an evaluated process may receive a maliciousness score of 0.2 when it creates a disk file and a maliciousness score of 0.7 when it modifies a Windows registry value.

图5展示根据本发明的一些实施例的由过程评分模块38执行的示范性步骤序列。在步骤302中,模块38从可在VM 32内(参见(例如)图4中的评估器50a到c)或在VM 32外(例如,存储器自省引擎40)操作的过程评估器接收过程评估指示符(例如,图4中的指示符52a到d)。在步骤304中,模块38可识别过程(针对所述过程而确定相应过程评估指示符)。在一些实施例中,过程评分模块38可保存从各种过程评估器接收的所有过程评估指示符的每个过程记录;步骤304可进一步包括将步骤302中接收的指示符添加到相应过程的记录。FIG5 shows an exemplary sequence of steps performed by process scoring module 38 according to some embodiments of the present invention. In step 302, module 38 receives process evaluation indicators (e.g., indicators 52a-d in FIG4 ) from a process evaluator, which may be operable within VM 32 (see, for example, evaluators 50a-c in FIG4 ) or outside VM 32 (e.g., memory introspection engine 40). In step 304, module 38 may identify the process for which the corresponding process evaluation indicator was determined. In some embodiments, process scoring module 38 may save a per-process record of all process evaluation indicators received from the various process evaluators; step 304 may further include adding the indicator received in step 302 to the record of the corresponding process.

为确定被评估过程是否为恶意的,在步骤306中,过程评分模块38可通过组合针对相应过程而确定的及从各种过程评估器接收的个别得分来确定累积得分。示范性累积得分包括个别得分的加权总和及加权平均。在一些实施例中,累积得分可将针对被评估过程而确定的过程评估指示符/得分与针对其它过程或软件对象而确定的过程评估指示符/得分组合。例如,可将针对被评估过程而确定的得分与针对被评估过程的子过程而确定的得分组合,及/或与针对被评估过程的母过程而确定的得分组合。To determine whether the evaluated process is malicious, in step 306, the process scoring module 38 may determine a cumulative score by combining the individual scores determined for the corresponding process and received from various process evaluators. Exemplary cumulative scores include a weighted sum and a weighted average of the individual scores. In some embodiments, the cumulative score may combine the process evaluation indicator/score determined for the evaluated process with process evaluation indicators/scores determined for other processes or software objects. For example, the score determined for the evaluated process may be combined with scores determined for child processes of the evaluated process and/or with a score determined for the parent process of the evaluated process.

在步骤308中,模块38可将累积得分与预定阈值相比较。当累积得分未超过所述阈值时,模块38可返回上文所描述的步骤302。在一些实施例中,所述阈值可被设置成根据从相应VM的用户接收(例如,通过由安全应用程序44公开的用户接口)的输入而确定的值。阈值可反映相应用户的安全首选项。例如,当用户选择严密安全时,可将阈值设置成相对较低的值;当用户优选更宽容的安全设置时,可将阈值设置成相对较高的值。在一些实施例中,可从远程安全服务器接收阈值,如下文关于图10到11所描述。In step 308, module 38 may compare the cumulative score to a predetermined threshold. If the cumulative score does not exceed the threshold, module 38 may return to step 302 described above. In some embodiments, the threshold may be set to a value determined based on input received from a user of the corresponding VM (e.g., via a user interface exposed by security application 44). The threshold may reflect the security preferences of the corresponding user. For example, when the user selects tight security, the threshold may be set to a relatively low value; when the user prefers a more permissive security setting, the threshold may be set to a relatively high value. In some embodiments, the threshold may be received from a remote security server, as described below with respect to Figures 10 and 11.

在一些实施例中,在步骤306到308中,过程评分模块38可确定多个累积得分,且将每一累积得分与(可能不同的)阈值相比较。可根据过程评估指示符的不同子集来确定每一此累积得分。在示范性实施例中,过程评估指示符的每一此集合可表示特定类别或类型的恶意软件(例如,特洛伊木马、rootkits等等),从而允许模块38执行经检测的恶意软件的分类。In some embodiments, in steps 306-308, process scoring module 38 may determine multiple cumulative scores and compare each cumulative score to a (possibly different) threshold. Each such cumulative score may be determined based on a different subset of process evaluation indicators. In an exemplary embodiment, each such set of process evaluation indicators may represent a particular class or type of malware (e.g., Trojans, rootkits, etc.), thereby allowing module 38 to perform classification of the detected malware.

当累积得分超过阈值时,在步骤310中,模块38可决定被评估过程为恶意的,且可采取反恶意软件动作。在一些实施例中,此反恶意软件动作可尤其包含终止被评估过程、隔离被评估过程及移除或停用被评估过程的源(例如,文件或存储器的区段)。在一些实施例中,反恶意软件动作可进一步包括提醒主机系统10的用户,及/或提醒系统管理员,例如,通过将消息通过经由网络适配器22连接到主机系统10的计算机网络发送给系统管理员。在一些实施例中,反恶意软件动作还可包括将安全报告发送到远程安全服务器,如下文关于图10到11所描述。When the cumulative score exceeds a threshold, module 38 may determine that the evaluated process is malicious and may take anti-malware action in step 310. In some embodiments, such anti-malware action may include, among other things, terminating the evaluated process, isolating the evaluated process, and removing or disabling the source of the evaluated process (e.g., a file or memory segment). In some embodiments, the anti-malware action may further include alerting a user of host system 10, and/or alerting a system administrator, for example, by sending a message to the system administrator via a computer network connected to host system 10 via network adapter 22. In some embodiments, the anti-malware action may also include sending a security report to a remote security server, as described below with respect to Figures 10-11.

图3到4中所描绘的示范性过程评分模块38以OS处理器特权级(例如,内核模式)在VM 32内操作。在替代实施例中,过程评分模块38可以用户模式在VM 32内执行,或甚至以管理程序30的处理器特权级在VM 32外部操作。3-4 operates at an OS processor privilege level (e.g., kernel mode) within VM 32. In alternative embodiments, process scoring module 38 may execute in user mode within VM 32, or even operate outside VM 32 at the processor privilege level of hypervisor 30.

在一些实施例中,自省引擎40以实质上与管理程序30相同的特权级执行,且经配置以执行虚拟机(例如,VM 32)的自省。VM的自省或在相应VM上执行的软件对象的自省可包括:分析所述软件对象的行为,确定及/或存取此类软件对象的存储器地址,将某些过程的存取限制到在此类地址处定位的存储器的内容,分析此内容,且确定相应软件对象的过程评估指示符(例如,图4中的指示符52d)等等。在一些实施例中,作为自省引擎40的目标的软件对象包括过程、指令流、寄存器及数据结构(例如,页表)以及相应VM的驱动器对象等等。In some embodiments, introspection engine 40 executes at substantially the same privilege level as hypervisor 30 and is configured to perform introspection of a virtual machine (e.g., VM 32). Introspection of a VM, or software objects executing on a respective VM, may include analyzing the behavior of the software objects, determining and/or accessing memory addresses of such software objects, restricting access of certain processes to the contents of memory located at such addresses, analyzing such contents, and determining a process evaluation indicator (e.g., indicator 52d in FIG. 4 ) for the respective software objects. In some embodiments, software objects that are targets of introspection engine 40 include, among others, processes, instruction streams, registers and data structures (e.g., page tables), and driver objects for the respective VM.

为从相应VM的外部执行VM 32的自省,引擎40的一些实施例使用存储器映射结构及处理器12的机制。虚拟机通常与虚拟化物理存储器(即,主机系统10的实际物理存储器14的虚拟表示)一起操作。虚拟化物理存储器包括虚拟化地址的连续空间,具体到在主机系统10上执行的每一客户VM,其中相应空间的部分映射到物理存储器14及/或物理存储装置20内的地址。在经配置以支持虚拟化的系统中,此映射通常通过由处理器12控制的专用数据结构(例如,扩展页表(EPT)或嵌套页表(NPT))来实现。在此类系统中,虚拟化物理存储器可被划分成所属领域中已知的作为页的单元。页表示经由机制(例如,EPT及/或NPT)个别地映射到物理存储器的虚拟化物理存储器的最小单元,即,使用页粒度来执行物理存储器与虚拟化物理存储器之间的映射。所有页通常具有预定大小,例如,4千字节、2兆字节等等。将虚拟化物理存储器划分成页通常由管理程序30配置。在一些实施例中,管理程序30还配置EPT/NPT且因此配置物理存储器与虚拟化物理存储器之间的映射。虚拟化存储器地址到物理存储器地址的实际转译可包括在主机系统10的转译后备缓冲器(TLB)中查找物理存储器地址。在一些实施例中,地址转译包括执行页行走,其包含在页表的集合中的连续地址查找的集合,且执行计算(例如,将页的偏移添加到与相应页相关的地址)。To perform introspection of VM 32 from outside the corresponding VM, some embodiments of engine 40 utilize memory mapping structures and mechanisms of processor 12. Virtual machines typically operate with virtualized physical memory (i.e., a virtual representation of actual physical memory 14 of host system 10). Virtualized physical memory comprises a contiguous space of virtualized addresses, specific to each guest VM executing on host system 10, with portions of the corresponding space mapped to addresses within physical memory 14 and/or physical storage devices 20. In systems configured to support virtualization, this mapping is typically implemented via dedicated data structures controlled by processor 12, such as extended page tables (EPTs) or nested page tables (NPTs). In such systems, virtualized physical memory may be divided into units known in the art as pages. A page represents the smallest unit of virtualized physical memory that is individually mapped to physical memory via mechanisms such as the EPT and/or NPT. That is, mapping between physical and virtualized physical memory is performed using a page granularity. All pages typically have a predetermined size, such as 4 kilobytes, 2 megabytes, and so on. The division of virtualized physical memory into pages is typically configured by the hypervisor 30. In some embodiments, the hypervisor 30 also configures the EPT/NPT and, therefore, the mapping between physical memory and virtualized physical memory. The actual translation of the virtualized memory address to the physical memory address may include looking up the physical memory address in a translation lookaside buffer (TLB) of the host system 10. In some embodiments, address translation includes performing a page walk, which includes a set of consecutive address lookups in a set of page tables, and performing calculations (e.g., adding a page offset to an address associated with the corresponding page).

一些硬件配置允许管理程序30选择性地控制对存储于每一页内的数据的存取,例如通过设置对相应页的读取及写入存取权限。例如,通过修改EPT或NPT内的相应页的条目可设置此权限。管理程序30可因此选择哪一个软件对象可存取存储在每一页内的地址处的数据,且可指示允许借助于相应数据的哪些操作,例如,读取、写入等等。由在VM内执行的软件对象尝试执行操作(例如,从页读取数据或将数据写入页,所述对象不具有对所述页的相应权限)可触发虚拟机退出事件(例如,Intel平台上的VM退出事件)。在一些实施例中,虚拟机退出事件将处理器的控制从执行相应软件对象的VM转移到管理程序30或存储器自省引擎40,因此允许管理程序30及/或引擎40拦截及分析未经授权的读取/写入尝试。Some hardware configurations allow the hypervisor 30 to selectively control access to the data stored within each page, for example, by setting read and write access permissions for the corresponding page. For example, such permissions can be set by modifying the entry for the corresponding page within the EPT or NPT. The hypervisor 30 can thus select which software objects can access the data stored at the address within each page and can indicate which operations are allowed on the corresponding data, such as reads, writes, etc. An attempt by a software object executing within a VM to perform an operation (e.g., read data from or write data to a page for which the object does not have the corresponding permissions) can trigger a virtual machine exit event (e.g., a VM exit event on an Intel platform). In some embodiments, the virtual machine exit event transfers control of the processor from the VM executing the corresponding software object to the hypervisor 30 or memory introspection engine 40, thereby allowing the hypervisor 30 and/or engine 40 to intercept and analyze unauthorized read/write attempts.

在一些实施例中,OS 34配置虚拟存储器空间(也称作逻辑地址空间)且将所述虚拟存储器空间公开到例如图3中的应用程序42d到e及44的应用程序。在此类系统中,OS 34配置且维持虚拟存储器空间与VM 32的虚拟化物理存储器之间的映射,例如,使用页表机制。在一些实施例中,虚拟存储器空间还被划分成页,此类页表示个别地由OS 34映射到虚拟化物理存储器的虚拟存储器的最小单元(借助于页粒度执行虚拟到虚拟化物理存储器映射)。In some embodiments, OS 34 configures a virtual memory space (also referred to as a logical address space) and exposes the virtual memory space to applications, such as applications 42d through e and 44 in FIG 3. In such systems, OS 34 configures and maintains a mapping between the virtual memory space and the virtualized physical memory of VM 32, for example, using a page table mechanism. In some embodiments, the virtual memory space is further divided into pages, which represent the smallest unit of virtual memory that is individually mapped to virtualized physical memory by OS 34 (virtual-to-virtualized physical memory mapping is performed with the aid of a page granularity).

图6说明根据图2中所展示的实施例的存储器地址的示范性映射(转译)。软件对象(例如,在VM 32a内执行的应用程序或过程)由客户OS 34a指派虚拟地址空间214a。当相应软件对象尝试存取空间214a的示范性存储器地址60a时,由客户VM 32a的虚拟化处理器根据由客户OS 34a配置且控制的页表将地址60a转译成虚拟机32a的虚拟化物理存储器空间114a内的地址60b。地址60b在所属领域还被称作客户-物理地址。管理程序30(其配置且控制虚拟化物理存储器114a)(例如)使用如上文所论述的EPT或NPT方式将地址60b映射到主机系统10的物理存储器14内的地址60c。FIG6 illustrates an exemplary mapping (translation) of memory addresses according to the embodiment shown in FIG2 . A software object (e.g., an application or process executing within VM 32a) is assigned a virtual address space 214a by guest OS 34a. When the corresponding software object attempts to access an exemplary memory address 60a of space 214a, the virtualization processor of guest VM 32a translates address 60a into an address 60b within virtualized physical memory space 114a of virtual machine 32a according to a page table configured and controlled by guest OS 34a. Address 60b is also referred to in the art as a guest-physical address. Hypervisor 30 (which configures and controls virtualized physical memory 114a) maps address 60b to address 60c within physical memory 14 of host system 10, for example, using the EPT or NPT approach discussed above.

类似地,虚拟存储器空间214b由针对应用程序(例如,42c)的客户OS 34b或在客户VM 32b上执行的其它软件对象来建立。由客户VM 32b的虚拟化处理器根据由客户OS34b配置且控制的页表将空间214b内的示范性虚拟地址60d转译成客户VM 32b的虚拟化物理存储器空间114b内的地址60e。地址60e进一步由管理程序30映射到物理存储器14内的地址60f。Similarly, virtual memory space 214b is established by guest OS 34b for applications (e.g., 42c) or other software objects executing on guest VM 32b. An exemplary virtual address 60d within space 214b is translated by the virtualization processor of guest VM 32b into address 60e within virtualized physical memory space 114b of guest VM 32b according to a page table configured and controlled by guest OS 34b. Address 60e is further mapped by hypervisor 30 to address 60f within physical memory 14.

在一些实施例中,管理程序30建立其自己的虚拟存储器空间214c(包括物理存储器14的表示),且使用转译机制(例如,页表)将空间214c中的地址映射到物理存储器14中的地址。在图6中,此类示范性映射将地址60g转译成地址60h。类似地,物理存储器14中的地址(例如60c及60f)分别对应于管理程序30的虚拟存储器空间214c内的地址60k及60m。此转译允许管理程序30管理(例如,读取、写入及控制存取)归属于在主机系统10上运行的各种VM内执行的软件对象的存储器页。In some embodiments, the hypervisor 30 establishes its own virtual memory space 214c (including a representation of physical memory 14) and uses a translation mechanism (e.g., a page table) to map addresses in space 214c to addresses in physical memory 14. In Figure 6, such an exemplary mapping translates address 60g to address 60h. Similarly, addresses in physical memory 14 (e.g., 60c and 60f) correspond to addresses 60k and 60m, respectively, within the hypervisor's 30 virtual memory space 214c. This translation allows the hypervisor 30 to manage (e.g., read, write, and control access to) memory pages belonging to software objects executing within the various VMs running on the host system 10.

图7说明根据本发明的一些实施例的在VM 32上执行的过程70a到b的集合的示范性执行流程。图7的实例展示运行OS版本的系统中的执行流程;针对其它操作系统(例如,Linux)可呈现类似图。实线箭头表示在不存在反恶意软件系统(例如,安全应用程序44)的情况下的执行流程。虚线箭头表示归因于根据本发明的一些实施例而执行的过程评估器的存在而对所述流程的修改。FIG7 illustrates an exemplary execution flow of a set of processes 70a-b executed on VM 32 according to some embodiments of the present invention. The example of FIG7 shows the execution flow in a system running a version of OS; similar diagrams may be presented for other operating systems (e.g., Linux). Solid arrows represent the execution flow in the absence of an anti-malware system (e.g., security application 44). Dashed arrows represent modifications to the flow due to the presence of a process evaluator executed according to some embodiments of the present invention.

过程70a包括多个动态链接库(DLL)72a到c;在图7的实例中,DLL 72c由(可能是恶意的)过程70b注入过程70a。代码注入为所属领域中使用以指示将代码序列(例如,DLL)引入现有过程的存储器空间以改变相应过程的原始功能性的一族方法的通用术语。当过程70a执行要求一些系统功能性(例如,将一些东西写入磁盘文件,或编辑注册表密钥)的指令时,相应指令调用用户模式API(例如,KERNEL32.DLL或NTDLL.DLL)。在图7的实例中,由用户级行为过滤器50a拦截且分析相应用户模式API调用。此拦截可通过例如DLL注入或挂钩等的方法来实现。挂钩为所属领域中使用的针对拦截在软件组件之间传递的功能调用或消息或事件的方法的通用术语。一个示范性挂钩方法包括通过插入重新定向到第二功能的执行的指令来改变目标功能的入口点。遵循此挂钩,可替代执行所述目标功能而执行所述第二功能,或在执行所述目标功能之前执行第二功能。在图7的实例中,反恶意软件驱动器36可挂钩到KERNEL32.DLL或NTDLL.DLL的某些功能中,从而指示相应功能重新定向到过滤器50a的执行。因此,过滤器50a可检测过程70a正尝试执行根据执行重新定向的功能而识别的特定行为。当过滤器50a检测到此行为时,过滤器50可制定过程评估指示符52a(图4)且将指示符52a传输到过程评分模块38。Process 70a includes multiple dynamic link libraries (DLLs) 72a through c; in the example of FIG. 7 , DLL 72c is injected into process 70a by (possibly malicious) process 70b. Code injection is a general term used in the art to refer to a family of methods for introducing a code sequence (e.g., a DLL) into the memory space of an existing process to alter the original functionality of the corresponding process. When process 70a executes an instruction requiring some system functionality (e.g., writing something to a disk file or editing a registry key), the corresponding instruction calls a user-mode API (e.g., KERNEL32.DLL or NTDLL.DLL). In the example of FIG. 7 , the corresponding user-mode API call is intercepted and analyzed by user-level behavior filter 50a. This interception can be achieved through methods such as DLL injection or hooking. Hooking is a general term used in the art for methods for intercepting function calls, messages, or events passed between software components. One exemplary hooking method involves changing the entry point of a target function by inserting instructions that redirect the execution of a second function. Following this hook, the second function may be executed instead of the target function, or before the target function. In the example of FIG7 , the anti-malware driver 36 may hook into certain functions in KERNEL32.DLL or NTDLL.DLL, thereby instructing the corresponding functions to redirect execution to the filter 50a. Thus, the filter 50a can detect that the process 70a is attempting to perform a specific behavior identified based on the function being redirected. When the filter 50a detects this behavior, the filter 50a may formulate a process evaluation indicator 52a ( FIG4 ) and transmit the indicator 52a to the process scoring module 38.

在典型的执行流程中,用户模式API功能可从操作系统的内核请求服务。在一些实施例中,此类操作通过发出系统调用(例如,x86平台上的SYSCALL及SYSENTER)来执行。在图7的实例中,此类系统调用由系统调用评估器50c拦截。在一些实施例中,此拦截包括(例如)通过改变存储于处理器12的模式特定的寄存器(MSR)中的值来修改系统调用处理程序例程,其有效地重新定向到过滤器50c的执行。此类技术在所属领域中被称作MRS挂钩,且可允许系统调用评估器50c检测被评估过程正尝试执行某些系统调用。当此类系统调用被拦截时,系统调用过滤器50c可制定过程评估指示符52c且将指示符52c传输到过程评分模块38。In a typical execution flow, user-mode API functions may request services from the operating system's kernel. In some embodiments, such operations are performed by issuing system calls (e.g., SYSCALL and SYSENTER on x86 platforms). In the example of FIG. 7 , such system calls are intercepted by a system call evaluator 50c. In some embodiments, this interception includes, for example, modifying a system call handler routine by changing values stored in mode-specific registers (MSRs) of the processor 12, effectively redirecting execution to the filter 50c. Such techniques are known in the art as MRS hooking and can allow the system call evaluator 50c to detect that an evaluated process is attempting to execute certain system calls. When such a system call is intercepted, the system call filter 50c may generate a process evaluation indicator 52c and transmit the indicator 52c to the process scoring module 38.

继系统调用之后,处理器的控制通常被移交到OS 34的内核。在一些实施例中,内核级过程评估器50b经配置以拦截OS内核的某些操作,且因此确定被评估过程正尝试执行某些操作(其可为恶意的)。为拦截此类操作,一些实施例可使用内置于OS 34且由OS 34公开的过滤机制的集合。举例来说,在Windows OS中,FltRegisterFilter可用以拦截如创建文件、打开文件、写入文件及删除文件的操作。在另一实例中,评估器50b可使用ObRegisterCallback以拦截创建或复制对象处置操作,或使用PsSetCreateProcessNotifyRoutine以拦截新过程的创建。在另一实施例中,可使用CmRegisterCallbackEx来拦截Windows注册表操作(例如,创建及设置注册表密钥/值)。所述领域中已知针对其它操作系统(例如,)的类似过滤机制。当内核模式过程评估器50b拦截此类操作时,评估器50b可制定过程评估指示符52b且将指示符52b传输到过程评分模块38。Following the system call, control of the processor is typically transferred to the kernel of the OS 34. In some embodiments, the kernel-level process evaluator 50b is configured to intercept certain operations of the OS kernel and, therefore, determine that the evaluated process is attempting to perform certain operations (which may be malicious). To intercept such operations, some embodiments may use a set of filtering mechanisms built into and disclosed by the OS 34. For example, in the Windows OS, FltRegisterFilter may be used to intercept operations such as creating a file, opening a file, writing a file, and deleting a file. In another example, the evaluator 50b may use ObRegisterCallback to intercept create or copy object disposal operations, or use PsSetCreateProcessNotifyRoutine to intercept the creation of a new process. In another embodiment, CmRegisterCallbackEx may be used to intercept Windows registry operations (e.g., creating and setting registry keys/values). Similar filtering mechanisms for other operating systems (e.g., ) are known in the art. When kernel mode process evaluator 50b intercepts such an operation, evaluator 50b may formulate a process evaluation indicator 52b and transmit indicator 52b to process scoring module 38 .

为将数据(例如,过程评估指示符52a到c)从评估器50a到c传输到评分模块38,所属领域的技术人员可使用任何过程间通信方法。例如,为在用户模式组件与内核模式组件之间通信,评估器50a到c及模块38可经配置以使用存储器的共享区段。To transfer data (e.g., process evaluation indicators 52a-c) from evaluators 50a-c to scoring module 38, one skilled in the art may use any inter-process communication method. For example, to communicate between user-mode components and kernel-mode components, evaluators 50a-c and module 38 may be configured to use a shared section of memory.

图8展示根据本发明的一些实施例的由存储器自省引擎40执行的示范性步骤序列。在步骤312中,引擎40可检测在VM 32内启动需要保护以不受恶意软件的攻击的过程(以下称作受保护过程)。在一些实施例中,此类受保护过程包含归属于安全应用程序44的过程等等。FIG8 shows an exemplary sequence of steps performed by memory introspection engine 40 according to some embodiments of the present invention. In step 312, engine 40 may detect the launch of a process within VM 32 that requires protection from malware (hereinafter referred to as a protected process). In some embodiments, such protected processes include, among others, processes belonging to security application 44.

为检测受保护过程的启动,引擎40可使用OS 34原生的数据结构及/或机制。举例来说,一些版本的OS使用由内核维持的作用过程列表来管理过程。每一次过程被创建,将相应过程的指示符插入所述作用过程列表;在相应过程终止时,将所述指示符从所述列表移除。在一些实施例中,OS 34的内核将每一过程表示为数据结构(例如,Windows中的执行过程块(EPROCESS)),其包括对相应过程的线程中的每一者的处置及允许OS 34从多个执行过程识别相应过程的唯一过程ID等等。To detect the launch of a protected process, the engine 40 may use data structures and/or mechanisms native to the OS 34. For example, some versions of the OS manage processes using a list of active processes maintained by the kernel. Each time a process is created, an indicator for the corresponding process is inserted into the active process list; when the corresponding process terminates, the indicator is removed from the list. In some embodiments, the kernel of the OS 34 represents each process as a data structure (e.g., an executing process block (EPROCESS) in Windows) that includes, among other things, a handle for each of the corresponding process's threads and a unique process ID that allows the OS 34 to identify the corresponding process from multiple executing processes.

为检测受保护过程的创建(图8中的步骤312),一些实施例使用所属领域已知的任何挂钩方法挂钩到操纵作用过程列表的内核功能中。Windows OS的此功能的实例为PspInsertProcess,其在启动相应过程到执行时将过程添加到作用过程列表。AM驱动器36的一些实施例可将重新定向补丁应用到相应内核功能,例如,VMCALL指令或JMP指令。其它实施例可修改相应内核功能的EPT条目以指向新地址。此类补丁及/或EPT挂钩的作用是将原生OS功能的执行重新定向到由存储器自省引擎40提供的代码片段。继挂钩之后,当OS 34尝试将过程启动到执行时,将在执行相应内核功能的代码之前执行所述代码片段或替代执行相应内核功能的代码而执行所述代码片段,因此向存储器自省引擎40通知正执行相应过程。在一些实施例中,引擎40可根据在启动相应过程时传递到内核功能的参数(例如,包含所述唯一过程ID的EPROCESS结构)来识别相应过程。替代实施例可使用存储器挂钩(例如,EPT挂钩)来获取对存储作用过程列表的存储器的区段的地址的存取,且根据相应存储器区段的内容,进一步确定描述当前执行的每一过程的EPROCESS结构的地址。To detect the creation of a protected process (step 312 in FIG. 8 ), some embodiments use any hooking method known in the art to hook into the kernel function that manipulates the active process list. An example of this function in the Windows OS is PspInsertProcess, which adds a process to the active process list when launching the corresponding process for execution. Some embodiments of the AM driver 36 may apply a redirection patch to the corresponding kernel function, such as a VMCALL instruction or a JMP instruction. Other embodiments may modify the EPT entry for the corresponding kernel function to point to a new address. Such a patch and/or EPT hook serves to redirect the execution of the native OS function to a code snippet provided by the memory introspection engine 40. Following the hook, when the OS 34 attempts to launch the process for execution, the code snippet will be executed before or instead of the code for the corresponding kernel function, thereby notifying the memory introspection engine 40 that the corresponding process is executing. In some embodiments, the engine 40 may identify the corresponding process based on parameters passed to the kernel function when launching the corresponding process (e.g., an EPROCESS structure containing the unique process ID). Alternative embodiments may use a memory hook (eg, an EPT hook) to gain access to the address of a section of memory storing a list of active procedures, and from the contents of the corresponding memory section, further determine the address of an EPROCESS structure describing each currently executing procedure.

在步骤314中,存储器自省引擎40可向AM驱动器36通知正执行受保护过程。例如,引擎40可将指示符(例如,受保护过程的过程ID)发送到AM驱动器36。接下来,在步骤316中,引擎40可从驱动器36接收存储器页的指示符(例如,在虚拟存储器中的页的地址),所述存储器页存储受保护过程的代码及/或数据。在一些实施例中,引擎40使用步骤314到316以桥接语义鸿沟,所述语义鸿沟的出现是因为引擎40在VM 32外部执行,而受保护过程在VM 32内执行。AM驱动器36通过在VM 32内以内核模式执行可具有对信息(例如,由受保护过程使用的存储器地址(例如,存储受保护过程的代码及/或数据的相应VM的虚拟化物理存储器(参见图6中的空间114a到b)内的页的地址))的直接存取。尽管管理程序30可获取对在相应VM内执行的作用过程列表的存取,但剖析所述列表以确定由相应过程加载的所有模块(例如,DLL)及进一步确定存储来自管理程序30的级的此数据/代码的存储器页的所有地址可需要大量的计算。在一些实施例中,针对步骤序列314到316的另一原因是归属于用户模式过程的数据可由OS 34在物理存储器14与其它计算机可读媒体(例如,存储装置20)之间交换。存储器自省引擎40在相应VM外部执行,其可检测数据何时被交换入物理存储器及何时从物理存储器交换出,但由于存储器自省引擎40不驻留在物理存储器中,其不能够存取及/或保护此类数据。相反,在VM 32内执行的AM驱动器36通过迫使OS 34加载相应页而可容易地存取从物理存储器交换出的页。AM驱动器36可因此有效地列出由受保护过程使用/加载的所有模块,且确定VM 32的虚拟化物理存储器内的此类模块的大小及位置。In step 314, the memory introspection engine 40 may notify the AM driver 36 that a protected process is executing. For example, the engine 40 may send an indicator (e.g., the process ID of the protected process) to the AM driver 36. Next, in step 316, the engine 40 may receive from the driver 36 an indicator of the memory page (e.g., the address of the page in virtual memory) that stores the code and/or data of the protected process. In some embodiments, the engine 40 uses steps 314-316 to bridge the semantic gap that arises because the engine 40 executes outside the VM 32 and the protected process executes within the VM 32. By executing in kernel mode within the VM 32, the AM driver 36 may have direct access to information (e.g., memory addresses used by the protected process, e.g., addresses of pages within the virtualized physical memory of the corresponding VM (see spaces 114a-b in FIG. 6 ) that store the code and/or data of the protected process). While hypervisor 30 can gain access to a list of active processes executing within a respective VM, parsing that list to determine all modules (e.g., DLLs) loaded by the respective process and, further, all addresses of memory pages storing such data/code from the hypervisor 30 level can require extensive computation. In some embodiments, another reason for the sequence of steps 314-316 is that data belonging to user-mode processes can be swapped between physical memory 14 and other computer-readable media (e.g., storage devices 20) by OS 34. A memory introspection engine 40, executing outside the respective VM, can detect when data is swapped in and out of physical memory, but because it does not reside in physical memory, it cannot access and/or protect such data. In contrast, AM driver 36 executing within VM 32 can easily access pages swapped out of physical memory by forcing OS 34 to load the corresponding pages. AM driver 36 can thus effectively list all modules used/loaded by protected processes and determine the size and location of such modules within VM 32's virtualized physical memory.

在替代实施例中,替代于主动地检测受保护过程的启动(以上步骤312),存储器自省引擎40可从AM驱动器36接收受保护过程的指示符,其中AM驱动器36可实际上检测来自VM32内的受保护过程的启动。在此类实施例中,如上文所描述的步骤314不再为必须的。在另一实施例中,在步骤316中,引擎40可实际上执行必要的计算以确定受保护过程的存储器页的地址,而不是依赖于如上文所描述的AM驱动器36。In an alternative embodiment, instead of actively detecting the launch of a protected process (step 312 above), memory introspection engine 40 may receive an indicator of the protected process from AM driver 36, where AM driver 36 may actually detect the launch of the protected process from within VM 32. In such an embodiment, step 314 as described above is no longer necessary. In another embodiment, in step 316, engine 40 may actually perform the necessary calculations to determine the address of the memory page of the protected process, rather than relying on AM driver 36 as described above.

在步骤318中,存储器自省引擎保护目标页不受非所要修改(例如,由试图破坏VM32的恶意软件)的影响。所属领域中已知若干此类存储器保护机制。由管理程序30在存储器自省引擎40发出请求时可使用数据结构(例如,EPT或NPT)来强制执行保护。例如,管理程序30可通过修改相应页的EPT/NPT存取权限位而将目标存储器页设置为只读。在一些实施例中,管理程序30可拦截写入分配给目标对象的存储器页的任何尝试,且重新定向到存储器自省引擎40的相应尝试用于分析。下文关于图9将进一步详细描述步骤318中的引擎40的操作。In step 318, the memory introspection engine protects the target page from unwanted modifications (e.g., by malware attempting to compromise VM 32). Several such memory protection mechanisms are known in the art. Protection can be enforced by hypervisor 30 using a data structure (e.g., EPT or NPT) upon request by memory introspection engine 40. For example, hypervisor 30 can set the target memory page to read-only by modifying the EPT/NPT access permission bits for the corresponding page. In some embodiments, hypervisor 30 can intercept any attempt to write to a memory page allocated to the target object and redirect the corresponding attempt to memory introspection engine 40 for analysis. The operation of engine 40 in step 318 is described in further detail below with respect to FIG. 9.

为将写入保护应用到目标页,步骤318可包括执行图6中所说明的种类的存储器地址的转译:从由OS 34针对受保护过程而建立的虚拟存储器空间一直到主机系统10的物理存储器14,或从相应VM的虚拟化物理存储器空间到物理存储器14。根据步骤316中从AM驱动器36接收的指示符,相应转译允许存储器自省引擎40确定实际物理存储器14中的目标页的地址。此类转译可使用EPT/NPT机制,如关于图6所描述。To apply write protection to the target page, step 318 may include performing a translation of the memory address of the type illustrated in FIG6 : from the virtual memory space established by the OS 34 for the protected process all the way to the physical memory 14 of the host system 10, or from the virtualized physical memory space of the corresponding VM to the physical memory 14. Based on the indicator received from the AM driver 36 in step 316, the corresponding translation allows the memory introspection engine 40 to determine the address of the target page in the actual physical memory 14. Such translation may use the EPT/NPT mechanism, as described with respect to FIG6 .

在步骤320中,引擎40可检测受保护过程的终止。在一些实施例中,步骤320可以类似于上文所描述的步骤312的方式进行。例如,步骤320可包括从内核功能(其经配置以从VM32的作用过程列表移除过程)接收信号,由AM驱动器36通过挂钩(例如,将补丁(例如,VMCALL指令)应用到相应功能,所述补丁重新定向到引擎40的执行)来修改相应功能。可以此方式修改的示范性Windows功能为PspDeleteProcess。当引擎40检测到受保护过程的终止时,步骤322例如通过指示管理程序30改变针对所述目标页的写入权限将保护从相应目标页移除。In step 320, the engine 40 may detect the termination of the protected process. In some embodiments, step 320 may be performed in a manner similar to step 312 described above. For example, step 320 may include receiving a signal from a kernel function (which is configured to remove the process from the active process list of VM 32) and the AM driver 36 modifying the corresponding function by hooking (e.g., applying a patch (e.g., a VMCALL instruction) to the corresponding function, which is redirected to the execution of the engine 40). An exemplary Windows function that can be modified in this manner is PspDeleteProcess. When the engine 40 detects the termination of the protected process, step 322 removes protection from the corresponding target page, for example by instructing the hypervisor 30 to change the write permissions for the target page.

图9说明由存储器自省引擎40执行以保护目标页(图8中的步骤318)的步骤序列。在步骤332中,引擎40可拦截写入目标页的尝试;此类尝试可指示恶意意图,且可经由管理程序30而被拦截,如上文所描述。在步骤334中,引擎40可识别执行所述尝试的过程;相应过程将被称作攻击过程。在一些实施例中,为执行步骤334,引擎40可使用指令指针寄存器(例如,x86系统上的EIP及/或RIP寄存器)的内容来识别执行所述尝试的处理器指令(或其地址),及使用CR3寄存器的内容来识别相应指令所归属的过程。替代地,引擎40可使用片段寄存器的内容(例如,x86处理器上的FS及GS寄存器)以根据某些内核数据结构(其在每一次OS34切换过程之间的执行时被修改)来识别攻击过程。FIG9 illustrates the sequence of steps performed by memory introspection engine 40 to protect a target page (step 318 in FIG8 ). In step 332, engine 40 may intercept attempts to write to the target page; such attempts may indicate malicious intent and may be intercepted by hypervisor 30, as described above. In step 334, engine 40 may identify the process executing the attempt; the corresponding process will be referred to as the attacking process. In some embodiments, to perform step 334, engine 40 may use the contents of an instruction pointer register (e.g., the EIP and/or RIP registers on an x86 system) to identify the processor instruction (or its address) executing the attempt, and the contents of the CR3 register to identify the process to which the corresponding instruction belongs. Alternatively, engine 40 may use the contents of a fragment register (e.g., the FS and GS registers on an x86 processor) to identify the attacking process based on certain kernel data structures that are modified each time the OS 34 switches execution between processes.

在步骤336中,引擎40可制订攻击过程的过程评估指示符52d(参见例如图4)且将指示符52d传输到过程评分模块38。示范性指示符52d可包括在步骤334中识别的攻击过程的指示符(例如,过程ID),及由攻击过程尝试的且在步骤332中被拦截的动作的类型的指示符(例如,写入受保护存储器页的尝试)。In step 336, the engine 40 may formulate a process evaluation indicator 52d (see, e.g., FIG. 4 ) for the attack process and transmit the indicator 52d to the process scoring module 38. Exemplary indicators 52d may include an indicator of the attack process identified in step 334 (e.g., a process ID), and an indicator of the type of action attempted by the attack process and intercepted in step 332 (e.g., an attempt to write to a protected memory page).

一些上文所描述的方法及系统需要在VM 32内执行的组件之间的通信(例如,数据交换及/或消息接发),及在相应VM的外部执行的组件之间的通信(例如,数据交换及/或消息接发)。可使用虚拟化的技术领域中已知的任何方法执行此通信。例如,为将数据从以内核模式执行的组件(例如,AM驱动器36)传输到存储器自省引擎40(参见例如图8中的步骤316),一些实施例使用特权指令将处理器12的控制从VM 32转移到管理程序30。此类特权指令的实例为Intel平台上的VMCALL,其可用以向引擎40发信号表示正从VM 32内转移一些数据。被传输的实际数据可放置在驱动器36与引擎40之间共享的存储器的预定区段中。为将数据从存储器自省引擎40传输到AM驱动器36(参见例如图8中的步骤314及图9中的步骤336),一些实施例使用中断注入机制以向驱动器36发信号表示正从相应VM的外部传输数据。可(例如)通过上文所描述的共享存储器区段来转移实际数据。Some of the methods and systems described above require communication (e.g., data exchange and/or messaging) between components executing within a VM 32 and between components executing outside of the respective VMs (e.g., data exchange and/or messaging). This communication may be performed using any method known in the art of virtualization. For example, to transfer data from a component executing in kernel mode (e.g., the AM driver 36) to the memory introspection engine 40 (see, for example, step 316 in FIG8 ), some embodiments use privileged instructions to transfer control of the processor 12 from the VM 32 to the hypervisor 30. An example of such a privileged instruction is VMCALL on Intel platforms, which can be used to signal to the engine 40 that some data is being transferred from within the VM 32. The actual data being transferred may be placed in a predetermined section of memory shared between the driver 36 and the engine 40. To transfer data from the memory introspection engine 40 to the AM driver 36 (see, for example, step 314 in FIG. 8 and step 336 in FIG. 9 ), some embodiments use an interrupt injection mechanism to signal to the driver 36 that data is being transferred from outside the corresponding VM. The actual data may be transferred, for example, through the shared memory segments described above.

在一些实施例中,主机系统10可经配置以与远程安全服务器交换安全信息,例如,关于恶意软件检测事件的细节。图10说明此示范性配置,其中多个主机系统10a到c经由计算机网络26连接到安全服务器110。在示范性实施例中,主机系统10a到c为由公司的雇员使用的个人计算机,而安全服务器110可包括由相应公司的网络管理员配置以监视发生在系统10a到c上的恶意软件威胁或安全事件的计算机系统。在另一实施例中,例如,在基础结构即服务(IAAS)系统(其中每一主机系统10a到c为托管数十或数百个虚拟机的服务器)中,安全服务器110可包括计算机系统,所述计算机系统经配置以管理针对来自中央位置的所有此类VM的反恶意软件操作。在另一实施例中,安全服务器110可包括计算机系统,所述计算机系统由反恶意软件的提供商(例如,安全应用程序44的提供商等)配置以接收关于在围绕网络26的各种系统上检测到的恶意软件的统计及/或行为数据。网络26可包含广域网(例如,因特网),而网络26的部分可包含局域网(LAN)。In some embodiments, host system 10 may be configured to exchange security information, such as details regarding malware detection events, with a remote security server. FIG10 illustrates this exemplary configuration, in which multiple host systems 10a-c are connected to a security server 110 via a computer network 26. In the exemplary embodiment, host systems 10a-c are personal computers used by employees of a company, and security server 110 may comprise a computer system configured by a network administrator of the respective company to monitor malware threats or security events occurring on systems 10a-c. In another embodiment, such as in an Infrastructure as a Service (IaaS) system (in which each host system 10a-c is a server hosting tens or hundreds of virtual machines), security server 110 may comprise a computer system configured to manage anti-malware operations for all such VMs from a central location. In another embodiment, security server 110 may comprise a computer system configured by an anti-malware provider (e.g., a provider of security application 44, etc.) to receive statistical and/or behavioral data regarding malware detected on various systems surrounding network 26. Network 26 may comprise a wide area network (eg, the Internet), while portions of network 26 may comprise a local area network (LAN).

图11展示在图10中所展示的实施例中的主机系统10与安全服务器110之间的示范性数据交换。主机系统10可经配置以向服务器110发送安全报告80,且从服务器110接收安全设置82的集合。在一些实施例中,安全报告80包括过程评估指示符及/或由在主机系统10上执行的过程评估器确定的得分,及/或由过程评分模块38确定的累积得分等等。安全报告80还可包括识别相应虚拟机及被评估过程的数据(例如,过程ID、名称、路径、散列、版本信息或应用程序及/或过程的其它种类的标识符),以及将过程评估指示符/得分与VM及过程(针对所述过程而确定所述指示符)相关联的指示符。在一些实施例中,报告80可进一步包括关于在主机系统10上执行的过程及/或应用程序的统计及/或行为数据。系统10可经配置以在检测到恶意软件时及/或根据时间表(例如,每几分钟、每小时等等)而发送报告80。FIG11 illustrates an exemplary data exchange between the host system 10 and the security server 110 in the embodiment shown in FIG10 . The host system 10 may be configured to send a security report 80 to the server 110 and receive a set of security settings 82 from the server 110. In some embodiments, the security report 80 includes a process evaluation indicator and/or a score determined by a process evaluator executing on the host system 10, and/or a cumulative score determined by the process scoring module 38, among others. The security report 80 may also include data identifying the respective virtual machines and the evaluated processes (e.g., process ID, name, path, hash, version information, or other identifiers of the application and/or process), as well as indicators associating the process evaluation indicator/score with the VM and process for which the indicator was determined. In some embodiments, the report 80 may further include statistical and/or behavioral data regarding the processes and/or applications executing on the host system 10. The system 10 may be configured to send the report 80 upon detection of malware and/or according to a schedule (e.g., every few minutes, every hour, etc.).

在一些实施例中,安全设置82可包含过程评估器的操作参数(例如,图4中的过滤器50a到c的参数),及/或过程评分模块38的参数。模块38的操作参数的实例为用于确定被评估过程是否为恶意的阈值(参见图5中的步骤308及相关联的描述)。过程评估器的示范性操作参数为指派到被评估过程(当所述被评估过程执行特定动作时)的恶意得分的值。当相应过程写入磁盘文件时,被评估过程可接收0.1的恶意得分;且当被评估过程修改Windows注册表值时,被评估过程可接收0.7的恶意得分。In some embodiments, security settings 82 may include operating parameters of a process evaluator (e.g., parameters of filters 50a-c in FIG. 4 ), and/or parameters of process scoring module 38. An example of an operating parameter of module 38 is a threshold value used to determine whether an evaluated process is malicious (see step 308 in FIG. 5 and the associated description). An exemplary operating parameter of a process evaluator is a maliciousness score value assigned to an evaluated process when the evaluated process performs a particular action. An evaluated process may receive a maliciousness score of 0.1 when the corresponding process writes to a disk file, and may receive a maliciousness score of 0.7 when the evaluated process modifies a Windows registry value.

在一些实施例中,服务器110运行优化算法来动态地调整此类参数以最大化恶意软件检测性能,例如,在最小化误报的同时提高检测率。优化算法可接收关于在多个主机系统10a到c上执行的各种过程的统计及/或行为数据(包含由各种过程评估器向过程评分模块38报告的过程评估指示符/得分),且确定参数的最优值。所述值随后经由网络26被传输到相应主机系统。在一些实施例中,为确定最优参数值,服务器110可使用已知为干净(未受恶意软件的影响)的过程的集合来校准过程评分模块38及/或过程评估器50a到c的操作。在示范性校准方案中,安全服务器110可指示主机系统10执行校准过程的集合(已知为干净的),且发送回服务器110针对所述校准过程确定的过程评估指示符/得分的集合。服务器110可随后确定针对相应虚拟机及/或主机系统定制的参数值。In some embodiments, server 110 runs an optimization algorithm to dynamically adjust such parameters to maximize malware detection performance, for example, to improve detection rates while minimizing false positives. The optimization algorithm can receive statistical and/or behavioral data about the various processes executed on multiple host systems 10a to c (including process evaluation indicators/scores reported to process scoring module 38 by various process evaluators) and determine the optimal values of the parameters. The values are then transmitted to the corresponding host systems via network 26. In some embodiments, to determine the optimal parameter values, server 110 can use a set of processes known to be clean (not affected by malware) to calibrate the operation of process scoring module 38 and/or process evaluators 50a to c. In an exemplary calibration scheme, security server 110 can instruct host system 10 to perform a set of calibration processes (known to be clean) and send back a set of process evaluation indicators/scores determined by server 110 for the calibration processes. Server 110 can then determine parameter values customized for corresponding virtual machines and/or host systems.

在另一实例中,安全设置82包括权重值的集合,由过程评分模块38使用所述权重值的集合以根据从各种过程评估器接收的个别过程评估指示符来确定针对被评估过程的累积恶意得分。在实施例中,其中累积得分为个别得分的加权总和或加权平均,且其中根据不同恶意软件检测标准或方法(例如,当每一得分指示被评估过程是否执行特定恶意软件指示行为时)来计算每一得分,与其它标准/方法相比较,改变个别得分的权重可有效地改变相应标准或方法的相关性。恶意软件威胁通常以波的形式发生,其中世界范围内的大量计算机系统在短时间间隔中受到相同恶意软件代理的影响。通过实时从多个主机系统接收安全报告80,安全服务器110可保持与当前恶意软件威胁的更新,且可迅速地将最优安全设置82传递到相应主机系统,设置82包含(例如)针对检测当前恶意软件威胁而优化的得分权重的集合。In another example, the security settings 82 include a set of weight values that are used by the process scoring module 38 to determine a cumulative maliciousness score for the evaluated process based on the individual process evaluation indicators received from the various process evaluators. In an embodiment, where the cumulative score is a weighted sum or weighted average of the individual scores, and where each score is calculated according to a different malware detection standard or method (e.g., where each score indicates whether the evaluated process performs a specific malware-indicative behavior), changing the weight of an individual score can effectively change the relevance of the corresponding standard or method compared to other standards/methods. Malware threats often occur in waves, where a large number of computer systems worldwide are affected by the same malware agent in a short time interval. By receiving security reports 80 from multiple host systems in real time, the security server 110 can stay updated with current malware threats and can quickly communicate optimal security settings 82 to the corresponding host systems, the settings 82 including, for example, a set of score weights optimized for detecting the current malware threat.

以上所描述的示范性系统及方法允许保护主机系统(例如,计算机系统)不受恶意软件(例如,病毒或rootkits)的攻击。常规反恶意软件系统通常以操作系统的处理器特权级(例如,内核模式)执行。一些恶意软件(例如,rootkits)也可以OS的级操作,且可因此使常规反恶意软件系统瘫痪且破坏计算机系统的安全性。相反,在本发明的一些实施例中,管理程序以最高处理器特权级在计算机系统上执行,用虚拟机代替操作系统。根据本发明的一些实施例而操作的反恶意软件系统包括以管理程序级在VM内执行的组件及在VM外部执行的组件。因此可以与操作系统的处理器特权级相比较更高的处理器特权级进行一些反恶意软件操作,其中在VM内执行的恶意软件不能够将其破坏。在一些实施例中,以管理程序的级执行的单个存储器自省引擎可保护在相应计算机系统上同时执行的多个虚拟机。The exemplary systems and methods described above allow for protection of a host system (e.g., a computer system) from attacks by malware (e.g., viruses or rootkits). Conventional anti-malware systems typically execute at the processor privilege level of the operating system (e.g., kernel mode). Some malware (e.g., rootkits) can also operate at the OS level and can therefore paralyze conventional anti-malware systems and compromise the security of the computer system. In contrast, in some embodiments of the present invention, a hypervisor executes at the highest processor privilege level on the computer system, replacing the operating system with a virtual machine. Anti-malware systems operating according to some embodiments of the present invention include components that execute at the hypervisor level within the VM and components that execute outside the VM. Thus, some anti-malware operations can be performed at a higher processor privilege level than the operating system's processor privilege level, where malware executing within the VM cannot compromise them. In some embodiments, a single memory introspection engine executing at the hypervisor level can protect multiple virtual machines executing simultaneously on the corresponding computer system.

在一些实施例中,存储器自省引擎的操作包含选择关键软件对象(例如,某些驱动器、库、寄存器及页表等)的集合,且防止恶意修改此类对象。特定来说,一些实施例可因此保护在VM内执行的反恶意软件组件不受恶意攻击。In some embodiments, the operation of the memory introspection engine includes selecting a set of critical software objects (e.g., certain drivers, libraries, registers, and page tables) and preventing malicious modification of such objects. In particular, some embodiments can thus protect anti-malware components executing within a VM from malicious attacks.

为保护此类对象,一些实施例可通过拦截写入分配到相应对象的存储器空间的尝试来防止恶意修改,且阻止或重新定向所述尝试。其它实施例可通过将分配到相应对象的存储器空间标记为只读来保护目标对象。在典型的硬件及软件配置中,存储器被划分成具有连续地址的个别块(被称作页)。在支持虚拟化的系统中,页存取权限由管理程序(例如)使用专用数据结构(例如,Intel平台上的扩展页表(EPT))来控制。因此(例如)通过存储器自省引擎指示管理程序将含有归属于相应对象的数据的页的集合标记为只读可实现保护目标对象的存储器空间。To protect such objects, some embodiments can prevent malicious modifications by intercepting attempts to write to the memory space allocated to the corresponding object, and block or redirect the attempts. Other embodiments can protect the target object by marking the memory space allocated to the corresponding object as read-only. In a typical hardware and software configuration, the memory is divided into individual blocks (called pages) with consecutive addresses. In a system that supports virtualization, page access permissions are controlled by the hypervisor (for example) using a dedicated data structure (for example, the Extended Page Table (EPT) on the Intel platform). Therefore, (for example) by instructing the hypervisor to mark the set of pages containing data belonging to the corresponding object as read-only through the memory introspection engine, the memory space of the target object can be protected.

在一些实施例中,一些反恶意软件组件在受保护虚拟机内执行,与存储器自省引擎合作以检测恶意软件。此类配置通过桥接通过虚拟化而产生的语义鸿沟可实质上简化恶意软件检测。在典型的软件配置中,以用户模式执行的恶意软件检测组件可获取关于被评估过程的行为的丰富信息,而大部分此信息对以内核级执行的组件或在相应VM外部执行的组件来说不是容易获得的。例如,当被评估过程尝试从因特网下载文件时,用户模式过程评估器(例如)使用所属领域已知的方法(例如,DLL注入)可识别哪一过程正执行动作,可检测所述被评估过程正尝试下载文件,且可确定文件从哪个IP地址下载及下载的文件的磁盘位置等等。同时,以管理程序级执行的过程评估器可仅检测网络包的集合正在主机系统的网络适配器中循环。尽管将关于被评估过程的行为的信息从管理程序的级恢复在原则上可为可能的,但此类任务针对恶意软件检测可为不切实际的,因为其可耗费显著的计算成本。通过组合在相应VM内执行的反恶意软件组件与在VM外部执行的存储器自省引擎,本发明的一些实施例可使用内部VM组件可获取的丰富的行为数据,同时保护此类组件的完整性免于相应VM外部的影响。In some embodiments, some anti-malware components execute within a protected virtual machine, collaborating with a memory introspection engine to detect malware. This configuration can substantially simplify malware detection by bridging the semantic gap created by virtualization. In a typical software configuration, malware detection components executing in user mode can obtain rich information about the behavior of the evaluated process, much of which is not readily available to components executing at the kernel level or outside the corresponding VM. For example, when an evaluated process attempts to download a file from the internet, a user-mode process evaluator (e.g., using methods known in the art (e.g., DLL injection)) can identify which process is performing the action, detect the file being downloaded from, and determine the IP address and disk location of the downloaded file. Meanwhile, a process evaluator executing at the hypervisor level may only detect the collection of network packets circulating in the host system's network adapter. While recovering information about the behavior of the evaluated process from the hypervisor level may in principle be possible, such a task can be impractical for malware detection because it can incur significant computational costs. By combining anti-malware components executing within a respective VM with a memory introspection engine executing outside the VM, some embodiments of the present invention may use the rich behavioral data available to internal VM components while protecting the integrity of such components from influences outside the respective VM.

在常规反恶意软件系统中,以类似于操作系统的处理器特权级的处理器特权级执行的软件组件检测过程何时被启动,且指示其它反恶意软件组件监视相应过程的行为。一些恶意软件代理设法通过停用检测过程启动的软件组件来破坏此类反恶意软件系统,因此导致反恶意软件系统仅监视当前执行过程的子集。相反,在本发明的一些实施例中,组件检测过程启动被移到相应虚拟机外部,其以与操作系统相比较更高的处理器特权级启动。此类配置可防止恶意软件躲避反恶意软件组件。In conventional anti-malware systems, a software component executing at a processor privilege level similar to that of the operating system detects when a process is launched and instructs other anti-malware components to monitor the behavior of the corresponding process. Some malware agents attempt to subvert such anti-malware systems by disabling the software component that detects process launch, thereby causing the anti-malware system to monitor only a subset of currently executing processes. In contrast, in some embodiments of the present invention, component detection process launch is moved outside the corresponding virtual machine, which launches at a higher processor privilege level than the operating system. This configuration prevents malware from evading anti-malware components.

在一些实施例中,过程评分模块从在相应VM内或外部执行的多个过程评估器接收每过程评估指示符。从在受保护VM内执行的组件接收的过程评估指示符可指示(例如)被评估过程已执行恶意软件指示行为(例如,尝试修改OS的注册表值或尝试删除文件)。在相应VM的外部确定的过程评估指示符可指示(例如)被评估过程正尝试写入受保护存储器区段。过程评估指示符可包括指示相应过程的恶意程度的数值得分。在一些实施例中,过程评分模块根据从各种过程评估器接收的多个过程评估指示符/得分来确定累积得分,且根据所述累积得分来确定被评估过程是否为恶意的。In some embodiments, the process scoring module receives per-process evaluation indicators from a plurality of process evaluators executed within or outside the corresponding VM. A process evaluation indicator received from a component executing within the protected VM may indicate, for example, that the evaluated process has performed malware-indicative behavior (e.g., attempting to modify an OS registry value or attempting to delete a file). A process evaluation indicator determined outside the corresponding VM may indicate, for example, that the evaluated process is attempting to write to a protected memory segment. The process evaluation indicator may include a numerical score indicating the degree of maliciousness of the corresponding process. In some embodiments, the process scoring module determines a cumulative score based on the plurality of process evaluation indicators/scores received from the various process evaluators, and determines whether the evaluated process is malicious based on the cumulative score.

所属领域的技术人员将清楚,在不脱离本发明的范围的情况下,可以多种方式更改以上实施例。因此,本发明的范围应由所附权利要求书及其合法等效物确定。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 present invention. Therefore, the scope of the present invention should be determined by the appended claims and their legal equivalents.

Claims (20)

1.一种包括至少一个处理器的主机系统,其经配置以执行:1. A host system including at least one processor, configured to perform: 管理程序,其经配置以公开虚拟机;The hypervisor is configured to expose the virtual machine; 过程评估器,其在所述虚拟机内执行;A process evaluator, which executes within the virtual machine; 存储器自省引擎,其在所述虚拟机的外部执行;及A memory introspection engine, which executes outside the virtual machine; and 过程评分模块,其中:The process scoring module includes: 所述过程评估器经配置以:The process evaluator is configured to: 确定在所述虚拟机内执行的被评估过程是否执行动作,且Determine whether the evaluated process, executed within the virtual machine, performs an action, and 作为响应,当所述被评估过程执行所述动作时,将第一过程评估指示符传输到所述过程评分模块,所述第一过程评估指示符是针对所述被评估过程确定;In response, when the process being evaluated performs the action, a first process evaluation indicator is transmitted to the process scoring module, wherein the first process evaluation indicator is determined for the process being evaluated; 所述存储器自省引擎经配置以:The memory introspection engine is configured to: 拦截对操作系统功能的调用,以检测在所述虚拟机内执行的受保护过程的启动,其中所述操作系统功能经配置以将所述受保护过程添加到在所述虚拟机内执行的过程列表,且Calls to operating system functions are intercepted to detect the startup of a protected process executing within the virtual machine, wherein the operating system functions are configured to add the protected process to a list of processes executing within the virtual machine. 响应于检测到所述启动,In response to the detection of the startup, 确定所述被评估过程是否尝试修改所述受保护过程的存储器页,且Determine whether the evaluated process attempts to modify the memory pages of the protected process, and 作为响应,当所述被评估过程尝试修改所述存储器页时,In response, when the evaluated process attempts to modify the memory page... 将第二过程评估指示符传输到所述过程评分模块,所述第二过程评估指示符是针对所述被评估过程确定;且The second process evaluation indicator is transmitted to the process scoring module; the second process evaluation indicator is determined for the process being evaluated. 所述过程评分模块经配置以:The process scoring module is configured to: 从安全服务器接收第一权重及第二权重,所述安全服务器经配置以执行与包含所述主机系统的多个计算机系统的反恶意软件事务;Receives a first weight and a second weight from a security server configured to perform anti-malware transactions with multiple computer systems including the host system; 接收所述第一及第二过程评估指示符,且Receive the first and second process evaluation indicators, and 作为响应,根据所述第一及第二过程评估指示符来确定所述被评估过程是否为恶意的,其中确定所述被评估过程是否为恶意的包括确定第一得分及第二得分的加权总和,所述第一权重乘所述加权总和中的所述第一得分,且所述第二权重乘所述加权总和中的所述第二得分,其中所述第一得分及所述第二得分是根据所述第一过程评估指示符及所述第二过程评估指示符分别确定。In response, it is determined whether the evaluated process is malicious based on the first and second process evaluation indicators, wherein determining whether the evaluated process is malicious includes determining a weighted sum of a first score and a second score, wherein the first weight is multiplied by the first score in the weighted sum, and the second weight is multiplied by the second score in the weighted sum, wherein the first score and the second score are determined based on the first process evaluation indicator and the second process evaluation indicator, respectively. 2.根据权利要求1所述的系统,其中所述存储器自省引擎进一步经配置以:2. The system of claim 1, wherein the memory introspection engine is further configured to: 响应于检测到所述受保护过程的所述启动,将所述受保护过程的指示符发送到在所述虚拟机内执行的安全应用程序,且In response to the detection of the start of the protected process, an indicator of the protected process is sent to the security application executing within the virtual machine, and 作为响应,从所述安全应用程序接收所述存储器页的指示符。In response, an indicator of the memory page is received from the security application. 3.根据权利要求1所述的主机系统,其中所述过程评估器包括以处理器特权的用户级执行的用户级过程评估器,所述用户级过程评估器经配置以确定所述被评估过程是否执行所述动作。3. The host system of claim 1, wherein the process evaluator includes a user-level process evaluator executed at the user level with processor privileges, the user-level process evaluator being configured to determine whether the process being evaluated performs the action. 4.根据权利要求1所述的主机系统,其中所述过程评估器包括以处理器特权的内核级执行的内核级过程评估器,所述内核级过程评估器经配置以确定所述被评估过程是否执行所述动作。4. The host system of claim 1, wherein the process evaluator includes a kernel-level process evaluator executed at the kernel level with processor privileges, the kernel-level process evaluator being configured to determine whether the process being evaluated performs the action. 5.根据权利要求1所述的主机系统,其中所述过程评估器包括系统调用评估器,所述系统调用评估器经配置以拦截由所述被评估过程执行的系统调用。5. The host system of claim 1, wherein the process evaluator includes a system call evaluator configured to intercept system calls executed by the process being evaluated. 6.根据权利要求1所述的主机系统,其中所述过程评分模块在所述虚拟机内执行。6. The host system according to claim 1, wherein the process scoring module is executed within the virtual machine. 7.根据权利要求1所述的主机系统,其中所述过程评分模块在所述虚拟机外部执行。7. The host system according to claim 1, wherein the process scoring module is executed outside the virtual machine. 8.根据权利要求1所述的主机系统,其中所述受保护过程包含所述过程评分模块。8. The host system of claim 1, wherein the protected process includes the process scoring module. 9.根据权利要求1所述的主机系统,其中所述受保护过程形成包括所述过程评估器的安全应用程序的部分。9. The host system of claim 1, wherein the protected process forms part of a security application including the process evaluator. 10.一种非暂时性计算机可读媒体,其编码指令,所述指令当在包括至少一个处理器的主机系统上执行时导致所述主机系统形成:10. A non-transitory computer-readable medium encoding instructions that, when executed on a host system including at least one processor, cause the host system to be formed: 管理程序,其经配置以公开虚拟机;The hypervisor is configured to expose the virtual machine; 过程评估器,其在所述虚拟机内执行;A process evaluator, which executes within the virtual machine; 存储器自省引擎,其在所述虚拟机的外部执行;及A memory introspection engine, which executes outside the virtual machine; and 过程评分模块,其中:The process scoring module includes: 所述过程评估器经配置以:The process evaluator is configured to: 确定在所述虚拟机内执行的被评估过程是否执行动作,且Determine whether the evaluated process, executed within the virtual machine, performs an action, and 作为响应,当所述被评估过程执行所述动作时,将第一过程评估指示符传输到所述过程评分模块,所述第一过程评估指示符是针对所述被评估过程确定;In response, when the process being evaluated performs the action, a first process evaluation indicator is transmitted to the process scoring module, wherein the first process evaluation indicator is determined for the process being evaluated; 所述存储器自省引擎经配置以:The memory introspection engine is configured to: 拦截对操作系统功能的调用,以检测在所述虚拟机内执行的受保护过程的启动,其中所述操作系统功能在所述虚拟机内执行且经配置以将所述受保护过程添加到在所述虚拟机内执行的过程列表,且Calls to operating system functions are intercepted to detect the startup of a protected process executing within the virtual machine, wherein the operating system functions execute within the virtual machine and are configured to add the protected process to a list of processes executing within the virtual machine. 响应于检测到所述启动,In response to the detection of the startup, 确定所述被评估过程是否尝试修改所述受保护过程的存储器页,且Determine whether the evaluated process attempts to modify the memory pages of the protected process, and 作为响应,当所述被评估过程尝试修改所述存储器页时,In response, when the evaluated process attempts to modify the memory page... 将第二过程评估指示符传输到所述过程评分模块,所述第二过程评估指示符是针对所述被评估过程确定;且The second process evaluation indicator is transmitted to the process scoring module; the second process evaluation indicator is determined for the process being evaluated. 所述过程评分模块经配置以:The process scoring module is configured to: 从安全服务器接收第一权重及第二权重,所述安全服务器经配置以执行与包含所述主机系统的多个计算机系统的反恶意软件事务;Receives a first weight and a second weight from a security server configured to perform anti-malware transactions with multiple computer systems including the host system; 接收所述第一及第二过程评估指示符,且Receive the first and second process evaluation indicators, and 作为响应,根据所述第一及第二过程评估指示符来确定所述被评估过程是否为恶意的,其中确定所述被评估过程是否为恶意的包括确定第一得分及第二得分的加权总和,所述第一权重乘所述加权总和中的所述第一得分,且所述第二权重乘所述加权总和中的所述第二得分,其中所述第一得分及所述第二得分是根据所述第一过程评估指示符及所述第二过程评估指示符分别确定。In response, it is determined whether the evaluated process is malicious based on the first and second process evaluation indicators, wherein determining whether the evaluated process is malicious includes determining a weighted sum of a first score and a second score, wherein the first weight is multiplied by the first score in the weighted sum, and the second weight is multiplied by the second score in the weighted sum, wherein the first score and the second score are determined based on the first process evaluation indicator and the second process evaluation indicator, respectively. 11.根据权利要求10所述的非暂时性计算机可读媒体,其中所述存储器自省引擎进一步经配置以:11. The non-transitory computer-readable medium of claim 10, wherein the memory introspection engine is further configured to: 响应于检测到所述受保护过程的所述启动,将所述受保护过程的指示符发送到在所述虚拟机内执行的安全应用程序,且In response to the detection of the start of the protected process, an indicator of the protected process is sent to the security application executing within the virtual machine, and 作为响应,从所述安全应用程序接收所述存储器页的指示符。In response, an indicator of the memory page is received from the security application. 12.根据权利要求10所述的非暂时性计算机可读媒体,其中所述过程评估器包括以处理器特权的用户级执行的用户级过程评估器,所述用户级过程评估器经配置以确定所述被评估过程是否执行所述动作。12. The non-transitory computer-readable medium of claim 10, wherein the process evaluator comprises a user-level process evaluator executed at the user level with processor privileges, the user-level process evaluator being configured to determine whether the process being evaluated performs the action. 13.根据权利要求10所述的非暂时性计算机可读媒体,其中所述过程评估器包括以处理器特权的内核级执行的内核级过程评估器,所述内核级过程评估器经配置以确定所述被评估过程是否执行所述动作。13. The non-transitory computer-readable medium of claim 10, wherein the process evaluator comprises a kernel-level process evaluator executed at the kernel level with processor privileges, the kernel-level process evaluator being configured to determine whether the process being evaluated performs the action. 14.根据权利要求10所述的非暂时性计算机可读媒体,其中所述过程评估器包括系统调用评估器,所述系统调用评估器经配置以拦截由所述被评估过程执行的系统调用。14. The non-transitory computer-readable medium of claim 10, wherein the process evaluator includes a system call evaluator configured to intercept system calls performed by the process being evaluated. 15.根据权利要求10所述的非暂时性计算机可读媒体,其中所述过程评分模块在所述虚拟机内执行。15. The non-transitory computer-readable medium of claim 10, wherein the process scoring module is executed within the virtual machine. 16.根据权利要求10所述的非暂时性计算机可读媒体,其中所述过程评分模块在所述虚拟机外部执行。16. The non-transitory computer-readable medium of claim 10, wherein the process scoring module is executed outside the virtual machine. 17.根据权利要求10所述的非暂时性计算机可读媒体,其中所述受保护过程包含所述过程评分模块。17. The non-transitory computer-readable medium of claim 10, wherein the protected process includes the process scoring module. 18.根据权利要求10所述的非暂时性计算机可读媒体,其中所述受保护过程形成经配置以执行所述过程评估器的安全应用程序的部分。18. The non-transitory computer-readable medium of claim 10, wherein the protected process forms part of a secure application configured to execute the process evaluator. 19.一种方法,其包括:19. A method comprising: 使用主机系统的至少一个处理器以从安全服务器接收第一权重及第二权重,所述安全服务器经配置以执行与包含所述主机系统的多个计算机系统的反恶意软件事务;At least one processor of the host system is used to receive a first weight and a second weight from a security server, which is configured to perform anti-malware transactions with a plurality of computer systems including the host system. 使用所述至少一个处理器以接收针对被评估过程而确定的第一过程评估指示符,所述被评估过程在由在所述主机系统上执行的管理程序公开的虚拟机内执行,其中确定所述第一过程评估指示符包括使用在所述虚拟机内执行的过程评估器来确定所述被评估过程是否执行第一动作;The at least one processor is used to receive a first process evaluation indicator determined for a process being evaluated, the process being evaluated being executed within a virtual machine exposed by a hypervisor executing on the host system, wherein determining the first process evaluation indicator includes using a process evaluator executing within the virtual machine to determine whether the process being evaluated performs a first action; 使用所述至少一个处理器以接收针对所述被评估过程而确定的第二过程评估指示符,其中确定所述第二过程评估指示符包括使用在所述虚拟机的外部执行的存储器自省引擎来确定所述被评估过程是否执行第二动作;且The at least one processor is used to receive a second process evaluation indicator determined for the process being evaluated, wherein determining the second process evaluation indicator includes using a memory introspection engine executed outside the virtual machine to determine whether the process being evaluated performs a second action; and 响应于接收到所述第一及第二过程评估指示符,使用所述至少一个处理器以根据所述第一及第二过程评估指示符来确定所述被评估过程是否为恶意的,其中确定所述被评估过程是否为恶意的包括确定第一得分及第二得分的加权总和,所述第一权重乘所述加权总和中的所述第一得分,且所述第二权重乘所述加权总和中的所述第二得分,其中所述第一得分及所述第二得分是根据所述第一过程评估指示符及所述第二过程评估指示符分别确定。In response to receiving the first and second process evaluation indicators, the at least one processor is used to determine whether the evaluated process is malicious based on the first and second process evaluation indicators, wherein determining whether the evaluated process is malicious includes determining a weighted sum of a first score and a second score, wherein the first weight is multiplied by the first score in the weighted sum, and the second weight is multiplied by the second score in the weighted sum, wherein the first score and the second score are determined based on the first process evaluation indicator and the second process evaluation indicator, respectively. 20.一种方法,其包括:20. A method comprising: 使用主机系统的至少一个处理器以从安全服务器接收第一权重及第二权重,所述安全服务器经配置以执行与包含所述主机系统的多个计算机系统的反恶意软件事务;At least one processor of the host system is used to receive a first weight and a second weight from a security server, which is configured to perform anti-malware transactions with a plurality of computer systems including the host system. 使用所述至少一个处理器以执行存储器自省引擎,所述存储器自省引擎在由在所述主机系统上执行的管理程序公开的虚拟机的外部执行,其中执行所述存储器自省引擎包括检测在所述虚拟机内执行的过程的启动;The at least one processor is used to execute a memory introspection engine, which executes outside a virtual machine exposed by a hypervisor executing on the host system, wherein executing the memory introspection engine includes detecting the initiation of a process executing within the virtual machine; 响应于所述存储器自省引擎检测到所述过程的所述启动,使用所述至少一个处理器以确定所述过程的第一及第二过程评估指示符;以及In response to the memory introspection engine detecting the initiation of the process, the at least one processor is used to determine first and second process evaluation indicators for the process; and 响应于确定所述第一及第二评估指示符,使用所述至少一个处理器以根据所述第一及第二过程评估指示符来确定所述过程是否为恶意的,其中确定所述被评估过程是否为恶意的包括确定第一得分及第二得分的加权总和,所述第一权重乘所述加权总和中的所述第一得分,且所述第二权重乘所述加权总和中的所述第二得分,其中所述第一得分及所述第二得分是根据所述第一过程评估指示符及所述第二过程评估指示符分别确定。In response to determining the first and second evaluation indicators, the at least one processor is used to determine whether the process is malicious based on the first and second process evaluation indicators, wherein determining whether the evaluated process is malicious includes determining a weighted sum of a first score and a second score, wherein the first weight is multiplied by the first score in the weighted sum, and the second weight is multiplied by the second score in the weighted sum, wherein the first score and the second score are determined based on the first process evaluation indicator and the second process evaluation indicator, respectively.
HK16104719.4A 2013-07-05 2014-07-02 Process evaluation for malware detection in virtual machines HK1216930B (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/936,058 US9117080B2 (en) 2013-07-05 2013-07-05 Process evaluation for malware detection in virtual machines
US13/936,058 2013-07-05
PCT/RO2014/000019 WO2015152748A1 (en) 2013-07-05 2014-07-02 Process evaluation for malware detection in virtual machines

Publications (2)

Publication Number Publication Date
HK1216930A1 HK1216930A1 (en) 2016-12-09
HK1216930B true HK1216930B (en) 2020-07-24

Family

ID=

Similar Documents

Publication Publication Date Title
CA2915888C (en) Process evaluation for malware detection in virtual machines
US8549648B2 (en) Systems and methods for identifying hidden processes
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
US8549644B2 (en) Systems and method for regulating software access to security-sensitive processor resources
US10635479B2 (en) Event filtering for virtual machine security applications
US9087199B2 (en) System and method for providing a secured operating system execution environment
US9392016B2 (en) System and method for below-operating system regulation and control of self-modifying code
US8925089B2 (en) System and method for below-operating system modification of malicious code on an electronic device
US9384349B2 (en) Negative light-weight rules
US8621620B2 (en) System and method for protecting and securing storage devices using below-operating system trapping
US8650642B2 (en) System and method for below-operating system protection of an operating system kernel
US8863283B2 (en) System and method for securing access to system calls
US20120255014A1 (en) System and method for below-operating system repair of related malware-infected threads and resources
US20120254994A1 (en) System and method for microcode based anti-malware security
HK1216930B (en) Process evaluation for malware detection in virtual machines
HK1216679B (en) Page fault injection in virtual machines