首页> 中国专利> 用于虚拟机器的完整性保护的存储器自省引擎

用于虚拟机器的完整性保护的存储器自省引擎

摘要

本发明描述允许保护计算机系统免受例如病毒及根程序病毒包等恶意软件影响的系统及方法。在一些实施例中,虚拟机监控程序配置托管一组操作系统OS的硬件虚拟化平台。以所述虚拟机监控程序的处理器特权级别执行的存储器自省引擎动态地识别每一OS,且使用保护启动模块来改变通过在所述相应OS本机的存储器分配功能将存储器分配给目标软件对象的方式。在一些实施例中,所述改变仅影响需要恶意软件保护的目标对象,且包括强制执行专门为所述相应对象预留含有所述目标对象的数据的存储器页。所述存储器自省引擎接着对所述相应存储器页写保护。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-13

    授权

    授权

  • 2016-01-20

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

    实质审查的生效

  • 2015-12-23

    公开

    公开

说明书

背景技术

本发明涉及用于保护计算机系统免于恶意软件的系统及方法,且特定来说涉及采用 硬件虚拟化技术的反恶意软件系统。

恶意软件(还称为恶意软件(malware))影响全世界的大量计算机系统。在其许多形式 (例如计算机病毒、蠕虫及根程序病毒包)中,恶意软件对数百万计算机用户呈现出严重 风险,使他们易于遭受数据及敏感信息损失、身份盗用及生产力损失等等。

硬件虚拟化技术允许以许多方式表现为物理计算机系统的模拟计算机环境(通常称 为虚拟机器)的形成。在例如服务器合并及服务架构(IAAS)的典型应用程序中,数个虚拟 机器可在同一物理机器上同时运行,所述虚拟机器共享硬件资源,因此减少投资及操作 成本。每一虚拟机器可与其它虚拟机器分离地运行其自身的操作系统及/或软件应用程 序。由于恶意软件的稳定扩散,在此环境中操作的每一虚拟机器可能需要恶意软件保护。

此项技术中通常使用的虚拟化解决方案包括由在虚拟机器的计算硬件与操作系统 (OS)之间操作的软件层组成且具有多于相应OS的处理器特权的虚拟机监控程序,还称 为虚拟机器监视器。可以虚拟机监控程序的特权级别进行反恶意软件操作。尽管此些配 置可促进恶意软件检测与防范,但其引入另一层复杂性且可带来显著计算成本。

对以最小计算额外开销研发用于硬件虚拟化平台的反恶意软件解决方案(稳健且可 扩缩的解决方案)相当感兴趣。

发明内容

根据一个方面,一种主机系统包括经配置以执行操作系统及保护启动模块的至少一 个处理器。所述操作系统经配置以将虚拟机器的虚拟化物理存储器的区段分配给在所述 虚拟机器内执行的目标软件对象,所述虚拟机器受作用于在所述主机系统上执行的虚拟 机监控程序。所述虚拟化物理存储器被分割成若干页,一页为在所述虚拟化物理存储器 与所述主机系统的物理存储器之间个别地映射的最小存储器单元。所述保护启动模块响 应于所述目标软件对象是否满足用于恶意软件保护的选择准则的确定而在所述目标软 件对象满足所述选择准则时经配置以改变所述目标对象的存储器分配,其中改变所述存 储器分配包括确保为所述目标软件对象预留含有所述目标软件对象的至少一部分的任 何页。

根据另一方面,一种方法包括:采用主机系统的至少一个处理器来形成操作系统, 所述操作系统经配置以将虚拟机器的虚拟化物理存储器的区段分配给在所述虚拟机器 内执行的目标软件对象,所述虚拟机器受作用于在所述主机系统上执行的虚拟机监控程 序。所述虚拟化物理存储器被分割成若干页,一页为在所述虚拟化物理存储器与所述主 机系统的物理存储器之间个别地映射的最小存储器单元。所述方法进一步包括:响应于 所述目标软件对象是否满足用于恶意软件保护的选择准则的确定在所述目标软件对象 满足所述选择准则时,采用所述至少一个处理器来改变所述目标软件对象的存储器分 配,其中改变所述存储器分配包括确保为所述目标软件对象预留含有所述目标软件对象 的至少一部分的任何页。

根据另一方面,一种非暂时性计算机可读媒体编码指令,所述指令在由主机系统的 至少一个处理器执行时致使所述至少一个处理器:将虚拟机器的虚拟化物理存储器的区 段分配给在所述虚拟机器内执行的目标软件对象,所述虚拟机器受作用于在所述主机系 统上执行的虚拟机监控程序。所述虚拟化物理存储器被分割成若干页,一页为在所述虚 拟化物理存储器与所述主机系统的物理存储器之间个别地映射的最小存储器单元。所述 指令进一步致使所述至少一个处理器响应于所述目标软件对象是否满足用于恶意软件 保护的选择准则的确定而改变所述目标软件对象的存储器分配。在所述目标软件对象满 足所述选择准则时执行存储器分配的所述改变。改变所述存储器分配包括确保为所述目 标软件对象预留含有所述目标软件对象的至少一部分的任何页。

附图说明

将在阅读以下实施方式后且在参考图式后更好地理解本发明的前述方面及优点,在 图式中:

图1展示根据本发明的一些实施例的被保护免受恶意软件影响的主机计算机系统的 示范性硬件配置。

图2展示根据本发明的一些实施例的受作用于在图1的主机系统上执行的虚拟机监 控程序的一组示范性虚拟机器。

图3图解说明根据本发明的一些实施例的以各种处理器特权级别在主机系统上执行 的软件对象(包含受保护免受恶意软件影响的一组对象)的示范性层次结构。

图4展示根据本发明的一些实施例的在图2的系统配置中的存储器地址的示范性映 射。

图5展示示范性存储器分配,其中虚拟化物理存储器空间划分成页,且其中存储器 的不同区段分配给多个软件对象中的每一者。

图6图解说明示范性存储器分配,其中页根据本发明的一些实施例专门分配给受保 护软件对象。

图7展示根据本发明的一些实施例的由存储器自省引擎执行以保护虚拟机器的示范 性步骤序列。

图8展示由保护启动模块的实施例执行以针对目标软件对象修改存储器分配的示范 性步骤序列。

图9展示由保护启动模块的另一实施例执行以针对目标软件对象修改存储器分配的 示范性步骤序列。

图10展示根据本发明的一些实施例的由保护启动模块执行以针对目标软件对象修 改存储器解除分配的示范性步骤序列。

具体实施方式

在以下说明中,应理解,结构之间的所有所叙述连接可为直接操作连接或通过中间 结构的间接操作连接。一组元素包含一或多个元素。对一元素的任一叙述应理解为是指 至少一个元素。多个元素包含至少两个元素。除非另有需要,否则不必以特定所图解说 明的次序执行任何所描述方法步骤。从第二元素导出的第一元素(例如,数据)涵盖等于 所述第二元素的第一元素以及通过处理所述第二元素而产生的第一元素及任选地其它 数据。根据参数做出确定或决策涵盖根据所述参数及任选地根据其它数据做出所述确定 或决策。除非另有规定,否则某一数量/数据的指示符可为所述数量/数据本身或不同于 所述数量/数据本身的指示符。除非另有规定,否则页表示个别地映射到主机系统的物理 存储器的虚拟化物理存储器的最小单元。除非另有规定,否则虚拟化物理存储器的区段 被称为是横跨一组页(当所述组页中的每一页含有相应区段的一部分时)。为目标对象预 留页涵盖将整体页分配给目标对象,且另外确保相应页不托管与目标对象不同的对象的 部分。计算机可读媒体涵盖非暂时性媒体(例如磁性、光学及半导体存储媒体(例如,硬 盘驱动器、光盘、快闪存储器、DRAM))以及通信链路(例如导电电缆及光纤链路)。根据 一些实施例,本发明除其它之外还提供包括经编程以执行本文中所描述的方法的硬件(例 如,一或多个处理器)以及编码指令以执行本文中所描述的方法的计算机可读媒体的计算 机系统。

以下说明通过实例的方式且不必通过限制方式图解说明本发明的实施例。

图1展示根据本发明的一些实施例的主机系统10的示范性硬件配置。主机系统10 可表示例如企业服务器的法人计算装置或例如个人计算机或智能手机的终端用户装置 等等。其它主机系统包含例如TV及游戏控制台的娱乐装置,或具有支持虚拟化且需要 恶意软件保护的存储器及处理器的任何其它装置。出于说明性目的,图1展示计算机系 统;例如移动电话或平板计算机的其它客户端装置可具有不同配置。在一些实施例中, 系统10包括一组物理装置,包含全部通过一组总线24连接的处理器12、存储器单元 14、一组输入装置16、一组输出装置18、一组存储装置20及一组网络适配器22。

在一些实施例中,处理器12包括经配置以借助一组信号及/或数据执行计算及/或逻 辑运算的物理装置(例如,多核心集成电路)。在一些实施例中,此类逻辑运算以处理器 指令序列(例如,机器代码或其它类型的软件)的形式递送到处理器12。存储器单元14 可包括存储由处理器12在执行指令的过程中存取或产生的数据/信号的易失性计算机可 读媒体(例如,RAM)。输入装置16可包含计算机键盘、鼠标及麦克风等等,包含允许 用户将数据及/或指令引入到系统10中的相应硬件接口及/或适配器。输出装置18可包 含例如监视器及扬声器等等的显示装置以及例如图形卡的硬件接口/适配器,从而允许系 统10将数据传递给用户。在一些实施例中,输入装置16与输出装置18可共享一件共 用硬件,如在触摸屏装置的情形中。存储装置20包含实现软件指令及/或数据的非易失 性存储、读取及写入的计算机可读媒体。示范性存储装置20包含磁盘及光盘以及快闪 存储器装置,以及可装卸式媒体,例如CD及/或DVD磁盘及驱动程序。所述组网络适 配器22使得系统10能够连接到计算机网络及/或其它装置/计算机系统。总线24共同表 示多个系统、外围及芯片集总线及/或实现主机系统10的装置12到22的互相通信的所 有其它电路。举例来说,总线24可包括将处理器12连接到存储器14的北桥及/或将处 理器12连接到装置16到22的南桥等等。

图2展示根据本发明的一些实施例的在主机系统10上执行且受作用于虚拟机监控 程序30的一组示范性客户虚拟机器32a到32b。此项技术中通常已知虚拟机器(VM)作 为实际物理机器/计算机系统的软件模拟,每一虚拟机器能够独立于其它VM运行其自身 的操作系统及软件。虚拟机监控程序30包括允许多个虚拟机器对主机系统10的硬件资 源(例如处理器操作、存储器、存储、输入/输出及网络化装置)的多路复用(共享)的软件。 在一些实施例中,虚拟机监控程序30使得多个虚拟机器及/或操作系统(OS)能够在主机 系统10上以各种隔离度同时运行。为达成此些配置,形成虚拟机监控程序30的部分的 软件可形成多个虚拟化(即,软件模拟)装置,每一虚拟化装置模拟系统10的物理硬件装 置,例如处理器12及存储器14等等。虚拟机监控程序30可将一组虚拟装置进一步指 派给在主机系统10上操作的每一VM。因此,每一VM32a到32b好像其处理其自身组 的物理装置似的操作,即,操作为或多或少完整的计算机系统。流行虚拟机监控程序的 实例包含来自VMware公司的VMwarevSphereTM及开源Xen虚拟机监控程序等等。

在一些实施例中,虚拟机监控程序30包含经配置以执行如下文进一步描述的反恶 意软件操作的存储器自省引擎40及连接到存储器自省引擎40的保护启动模块46。引擎 40及模块46可并入到虚拟机监控程序30中,或可实现为不同于且独立于虚拟机监控程 序30的软件组件,但以与虚拟机监控程序30实质上相同的处理器特权级别执行。单个 引擎40可经配置以对在主机系统10上执行的多个VM进行恶意软件保护。

虽然图2为简单起见仅展示两个VM32a到32b,但主机系统10可操作大量(例如 数百个)VM,且此些VM的数目可在主机系统10的操作期间改变。在一些实施例中, 每一VM32a到32b与在主机系统10上运行的其它VM同时且独立于其它VM分别执 行客户操作系统34a到34b及/或一组软件应用程序42a到42b及42c到42d。每一OS34a 到34b包括将接口提供到相应VM32a到32b的(虚拟化)硬件的软件,且充当分别在相 应OS上运行的计算应用程序42a到42b及42c到42d的主机。操作系统34a到34b可 包括任何广泛可用的操作系统,例如或AndroidTM等等。应用程序42a到42d可包含文字处理、图像处理、数据库、浏览器、电子通信应 用程序及反恶意软件应用程序等等。

图3图解说明根据本发明的一些实施例的在主机系统10上执行的软件对象的层次 结构。自此项技术中还称为层或保护环的处理器特权级别的视角表现图3。在一些实施 例中,虚拟机监控程序30以最具特权的级别(通常称为根模式或Intel平台上的VMXroot) 控制处理器12,因此形成作为虚拟机器32呈现给在主机系统10上执行的其它软件的硬 件虚拟化平台。操作系统34(例如图2中的OS34a到34b)在VM32的虚拟环境内执行, OS34具有低于虚拟机监控程序30的处理器特权(例如,内核模式或Intel平台上的环 0)。OS34可进一步包含受保护OS对象36a,从而以OS特权级别执行。在一些实施例 中,受保护OS对象36a包括经选择用于恶意软件保护的数据结构,例如驱动程序对象, 如下文进一步展示。一组应用程序42e到42f(例如,图2的应用程序42a到42d)以低于 OS34的特权级别的处理器特权级别(例如,Intel平台上的用户模式)执行。

在一些实施例中,反恶意软件应用程序44通常以与应用程序42e到42f相同的处理 器特权级别在OS34上执行。示范性反恶意软件应用程序44包含反病毒程序或较大软 件套件,包括反病毒、反间谍软件及其它计算机安全应用程序。在一些实施例中,反恶 意软件驱动程序36b以类似于OS34的级别的处理器级别执行。驱动程序36b将功能性 提供给反恶意软件应用程序44,例如以针对恶意软件签名扫描存储器及/或检测在OS34 上执行的软件对象的指示恶意软件的行为。

在一些实施例中,自省引擎40实质上以与虚拟机监控程序30相同的特权级别执行, 且经配置以执行例如VM32的虚拟机器的自省。VM或在相应VM上执行的软件对象的 自省可包括:分析软件对象的行为;确定及/或存取此些软件对象的存储器地址;限制某 些过程对位于此些地址处的存储器内容的存取;及分析此内容等等。在一些实施例中, 由自省引擎40定为目标的软件对象包括过程、指令流、寄存器及例如页表及驱动程序 对象的数据结构等等。

在示范性操作中,存储器自省引擎40可设置由受保护免受恶意软件影响的软件对 象组成的受保护区域38。保护此些对象可包括限制对存储属于相应对象的数据的存储器 区的存取。由于虚拟机监控程序30具有对VM32的存储器空间的控制,因此保护由OS 34使用的某些存储器区可例如通过虚拟机监控程序30设定对相应存储器区的适当存取 权利而达成。在一些实施例中,受保护区域38包含受保护OS对象36a及反恶意软件驱 动程序36b。当OS34为Linux操作系统时,示范性受保护OS对象36a包含:内核(只 读代码及/或数据,例如sys_call_table)、系统进入/系统调用控制寄存器及地址int0x80(系 统调用)及/或int0x01等等。WindowsOS的示范性受保护对象包含:内核(只读代码及/ 或数据,包含系统服务调度表)、各种描述符表(例如,中断、全体及/或局部)、系统进入 /系统调用控制寄存器及/或其它寄存器,例如中断描述符表寄存器(IDTR)、全局描述符 表寄存器(GDTR)及局部描述符表寄存器(LDTR)。在一些实施例中,受保护OS对象36a 还可包括特定驱动程序对象及快速I/O调度表(例如,磁盘、atapi、clfs、fltmgr、ntfs、 fastfat、iastor、iastorv)等等。其它受保护OS对象36a可包含某些模型特定寄存器(MSR), 例如ia32_systenter_eip、ia32_sysenter_esp、ia32_efer、ia32_star、ia32_lstar及ia32_gs_base。 在一些实施例中,自省引擎40还保护页表,以防止到内含恶意代码的地址的未授权重 新路由。

虚拟机器通常借助虚拟化物理存储器(即,主机系统10的实际物理存储器14的虚拟 表示)操作。虚拟化物理存储器包括特定于每一客户VM32a到32b的虚拟化地址的连续 空间,其中所述空间的部分映射到物理存储器14及/或物理存储装置20内的地址。在经 配置以支持虚拟化的系统中,通常通过处理器12所控制的专用数据结构(例如经扩展页 表(EPT)或嵌套页表(NPT))达成此映射。在此些系统中,虚拟化物理存储器可以此项技术 中称作页的单元经分割,页表示经由例如EPT及/或NPT的机制个别地映射到物理存储 器的虚拟化物理存储器的最小单元,即,以页粒度执行物理与虚拟化物理存储器之间的 映射。所有页通常具有预定大小,例如,4千字节、2兆字节等。通常由虚拟机监控程 序30配置虚拟化物理存储器的分割。在一些实施例中,虚拟机监控程序30还配置 EPT/NPT及因此物理存储器与虚拟化物理存储器之间的映射。一些硬件配置允许虚拟机 监控程序30(例如)通过设定对每一页的读取及写入存取权利而选择性地控制对存储于 相应页内的数据的存取。可(例如)通过修改EPT或NPT内的相应页的条目而设定此些权 利。虚拟机监控程序30因此可选择哪一软件对象可存取存储于每一页内的地址处的数 据,且可指示哪些操作借助相应数据被允许,例如,读取、写入等。软件对象执行操作 (例如,从对象不具有对其的相应权利的页读取数据或将数据写入到所述页)的尝试可触 发虚拟机器退出事件(例如,Intel平台上的VMExit事件)。在一些实施例中,虚拟机器 退出事件将对处理器的控制从执行相应软件对象的VM转移到虚拟机监控程序30,因此 防止未授权读取/写入尝试。

在一些实施例中,OS34配置虚拟存储器空间(还称作逻辑地址空间)且使所述虚拟 存储器空间受作用于例如图3中的应用程序42e到42f及44的应用程序及/或例如受保 护对象36a到36b的另一软件对象。在此些系统中,OS34(例如)使用页表机制配置且 维持所述虚拟存储器空间与VM32的虚拟化物理存储器之间的映射。在一些实施例中, 所述虚拟存储器空间还分割成若干页,此些页表示通过OS34个别地映射到虚拟化物理 存储器的虚拟存储器的最小单元(以页粒度执行虚拟到虚拟化物理存储器映射)。

图4图解说明如图2中所展示的实施例中的存储器地址的示范性映射。由客户OS 34a给例如应用程序42a或客户OS34a的软件对象指派虚拟地址空间214a。当相应软 件对象尝试存取示范性存储器地址50a时,由客户VM32a的虚拟化处理器根据由客户 OS34a配置及控制的页表将地址50a转换成虚拟机器32a的虚拟化物理存储器空间114a 内的地址50b。地址50b在此项技术中还称作客户物理地址。配置及控制虚拟化物理存 储器114a的虚拟机监控程序30接着(例如)使用如上文所讨论的EPT或NPT手段将地址 50b映射到主机系统10的物理存储器14内的地址50c。

类似地,由客户OS34b针对应用程序(例如42c)或在客户VM32b上执行的其它软 件对象设置虚拟存储器空间214b。由客户VM32b的虚拟化处理器根据由客户OS34b 配置及控制的转换表将空间214b内的示范性虚拟地址50d转换为客户VM32b的虚拟 化物理存储器空间114b内的地址50e。由虚拟机监控程序30将地址50e进一步映射到 物理存储器14内的地址50f中。

在一些实施例中,虚拟机监控程序30设置包括物理存储器14的表示的其自身的虚 拟存储器空间214c,且采用转换机制(例如,页表)将空间214c中的地址映射到物理存储 器14中的地址中。在图4中,此示范性映射将地址50g转换成地址50h。类似地,物理 存储器14中的地址(例如)50c及50f分别对应于虚拟机监控程序30的虚拟存储器空间 214c内的地址50k及50m。

OS34a到34b的必要任务是将存储器的区段动态地分配给在相应VM32a到32b上 执行的软件对象,且在相应过程不再需要此些区段时释放此些区段以供重新使用。可以 虚拟存储器214a到214b的级别或以相应虚拟机器的虚拟化物理存储器114a到114b的 级别执行此存储器分配。通常通过专用OS存储器管理功能(例如,中的 KeAllocatePoolWithTag及KeFreePoolWithTag)执行存储器分配及解除分配。

由于前文所讨论的存储器映射机制,目标对象的存储器分配总是引起相应VM的虚 拟化物理存储器的区段到目标对象的分配。相应区段的大小根据页大小及相应软件对象 的存储器要求而可为页的仅一小部分或一个以上页。在下文中,区段被称为是横跨一组 页(在所述组页中的每一页含有相应区段的一部分时)。可给数个对象分配相同页的不同 区段。图5展示划分成多个页26a到26d的虚拟化物理存储器的示范性区,及示范性存 储器分配,其中各自分配给不同软件对象的两个区段52及54横跨相同页26b。另一示 范性区段56横跨两个页26c到26d。

相比之下,图6展示根据本发明的一些实施例的示范性存储器分配。如下文详细地 展示,当目标对象需要恶意软件保护时,例如,当目标对象为驱动程序对象或属于受保 护区域38的另一对象时,保护启动模块46的一些实施例修改目标对象的存储器分配, 使得为目标对象预留含有目标对象的一部分的每一页。

所属领域的技术人员将了解,可以数种方式实现为目标对象预留一组页。在一些实 施例中,预留页包括将整个页分配给目标对象,如图6的实例中所展示,其中区段58 占据整个页26f。可(例如)通过将分配给相应对象的区段的大小改变为等于页大小的整数 倍数的新大小而实现此排他分配,如下文更详细地展示。相比之下,在图6的相同实例 中,给不受保护软件对象分配由另一页26g的仅一小部分组成的区段60。在其它实施例 中,为目标对象预留一组页未必包含修改目标对象的大小或将整组页分配给目标对象, 但可通过另外确保未给除目标对象之外的对象分配相应组页内的存储器空间来实现。例 如,为目标对象预留页可包括例如在OS34的初始化后即刻留出一组空页,且将所述对 象分配(或移动)到相应组空页内,如下文更详细地展示。

图7展示根据本发明的一些实施例的由存储器自省引擎40执行的示范性步骤序列。 引擎40可经配置以检验及/或保护在主机系统10上同时执行的多个虚拟机器。可针对每 一此类虚拟机器重复图7中所展示的步骤。在步骤102中,引擎40检测OS34的初始 化。在一些实施例中,步骤102包括依据虚拟机监控程序30的级别听取指示OS初始化 的处理器事件。执行OS初始化操作的处理器指令通常需要内核处理器特权,例如,Intel 平台上的环0。当依据OS34的特权级别执行时,此些指令可触发虚拟机器退出事件, 例如Intel平台上的VMExit事件,所述事件将对处理器12的控制从OS34转移到虚拟 机监控程序30。虚拟机器退出事件因此可由虚拟机监控程序30及/或自省引擎40分析。 指示OS初始化的事件及/或处理器指令的实例包括中断及全局描述符表的初始化,此是 通过使用例如LIDT及/或LGDT的有特权的指令在WindowsOS的初始化中提早进行的。 指示OS初始化的事件/指令的其它实例包含通过使用WRMSR机器指令写入到 SYSENTER及/或SYSCALL模型特定寄存器,此是在OS的内核图像已加载于存储器中 之后立即完成的。又其它实例包括由OS34编程的其它模型特定寄存器(例如机器检查配 置寄存器及FS/GS基址寄存器等等)的初始化。在一些实施例中,检测到此些事件/指令 指示已初始化OS34。

在步骤104中,存储器自省引擎40的一些实施例识别在相应客户VM上当前执行 或初始化的操作系统的类型。示范性OS类型包含Windows、Linux、MacOS及Android 等等。OS类型可包括例如Windows的名称指示符及例如7、Home或Enterprise的版本 指示符等等。在一些实施例中,步骤104包括根据相应客户VM的模型特定寄存器(MSR) 的内容或相应MSR所指向的存储器的区段的内容来识别OS的类型。在一些实施例中, 引擎40可根据通过在步骤102中拦截的指令而正写入到此些MSR的数据来确定OS的 名称。例如,引擎40可拦截写入到SYSENTER或SYSCALLMSR的指令,且根据此写 入指令的参数确定当前执行或当前初始化的OS的类型。可提供关于OS名称的信息的 其它示范性寄存器包含控制寄存器、中断描述符表(IDT)及全局描述符表(GDT)等等。为 了根据MSR写入识别OS类型,自省引擎40可进一步使用匹配特定于每一OS的快速 系统调用处理程序(例如,根据SYSCALL或SYSENTERMSR的内容处理系统调用)的 预定库的模式。此些快速系统调用库可与存储器自省引擎40一起经提供,且可经由周 期性或按需软件更新记到最新日期。

在一些实施例中,可通过剖析特定于相应类型的OS的某些内核数据结构而获得版 本指示符(例如发布名称、创建号等)。允许OS版本的识别的示范性数据结构为Linux 内核的某些输出符号或Windows内核的某些输出符号,例如NtBuildNumber等等。

在步骤106中,存储器自省引擎40可访问保护启动模块46以执行存储器启动操作, 使引擎40准备好施加完整性保护。在一些实施例中,此些存储器启动操作包括修改经 选择用于恶意软件保护的目标对象的分配,使得为相应目标对象预留含有目标对象的部 分的所有页。在一些实施例中,步骤106可包含建立经预留未经分配存储器页池,以稍 后专门分配给经选择用于恶意软件保护的对象。为建立此经预留池,保护启动模块46 可调用本机OS存储器分配功能以将相应池分配给预定大小(例如,20MB)的虚假软件对 象。模块46因此可确保相应存储器池将在由本机OS存储器管理功能执行的进一步分配 中未使用。下文关于图8到10进一步详述模块46的功能性。

在步骤108中,存储器自省引擎40选择用于保护的目标对象。在一些实施例中, 步骤108包括根据在步骤102到104中确定的OS的类型识别需要恶意软件保护(参见图 3中的受保护区域38)的软件对象。作为保护的目标的示范性对象为OS驱动程序对象及 反恶意软件驱动程序36b等等。为识别此些对象,存储器自省引擎40可维持需要恶意 软件保护的OS特定对象列表;所述列表可通过周期性及/或按需软件更新记到最新日期。 在一些实施例中,引擎40可拦截OS34加载驱动程序的每一尝试,且执行相应驱动程 序的一组完整性及/或签名检查。此些检查可包含匹配相应驱动程序的一部分的哈希与针 对已知驱动程序确定的哈希库,且可允许反恶意软件驱动程序36b在OS34正使用及/ 或当前尝试加载的多个驱动程序当中的识别。一旦经识别,可连同OS的其它组件一起 保护驱动程序36b,如下文更详细地展示。

步骤110等待直到已初始化目标对象。例如,当初始化驱动程序时,OS34执行到 分配给相应驱动程序或根据相应驱动程序或根据相应驱动程序经配置以控制的装置选 择的其它软件对象的存储器空间的若干个合理配置写入;引擎40可允许此些合理写入 作为步骤110的一部分继续进行。为确定是否已初始化目标对象,引擎40的一些实施 例可听取指示驱动程序初始化的事件及/或处理器指令。此些事件的实例包含对相应对象 的某些区域的修改等等。

在步骤112中,引擎40保护相应目标对象免受(举例而言)被尝试危害OS34的恶意 软件的不想要的修改影响。此项技术中已知数个此类存储器保护机制。在一些实施例中, 保护目标对象包括对由OS34分配给相应目标对象的存储器空间写保护。可由虚拟机监 控程序30应存储器自省引擎40上的请求使用例如EPT或NPT的数据结构强制执行此 写保护。例如,虚拟机监控程序30可通过修改相应页的EPT/NPT存取权利位而将分配 给目标对象的存储器页设定为只读。或者,虚拟机监控程序30可拦截写入到分配给目 标对象的存储器页的任何尝试,且重新引导存储器自省引擎40的相应尝试以用于分析。 在分析写入尝试之后,存储器自省引擎40可决定允许还是否定(放弃)相应写入操作。可 针对需要恶意软件保护的所有目标对象重复步骤108到112。

在一些实施例中,由保护启动模块46执行的存储器启动操作包括修改经选择用于 恶意软件保护的目标软件对象的存储器分配,在引擎40施加相应软件对象的完整性保 护之前发生所述修改,如上文所展示(图7,步骤108到112)。在一些实施例中,模块 46修改存储器分配使得为相应目标对象预留含有目标对象的部分的存储器页。修改所述 存储器分配可包括修改执行在OS34本机的存储器管理功能的结果,及/或修改相应存储 器管理功能自身。本机存储器管理功能包括由OS34的制造商提供的软件对象,所述本 机功能执行存储器分配及解除分配操作。此些功能的实例为在WindowsOS本机的 KeAllocatePoolWithTag及KeFreePoolWithTag。

在一些实施例中,保护启动模块46根据由步骤104中的自省引擎确定的OS类型(例 如通过确定其中此些功能驻留于相应客户虚拟机器32的存储器中的存储器地址)识别一 组本机存储器管理功能。为确定此些存储器地址,模块46可存取某些数据结构,例如 内核二进制图像(例如Windows中的可移植可执行、Linux中的可执行且可链接格式)的 输出功能表。

在本机存储器管理功能的识别之后,模块46的一些实施例可继续进行以通过提供 额外功能性而修改所述功能。可使用此项技术中已知的任何挂起方法达成此些修改。例 如,模块46可施加重写或添加到相应本机功能的重新引导修补程序,例如VMCall指令 或JMP指令。其它实施例可修改相应存储器管理功能的EPT条目,以指向新地址。在 一些实施例中,此些修补程序及/或EPT钩子程序的效应是将本机功能的执行重新引导 到由保护启动模块46提供的代码片段;下文给出此代码的示范性功能性。在挂起之后, 当OS34尝试将存储器分配给目标对象或从目标对象解除分配存储器时,将在相应本机 OS存储器管理功能的代码之前或替代所述代码执行代码片段。

图8展示根据本发明的一些实施例的包括本机OS存储器分配功能(例如Windows 中的KeAllocatePoolWithTag)的修改的示范性步骤序列。所述序列可形成保护启动模块 46的一部分,且可由于由施加到相应存储器分配功能的修补程序/钩子执行的重新引导 而执行。步骤122应用选择准则以确定请求存储器分配的对象是否有恶意软件保护的资 格。可(例如)根据相应功能调用的参数及/或自变数而实施此些确定。示范性选择准则包 括根据对象的类型选择对象,例如驱动程序对象。在运行来自Windows系列的OS34 的实施例中,可根据本机存储器分配功能KeAllocatePoolWithTag的分配标签确定经分 配的对象的类型。例如,“Driv”标签指示驱动程序对象。替代选择准则包括确定请求 分配的对象是否在作为恶意软件保护的目标的对象列表上。此列表可包含受保护区域38 的部件(图3)。在一些实施例中,额外选择准则包括确定是否可通过下文所描述的方法 安全地修改相应对象的存储器分配。

步骤124确定目标对象是否满足用于恶意软件保护的选择准则。如果不满足,那么 步骤128将执行控制返回给相应OS的本机存储器分配功能。当目标对象经选择用于保 护时,在步骤126中,保护启动模块46的一些实施例将目标对象的大小改变为等于页 大小的整数倍数的新对象大小。以此方式改变对象大小可有效地驱迫存储器分配器将一 组整体页分配给相应目标对象,而非容纳对象所需要的实际量的存储器。在一些实施例 中,目标对象的大小大约为页大小的次近邻整数倍数。例如,可给320字节的目标对象 分配整体4kB页,可给6kB的对象分配两个整体4kB页等。在一些实施例中,例如执 行WindowsOS、分配测量至少一个页的大小的存储器的区段的虚拟机器将所分配区段 自动对准到页边界(例如,图6中的区段58)。在其它实施例中,步骤126可包含将所分 配区段明确地对准到页边界,使得由所述区段横跨的所有页专门分配给目标对象。所属 领域的技术人员将了解,可存在达成区段到页边界的对准的许多方式。例如,步骤126 可包含使目标对象的大小增加一个页的大小,且改变存储器的所得所分配区段的指针。 在完成步骤126之后,将执行控制返回给本机OS存储器管理功能。

图9展示图解说明保护启动模块46可达成存储器分配(其中为受保护软件对象预留 由分配给相应对象的区段横跨的所有页)的替代方式的示范性步骤序列。图9中所展示的 序列包括修改本机OS存储器分配功能(例如Windows中的KeAllocatePoolWithTag)的功 能性,且可响应于施加到相应存储器分配功能的修补程序/钩子而执行。步骤132到134 序列验证目标对象是否满足用于恶意软件保护的准则;步骤132到134可以类似于上文 所描述的步骤122到124的方式的方式继续进行。当目标对象未经选择用于保护时,步 骤138将处理器控制返回给相应本机存储器分配功能。当目标对象经选择用于恶意软件 保护时,步骤136绕过本机分配功能,且直接分配位于为受保护对象保留的存储器区内 的区段。在一些实施例中,步骤136包括确定指示位于由模块46在OS34的初始化后 即刻建立的经预留存储器池(参见上文,关于图7,步骤106)内的地址的分配指针。在一 些实施例中,模块46可进一步确定分配指针,使得所分配区段对准到页边界。接下来, 步骤140返回在步骤136中确定的分配指针。

在一些实施例中,保护启动模块46还可通过改变执行本机OS存储器解除分配功能 的结果或通过修改相应功能自身而修改解除分配过程。可(例如)通过挂起本机OS存储 器解除分配功能(例如KeFreePoolWithTag)以包含额外功能性而达成此些修改。图10展 示根据本发明的一些实施例的包括存储器解除分配功能的此修改的示范性步骤序列。步 骤142到144序列确定经解除分配的对象的地址是否受到自省引擎40及/或虚拟机监控 程序30(参见上文)写保护。当相应地址/页不具有此保护时,步骤148将执行控制返回 给本机OS解除分配功能。当相应地址/页受到引擎40及/或虚拟机监控程序30写保护时, 在步骤146中,存储器自省引擎40及/或虚拟机监控程序30的组件可在继续进行到步骤 148之前移除保护。在一些实施例中,从相应对象移除保护包括操作EPT或NPT的改变, 此指示内含相应对象的地址的页不再被写保护,例如只读。

上文所描述的示范性系统及方法允许保护主机系统(例如计算机系统)免受例如病毒 及根程序病毒包的恶意软件影响。在常规系统中,根程序病毒包可通过以实质上类似于 操作系统的级别的处理器特权级别操作而控制计算机系统。相比之下,在本发明的一些 实施例中,虚拟机监控程序在计算机系统上以最高特权级别执行,从而使操作系统位移 到虚拟机器。在一些实施例中,存储器自省引擎以与虚拟机监控程序相同的处理器特权 级别执行。因此可依据高于操作系统的级别的处理器特权级别进行反恶意软件操作。在 一些实施例中,单个存储器自省引擎可保护在相应计算机系统上同时执行的多个虚拟机 器。

在一些实施例中,保护相应系统免受恶意软件影响包括选择一组关键软件对象,例 如某些驱动程序、寄存器及页表等等,且防止对此些对象的恶意改变。为保护目标对象, 一些实施例可通过拦截写入到分配给相应对象的存储器空间的尝试而防止此些恶意改 变。可依据虚拟机监控程序的级别执行此些拦截。

其它实施例可通过将分配给目标对象的存储器空间标记为只读而保护相应对象。在 典型硬件及软件配置中,存储器被分割成连续地址的个别块,称作页。通常以页粒度设 定存取权限(例如,读取及写入权限),即,页内的所有地址具有相同存取权限。因此, 可(例如)通过将含有属于目标对象的数据的一组页标记为只读而达成保护相应对象的存 储器空间。由虚拟机监控程序(例如)使用专用数据结构(例如Intel平台上的经扩展页表 (EPT))控制页级存取权限。

在常规系统中,当OS将存储器空间分配给在相应系统上执行的软件对象时,可在 相同页内分配多个软件对象,例如,当相应对象具有小存储器占用面积时。在一些情境 中,相应对象中的一者对于OS可是关键的且因此需要保护以免受恶意软件影响,而来 自相同页的另一对象可需要频繁且合理重写入。由于以页粒度设定存取权限,因此保护 关键对象可导致否定对作为关键对象驻留于相同页内的所有对象的写入存取。写入到驻 留于受保护页内的存储器地址的每一尝试通常导致错误,后续接着将对处理器的控制从 相应虚拟机器的OS转移到虚拟机监控程序的虚拟机器退出事件。此些事件可包括将相 应虚拟机器的状态加载到处理器上及/或从处理器卸载相应虚拟机器的状态,从而进一步 添加计算额外开销。甚至写入到尤其内含受保护对象的页的合理尝试可因此产生计算机 系统的显著减速。

相比之下,本发明的一些实施例修改存储器分配给需要恶意软件保护的软件对象的 方式,使得为相应对象预留含有相应对象的一部分的每一存储器页。在将完整性保护施 加到相应软件对象之前执行此修改。通过确保没有其它对象与目标对象共享存储器页, 本发明的一些实施例允许以页粒度的完整性保护,同时避免由合理写入尝试的拦截导致 的计算额外开销。

在一些实施例中,修改在相应OS本机的分配方式包括识别OS的存储器分配及解 除分配功能,且挂起相应功能以将其执行重新引导到依据虚拟机监控程序的处理器特权 级别执行的指令集。或者,所述修改将相应功能重新引导到在运行相应OS的VM内侧 运行的指令集,所述指令集依据虚拟机监控程序的级别注入到相应VM的存储器中。在 一些实施例中,修改存储器分配功能以驱迫整体存储器页到需要保护的软件对象的分 配,所分配区段与页边界对准。因此,需要保护的对象可不再分配给与不需要保护的对 象相同的存储器页。

替代实施例确保通过例如在OS初始化后即刻留出经预留存储器池而为目标对象预 留分配给所述目标对象的每一页。当操作系统请求用于目标对象的存储器分配时,一些 实施例可将分配指针重新引导到经预留池内的地址,因此将目标对象有效地移动到一组 经预留页。

常规反恶意软件解决方案通常适合单个操作系统。一个操作系统与另一操作系统之 间的切换可需要加载反恶意软件的软件的不同版本。相比之下,在本发明的一些实施例 中,相同存储器自省引擎可对相应计算机系统进行恶意软件保护,而不考虑正运行的操 作系统的类型及版本。通过以虚拟机监控程序的级别执行存储器自省引擎,且通过使操 作系统位移到虚拟机器,一些实施例可同时运行且保护数个操作系统。在一些实施例中, 存储器自省引擎可动态地识别每一操作系统,例如开机时,且可进一步保护OS特定软 件对象及数据结构。

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号