首页> 中国专利> 虚拟机中的页面错误注入使得经换出的存储器页面映射到虚拟机虚拟化存储器中

虚拟机中的页面错误注入使得经换出的存储器页面映射到虚拟机虚拟化存储器中

摘要

本发明描述的系统及方法允许使用虚拟化技术保护主机系统免受恶意软件影响。在一些实施例中,存储器自省引擎在于所述主机系统上执行的虚拟机VM下方操作。所述引擎经配置以分析由在所述VM内执行的软件使用的虚拟存储器页面的内容及/或保护所述相应的内容免于(例如)由恶意软件进行未经授权的修改。当所述相应的内容被换出存储器时,所述存储器自省引擎将页面错误注入到所述相应的VM中以迫使换入所述相应的内容。

著录项

  • 公开/公告号CN105393229A

    专利类型发明专利

  • 公开/公告日2016-03-09

    原文格式PDF

  • 申请/专利权人 比特梵德知识产权管理有限公司;

    申请/专利号CN201480040376.3

  • 发明设计人 安德烈-弗拉德·卢察什;

    申请日2014-07-02

  • 分类号G06F12/10;G06F12/08;

  • 代理机构北京律盟知识产权代理有限责任公司;

  • 代理人张世俊

  • 地址 塞浦路斯尼科西亚

  • 入库时间 2023-12-18 14:35:31

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-01-18

    授权

    授权

  • 2016-08-10

    实质审查的生效 IPC(主分类):G06F12/10 申请日:20140702

    实质审查的生效

  • 2016-03-09

    公开

    公开

说明书

相关申请案

本申请案主张2013年7月17日申请的题为“虚拟机中的页面错误注入(PageFault InjectionInVirtualMachines)”的第61/847,538号美国临时专利申请案的申请日期的权 益,所述申请案的全部内容以引用方式并入本文中。

背景技术

本发明涉及用于保护计算机系统免受恶意软件影响的系统及方法。

恶意软件(也称为恶意软件(malware))影响全世界范围内的大量计算机系统。恶意软 件呈其许多形式(例如计算机病毒、蠕虫病毒、藏匿技术及间谍软件)向数百万的计算机 用户呈现严重风险,从而使其易遭受数据及敏感信息丢失、身份盗用及生产率的损失以 及其它。

硬件虚拟化技术允许产生通常被称为虚拟机的模拟计算机环境,其以许多方式表现 为物理计算机系统。在典型的应用程序(例如服务器整合及基础设施即服务(IAAS))中, 若干虚拟机可在相同的物理机上同时运行,共享其间的硬件资源,从而减小投资及操作 成本。每一虚拟机可与其它虚拟机分开地运行其自己的操作系统及/或软件应用程序。由 于恶意软件的平稳扩散,在此类环境中操作的每一虚拟机潜在地需要恶意软件保护。

通常用于所属领域中的虚拟化解决方案包括管理程序,也被称为虚拟机监视器,其 由在计算硬件与虚拟机的操作系统(OS)之间操作的软件的层组成,且具有比相应的OS 多的处理器权限。可在管理程序的权限级别下进行反恶意软件操作。尽管此类配置可增 加安全性,但其引入一层额外的复杂性且可带来较大的计算成本。

对针对硬件虚拟化平台开发有效、稳健且可扩展的反恶意软件解决方案存在相当大 的兴趣。

发明内容

根据一个方面,一种主机系统包括:经配置以操作管理程序及存储器自省引擎的硬 件处理器。所述管理程序经配置以暴露包括虚拟化处理器及虚拟化存储器的虚拟机,所 述虚拟机经配置以利用虚拟化处理器执行目标进程。所述存储器自省引擎在虚拟机外部 执行且经配置以根据虚拟机的页面表确定目标进程的虚拟存储器空间的目标页面是否 被换出虚拟化存储器,且作为响应,当目标页面被换出虚拟化存储器时直接将页面错误 注入到虚拟机中,所述页面错误使得虚拟机的操作系统将目标页面映射到虚拟化存储器 的页面。

根据另一方面,一种方法包括:利用主机系统的至少一个硬件处理器执行管理程序, 所述管理程序经配置以暴露包括虚拟化处理器及虚拟化存储器的虚拟机,所述虚拟机进 一步经配置以利用所述虚拟化处理器执行目标进程。所述方法进一步包括:利用至少一 个硬件处理器以确定所述目标进程的虚拟存储器空间的目标页面是否被换出虚拟化存 储器,且作为响应,当所述页面被换出所述虚拟化存储器时利用所述至少一个硬件处理 器直接将页面错误注入到所述虚拟机中,所述页面错误使得所述虚拟机的操作系统将所 述目标页面映射到所述虚拟化存储器的页面。

根据另一方面,一种非暂时性计算机可读媒体存储指令,所述指令在由主机系统的 至少一个硬件处理器执行时使得所述主机系统形成存储器自省引擎,其中所述主机系统 进一步经配置以执行暴露包括虚拟化处理器及虚拟化存储器的虚拟机的管理程序,所述 虚拟机经配置以利用虚拟化处理器执行目标进程。所述存储器自省引擎在所述虚拟机外 部执行且经配置以根据所述虚拟机的页面表确定所述目标进程的虚拟存储器空间的目 标页面是否被换出所述虚拟存储器,且作为响应,当所述目标页面被换出所述虚拟化存 储器时直接将页面错误注入到所述虚拟机中,所述页面错误使得所述虚拟机的操作系统 将所述目标页面映射到所述虚拟化存储器的页面。

附图说明

在阅读以下详细的描述之后且在参看图式之后,本发明的前述方面及优点将得到更 好的理解,在图式中:

图1展示根据本发明的一些实施例的由在主机系统上执行的管理程序暴露的一组示 范性虚拟机,及保护所述组虚拟机免受恶意软件影响的存储器自省引擎。

图2展示根据本发明的一些实施例的主机系统的示范性硬件配置。

图3展示根据本发明的一些实施例的被暴露到客户虚拟机的虚拟化硬件的示范性配 置。

图4说明根据本发明的一些实施例的在各种处理器权限级别下在主机系统上执行的 软件对象的示范性分层。

图5展示根据本发明的一些实施例的存储器地址的示范性映射及存储器页面换入及 换出虚拟化存储器的示范性交换。

图6展示根据本发明的一些实施例的由存储器自省引擎执行以保护虚拟机免受恶意 软件影响的步骤的示范性序列。

图7展示根据本发明的一些实施例的由存储自省执行以实施直接页面错误注入的步 骤的示范性序列。

图8展示根据本发明的一些实施例的说明图6到7的方法的应用的步骤的示范性序 列。

图9展示根据本发明的一些实施例的说明图6到7的方法的另一应用的步骤的示范 性序列。

图10说明根据本发明的一些实施例的含有目标进程的数据的存储器页面的一组虚 拟地址的示范性确定。

具体实施方式

在以下描述中,应理解,结构之间所有所列举的连接可为直接可操作的连接或通过 中间结构的间接可操作的连接。一组元件包含一或多个元件。对元件的任何列举被理解 为指代至少一个元件。多个元件包含至少两个元件。除非另外要求,否则任何所描述的 方法步骤无需一定以特定的所说明的次序执行。来源于第二元素的第一元素(举例来说, 数据)包含与第二元素相同的第一元素,也包含通过处理第二元素及任选地其它数据产生 的第一元素。根据参数做出确定或决策包含根据参数及任选地根据其它数据做出确定或 决策。除非另外指定,否则一些量/数据的指示符可为所述量/数据本身或不同于量/数据 本身的指示符。除非另外指定,否则进程为计算机程序(例如应用程序或操作系统的一部 分)的实例,且以具有至少一个执行线程及由操作系统指派到其的虚拟存储器的区段为特 征,相应的区段包括可执行代码。除非另外指定,否则页面表示被个别地映射到主机系 统的物理存储器的虚拟机的最小单元。除非另外指定,否则直接将页面错误注入到虚拟 机中包括:在无需来自操作系统或在相应的虚拟机内执行的其它软件的协助的情况下, 在相应的虚拟机的虚拟化处理器内诱发页面错误事件。此类直接注入不排除操作系统或 其它软件响应于所注入的页面错误而采取动作,例如以处理页面错误。计算机可读媒体 包含非暂时性媒体,例如磁存储媒体、光存储媒体及半导体存储媒体(举例来说,硬盘驱 动器、光盘、闪存存储器、DRAM),也包含通信链路,例如导电电缆及光纤链路。根据 一些实施例,本发明尤其提供包括经编程以执行本文中描述的方法的硬件(举例来说,一 或多个处理器)的计算机系统,以及对指令编码以执行本文中描述的方法的计算机可读媒 体。

以下描述作为实例但不一定作为限制说明本发明的实施例。

图1展示根据本发明的一些实施例的将硬件虚拟化用于恶意软件保护的主机系统10 的示范性配置。主机系统10可表示企业计算装置(例如企业服务器)或终端用户装置(例 如个人计算机或智能手机)。其它示范性主机系统包含娱乐装置(例如TV或游戏机)或具 有存储器及处理器且需要恶意软件保护的任何其它装置。在图1的实例中,主机系统10 执行由管理程序30暴露的一组客户虚拟机32a到b。虚拟机(VM)包括实际的物理机/计 算机系统的抽象(举例来说,软件模拟),所述VM能够运行操作系统及其它应用程序。 管理程序30包含经配置以产生多个虚拟化装置(例如虚拟处理器及虚拟存储器控制器) 且将此类虚拟化装置呈现到软件以替代主机系统10的真实的物理装置的软件。在一些 实施例中,管理程序30允许由主机系统10的硬件资源的多个虚拟机进行的多路复用(共 享)。管理程序30可进一步管理此类多路复用使得每一VM独立地操作且察觉不到主机 系统10上同时执行的其它VM。流行的管理程序的实例包含来自Vmware公司的VMware vSphereTM及开源Xen管理程序以及其它。

每一VM32a到b可分别执行客户操作系统(OS)34a到b。一组示范性应用程序42a 到d一般表示任何软件应用程序,例如文字处理、图像处理、媒体播放器、数据库、日 历、个人联系人管理、浏览器、游戏、音频通信、数据通信及反恶意软件应用程序以及 其它。操作系统34a到b可包括任何广泛可用的操作系统,例如Microsoft或AndroidTM以及其它。每一OS在虚拟机内执行的应用程序 与相应的VM的虚拟化硬件装置之间提供接口。在以下描述中,在虚拟机的虚拟处理器 上执行的软件被认为在相应的虚拟机内执行。例如,在图1的实例中,应用程序42a到 b被认为在客户VM32a内执行,而应用程序42c到d被认为在客户VM32b内执行。相 比之下,管理程序30被认为在客户VM32a到b外部或下面执行。

在一些实施例中,管理程序30包含经配置以执行如下文进一步描述的反恶意软件 操作的存储器自省引擎40。引擎40可被并入到管理程序30中,或可作为与管理程序 30不同且独立于管理程序30但在与管理程序30实质上类似的处理器权限级别下执行的 软件组件而被传递。单一引擎40可经配置以对在主机系统10上执行的多个VM进行恶 意软件保护。

图2展示主机系统10的示范性硬件配置。系统10包括一组物理装置,包含处理器 12、存储器单元14、一组输入装置16、一组输出装置18、一组存储装置20及一组网络 适配器22,所有这些都由控制器集线器24连接。在一些实施例中,处理器12包括物理 装置(举例来说,形成于半导体衬底上的多核集成电路),所述物理装置经配置以用一组 信号及/或数据执行计算及/或逻辑操作。在一些实施例中,此类逻辑操作呈处理器指令 序列(举例来说,机器代码或其它类型软件)的形式被传递到处理器12。存储器单元14 可包括存储在实施指令的进程中由处理器12存取或产生的数据/信号的易失性计算机可 读媒体(举例来说,RAM)。

输入装置16可包含计算机键盘、鼠标及麦克风以及其它,包含相应的硬件接口及/ 或适配器,从而允许用户将数据及/或指令引入到主机系统10中。输出装置18可包含显 示器装置(例如监视器及扬声器以及其它),以及硬件接口/适配器(例如图形卡),从而允 许主机系统10将数据传达到用户。在一些实施例中,输入装置16及输出装置18可共 享一块共同的硬件,如在触控屏装置的情况下。存储装置20包含实现软件指令及/或数 据的非易失性存储、读取、及写入的计算机可读媒体。示范性存储装置20包含磁盘及 光盘及闪存存储装置,以及可移动媒体,例如CD及/或DVD盘及驱动器。网络适配器 22的组使得主机系统10能够连接到计算机网络及/或连接到其它装置/计算机系统。控制 器集线器24表示多个系统、外设及/或芯片组总线及/或使得处理器12与装置14、16、 18、20及22之间能够通信的所有其它电路。例如,控制器集线器24可包含存储器控制 器、输入/输出(I/O)控制器及中断控制器以及其它。在另一实例中,控制器集线器24可 包括将处理器12连接到存储器14的北桥及/或将处理器12连接到装置16、18、20及 22的南桥。

为了实现如图1中展示的配置,管理程序30可产生多个虚拟化装置,其各自模拟 系统10的物理硬件装置。管理程序30可进一步将一组虚拟化装置指派到每一VM32a 到b,且控制调度、信令及通信使得VM32a到b可同时使用处理器12及其它硬件装置。 执行此类操作(如暴露VM32a到b)在所属领域中也为已知的。

图3展示如由管理程序30暴露的虚拟机32的示范性配置。VM32可表示(例如)图 1的VM32a到b中的任何者。VM32包含虚拟化处理器112、虚拟化存储器单元114、 虚拟化输入装置116、虚拟化输出装置118、虚拟化存储装置120、虚拟化网络适配器 122及虚拟化控制器集线器124。虚拟化处理器112包括对处理器12的至少一些功能性 的模拟且经配置以接收形成软件(例如操作系统及其它应用程序)的部分的处理器指令以 用于执行。将处理器112用于执行的软件被认为在虚拟机32内执行。在一些实施例中, 虚拟化存储器单元114包括用于存储及检索由虚拟化处理器112使用的数据的可寻址空 间。其它虚拟化装置(举例来说,虚拟化输入、输出、存储装置等等)模拟主机系统10的 相应的物理装置的至少一些功能性。虚拟化处理器112可经配置以与此类装置交互,如 同其与对应的物理装置交互一样。例如,在VM32内执行的软件可经由虚拟化网络适配 器122发送及/或接收网络业务。在一些实施例中,管理程序30可将仅虚拟化装置的子 集暴露到VM32(例如,仅虚拟化处理器112、虚拟化存储器114及集线器124的部分)。 管理程序30还可给出主机系统10的经选择的VM专用的一些硬件装置。在一个此类实 例中,VM32a(图1)可具有专用输入装置16及输出装置18,但缺少虚拟化网络适配器。 同时,VM32b可具有专用网络适配器22。

图4说明根据本发明的一些实施例的在主机系统10上执行的软件对象的分层。图4 是从处理器权限级别(在所属领域中也称为层或保护环)的角度来呈现。在一些实施例中, 管理程序30在最高权限级别(举例来说,支持虚拟化的平台上的VMXroot,也称 为环-1或根模式)下控制处理器12,从而产生如虚拟机32暴露到在主机系统10上执行 的其它软件的硬件虚拟化平台。操作系统34(例如图2中的OS34a到b)在VM32的虚 拟环境内执行,OS34具有比管理程序30小的处理器权限(举例来说,在英特尔(Intel) 平台上的环0或内核模式)。一组应用程序42e到f在比OS34小的处理器权限(举例来 说,环3或用户模式)下执行。应用程序42e到f的部分可在内核权限级别(例如,由应 用程序42f安装的驱动程序36;示范性驱动程序36执行反恶意软件操作,例如检测软 件对象的恶意软件指示行为及/或检测软件对象内的恶意软件指示签名)下执行。类似地, OS34的部分可在用户模式(环3)中执行。

在一些实施例中,自省引擎40实质上在与管理程序30相同的处理器权限级别下执 行,且经配置以执行在主机系统10上执行的虚拟机(例如VM32)的自省。VM的或在相 应的VM内执行的软件对象的自省可包括:分析相应的软件对象的行为,例如识别由对 象执行的一组操作(例如,发布系统调用、存取OS的注册表、从远程位置下载文件、将 数据写入到文件等)。自省可进一步包括:确定含有软件对象的部分的存储器区段的地址; 存取相应的存储器区段;以及分析存储于相应的存储器区段内的内容。自省的其它实例 包含:拦截及/或约束对此类存储器区段的某些进程的存取,举例来说,防止进程重写由 另一进程使用的代码或数据。在一些实施例中,由引擎40针对自省选择的对象包括进 程、指令流、寄存器及数据结构(例如页面表及相应的VM的驱动对象)以及其它。

为了在如图1(即,从相应的VM外部)中说明的配置中执行VM32的自省,引擎40 的一些实施例利用处理器12的存储器映射结构及机制。虚拟机通常与虚拟化物理存储 器(举例来说,图3中的存储器114,在所属领域中也称为客户物理存储器)一起操作。 虚拟化物理存储器包括实际物理存储器14的抽象表示,例如作为指定到每一客户VM 的虚拟化地址的连续空间,其中所述空间的部分被映射到物理存储器14及/或物理存储 装置20内的地址。在经配置以支持虚拟化的系统中,通常通过由处理器12控制的专用 数据结构实现此类映射,所述专用数据结构称为第二级地址转换(SLAT)。流行的SLAT 实施方案包含扩展页面表(平台上的EPT)及嵌套页面表(平台上的NPT)。在 此类系统中,虚拟化物理存储器可被划分在所属领域中称为页面的单元中,页面表示经 由机制(例如EPT及/或NPT)被个别地映射到物理存储器的虚拟化物理存储器的最小单 元,即,用页面粒度执行物理与虚拟化物理存储器之间的映射。所有页面通常都具有预 先确定的尺寸,举例来说,4千字节、2兆字节等。通常由管理程序30配置虚拟化物理 存储器到页面的划分。在一些实施例中,管理程序30还配置EPT/NPT且因此配置物理 存储器与虚拟化物理存储器之间的映射。虚拟化物理存储器地址到物理存储器地址的实 际映射(转换)可包括在主机系统10的转换后备缓冲器(TLB)中查找物理存储器地址。在 一些实施例中,地址转换包括:执行页面行走,其包含在一组页面表及/或页面目录中的 一组连续的地址查找;以及执行计算,例如将页面的偏置添加到关于相应的页面的地址。

一些硬件配置允许管理程序30(举例来说)通过对相应的页面设定读、写及/或执行存 取权利来选择性地控制对存储于物理存储器14中的每一页面内的数据的存取。(例如) 可通过修改EPT或NPT内的相应的页面的项目来设定此类权利。管理程序30可因此选 择哪个软件对象可存取在每一页面内的地址处存储的数据,且可指示用相应的数据允许 哪种操作,举例来说,读、写、执行。为了执行操作(例如将数据写入到对象不具有相应 的权利的页面或执行来自被标记为非可执行的页面的代码)由在VM内执行的软件对象 做出的尝试可触发虚拟机退出事件(举例来说,英特尔平台上的VMExit事件)。在一些 实施例中,虚拟机退出事件将对处理器的控制从执行相应的软件对象的VM转移到管理 程序30。此类转移可允许在管理程序30的处理器权限级别下执行的软件拦截未经授权 的写或执行尝试。在一些实施例中,自省引擎40执行此类自省以作为反恶意软件操作 的部分。

在一些实施例中,OS34通过(例如)利用页面表机制维持VM32相应的虚拟存储器 空间与虚拟化物理存储器之间的映射(地址转换),针对进程(例如图4中的应用程序42e 到f)配置虚拟存储器空间。在一些实施例中,进程虚拟存储器空间也被划分成页面,此 类页面表示被OS34个别地映射到虚拟化物理存储器的虚拟存储器的最小单元,即,用 页面粒度执行对虚拟化物理存储器映射的虚拟化。

图5说明在如图4中展示的实施例中的存储器地址的示范性映射。软件对象(例如应 用程序、进程或在客户VM32内执行的操作系统的部分)由客户OS34指派虚拟存储器 空间214a。当软件对象试图存取空间214a的示范性存储器页面60a的内容时,根据由 客户OS34配置及控制的页面表,由客户VM32的虚拟化处理器将页面60a的地址转换 成VM32的虚拟化物理存储器空间114的页面60b的地址。配置及控制虚拟化物理存储 器114的管理程序30(例如)使用如上文论述的SLAT构件接着将页面60b的地址映射到 在主机系统10的物理存储器14内的页面60c的地址。

在一些实施例中,管理程序30构建包括物理存储器14的表示的其本身的虚拟存储 器空间214b且利用转换机构(例如页面表)将空间214b中的地址映射到物理存储器14中 的地址中。在图5中,此类示范性映射将页面60c的地址转换成页面60h的地址。此类 映射允许管理程序30管理(举例来说,读取、写入及对其的控制存取)属于在主机系统 10上运行在各种VM内执行的软件对象的存储器页面。

图5进一步说明由客户OS34执行的页面交换操作。页面交换是现代操作系统的共 同特征,其用以有效地管理可用的存储器资源。在一些实施例中,将页面换出存储器包 括OS将相应的页面的内容从存储器移动到存储装置(举例来说,磁盘),使得相应的页 面可用以存储其它数据。在稍后的时间,OS可大概在与存储内容的原始页面的地址不 同的地址处通过将相应的内容从存储装置移回到存储器中来执行页面的换入。为了完成 换入,OS可修改相应的页面的页面表项目以反应地址变化。在图5中说明的实例中, 页面60c被换出到存储装置上的页面60d。由于OS34在虚拟机内执行,所以OS34将 虚拟化物理存储器114视为其物理存储器,且将虚拟化存储装置120视为其物理存储装 置。所以有效地将页面60c换出存储器包括将页面60c的内容移动到虚拟化存储装置 120。装置120可包括由物理装置20的管理程序30产生的抽象,所以页面60d的内容 可实际上被重新引导到装置20上的页面60k。在一些实施例中,管理程序30可给予客 户VM32对存储装置20的直接存取,例如使用来自的VT-d技术。在此类配置中, 虚拟化存储装置120可与主机系统10的实际物理存储装置一致。为了执行换入,OS34 可将页面60d的内容移动到虚拟化物理存储器114的页面60e。客户OS34可进一步修 改对应于页面60a的页面表项目以指示从页面60a到页面60e的地址转换(图5中的虚线 箭头)。页面60e可被映射到物理存储器14中的页面60m。

图6展示根据本发明的一些实施例的由存储器自省引擎40执行的用以保护虚拟机 免受恶意软件影响的步骤的示范性序列。此类反恶意软件保护包括:(例如)识别在相应 的VM内执行的经选择的进程(此后被视为目标进程)的存储器空间的页面(此后被视为目 标页面);以及保护相应的页面内容免于(举例来说)由恶意软件实体进行的未经授权的修 改。在另一实例中,自省引擎40可确定目标页面是否含有恶意代码。目标进程可属于(例 如)应用程序(例如应用程序42e到f)或属于图4中的客户OS34。当目标进程在用户级别 处理器权限(举例来说,中的用户模式)下执行时,目标页面的内容可能并不是 一直存在于存储器中,而是可偶尔由OS换入到存储器中及换出存储器。通过在VM32 外部执行,存储器自省引擎40可能不能对此类经换出的存储器页面的内容直接存取。

在步骤302到304的序列中,引擎40等待直到当前执行上下文为目标进程的执行 上下文,即,直到当前执行的指令属于目标进程。确定当前执行上下文可包括(例如)读 取相应的VM的虚拟处理器的CR3寄存器的内容(x86平台的CR3寄存器存储页面结构 的地址,所述页面结构地址唯一地识别每一执行进程)。当执行上下文为目标进程的执行 上下文时,在步骤306到308的序列中,引擎40可确定目标页面的内容当前是否被换 出存储器。当目标页面的内容在存储器中时,在步骤316中,引擎40可继续自省目标 页面(举例来说)以分析及/或保护目标页面的内容。当目标页面的内容当前被换出时,在 步骤310中,引擎40直接将页面错误注入到相应的VM中以迫使换入目标页面(如下文 将详细描述)。接下来,在步骤312到314的序列中,引擎40等待直到目标页面被换入, 即,直到相应的页面内容被映射到相应的VM的虚拟化物理存储器,以执行自省。

为了确定目标页面是否存在于存储器中(步骤306到308),以及为了确定目标页面 是否已被换入(步骤312到314),存储器自省引擎40可存取由OS34构建的页面表的内 容。在一些实施例中,目标页面的页面表项目的字段(举例来说,专用位)指示相应的页 面当前是否存在于存储器中。

图7说明由引擎40执行以直接注入页面错误从而迫使换入目标页面(图6中的步骤 310)的步骤的示范性序列。在步骤序列322到324中,引擎40评估当前状态或虚拟处理 器112以确定页面错误异常是否能被安全地注入到VM32中。步骤322可包括评估当前 在处理中的中断请求的优先级。在Microsoft系统中,此类评估可包括(例如) 通过查找VM32的段寄存器的内容确定当前中断请求级别(IRQL)。此类示范性寄存器包 含x86处理器架构的FS及/或GS寄存器,所述FS及/或GS寄存器存储到包含IRQL的 数据结构的指针。在示范性实施例中,当IRQL<2时,注入页面错误被认为是安全的。 当较高优先级的中断在等待时(举例来说,IRQL≥2),步骤322到324等待待服务的高优 先级请求。

在一些实施例中,步骤322可包含确定虚拟处理器112当前在其下执行的权限级别 (环)。在运行Microsoft的主机系统中,当处理器在用户模式(环3)中执行时, IRQL为零,对应于用户模式页面的如此页面错误的注入可被认为是安全的。当处理器 112在内核模式(环0)中执行时,可需要额外确定以推断错误注入是否为安全的。

步骤326到328的序列将页面错误异常注入到VM32中,所述异常经配置以触发目 标页面的换入。在示范性实施例中,在步骤326中,引擎40将目标页面的虚拟地址写 入到相应的VM的虚拟处理器的CR2寄存器中,从而向OS34指示将哪一虚拟页面换 入到存储器中。接下来,在步骤328中,引擎40(例如)通过写入VM32的虚拟机控制结 构(VMCS)的一组控制位在虚拟化处理器112内触发异常,相应的控制位可配置以在相 应的VM内触发页面错误。在经配置以支持虚拟化的处理器上,此类控制位为 VMCS的VM项目事件注入字段的部分。

VM控制结构为由管理程序30维持以描述在主机系统10上执行的客户VM的一种 特殊种类的数据结构。VMCS的格式可为特定于实施及/或特定于平台的。对于包括多个 虚拟化处理器112的VM,管理程序30可维持用于每一虚拟处理器的相异的VMCS。在 一些实施例中,每一VMCS可包括客户状态区及主机状态区,所述客户状态区存储数据, 例如CPU状态及/或相应的虚拟处理器的控制寄存器的内容,且所述主机状态区存储用 于管理程序30的类似数据。在一些实施例中,处理器12使存储器中的区域与每一VMCS 相关联,命名为VMCS区域。软件可使用区域的地址(举例来说,VMCS指针)来指代特 定VMCS。在任何给定时间处,至多一个VMCS可被加载到处理器12上,表示所述VM 当前控制处理器。

图8到9展示在环境中的本发明的一些实施例的示范性应用。图8说明 由引擎40执行以确定目标进程主要可执行的虚拟存储器地址的步骤的序列。在步骤332 中,引擎40可检测目标进程的开始。步骤332可利用所属领域中已知的任何方法,例 如拦截管理活动进程的列表的OS的机构。例如,在中,每当进程产生时, 相应的进程的指示符被插入到活动进程的列表中;在相应的进程的结束后从列表移除指 示符。在一些实施例中,在开始进程之后,OS34也构建包括由OS34使用的数据的特 定于进程的数据结构(被称为进程环境块(PEB))以管理与相应的进程相关联的资源。通过 拦截(举例来说,安放一拦截)用于将目标进程插入到活动进程的列表中的OS指令,引 擎40可获得例如相应的PEB的存储器地址等信息,引擎40可在步骤334中提取所述信 息。在Windows中,PEB的虚拟地址被存储于OS的数据结构中,被称为执行进程块 (EPROCESS)。图10展示此类特定于进程的数据结构的说明性图式。

作为用户级别数据结构,含有PEB数据的虚拟存储器页面当前可存在或可不存在于 存储器中。在步骤336中,引擎40确定相应的虚拟存储器页面是否被换出,且如果否, 则在步骤340中引擎40继续(例如)通过解析PEB数据确定目标进程的主要可执行的虚 拟地址。当PEB数据当前被换出存储器时,步骤338使用(举例来说)如上文关于图7描 述的机制迫使换入含有PEB数据的相应的页面。

图9展示由引擎40实施以执行由目标进程加载的可执行模块(例如库)的存储器自省 的步骤的示范性序列。恶意软件通常使用DLL作为用于携载恶意代码的向量,所以分 析此类库的内容对反恶意软件操作可能是重要的。在步骤342中存取含有PEB数据的虚 拟页面之后(参看(举例来说)上文的步骤336到338),在步骤344到346到348的序列中 引擎40识别由目标进程使用的目标模块(举例来说,动态链接库(DLL))且确定相应的模 块是否已加载。当目标模块已加载时,在步骤350中引擎40可(例如)根据PEB的特定 数据字段(参看(举例来说)图10)确定相应的模块的虚拟地址。在步骤352中,引擎40确 定含有模块数据且存在于在步骤350中确定的地址处的虚拟页面当前是否被换出存储 器,且当没有时,在步骤356中继续执行相应的模块的存储器自省。当相应的模块的虚 拟页面当前被换出时,在步骤354中,引擎40使用(例如)上文关于图7描述的机制迫使 换入相应的虚拟页面。

图10展示在环境中的虚拟地址的示范性确定。在一些实施例中,OS34 维持内核虚拟存储器空间214d,其中位于虚拟地址60p处的页面含有由OS34用来管理 目标进程的执行的EPROCESS结构的部分。(例如)可通过拦截目标进程的开始(参见(举 例来说)图8中的步骤332)确定地址60p。EPROCESS数据结构的字段持有目标进程的进 程环境块(PEB)的指示符(举例来说,指针)。指针指示由OS34指派到目标进程的进程虚 拟存储器214e内的虚拟地址60q。PEB结构进一步包含到含有关于由目标进程加载的可 执行模块(举例来说,库)的信息的结构(LDR数据)的指针。LDR数据位于空间214e内的 地址60r处。通过行走由OS34构建的进程管理数据结构的分层,自省引擎40可因此确 定用于自省目标的对象的多个虚拟地址。当位于此类地址处的存储器页面的内容被换出 RAM时,引擎40可迫使OS34使用本文中描述的方法将相应的页面换入。

上文描述的示范性系统及方法允许使用虚拟化技术保护主机系统免受恶意软件影 响。在一些实施例中,存储器自省引擎在于主机系统上执行的虚拟机下方操作。存储器 自省引擎可通过分析由在相应的虚拟机内执行的进程使用的存储器页面的内容保护虚 拟机。自省引擎可因此从相应的VM外部确定相应的进程的代码是否含有恶意软件。

在一些实施例中,自省引擎还可防止一些关键对象(例如某些驱动程序及页面表以及 其它)的未经授权的修改(举例来说,通过恶意软件)。为了保护此类对象,一些实施例可 通过拦截对被分配到相应的对象的存储器页面的试图写入来防止变化。可根据管理程序 的级别执行此类拦截。

在常规的反恶意软件系统中,安全应用程序在类似于操作系统或共同应用程序的处 理器权限级别的处理器权限级别下执行。此类系统可能易受也在操作系统的权限级别下 操作的高级的恶意软件的伤害。相比之下,在本发明的一些实施例中,管理程序在最高 权限级别(举例来说,根模式或环-1)下执行,从而将操作系统转移到虚拟机。存储器自 省引擎可在与管理程序相同的处理器权限级别下执行。可因此根据高于操作系统的处理 器权限级别的处理器权限级别进行反恶意软件操作。在一些实施例中,单一存储器自省 引擎可保护在相应的计算机系统上同时执行的多个虚拟机。

尽管存储器自省引擎在用于保护目标的虚拟机外部执行,但引擎可确定由在受保护 的VM内运行的软件对象使用的虚拟地址。然而,当此类虚拟地址指向当前由操作系统 换出存储器的页面的内容时,存储器自省引擎不能存取相应的内容。在本发明的一些实 施例中,当页面当前被换出时,存储器自省引擎可迫使OS将相应的页面换入,从而使 相应的页面内容可用于分析及/或保护。为了迫使换入,存储器自省引擎可在相应的虚拟 机的虚拟化处理器内触发处理器事件(例如页面错误异常),所述处理器事件经配置以使 得操作系统将经换出的页面带回到存储器。触发处理器事件可包括:(例如)写入到由相 应的虚拟机使用的虚拟机控制结构的一组控制位。存储器自省引擎可因此在无需来自 OS或来自在相应的VM内执行的其它软件的协助的情况下将页面错误注入到相应的虚 拟机中。

所属领域的技术人员将清楚的是,在不背离本发明的范围的情况下可以许多方式更 改上文的实施例。因此,本发明的范围应由以下权利要求书及其合法等效物确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号