HK1254084B - System and methods for auditing a virtual machine - Google Patents
System and methods for auditing a virtual machineInfo
- Publication number
- HK1254084B HK1254084B HK18113148.4A HK18113148A HK1254084B HK 1254084 B HK1254084 B HK 1254084B HK 18113148 A HK18113148 A HK 18113148A HK 1254084 B HK1254084 B HK 1254084B
- Authority
- HK
- Hong Kong
- Prior art keywords
- audit
- target
- agent
- executing
- driver
- Prior art date
Links
Description
相关申请案Related applications
本申请案主张2016年1月5日申请的标题为“用于审计虚拟机的系统及方法(Systems and Methods for Auditing a Virtual Machine)”的第62/274,902号美国临时专利申请案的申请日期的权益,所述美国专利申请案的全部内容以引用方式并入本文中。This application claims the benefit of the filing date of U.S. Provisional Patent Application No. 62/274,902, filed on January 5, 2016, entitled “Systems and Methods for Auditing a Virtual Machine,” which is incorporated herein by reference in its entirety.
背景技术Background Art
本发明涉及用于执行软件审计的系统及方法,且更特定来说,涉及执行于硬件虚拟化配置中的软件审计。The present invention relates to systems and methods for performing software auditing, and more particularly, to software auditing performed in hardware virtualization configurations.
在现代软件驱动的经济中,由公司持有的硬件及软件资产量及复杂性持续增加。随着员工从使用桌面计算机转变为使用移动装置(例如膝上型计算机、平板计算机及移动电话)且随着工作变得不受位置限制,记录公司的硬件及软件资产变成一个严重的问题。举例来说,代替跨越所有公司计算机使用单个版本的软件应用程序,公司如今通常使用每一应用程序的多个版本以考虑员工在现代移动办公室中使用的各种硬件平台及操作系统。当应用软件更新时、当此类更新可能并未一致地被递送到所有计算机及移动装置时,所述情况进一步复杂化。In the modern software-driven economy, the volume and complexity of hardware and software assets held by companies continues to increase. As employees transition from using desktop computers to using mobile devices (such as laptops, tablets, and mobile phones), and as work becomes more location-independent, keeping track of a company's hardware and software assets becomes a significant problem. For example, instead of using a single version of a software application across all company computers, companies now typically use multiple versions of each application to account for the various hardware platforms and operating systems used by employees in the modern mobile office. This situation is further complicated when software updates are applied, as such updates may not be delivered consistently to all computers and mobile devices.
此增加的异质性可使软件许可及服务水平协议复杂化。另外,用于移动装置上的应用程序软件的近期扩增造成越来越大的计算机安全风险。恶意软件及间谍软件可容易地伪装于过剩的合法应用程序及版本之中,从而使员工及公司经受对专有数据的未授权存取风险及生产率损失等。This increased heterogeneity can complicate software licensing and service-level agreements. Furthermore, the recent proliferation of application software for mobile devices creates a growing computer security risk. Malware and spyware can easily disguise themselves among the plethora of legitimate applications and versions, exposing employees and companies to the risk of unauthorized access to proprietary data and lost productivity.
改变经典计算模型的另一近期发展是硬件虚拟化。在例如网页服务器农场及虚拟桌面基础架构(VDI)等应用程序中,数以百计的虚拟机可同时在单个物理平台上执行。此类虚拟机可动态经实例化及/或移除,这进一步增加任一时间在相应物理平台上执行的软件的异质性。Another recent development that has altered the classic computing model is hardware virtualization. In applications such as web server farms and virtual desktop infrastructure (VDI), hundreds of virtual machines can run simultaneously on a single physical platform. These virtual machines can be dynamically instantiated and/or removed, further increasing the heterogeneity of the software running on a given physical platform at any given time.
出于例如许可、数字权利管理、应用程序控制及计算机安全等目的,审计软件可用于记录安装于计算机系统上及/或当前在计算机系统上执行的软件。越来越有兴趣开发特别适于现代虚拟化环境的审计系统及方法。Audit software can be used to record the software installed and/or currently executing on a computer system for purposes such as licensing, digital rights management, application control, and computer security.There is growing interest in developing audit systems and methods that are particularly well-suited for modern virtualized environments.
发明内容Summary of the Invention
根据一个方面,一种包括经配置以执行一组客户虚拟机(VM)及进一步在所述组客户VM外部执行VM审计引擎的至少一个硬件处理器的计算机系统。所述VM审计引擎经配置响应于从远程审计服务器接收到审计请求:将审计代理插入到所述组所述客户VM的目标VM中,所述审计代理经配置以执行所述目标VM的审计,所述审计包括选自由以下各者组成的群组的项目:生成经安装用于在所述目标VM上执行的合法计算机程序列表;及确定硬件资源的量,所述量当前由所述目标VM使用。所述VM审计引擎进一步经配置:响应于插入所述审计代理,导致所述目标VM执行所述审计代理;及响应于所述目标VM执行所述审计代理,从所述目标VM移除所述审计代理。According to one aspect, a computer system includes at least one hardware processor configured to execute a set of client virtual machines (VMs) and further execute a VM audit engine external to the set of client VMs. The VM audit engine is configured, in response to receiving an audit request from a remote audit server, to insert an audit agent into a target VM of the set of client VMs, the audit agent being configured to perform an audit of the target VM, the audit including items selected from the group consisting of: generating a list of legal computer programs installed for execution on the target VM; and determining the amount of hardware resources currently used by the target VM. The VM audit engine is further configured, in response to inserting the audit agent, to cause the target VM to execute the audit agent; and in response to the target VM executing the audit agent, to remove the audit agent from the target VM.
根据另一方面,一种包括采用计算机系统的至少一个硬件处理器在所述计算机系统上执行的一组客户VM外部执行虚拟机审计引擎的方法。执行所述VM审计引擎包括:响应于从远程服务器接收到审计请求,将审计代理插入到所述组客户VM的目标VM中,所述审计代理经配置以执行所述目标VM的审计,所述审计包括选自由以下各者组成的群组的项目:生成经安装用于在所述目标VM上执行的合法计算机程序列表;及确定硬件资源的量,所述量当前由所述目标VM使用。执行所述VM审计引擎进一步包括:响应于插入所述审计代理,导致所述目标VM执行所述审计代理;及响应于所述目标VM执行所述审计代理,从所述目标VM移除所述审计代理。According to another aspect, a method includes executing a virtual machine audit engine externally to a group of client VMs executing on the computer system using at least one hardware processor of a computer system. Executing the VM audit engine includes: in response to receiving an audit request from a remote server, inserting an audit agent into a target VM of the group of client VMs, the audit agent being configured to perform an audit of the target VM, the audit including items selected from the group consisting of: generating a list of legal computer programs installed for execution on the target VM; and determining an amount of hardware resources currently used by the target VM. Executing the VM audit engine further includes: in response to inserting the audit agent, causing the target VM to execute the audit agent; and in response to the target VM executing the audit agent, removing the audit agent from the target VM.
根据另一方面,一种包括经配置以使用多个客户端系统执行审计事务的至少一个硬件处理器的服务器计算机系统。审计事务包括:将审计请求发送到所述多个客户端系统的客户端系统;及作为响应,从所述客户端系统接收审计报告,所述审计报告由在所述客户端系统上执行的一组客户VM外部的所述客户端系统上执行的虚拟机VM审计引擎确定。确定所述审计报告包括:响应于从所述服务器计算机系统接收到审计请求,将审计代理插入到所述组客户VM的目标VM中,所述审计代理经配置以执行所述目标VM的审计,所述审计包括选自由以下各者组成的群组的项目:生成经安装用于在所述目标VM上执行的合法计算机程序列表;及确定硬件资源的量,所述量当前由所述目标VM使用。确定所述审计报告进一步包括:响应于插入所述审计代理,导致所述目标VM执行所述审计代理;及响应于所述目标VM执行所述审计代理,从所述目标VM移除所述审计代理。According to another aspect, a server computer system includes at least one hardware processor configured to perform an audit transaction using multiple client systems. The audit transaction includes: sending an audit request to a client system of the multiple client systems; and in response, receiving an audit report from the client system, the audit report being determined by a virtual machine VM audit engine executing on the client system outside a group of client VMs executing on the client system. Determining the audit report includes: in response to receiving the audit request from the server computer system, inserting an audit agent into a target VM of the group of client VMs, the audit agent being configured to perform an audit of the target VM, the audit including items selected from the group consisting of: generating a list of legal computer programs installed for execution on the target VM; and determining the amount of hardware resources currently used by the target VM. Determining the audit report further includes: in response to inserting the audit agent, causing the target VM to execute the audit agent; and in response to the target VM executing the audit agent, removing the audit agent from the target VM.
根据另一方面,一种存储指令的非暂时性计算机可读媒体,所述指令在由计算机系统的至少一个硬件处理器执行时导致所述计算机系统形成虚拟机审计引擎,所述VM审计引擎在公开于所述计算机系统上的一组客户VM外部执行,其中所述VM审计引擎经配置响应于从远程审计服务器接收到审计请求:将审计代理插入到所述组客户VM的目标VM中,所述审计代理经配置以执行所述目标VM的审计,所述审计包括选自由以下各者组成的群组的项目:生成经安装用于在所述目标VM上执行的合法计算机程序列表;及确定硬件资源的量,所述量当前由所述目标VM使用。所述VM审计引擎进一步经配置:响应于插入所述审计代理,导致所述目标VM执行所述审计代理;及响应于所述目标VM执行所述审计代理,从所述目标VM移除所述审计代理。According to another aspect, a non-transitory computer-readable medium storing instructions that, when executed by at least one hardware processor of a computer system, cause the computer system to form a virtual machine audit engine, the VM audit engine executing externally to a set of client VMs disclosed on the computer system, wherein the VM audit engine is configured, in response to receiving an audit request from a remote audit server, to: insert an audit agent into a target VM in the set of client VMs, the audit agent configured to perform an audit of the target VM, the audit including items selected from the group consisting of: generating a list of legal computer programs installed for execution on the target VM; and determining an amount of hardware resources currently used by the target VM. The VM audit engine is further configured, in response to inserting the audit agent, to cause the target VM to execute the audit agent; and in response to the target VM executing the audit agent, to remove the audit agent from the target VM.
附图说明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 referring to the accompanying drawings, in which:
图1说明根据本发明的一些实施例的其中多个客户端系统在审计服务器的请求下审计的示范性配置。1 illustrates an exemplary configuration in which multiple client systems are audited at the request of an audit server according to some embodiments of the present invention.
图2-A说明根据本发明的一些实施例的经审计客户端系统的示范性硬件配置。FIG2-A illustrates an exemplary hardware configuration of an audited client system according to some embodiments of the present invention.
图2-B说明根据本发明的一些实施例的审计服务器的示范性硬件配置。FIG2-B illustrates an exemplary hardware configuration of an audit server according to some embodiments of the present invention.
图3-A展示根据本发明的一些实施例的由经审计客户端系统上执行的管理程序公开的示范性虚拟机及在经审计VM外部执行的VM审计引擎。3-A shows an exemplary virtual machine exposed by a hypervisor executing on an audited client system and a VM audit engine executing external to the audited VM, according to some embodiments of the invention.
图3-B展示根据本发明的一些实施例的其中客户虚拟机由客户端系统上执行的单独审计VM审计的替代性配置。3-B illustrates an alternative configuration in which guest virtual machines are audited by a separate audit VM executing on the client system, according to some embodiments of the invention.
图4展示根据本发明的一些实施例的由审计安装应用程序实施以设置客户端系统的审计的示范性步骤序列。4 shows an exemplary sequence of steps performed by an audit installation application to set up auditing of a client system, according to some embodiments of the invention.
图5展示根据本发明的一些实施例的经审计客户端系统与审计服务器之间的示范性数据交换。FIG5 shows an exemplary data exchange between an audited client system and an audit server according to some embodiments of the present invention.
图6展示根据本发明的一些实施例的由VM审计引擎执行的示范性步骤序列。FIG6 illustrates an exemplary sequence of steps performed by a VM audit engine according to some embodiments of the invention.
图7展示根据本发明的一些实施例的在各种处理器特权级下执行的审计代理的示范性组件。7 shows exemplary components of an audit agent executing at various processor privilege levels according to some embodiments of the invention.
图8展示根据本发明的一些实施例的由VM审计引擎执行以将审计代理放到经审计VM中的示范性步骤序列。8 shows an exemplary sequence of steps performed by a VM audit engine to place an audit agent into an audited VM, according to some embodiments of the invention.
图9说明根据本发明的一些实施例的由审计代理的驱动程序加载程序执行的示范性步骤序列。9 illustrates an exemplary sequence of steps performed by a driver loader of an audit agent according to some embodiments of the present invention.
图10展示根据本发明的一些实施例的由审计驱动程序执行的示范性步骤序列。FIG. 10 shows an exemplary sequence of steps performed by an audit driver according to some embodiments of the present invention.
具体实施方式DETAILED DESCRIPTION
应理解,在以下描述中,结构之间所述所有连接可为直接操作连接或通过中间结构的间接操作连接。一组元件包含一或多个元件。应理解,元件的任何陈述是指至少一个元件。多个元件包含至少两个元件。除非另外要求,否则描述的任何方法步骤不一定需要按说明的特定顺序执行。从第二元素导出的第一元素(例如,数据)涵盖等于第二元素的第一元素,还涵盖通过处理第二元素及任选地其它数据生成的第一元素。根据参数作出确定或决策涵盖根据参数及任选地根据其它数据作出确定或决策。除非另外指定,否则一些数量/数据的指示符可为数量/数据本身或不同于数量/数据本身的指示符。计算机程序是实施任务的处理器指令序列。本发明的一些实施例中描述的计算机程序可为其它计算机程序的独立软件实体或子实体(例如,子例程、库)。除非另外指定,否则合法计算机程序是经安装或以其它方式经配置以由相应计算机系统的合法用户执行的计算机程序。相比之下,由未授权入侵者安装到相应计算机系统的秘密恶意软件(malicious software)(恶意软件(malware))及计算机程序在本文被认为是不合法的计算机程序。据说,当相应计算机程序在相应虚拟机的至少一个虚拟处理器上执行时,计算机程序在虚拟机内或内部执行(或相应虚拟机执行相应计算机程序)。进程是计算机程序(例如应用程序)的例子或操作系统的一部分,且通过具有至少一执行线程及指派到其的虚拟存储器空间而特性化,其中相应虚拟存储器空间的内容包含可执行代码。除非另外指定,否则页表示可个别地映射到主机系统的物理存储器的虚拟存储器的最小单位。除非另外指定,否则寄存器表示与处理器集成或形成处理器的一部分且与随机存取存储器(RAM)不同的存储组件。隧道是连接到通信网络的两个实体之间的虚拟点到点连接。计算机可读媒体涵盖非暂时性媒体,例如磁性、光学及半导体存储器媒体(例如,硬盘驱动、光盘、快闪存储器、DRAM),还涵盖通信链路,例如导电电缆及光纤链路。根据一些实施例,本发明提供(除其它外)计算机系统,其包括经编程以执行本文描述的方法的硬件(例如,一或多个微处理器),还包括编码指令以执行本文描述的方法的计算机可读媒体。It should be understood that in the following description, all connections between structures may be direct operational connections or indirect operational connections through intermediate structures. A group of elements includes one or more elements. It should be understood that any statement of an element refers to at least one element. A plurality of elements includes at least two elements. Unless otherwise required, any method steps described 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, and also encompasses a first element generated by processing the second element and optionally other data. Making a determination or decision based on a parameter encompasses making a determination or decision based on the parameter and optionally other data. Unless otherwise specified, an indicator of some quantity/data may be the quantity/data itself or an indicator different from the quantity/data itself. A computer program is a sequence of processor instructions that implements a task. The computer program described in some embodiments of the present invention may be an independent software entity or sub-entity (e.g., a subroutine, a library) of another computer program. Unless otherwise specified, a legitimate computer program is a computer program that is installed or otherwise configured to be executed by a legitimate user of the corresponding computer system. In contrast, malicious software (malware) and computer programs installed by unauthorized intruders on a corresponding computer system are considered illegitimate computer programs herein. A computer program is said to execute within or inside a virtual machine (or the corresponding virtual machine executes the corresponding computer program) when the corresponding computer program is executed on at least one virtual processor of the corresponding virtual machine. A process is an instance of a computer program (e.g., an application) or a portion of an operating system, characterized by having at least one thread of execution and a virtual memory space assigned to it, wherein the contents of the corresponding virtual memory space contain executable code. Unless otherwise specified, a page represents the smallest unit of virtual memory that can be individually mapped to the physical memory of a host system. Unless otherwise specified, a register represents a storage component that is integrated with or forms part of a processor and is distinct from random access memory (RAM). A tunnel is a virtual point-to-point connection between two entities connected to a communication network. Computer-readable media encompasses non-transitory media such as magnetic, optical, and semiconductor storage media (e.g., hard drives, optical disks, flash memory, DRAM), as well as communication links such as conductive cables and fiber optic links. According to some embodiments, the present invention provides, among other things, a computer system comprising hardware (eg, one or more microprocessors) 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展示根据本发明的一些实施例的示范性配置,其中多个客户端系统12a到d在审计服务器14的请求下远程地审计。示范性客户端系统12a到d包含个人计算机系统、移动计算平台(膝上型计算机、平板计算机、移动电话)、娱乐装置(TV、游戏机)、可穿戴装置(智能手表、健身手环)、家用电器,以及包括处理器及存储器且能够操作硬件虚拟化平台的任何其它电子装置。客户端系统12a到d经由通信网络10互连,例如企业网络、因特网等。网络10的部件可包含局域网(LAN)。FIG1 shows an exemplary configuration according to some embodiments of the present invention, in which a plurality of client systems 12a-d are audited remotely at the request of an audit server 14. Exemplary client systems 12a-d include personal computer systems, mobile computing platforms (laptops, tablets, mobile phones), entertainment devices (TVs, game consoles), wearable devices (smart watches, fitness bands), home appliances, and any other electronic device that includes a processor and memory and is capable of operating a hardware virtualization platform. Client systems 12a-d are interconnected via a communication network 10, such as an enterprise network, the Internet, etc. Components of network 10 may include a local area network (LAN).
审计服务器14通信地耦合到客户端系统12a到d且与每一客户端系统12a到d合作以执行相应客户端系统的审计。示范性审计活动包含(除其它外)软件资产的识别及相应软件资产关于许可、使用情况及权利的验证。此审计的粒度可从相对高级(例如,确定哪些应用程序/版本被安装于客户端系统上)到深入审计(包含(例如)确定客户端系统上执行的软件是否使用特定版本的关键组件(例如,驱动程序、补丁、反恶意软件模块)、每一组件何时被安装或存取、单个应用程序使用多少硬件资源等)变化。其它示范性审计活动包含(除其它外)确定审计时哪些软件组件(应用程序、进程、驱动程序等)当前正在客户端系统上执行、确定相应客户端系统的处理器的当前状态、确定当前资源使用水平(例如,CPU、存储器、磁盘、网络等)及确定相应客户端系统的OS、各种应用程序的一组配置参数值/设置、用户设置等。An audit server 14 is communicatively coupled to the client systems 12a-d and cooperates with each client system 12a-d to perform an audit of the respective client system. Exemplary audit activities include, among other things, identification of software assets and verification of the respective software assets with respect to licensing, usage, and rights. The granularity of such audits can vary from relatively high-level (e.g., determining which applications/versions are installed on the client system) to in-depth audits (including, for example, determining whether the software executing on the client system uses specific versions of key components (e.g., drivers, patches, anti-malware modules), when each component was installed or accessed, how many hardware resources a single application uses, etc.). Other exemplary audit activities include, among other things, determining which software components (applications, processes, drivers, etc.) are currently executing on the client system at the time of the audit, determining the current state of the respective client system's processor, determining current resource usage levels (e.g., CPU, memory, disk, network, etc.), and determining a set of configuration parameter values/settings for the respective client system's OS, various applications, user settings, etc.
服务器14一般地表示一组互连计算系统,其可或可不与彼此物理接近。在一些实施例中,审计服务器14经配置以存取客户端数据库15。在示范性客户端数据库15中,每一条目与经审计客户端系统12a到d相关联,且可包含从相应客户端系统接收到的一组审计报告(参见下文)的内容。每一条目可进一步使用从相应客户端系统接收到的每一审计报告的接收时间的指示符进行时间标记。数据库15中的每一条目可包括针对相应客户端系统确定的审计数据,包含(例如)相应客户端系统的硬件配置的指示符、操作系统(OS)的类型及版本的指示符、一组合法安装的应用程序或其它软件组件(例如,驱动程序、补丁)的指示符、当前加载及/或审计时执行的一组软件组件(应用程序、进程、驱动程序等)的指示符、指示相应客户端系统的各种OS、应用程序及/或用户设置的一组参数及审计时资源(例如,CPU、存储器、磁盘等)使用情况的一组指示符。审计数据可进一步包含时间指示符,其指示所列每一软件组件何时被安装及/或所列每一组件最近一次被存取或修改的时间。The server 14 generally represents a group of interconnected computing systems that may or may not be in physical proximity to one another. In some embodiments, the audit server 14 is configured to access a client database 15. In the exemplary client database 15, each entry is associated with an audited client system 12a to d and may include the contents of a set of audit reports (see below) received from the respective client system. Each entry may further be time-stamped with an indicator of the time each audit report received from the respective client system was received. Each entry in the database 15 may include audit data determined for the respective client system, including, for example, an indicator of the hardware configuration of the respective client system, an indicator of the type and version of the operating system (OS), an indicator of a set of legally installed applications or other software components (e.g., drivers, patches), an indicator of a set of software components (applications, processes, drivers, etc.) currently loaded and/or executing at the time of the audit, a set of parameters indicating various OS, application, and/or user settings of the respective client system, and a set of indicators of resource usage (e.g., CPU, memory, disk, etc.) at the time of the audit. The audit data may further include a time indicator indicating when each listed software component was installed and/or when each listed component was last accessed or modified.
图2-A展示客户端系统12(例如图1中的系统12a到d)的示范性硬件配置。为简单起见,所说明的客户端系统是计算机系统,其它客户端系统(例如移动电话、手表等)的硬件配置可稍微不同于说明的配置。客户端系统12包括一组物理装置,包含硬件处理器16及存储器单元18。处理器16包括经配置以使用一组信号及/或数据执行计算操作及/或逻辑运算的物理装置(例如,微处理器、形成于半导体衬底上的多核集成电路等)。在一些实施例中,此类操作以处理器指令序列(例如,机器代码或其它类型的编码)的形式被递送到处理器16。存储器单元18可包括存储由处理器16存取或生成的指令及/或数据的易失性计算机可读媒体(例如,DRAM、SRAM)。FIG2-A shows an exemplary hardware configuration of a client system 12 (e.g., systems 12a to d in FIG1 ). For simplicity, the client system illustrated is a computer system; the hardware configuration of other client systems (e.g., mobile phones, watches, etc.) may differ slightly from the illustrated configuration. Client system 12 includes a set of physical devices, including a hardware processor 16 and a memory unit 18. Processor 16 includes a physical device (e.g., a microprocessor, a multi-core integrated circuit formed on a semiconductor substrate, etc.) configured to perform computing operations and/or logical operations using a set of signals and/or data. In some embodiments, such operations are delivered to processor 16 in the form of a sequence of processor instructions (e.g., machine code or other type of encoding). Memory unit 18 may include volatile computer-readable media (e.g., DRAM, SRAM) that stores instructions and/or data accessed or generated by processor 16.
输入装置20可包含计算机键盘、鼠标及麦克风等,包含允许用户将数据及/或指令引入到客户端系统12中的相应硬件接口及/或适配器。输出装置22可包含例如监测器及扬声器等显示器装置,还可包含例如显卡等允许客户端系统12将数据传达给用户的硬件接口/适配器。在一些实施例中,输入装置20及输出装置22可共享一件共同硬件,如在触摸屏装置的案例中。存储装置24包含实现软件指令及/或数据的非易失性存储、读取及写入的计算机可读媒体。示范性存储装置24包含磁盘及光盘及快闪存储器装置,还包含可装卸媒体,例如CD及/或DVD光盘及驱动。一组网络适配器26使客户端系统12能够连接到计算机网络及/或连接到其它装置/计算机系统。控制器集线器28表示多个系统、外围设备及/或芯片集总线及/或实现处理器16与装置18、20、22、24及26之间的通信的所有其它电路。例如,控制器集线器28可包含存储器控制器、输入/输出(I/O)控制器及中断控制器等。在另一实例中,控制器集线器28可包括将处理器16连接到存储器18的北桥及/或将处理器16连接到装置20、22、24及26的南桥。Input devices 20 may include a computer keyboard, mouse, and microphone, among others, including corresponding hardware interfaces and/or adapters that allow a user to enter data and/or instructions into client system 12. Output devices 22 may include display devices such as a monitor and speakers, and may also include hardware interfaces/adapters that allow client system 12 to communicate data to the user, such as a graphics card. In some embodiments, input devices 20 and output devices 22 may share a common piece of hardware, such as in the case of a touchscreen device. Storage devices 24 include computer-readable media that enables non-volatile storage, reading, and writing of software instructions and/or data. Exemplary storage devices 24 include magnetic and optical disks and flash memory devices, as well as removable media such as CD and/or DVD disks and drives. A set of network adapters 26 enables client system 12 to connect to a computer network and/or to other devices/computer systems. Controller hub 28 represents multiple system, peripheral, and/or chipset buses and/or all other circuitry that enables communication between processor 16 and devices 18, 20, 22, 24, and 26. For example, controller hub 28 may include a memory controller, an input/output (I/O) controller, an interrupt controller, etc. In another example, controller hub 28 may include a north bridge that connects processor 16 to memory 18 and/or a south bridge that connects processor 16 to devices 20, 22, 24, and 26.
图2-B展示根据本发明的一些实施例的审计服务器14的示范性硬件配置。服务器14包括至少一个硬件处理器116(例如,微处理器、多核集成电路)、物理存储器118及一组服务器网络适配器126。适配器126可包含网卡及使审计服务器14能够连接到通信网络10的其它通信接口。在一些实施例中,服务器14进一步包括输入、输出及存储装置,其在功能上可分别类似于输入20、输出22及存储装置24。FIG2-B shows an exemplary hardware configuration of an audit server 14 according to some embodiments of the present invention. Server 14 includes at least one hardware processor 116 (e.g., a microprocessor, a multi-core integrated circuit), physical memory 118, and a set of server network adapters 126. Adapters 126 may include network cards and other communication interfaces that enable audit server 14 to connect to communication network 10. In some embodiments, server 14 further includes input, output, and storage devices, which may be functionally similar to input 20, output 22, and storage device 24, respectively.
在一些实施例中,客户端系统12经配置以公开一组虚拟机,例如,如图3-A到B中说明。虚拟机(VM)使用硬件虚拟化领域中已知的多种技术中的任何者仿真实际物理机/计算机系统。在一些实施例中,管理程序30(在所属领域中也称为虚拟机监测器(VMM))在客户端系统12上执行,且经配置以创建或启用多个虚拟化装置,例如虚拟处理器及虚拟存储器管理单元,及代替客户端系统12的真实物理装置将此类虚拟化装置公开到软件。此类操作在所属领域中通常已知为公开虚拟机。管理程序30可进一步使多个虚拟机能够共享主机系统12的硬件资源,使得每一VM单独操作且并未察觉到客户端系统12上当前执行的其它VM。流行的管理程序的实例包含来自VMware有限公司(VMware Inc.)的VMware vSphereTM及开源Xen管理程序等。In some embodiments, client system 12 is configured to expose a set of virtual machines, such as those illustrated in Figures 3-A to 3-B. Virtual machines (VMs) emulate actual physical machines/computer systems using any of a variety of techniques known in the art of hardware virtualization. In some embodiments, a hypervisor 30 (also known in the art as a virtual machine monitor (VMM)) executes on client system 12 and is configured to create or enable multiple virtualized devices, such as virtual processors and virtual memory management units, and expose such virtualized devices to software instead of the actual physical devices of client system 12. Such operations are generally known in the art as exposing virtual machines. Hypervisor 30 can further enable multiple virtual machines to share the hardware resources of host system 12, such that each VM operates independently and is unaware of other VMs currently executing on client system 12. Examples of popular hypervisors include VMware vSphere ™ from VMware Inc. and the open source Xen hypervisor, among others.
在图3-A到B中说明的示范性配置中,客户VM 32执行客户操作系统(OS)34及一组应用程序36a到b。客户OS 34可包括任何广泛可用的操作系统,例如Microsoft或等,其提供VM 32内执行的应用程序与VM 32的虚拟化硬件装置之间的接口。应用程序36a到b一般地表示任何用户应用程序,例如文字处理器、电子表格应用程序,图形应用程序、浏览器、社交媒体及电子通信应用程序等。In the exemplary configuration illustrated in Figures 3-A to 3-B, a guest VM 32 executes a guest operating system (OS) 34 and a set of applications 36a to b. Guest OS 34 may include any widely available operating system, such as Microsoft Windows or the like, which provides an interface between applications executing within VM 32 and the virtualized hardware devices of VM 32. Applications 36a to b generally represent any user application, such as a word processor, spreadsheet application, graphics application, browser, social media and electronic communication application, etc.
在图3-A中说明的实施例中,VM审计引擎40a在管理程序30的处理器特权级(例如,根级或环-1)下在客户VM 32外部执行。VM审计引擎40a经配置以执行客户VM 32的审计。在一些实施例中,此审计包括将审计代理42放到经审计VM中,如下文详细描述,且一旦审计完成就从经审计VM移除代理42。3-A , VM audit engine 40 a executes outside guest VM 32 at the processor privilege level (e.g., root level or ring-1) of hypervisor 30. VM audit engine 40 a is configured to perform an audit of guest VM 32. In some embodiments, this audit includes placing an audit agent 42 in the audited VM, as described in detail below, and removing the agent 42 from the audited VM once the audit is complete.
在图3-B中说明的替代性实施例中,管理程序30经配置以公开与所有经审计客户VM分离的审计VM 33,其中审计VM 33可与客户VM 32同时执行。审计VM 33的一些实施例包括轻型最小操作系统(例如,OS的定制版本),且经配置以执行VM审计引擎40b,所述VM审计引擎40b经配置以执行客户VM 32的审计。客户VM 32及审计VM 33的虚拟环境可使用虚拟化领域中已知的任何方法与彼此隔离以保证客户VM 32内执行的恶意软件不会感染或以其它方式干扰审计VM 33内执行的软件。在图3-B的实施例中,内省引擎44在管理程序30的处理器特权级下在客户VM 32及审计VM 33外部执行。在图3-A的示范性实施例中,内省引擎44的部分活动可至少部分由VM审计引擎40a执行。In an alternative embodiment illustrated in FIG3-B , hypervisor 30 is configured to expose an audit VM 33, separate from all audited guest VMs, where audit VM 33 can execute concurrently with guest VM 32. Some embodiments of audit VM 33 include a lightweight minimal operating system (e.g., a customized version of an OS) and are configured to execute a VM audit engine 40b, which is configured to perform an audit of guest VM 32. The virtual environments of guest VM 32 and audit VM 33 can be isolated from each other using any method known in the virtualization art to ensure that malware executing within guest VM 32 cannot infect or otherwise interfere with software executing within audit VM 33. In the embodiment of FIG3-B , introspection engine 44 executes externally to guest VM 32 and audit VM 33 at the processor privilege level of hypervisor 30. In the exemplary embodiment of FIG3-A , some of the activities of introspection engine 44 can be performed, at least in part, by VM audit engine 40a.
尽管起草了图3-A到B以展示客户端系统12上执行的仅一个客户VM 32,但一些实施例可经配置以在运行多个VM的客户端系统中执行审计。此类虚拟化平台的典型应用程序是服务器农场,其中单个计算机系统可管控同时操作的数以百计的不同网页服务器VM。另一典型应用程序属于虚拟桌面基础架构(VDI)类别,其中用户的应用程序在第一计算机系统上执行,同时用户经由第二计算机系统(终端)与相应应用程序互动。在典型的VDI配置中,运行所请求的应用程序的虚拟机在第一计算机系统上按需经实例化,对于多个远程用户来说,这可停止执行数以百计的此类VM。在此类实施例中,单个VM审计引擎40a到b可执行多个VM或相应客户端系统上执行的所有VM的审计。例如,审计引擎40a到b可将审计代理放在相应客户VM中的每一者内部。在一个此实例中,VM审计引擎40a到b可选择一类型的审计代理并根据每一VM的硬件及/或软件规格(例如,根据相应VM内执行的OS的类型)调整代理投放程序。在一些实施例中,VM审计引擎40a到b可由服务器14指导以选择性地执行特定目标VM或相应客户端系统上执行的VM的所选择的子集的审计。Although Figures 3-A to B are drafted to show only one client VM 32 executing on a client system 12, some embodiments may be configured to perform audits on client systems running multiple VMs. A typical application for such a virtualization platform is a server farm, where a single computer system may manage hundreds of different web server VMs operating simultaneously. Another typical application falls into the category of virtual desktop infrastructure (VDI), where a user's application executes on a first computer system while the user interacts with the corresponding application via a second computer system (terminal). In a typical VDI configuration, virtual machines running requested applications are instantiated on demand on the first computer system, which can result in hundreds of such VMs being executed for multiple remote users. In such embodiments, a single VM audit engine 40a to b may perform audits of multiple VMs or all VMs executing on the corresponding client system. For example, the audit engine 40a to b may place an audit agent inside each of the corresponding client VMs. In one such example, VM audit engines 40a-b may select a type of audit agent and adjust the agent delivery procedures based on the hardware and/or software specifications of each VM (e.g., based on the type of OS executing within the respective VM). In some embodiments, VM audit engines 40a-b may be directed by server 14 to selectively perform audits of specific target VMs or a selected subset of VMs executing on the respective client systems.
在一些实施例中,内省引擎44(图3-B)经配置以检测经审计客户VM内的软件执行期间发生的各种事件及与其它审计软件(例如,代理42及/或引擎40a到b)交换此信息。由内省引擎44检测到的示范性事件包含(例如)处理器异常及/或中断、执行客户OS 34的特定功能的企图、处理器特权(例如,系统调用)的变化、存取特定存储器位置(从特定存储器位置读取、写入到特定存储器位置及/或从特定存储器位置执行)的企图等。内省引擎44可进一步经配置以确定客户VM 32内执行的各种软件组件的存储器地址,如下文进一步描述。In some embodiments, introspection engine 44 ( FIG. 3-B ) is configured to detect various events that occur during execution of software within an audited guest VM and to exchange this information with other auditing software (e.g., agent 42 and/or engines 40 a-b). Exemplary events detected by introspection engine 44 include, for example, processor exceptions and/or interrupts, attempts to execute specific functions of guest OS 34, changes in processor privileges (e.g., system calls), attempts to access (read from, write to, and/or execute from) specific memory locations, etc. Introspection engine 44 may further be configured to determine the memory addresses of various software components executing within guest VM 32, as further described below.
用于检测此类事件的若干方法是所属领域中已知的。在一个此实例中,内省引擎44可与管理程序30合作以使用第二级地址转译机构(例如,平台上的扩展页表-EPT、平台上的快速虚拟化索引-RVI)设置存储器存取权限。当企图存取特定存储器页违反针对相应存储器页设置的存取权限时,相应企图可触发处理器事件,例如异常或虚拟机退出事件(平台上的VMExit)。作为处理器事件的结果,处理器16可切换到在内省引擎44内执行事件处置器例程,这允许引擎44检测相应事件的发生。此类机构可通过将含有相应功能的一部分的存储器页标记为非可执行来检测(例如)对特定功能的调用。Several methods for detecting such events are known in the art. In one such example, the introspection engine 44 may cooperate with the hypervisor 30 to set memory access permissions using a second-level address translation mechanism (e.g., Extended Page Tables (EPT) on the platform, Rapid Virtualization Indexes (RVI) on the platform). When an attempt to access a particular memory page violates the access permissions set for the corresponding memory page, the corresponding attempt may trigger a processor event, such as an exception or a virtual machine exit event (VMExit on the platform). As a result of the processor event, the processor 16 may switch to executing an event handler routine within the introspection engine 44, which allows the engine 44 to detect the occurrence of the corresponding event. Such a mechanism can detect, for example, a call to a specific function by marking the memory page containing a portion of the corresponding function as non-executable.
为了简单且不丢失一般性起见,以下描述将集中于如图3-A中说明那样配置的示范性实施例。所属领域的技术人员应理解,描述的系统及方法可经调适成其它配置,且特定来说,调适成图3-B的示范性配置。在以下描述中,VM审计引擎将一般性地标记为40,其可取决于选取配置表示审计引擎40a或审计引擎40b。For the sake of simplicity and without loss of generality, the following description will focus on an exemplary embodiment configured as illustrated in FIG3-A . Those skilled in the art will appreciate that the described systems and methods can be adapted to other configurations, and in particular, to the exemplary configuration of FIG3-B . In the following description, the VM audit engine will be generally designated 40 , which may represent either audit engine 40 a or audit engine 40 b , depending on the configuration chosen.
图4展示根据本发明的一些实施例的经执行以设置客户端系统的审计的示范性步骤序列。在审计企业网络的典型场景中,网络管理员可将审计应用程序安装于每一客户端系统12a到d上。审计应用程序可包括各种组件,例如VM审计引擎40、内省引擎44等。所说明的步骤序列可例如由相应审计应用程序的安装程序实用程序实施。当安装于当前未在硬件虚拟化配置中操作的客户端系统上时,审计软件可在最高特权级(例如,支持虚拟化的平台上的VMXRoot,另外通常称为根模式或环-1)下首先接管处理器16,及安装管理程序30。接着,管理程序30可公开客户VM 32且移动相应客户端系统上先前执行的所有软件以在客户VM 32内执行。管理程序30可进一步设置VM审计引擎40及/或内省引擎44。当安装于已经运行多个虚拟机的硬件虚拟化平台上时,可省略步骤200到202。FIG4 illustrates an exemplary sequence of steps performed to configure an audit of a client system, according to some embodiments of the present invention. In a typical scenario for auditing an enterprise network, a network administrator may install an audit application on each client system 12a-d. The audit application may include various components, such as a VM audit engine 40, an introspection engine 44, and the like. The illustrated sequence of steps may be implemented, for example, by an installer utility for the respective audit application. When installed on a client system not currently operating in a hardware virtualization configuration, the audit software may first take over the processor 16 at the highest privilege level (e.g., VMXRoot on a platform that supports virtualization, also commonly referred to as root mode or ring-1) and install the hypervisor 30. The hypervisor 30 may then expose the guest VM 32 and move all software previously executed on the respective client system to execute within the guest VM 32. The hypervisor 30 may further configure the VM audit engine 40 and/or the introspection engine 44. When installed on a hardware virtualization platform that is already running multiple virtual machines, steps 200-202 may be omitted.
在一些实施例中,步骤206可设置从审计服务器14到VM审计引擎40的远程存取。此存取可使审计服务器能够自动或由人类操作者协助将指令直接发送到经审计客户端系统12。此类指令可(例如)指导VM审计引擎40执行特定种类的审计、检验客户VM的存在及/或特定软件组件的特性、确定处理器16的当前状态(例如,一组处理器寄存器的内容)、读取客户OS 34或其它软件的一组参数设置等。在一个示范性实施例中,步骤206可配置服务器14与管理程序30之间及/或服务器14与审计VM 33之间的隧道(即,点到点通信链路)。示范性隧道可根据虚拟专用网络(VPN)及/或安全外壳(SSH)协议及方法设置。一旦设置此隧道,其就可由服务器14使用以将审计请求及/或其它指令发送到VM审计引擎40。In some embodiments, step 206 may set up remote access from audit server 14 to VM audit engine 40. This access may enable the audit server to send instructions directly to audited client system 12, either automatically or with the assistance of a human operator. Such instructions may, for example, direct VM audit engine 40 to perform a particular type of audit, verify the presence of a guest VM and/or the characteristics of a particular software component, determine the current state of processor 16 (e.g., the contents of a set of processor registers), read a set of parameter settings for guest OS 34 or other software, etc. In one exemplary embodiment, step 206 may configure a tunnel (i.e., a point-to-point communication link) between server 14 and hypervisor 30 and/or between server 14 and audit VM 33. Exemplary tunnels may be set up according to virtual private network (VPN) and/or secure shell (SSH) protocols and methods. Once this tunnel is set up, it may be used by server 14 to send audit requests and/or other instructions to VM audit engine 40.
在另一步骤208中,审计安装程序可从管理程序30的等级配置内省及/或事件拦截。步骤208可包括(例如)设置对由经审计客户VM使用的一些存储器页的存取权限使得企图存取相应页将触发处理器事件(例如,VM退出事件),从而使VM审计引擎40或内省引擎44能够检测经审计客户VM 32内事件(例如,系统调用)的发生。在一些实施例中,步骤208可进一步设置经审计VM内执行的组件(例如,审计代理42)与相应VM外部执行的组件(例如,审计引擎40、内省引擎44)之间的信令及/或通信机构。此通信或信令可使用硬件虚拟化领域中已知的任何方法。在一个实例中,两个软件组件可经由由两个软件组件共享的物理存储器区段在彼此之间传输数据。为了将数据从VM内部执行的第一组件发送到相应VM外部执行的第二组件,第一软件组件可将数据写入到共享存储器区段且接着发布特权处理器指令(例如,平台上的VMCALL),从而导致VM退出事件。VM退出事件(例如平台上的VMExit)将处理器16从执行第一软件组件切换到执行处置器例程(其可为第二软件组件的部分)。因此,可通知相应VM外部执行的第二组件第一组件正尝试传输数据。相反地,为了将数据从第二组件发送到第一组件,第二组件可将数据写入到共享存储器区段且接着将中断注入到相应VM中。中断将由相应VM内执行的中断处置器处置(例如,由第一软件组件处置)。因此,第一组件可检测第二组件正尝试传输数据。在一些实施例中,步骤208包括将适当软件组件注册为用于各种处理器事件的处置器以启用上文描述的通信机构。In another step 208, the audit installer may configure introspection and/or event interception from the hypervisor 30 level. Step 208 may include, for example, setting access permissions for certain memory pages used by the audited guest VM so that an attempt to access the corresponding page will trigger a processor event (e.g., a VM exit event), thereby enabling the VM audit engine 40 or introspection engine 44 to detect the occurrence of an event (e.g., a system call) within the audited guest VM 32. In some embodiments, step 208 may further set up a signaling and/or communication mechanism between components executing within the audited VM (e.g., audit agent 42) and components executing outside the corresponding VM (e.g., audit engine 40, introspection engine 44). This communication or signaling may use any method known in the art of hardware virtualization. In one example, two software components may transfer data between each other via a physical memory segment shared by the two software components. To send data from a first component executing within the VM to a second component executing outside the corresponding VM, the first software component may write the data to the shared memory segment and then issue a privileged processor instruction (e.g., VMCALL on the platform), thereby causing a VM exit event. A VM exit event (e.g., VMExit on the platform) switches the processor 16 from executing the first software component to executing a handler routine (which may be part of a second software component). Thus, a second component executing external to the respective VM can be notified that the first component is attempting to transfer data. Conversely, to send data from the second component to the first component, the second component can write the data to a shared memory segment and then inject an interrupt into the respective VM. The interrupt will be handled by an interrupt handler executing within the respective VM (e.g., handled by the first software component). Thus, the first component can detect that the second component is attempting to transfer data. In some embodiments, step 208 includes registering the appropriate software component as a handler for various processor events to enable the communication mechanism described above.
图5展示根据本发明的一些实施例的审计服务器14与经审计客户端系统之间的示范性数据交换。服务器14可将审计请求50发送到客户端系统12,请求50指导VM审计引擎40执行客户端系统12的审计。在一些实施例中,审计请求50包含审计类型的指示符(例如,待对客户端系统12执行的审计操作的类型的指示符),其用于列出所有合法应用程序、确定当前OS设置等。另一示范性审计请求50包括客户端系统12上当前执行的目标虚拟机的指示符;例如审计请求可指导审计引擎40选择性地执行目标VM的审计。又一示范性审计请求50可包含具体软件组件(例如,Microsoft特定驱动程序等)的指示符。此请求可指导引擎40确定(除其它外)相应软件组件是否合法地安装于相应客户端系统上、安装了相应软件组件的哪一版本、相应软件组件当前是否加载于存储器中/当前是否执行、最近使用相应软件组件的时间等。另一示范性审计请求50可指导引擎40确定由目标VM或目标VM内执行的特定软件组件使用的硬件资源(例如,处理器、存储装置、存储器)的当前等级/量/百分比。FIG5 illustrates an exemplary data exchange between audit server 14 and an audited client system according to some embodiments of the present invention. Server 14 may send an audit request 50 to client system 12, directing VM audit engine 40 to perform an audit of client system 12. In some embodiments, audit request 50 includes an indicator of the audit type (e.g., an indicator of the type of audit operation to be performed on client system 12), which is used to list all legitimate applications, determine current OS settings, and the like. Another exemplary audit request 50 includes an indicator of the target virtual machine currently executing on client system 12; for example, the audit request may direct audit engine 40 to selectively perform an audit of the target VM. Yet another exemplary audit request 50 may include an indicator of a specific software component (e.g., a Microsoft-specific driver, etc.). This request may direct engine 40 to determine, among other things, whether the corresponding software component is legitimately installed on the corresponding client system, which version of the corresponding software component is installed, whether the corresponding software component is currently loaded in memory/currently executing, when the corresponding software component was most recently used, and the like. Another exemplary audit request 50 may direct the engine 40 to determine the current level/amount/percentage of hardware resources (eg, processor, storage, memory) used by the target VM or a particular software component executing within the target VM.
审计请求50可包含经审计客户端系统上执行的目标客户VM的标识符。此请求可指导审计引擎40执行相应客户VM的选择性审计。其它请求50可指导审计引擎执行经审计客户端系统上执行的所有客户VM的审计。Audit request 50 may include an identifier of a target customer VM executing on the audited client system. This request may direct audit engine 40 to perform a selective audit of the corresponding customer VM. Other requests 50 may direct audit engine 40 to perform an audit of all customer VMs executing on the audited client system.
审计请求50可根据调度表或响应于网络管理员的动作发送出。审计请求50可一致地发送出到所有客户端系统12a到d或可具体经裁剪到每一经审计客户端系统。在一些实施例中,审计请求可由相应客户端系统上发生的事件触发,或响应于通信网络10上的任何地方发生的事件触发。响应于实施所请求的审计,VM审计引擎40a到b可将审计报告52发送到服务器14。报告52包括相应审计活动的结果,例如,经安装软件组件列表、相应客户端系统的一组当前配置设置等。Audit requests 50 may be sent according to a schedule or in response to an action by a network administrator. Audit requests 50 may be sent uniformly to all client systems 12a-d or may be tailored specifically to each audited client system. In some embodiments, audit requests may be triggered by an event occurring on the corresponding client system or in response to an event occurring anywhere on the communication network 10. In response to performing the requested audit, VM audit engines 40a-b may send an audit report 52 to server 14. Report 52 includes the results of the corresponding audit activity, such as a list of installed software components, a set of current configuration settings for the corresponding client system, and the like.
图6展示根据本发明的一些实施例的由VM审计引擎40执行的示范性步骤序列。引擎40可监听来自服务器14的审计请求50。当接收到请求50时,引擎40可根据审计请求50选择用于审计的目标VM,且将审计代理放到目标客户VM(例如,图3-A到B中的客户VM 32)中。6 shows an exemplary sequence of steps performed by VM audit engine 40 according to some embodiments of the present invention. Engine 40 may listen for audit requests 50 from server 14. Upon receiving request 50, engine 40 may select a target VM for auditing based on audit request 50 and place an audit agent in the target client VM (e.g., client VM 32 in FIG. 3-A-B ).
可根据经审计客户VM的类型,例如,根据经审计VM内当前执行的客户OS 34的类型,起草代理。OS类型可包括名称指示符(例如)及版本指示符(例如版本7、家庭版或企业版)等。在一些实施例中,审计引擎40根据相应客户VM的模型特定寄存器(MSR)的内容或由相应MSR所指向的存储器区段的内容识别OS的类型。在一些实施例中,引擎40可根据由经审计VM内执行的软件写入到此类MSR的数据确定OS的名称。例如,引擎40可拦截将指令写入到SYSENTER或SYSCALL MSR及根据此写入指令的参数确定当前执行或当前实例化的OS的类型。其它示范性寄存器(其可提供有关OS名称的信息)包含控制寄存器、中断描述符表(IDT)及全局描述符表(GDT)等。为了根据MSR写入识别OS类型,内省引擎40可进一步使用与专用于每一OS的预定快速系统调用处置器库(例如,根据SYSCALL或SYSENTER MSR的内容处置的系统调用)的模式匹配。此类快速系统调用库可具备审计引擎40及/或内省引擎44,且可经由周期性或按需软件更新保持最新。An agent may be drafted based on the type of the audited guest VM, for example, based on the type of guest OS 34 currently executing within the audited VM. The OS type may include a name indicator (e.g., version 7, Home Edition, or Enterprise Edition), among others. In some embodiments, the audit engine 40 identifies the OS type based on the contents of the corresponding guest VM's model-specific registers (MSRs) or the contents of the memory segments pointed to by the corresponding MSRs. In some embodiments, the engine 40 may determine the OS name based on data written to such MSRs by software executing within the audited VM. For example, the engine 40 may intercept instructions written to the SYSENTER or SYSCALL MSRs and determine the type of the currently executing or currently instantiated OS based on the parameters of the written instructions. Other exemplary registers that may provide information about the OS name include control registers, the Interrupt Descriptor Table (IDT), and the Global Descriptor Table (GDT). To identify the OS type based on MSR writes, the introspection engine 40 may further utilize pattern matching with a library of predefined fast system call handlers specific to each OS (e.g., system calls handled based on the contents of the SYSCALL or SYSENTER MSRs). Such a fast system call library may be provided with an audit engine 40 and/or an introspection engine 44 and may be kept up to date via periodic or on-demand software updates.
在一些实施例中,版本指示符(例如发行名称、创建号等)可通过解析专用于OS的相应类型的某些内核数据结构获得。允许识别OS版本的示范性数据结构是内核的某些输出符号或内核的某些输出符号,例如NtBuildNumber等。In some embodiments, the version indicator (e.g., release name, build number, etc.) can be obtained by parsing certain kernel data structures of the corresponding type specific to the OS. An exemplary data structure that allows identification of the OS version is certain exported symbols of the kernel or certain exported symbols of the kernel, such as NtBuildNumber, etc.
将审计代理42放到目标客户VM中,步骤序列228到230到232可在环路中重复直到审计完成。在审计进行时,VM审计引擎40可与审计代理42交换数据(例如,各种软件组件的存储器地址、审计的各种结果)。虚拟机内执行的组件与虚拟机外部执行的组件之间的此消息传递可使用虚拟化领域中已知的任何方法实施(例如,经由审计引擎40与审计代理42之间共享的存储器区段,如上文描述)。当审计完成时,步骤234从经审计VM擦除审计代理,例如,通过擦除含有驱动程序加载程序的存储器区段(下文更详述)。在另一步骤236中,审计引擎40用公式表示审计报告52且将审计报告52发送到审计服务器14。The audit agent 42 is placed in the target client VM, and the sequence of steps 228 to 230 to 232 can be repeated in a loop until the audit is complete. While the audit is in progress, the VM audit engine 40 can exchange data with the audit agent 42 (e.g., memory addresses of various software components, various results of the audit). This messaging between components executing within the virtual machine and components executing outside the virtual machine can be implemented using any method known in the art of virtualization (e.g., via a memory segment shared between the audit engine 40 and the audit agent 42, as described above). When the audit is complete, step 234 erases the audit agent from the audited VM, for example, by erasing the memory segment containing the driver loader (described in more detail below). In another step 236, the audit engine 40 formulates an audit report 52 and sends the audit report 52 to the audit server 14.
图7从处理器特权级(例如,特权环)的视角展示审计代理42的示范性组件。在一些实施例中,审计代理42包括驱动程序加载程序46及审计驱动程序48。驱动程序加载程序46可由VM审计引擎40注入到运行应用程序36中,例如图3-A到B中的应用程序36a到b。驱动程序加载程序46可因此在应用程序36的特权级下执行,通常在环3(用户模式或用户处理器特权级)中执行。在一些实施例中,驱动程序加载程序46将审计驱动程序48加载到客户VM 32上且在客户VM 32上启动审计驱动程序48,驱动程序48通常在客户OS 34的处理器特权级(例如,环0、内核模式或内核级)下执行。接着,审计驱动程序48可在客户VM 32内实施审计操作。当审计完成时,加载程序46或VM审计引擎40可从客户VM 32移除驱动程序48,例如,通过擦除含有驱动程序48的存储器区段。替代性实施例不使用驱动程序加载程序46,而是改为直接将代码(例如,审计代理42)注入到客户OS 34的内核中。在此类实施例中,代理42可完全在环0(内核模式)中执行。FIG7 illustrates exemplary components of audit agent 42 from the perspective of a processor privilege level (e.g., a privileged ring). In some embodiments, audit agent 42 includes a driver loader 46 and an audit driver 48. Driver loader 46 can be injected by VM audit engine 40 into a running application 36, such as applications 36a-b in FIG3-A-B. Driver loader 46 can therefore execute at the privilege level of application 36, typically in ring 3 (user mode or user processor privilege level). In some embodiments, driver loader 46 loads and starts audit driver 48 on guest VM 32, typically executing at the processor privilege level of guest OS 34 (e.g., ring 0, kernel mode, or kernel level). Audit driver 48 can then perform audit operations within guest VM 32. When the audit is complete, loader 46 or VM audit engine 40 can remove driver 48 from guest VM 32, for example, by erasing the memory segment containing driver 48. Alternative embodiments do not use driver loader 46, but instead inject code (e.g., audit agent 42) directly into the kernel of guest OS 34. In such embodiments, agent 42 may execute entirely in ring 0 (kernel mode).
将软件组件放到虚拟机中可使用所属领域中已知的各种方法实现。图8展示根据本发明的优选实施例的由VM审计引擎40执行以将代理42放在客户VM 32内部(图6中的步骤226)的示范性步骤序列。在步骤250中,VM审计引擎40识别适于注入驱动程序加载程序46的存储器区段。在一些实施例中,驱动程序加载程序46被起草为尽可能的小,例如比存储器页小得多,使得其可安全地伪装于现存数据结构之中而无需使用OS的存储器分配设施(使用这些设施可使加载程序46及/或驱动程序48可由包含客户VM 32内执行的恶意软件的其它软件发现)。Placing software components into a virtual machine can be accomplished using various methods known in the art. FIG8 shows an exemplary sequence of steps performed by VM audit engine 40 to place agent 42 inside guest VM 32 (step 226 in FIG6 ), according to a preferred embodiment of the present invention. In step 250, VM audit engine 40 identifies a memory segment suitable for injecting driver loader 46. In some embodiments, driver loader 46 is drafted to be as small as possible, e.g., much smaller than a memory page, so that it can be safely disguised within existing data structures without requiring the use of the OS's memory allocation facilities (use of which makes loader 46 and/or driver 48 discoverable by other software, including malware, executing within guest VM 32).
在一个实例中,VM审计引擎40可搜索适于在通常由驱动程序区段之间的客户OS34保留的填充空间内接收驱动程序加载程序46的存储器区段。此填充空间存在,这是因为一些操作系统(例如)分配存储器使得对象的每一不同区段与页边界对准。当区段未占用整个存储器页时,相应页内的剩余存储器空间填充有虚设数据(例如,零值)。在此类实施例中,搜索合适的存储器空间来容纳驱动程序加载程序46可包括扫描针对此虚设数据分配到客户OS 34的驱动程序的存储器页。In one example, VM audit engine 40 may search for a memory segment suitable for receiving driver loader 46 within the padding space typically reserved by guest OS 34 between driver segments. This padding space exists because some operating systems, for example, allocate memory so that each different segment of an object is aligned with a page boundary. When a segment does not occupy an entire memory page, the remaining memory space within the corresponding page is filled with dummy data (e.g., zero values). In such embodiments, searching for suitable memory space to accommodate driver loader 46 may include scanning memory pages allocated to the driver of guest OS 34 for this dummy data.
在另一实例中,引擎40可拦截OS为小对象(例如,驱动程序)分配存储器的企图,相应对象小于存储器页。代替分配所需的存储器量,引擎40可迫使客户OS 34将完整的存储器页(例如,4kB)分配到相应对象,且使用相应存储器页内的剩余空间管控驱动程序加载程序46。为了拦截此存储器分配企图,审计引擎40及/或内省引擎44的一些实施例可检测到执行本机OS存储器管理功能的企图,例如中的KeAllocatePoolWithTag。为了确定其处此类功能驻存于相应客户虚拟机32的存储器中的存储器地址,审计引擎40可存取某些数据结构,例如内核二进制图像的输出功能表(例如,中的便携式可执行格式、中的可执行且可链接格式)。可根据所拦截的调用的分配标签确定当前分配的对象类型。例如,在中,‘Driv’标签指示驱动程序对象。In another example, the engine 40 may intercept an attempt by the OS to allocate memory for a small object (e.g., a driver), where the corresponding object is smaller than a memory page. Instead of allocating the required amount of memory, the engine 40 may force the guest OS 34 to allocate a full memory page (e.g., 4kB) to the corresponding object and use the remaining space within the corresponding memory page to control the driver loader 46. To intercept such memory allocation attempts, some embodiments of the audit engine 40 and/or introspection engine 44 may detect attempts to execute native OS memory management functions, such as KeAllocatePoolWithTag in . To determine the memory address where such functions reside in the memory of the corresponding guest virtual machine 32, the audit engine 40 may access certain data structures, such as the exported function table of the kernel binary image (e.g., Portable Executable Format in , Executable and Linkable Format in ). The type of object currently being allocated can be determined based on the allocation tag of the intercepted call. For example, in , the 'Driv' tag indicates a driver object.
在又一实例中,步骤250包括将未使用的存储器页映射到执行进程(例如图7中的应用程序36)的存储器空间。识别了到主机驱动程序加载程序46的合适的存储器区段,在步骤252中,VM审计引擎40可将加载程序46注入到相应存储器区段中。In another example, step 250 includes mapping unused memory pages into the memory space of the executing process (e.g., application 36 in FIG7 ). Having identified the appropriate memory segment for host driver loader 46, in step 252, VM audit engine 40 may inject loader 46 into the corresponding memory segment.
接下来,审计引擎40的一些实施例可等待当前执行进程(例如应用程序36)企图进行处理器特权改变,例如,通过发布系统调用(例如在平台上发布SYSCALL、或在平台上发布SYSENTER)。从相应VM外部拦截系统调用可以若干方式实现。在一个实例中,引擎40可复位当前执行企图系统调用的线程的虚拟处理器的处理器寄存器的值。此类处理器寄存器的实例包含平台上的IA32_LSTAR及IA32_SYSENTER_EIP寄存器。当企图系统调用时,此寄存器操纵将随后导致故障;相应故障可由VM审计引擎40或内省引擎44检测到。在另一实例中,引擎40可将重定向连接置于含有客户OS 34的系统调用处置器的代码页上。Next, some embodiments of the audit engine 40 may wait for the currently executing process (e.g., application 36) to attempt a processor privilege change, for example, by issuing a system call (e.g., issuing SYSCALL on the platform, or issuing SYSENTER on the platform). Intercepting system calls from outside the corresponding VM can be accomplished in several ways. In one example, the engine 40 may reset the values of processor registers of the virtual processor of the currently executing thread attempting the system call. Examples of such processor registers include the IA32_LSTAR and IA32_SYSENTER_EIP registers on the platform. This register manipulation will subsequently result in a fault when the system call is attempted; the corresponding fault can be detected by the VM audit engine 40 or the introspection engine 44. In another example, the engine 40 may place a redirection connection on the code page containing the system call handler of the guest OS 34.
在一些实施例中,当系统调用被拦截时,步骤256实施一组合格检查,以确定相应系统调用的上下文是否允许驱动程序加载程序46的安全注入。在其中系统调用的拦截是经由系统调用处置器的连接实现的一个实例中,合格检查可包括确定当前栈是否是用户栈。当栈是用户栈时企图注入代码可能会危害系统,这是因为驻存于用户模式中的任何事物都是内核所不信任的。另外,其它线程可窥视来自用户栈的数据,且可甚至能够甚至攻击驱动程序加载程序46。在一些实施例中,确定栈是否是用户栈包括确定栈片段描述符的特权级。另一合格检查可确定中断当前是否被启用。驱动程序加载程序46可能必须执行需要启用中断的一些处理器指令。又一合格检查可确定当前中断请求级别(IRQL)。一些实施例可能需要(例如)当前IRQL等于0以能够实施驱动程序加载程序46的操作。In some embodiments, when system call is intercepted, step 256 implements one group of qualified inspection, to determine whether the context of corresponding system call allows the safe injection of driver loader 46.In an example in which the interception of system call is realized via the connection of system call handler, qualified inspection can include determining whether current stack is user stack. When stack is user stack, attempting to inject code may endanger system, because anything resident in user mode is all that kernel is untrusted. In addition, other threads can peek at the data from user stack, and can even be able to even attack driver loader 46. In some embodiments, determining whether stack is user stack comprises determining the privilege level of stack fragment descriptor. Another qualified inspection can determine whether interrupt is currently enabled. Driver loader 46 may have to perform some processor instructions that need to enable interrupt. Another qualified inspection can determine current interrupt request level (IRQL). Some embodiments may need (for example) current IRQL equal to 0 to be able to implement the operation of driver loader 46.
当系统调用满足合格要求时,在步骤260中,审计引擎40可挂起发布相应系统调用的线程的执行,且将处理器16切换到执行驱动程序加载程序46。当加载程序46已完成执行时,审计引擎40可将处理器16切换回到执行原始线程(例如,应用程序36)。When the system call meets the eligibility requirements, in step 260, audit engine 40 may suspend execution of the thread that issued the corresponding system call and switch processor 16 to execute driver loader 46. When loader 46 has completed execution, audit engine 40 may switch processor 16 back to executing the original thread (e.g., application 36).
图9展示根据本发明的一些实施例的由驱动程序加载程序46执行的示范性步骤序列。为了为审计驱动程序48分配存储器及/或为了为驱动程序48创建线程,一些实施例可调用客户OS 34的专用功能,例如中的ExAllocatePoolWithTag及PsCreateSystemThread(类似功能存在于其它OS(例如,)中)。在其中需要驱动程序加载程序46具有小存储器占据面积的实施例中,此类OS功能的地址可由VM审计引擎40提供到加载程序46,例如,经由上文所描述的消息传递机构。在此类实施例中,驱动程序加载程序46可能实际上未将驱动程序48写入到所分配的存储器。代替地,加载程序46可将所分配的存储器区段的地址传送到VM审计引擎40,而实际写入是由审计引擎40实施。Figure 9 shows an exemplary sequence of steps performed by the driver loader 46 according to some embodiments of the present invention. In order to allocate memory for the audit driver 48 and/or to create a thread for the driver 48, some embodiments may call specialized functions of the guest OS 34, such as ExAllocatePoolWithTag and PsCreateSystemThread in (similar functions exist in other OSes (e.g., )). In embodiments where it is desired that the driver loader 46 have a small memory footprint, the addresses of such OS functions may be provided to the loader 46 by the VM audit engine 40, for example, via the messaging mechanism described above. In such embodiments, the driver loader 46 may not actually write the driver 48 to the allocated memory. Instead, the loader 46 may communicate the address of the allocated memory segment to the VM audit engine 40, with the actual write being performed by the audit engine 40.
一旦启动了审计驱动程序48(步骤274),加载程序46就可退出。在一些实施例中,当审计驱动程序48完成执行时,例如,当当前审计操作完成时,驱动程序加载程序46可从客户VM 32移除审计驱动程序48。在替代性实施例中,VM审计引擎40可执行清除(例如,从存储器移除驱动程序48)。Once audit driver 48 is started (step 274), loader 46 may exit. In some embodiments, when audit driver 48 completes execution, e.g., when the current audit operation is complete, driver loader 46 may remove audit driver 48 from guest VM 32. In alternative embodiments, VM audit engine 40 may perform cleanup (e.g., remove driver 48 from memory).
图10展示根据本发明的一些实施例的由审计驱动程序48执行的示范性步骤。由于驱动程序48在具有其自身存储器空间及执行线程的客户VM 32内执行,所以驱动程序48可使用客户OS 34可用的所有资源执行客户VM 32的审计,例如枚举经安装应用程序列表、确定OS的各种参数值、确定与各种软件组件相关联的时间标记、确定资源使用情况等。此类任务可使用所属领域中已知的各种方法实施。例如,审计驱动程序48可枚举客户OS 34的某些注册表项,相应项揭露经安装应用程序/软件包的身份等。另一审计方法调用由客户OS 34(例如中的Windows管理规范-WMI)公开的应用程序编程接口(API)以获得有关经安装程序的各种数据。在又一实例中,驱动程序48可搜索具体文件及文件夹(例如,中的程序文件)以便获得经安装程序及更新列表。此类示范性方法可单独或一起使用。审计期间收集的数据可被传输到VM审计引擎40,例如,通过将此数据写入到共享于驱动程序48与VM审计引擎40之间的预定存储器区段。FIG10 illustrates exemplary steps performed by audit driver 48 according to some embodiments of the present invention. Because driver 48 executes within guest VM 32, which has its own memory space and execution thread, driver 48 can use all resources available to guest OS 34 to perform audits of guest VM 32, such as enumerating a list of installed applications, determining the values of various OS parameters, determining time stamps associated with various software components, determining resource usage, and so on. Such tasks can be implemented using various methods known in the art. For example, audit driver 48 can enumerate certain registry keys of guest OS 34, which reveal the identities of installed applications/software packages, etc. Another auditing method calls an application programming interface (API) exposed by guest OS 34 (e.g., Windows Management Instrumentation (WMI) in Windows) to obtain various data about installed programs. In yet another example, driver 48 can search specific files and folders (e.g., program files in Windows) to obtain a list of installed programs and updates. These exemplary methods can be used individually or together. Data collected during the audit can be transmitted to VM audit engine 40, for example, by writing this data to a predetermined memory segment shared between driver 48 and VM audit engine 40.
在一些实施例中,响应于执行审计且在退出之前,审计驱动程序48可加载及/或启动安全模块,例如反恶意软件驱动程序。安全模块可确定(例如)经审计客户VM是否包括恶意软件,及/或可删除现存恶意软件或以其它方式使现存恶意软件无法正常工作。由于此安全模块的隐秘及动态部署,其存在及活动可相对难以检测且受相应客户VM内执行的恶意软件的干扰。In some embodiments, in response to performing an audit and before exiting, the audit driver 48 may load and/or start a security module, such as an anti-malware driver. The security module may determine, for example, whether the audited guest VM includes malware and/or may delete existing malware or otherwise disable existing malware. Due to the stealthy and dynamic deployment of this security module, its presence and activity may be relatively difficult to detect and may be interfered with by malware executing within the corresponding guest VM.
本文描述的示范性系统及方法允许远程地在相对大量客户端系统(例如,企业网络)上执行软件审计。本文中的软件审计是指评估合法软件,即,评估经安装及/或配置用于由相应客户端系统的合法用户(例如,系统管理员)在相应客户端系统上执行的软件。示范性审计可确定(例如)当前哪些软件应用程序被安装在公司的计算机上。可使用此信息(例如)促成软件监听、部署升级、防止员工在工作时安装或使用某些软件(例如,聊天应用程序、游戏)、确定员工使用特定品牌的软件(例如,)等。The exemplary systems and methods described herein allow for remotely performing software audits on a relatively large number of client systems (e.g., an enterprise network). Software auditing, as used herein, refers to evaluating legitimate software, i.e., evaluating software that has been installed and/or configured for execution on the respective client systems by legitimate users (e.g., system administrators) of the respective client systems. The exemplary audit can determine, for example, which software applications are currently installed on the company's computers. This information can be used, for example, to facilitate software monitoring, deploy upgrades, prevent employees from installing or using certain software (e.g., chat applications, games) at work, determine that employees are using a particular brand of software (e.g., ), and the like.
审计结果可便利地集中于通信地耦合到经审计客户端系统的服务器计算机处。审计可在人类管理员的请求下根据调度表及/或按需自动实施。在本发明的一些实施例中,审计可进一步与计算机安全活动耦合,例如所选择的客户端系统的定向恶意软件扫描/杀毒。Audit results can be conveniently centralized at a server computer communicatively coupled to the audited client systems. Audits can be automatically performed at the request of a human administrator, according to a schedule, and/or on demand. In some embodiments of the present invention, audits can be further coupled with computer security activities, such as targeted malware scanning/disinfection of selected client systems.
一些实施例使用硬件虚拟化技术提高软件审计的安全性及可靠性。为了避免将审计软件暴露到恶意人类干预及/或感染经审计客户端的恶意软件,一些实施例将包含操作系统的客户端软件移动到虚拟机(VM)及从受尊重的虚拟机外部执行审计的部分。审计软件的部分可因此在管理程序的级别下执行或在相应客户端上执行的单独专用审计VM内执行。Some embodiments use hardware virtualization technology to improve the security and reliability of software audits. To avoid exposing the audit software to malicious human intervention and/or malware infecting the audited client, some embodiments move the client software, including the operating system, into a virtual machine (VM) and execute the audit portion from outside the respected VM. Portions of the audit software can thus execute below the hypervisor level or within a separate, dedicated audit VM executing on the respective client.
通过充分利用虚拟化,本发明的一些实施例还良好适于审计并行执行多个VM的客户端系统,例如服务器农场及虚拟桌面基础架构(VDI)系统。根据一些实施例配置的单个审计引擎可审计多个VM或相应客户端上执行的所有VM。经配置以在虚拟化环境中实施审计操作的一些常规系统通过分析经审计VM的存储器快照而执行审计。此类常规系统可能需要经审计VM停止以便拍下相应存储器快照。相比之下,本发明的一些实施例无需停止经审计VM,这是因为审计代理可被放到当前执行的VM中。通过不限于可从存储器快照提取的信息,一些实施例可能够访问来自执行的VM内部的基本上更丰富审计数据。By taking full advantage of virtualization, some embodiments of the present invention are also well suited for auditing client systems that execute multiple VMs in parallel, such as server farms and virtual desktop infrastructure (VDI) systems. A single audit engine configured in accordance with some embodiments can audit multiple VMs or all VMs executing on a corresponding client. Some conventional systems configured to implement audit operations in a virtualized environment perform audits by analyzing memory snapshots of the audited VM. Such conventional systems may require that the audited VM be stopped in order to take the corresponding memory snapshot. In contrast, some embodiments of the present invention do not require the audited VM to be stopped because the audit agent can be placed into the currently executing VM. By not being limited to the information that can be extracted from the memory snapshot, some embodiments may be able to access substantially richer audit data from within the executing VM.
将审计软件永久地安装于审计客户端内可能会将此软件暴露到恶意软件,这可能停止此软件或以其它方式使此软件无法正常工作。与此类常规解决方案相比,本发明的一些实施例在审计的持续时间内动态地将审计代理放到经审计机器中,从而最小化计算机安全风险。在经审计VM内不具有永久审计代理的另一优点是此类配置可能显著促成虚拟机及审计软件两者的管理、部署及升级。当审计解决方案是独立的且并非永久地依赖经审计虚拟机时,审计软件可独立于VM软件而更新。例如,可安装对VM审计引擎40的更新而不会影响相应客户端上执行的客户VM的操作。在硬件虚拟化的许多现代应用程序中,例如VDI,虚拟机通常基于本地存储于客户端上或从VDI服务器计算机接收到的VM图像通常动态地在客户端系统上经实例化及移除。当经审计VM不具有永久审计代理时,VM图像可在任何时间更新或以其它方式改变而不会影响审计软件。Permanently installing audit software within an audit client may expose the software to malware, which may stop the software or otherwise prevent it from functioning properly. Compared to such conventional solutions, some embodiments of the present invention dynamically place an audit agent within the audited machine for the duration of the audit, thereby minimizing computer security risks. Another advantage of not having a permanent audit agent within the audited VM is that such a configuration may significantly facilitate the management, deployment, and upgrade of both the virtual machine and the audit software. When the audit solution is standalone and not permanently dependent on the audited virtual machine, the audit software can be updated independently of the VM software. For example, an update to the VM audit engine 40 can be installed without affecting the operation of the client VM executing on the corresponding client. In many modern applications of hardware virtualization, such as VDI, virtual machines are typically instantiated and removed dynamically on client systems based on VM images stored locally on the client or received from a VDI server computer. When the audited VM does not have a permanent audit agent, the VM image can be updated or otherwise changed at any time without affecting the audit software.
然而,从经审计VM外部执行审计操作造成一个困难的技术问题,在所属领域中通常称为“桥接语义间隙”。虽然经审计VM内执行的软件能够访问与审计有关的丰富信息;但相应VM外部执行的软件通常仅能够访问物理存储器的内容及经审计VM的虚拟处理器的当前状态。因此,从相应VM外部解开VM中软件的语义可能是不可能的,或在最好的情况下可能需要相当大的计算量。为了帮助桥接语义间隙,一些实施例因此将审计代理放在经审计VM内。审计代理可从经审计VM内收集信息且将此信息传送到经审计VM外部执行的组件。However, performing audit operations from outside the audited VM poses a difficult technical problem, commonly referred to in the art as "bridging the semantic gap." While software executing within the audited VM has access to a wealth of information relevant to the audit, software executing outside the respective VM typically only has access to the contents of physical memory and the current state of the audited VM's virtual processors. Consequently, unraveling the semantics of software within the VM from outside the respective VM may be impossible or, at best, require a significant computational effort. To help bridge the semantic gap, some embodiments place an audit agent within the audited VM. The audit agent can collect information from within the audited VM and communicate this information to components executing outside the audited VM.
所属领域的技术人员应清楚,可在不背离本发明的范围的情况下,以许多方式更改上述实施例。因此,本发明的范围应由所附权利要求书及其合法等效物确定。It will be apparent to those skilled in the art that the above embodiments can be modified in many ways without departing from the scope of the invention. Therefore, the scope of the invention should be determined by the appended claims and their legal equivalents.
Claims (17)
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201662274902P | 2016-01-05 | 2016-01-05 | |
| US62/274,902 | 2016-01-05 | ||
| US15/045,979 US9965313B2 (en) | 2016-01-05 | 2016-02-17 | Systems and methods for auditing a virtual machine |
| US15/045,979 | 2016-02-17 | ||
| PCT/EP2017/050112 WO2017118648A1 (en) | 2016-01-05 | 2017-01-04 | System and methods for auditing a virtual machine |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1254084A1 HK1254084A1 (en) | 2019-07-12 |
| HK1254084B true HK1254084B (en) | 2022-09-02 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10949247B2 (en) | Systems and methods for auditing a virtual machine | |
| US10445498B2 (en) | Systems and methods of application control in virtualized environments | |
| CN109923546B (en) | Event filtering for virtual machine security applications | |
| US9229881B2 (en) | Security in virtualized computer programs | |
| CN107690645B (en) | Behavioral Malware Detection Using Interpreter Virtual Machines | |
| Latzo et al. | A universal taxonomy and survey of forensic memory acquisition techniques | |
| US20180211046A1 (en) | Analysis and control of code flow and data flow | |
| US20150248554A1 (en) | Systems And Methods For Executing Arbitrary Applications In Secure Environments | |
| Hetzelt et al. | Via: Analyzing device interfaces of protected virtual machines | |
| Milenkoski et al. | Experience report: an analysis of hypercall handler vulnerabilities | |
| Zhou et al. | A coprocessor-based introspection framework via intel management engine | |
| Xing et al. | OB‐IMA: out‐of‐the‐box integrity measurement approach for guest virtual machines | |
| US20210182393A1 (en) | Monitoring control-flow integrity | |
| HK1254084B (en) | System and methods for auditing a virtual machine | |
| Zhang et al. | DRSA: Debug Register-Based Self-relocating Attack Against Software-Based Remote Authentication | |
| Ibrahim et al. | Virtual Machines Security in IaaS Platform | |
| Chang et al. | Defeating TCG toctou attacks in trusted hvm |