用于审计虚拟机的系统及方法与流程

文档序号:15307299发布日期:2018-08-31 21:12阅读:263来源:国知局

本申请案主张2016年1月5日申请的标题为“用于审计虚拟机的系统及方法(systemsandmethodsforauditingavirtualmachine)”的第62/274,902号美国临时专利申请案的申请日期的权益,所述美国专利申请案的全部内容以引用方式并入本文中。



背景技术:

本发明涉及用于执行软件审计的系统及方法,且更特定来说,涉及执行于硬件虚拟化配置中的软件审计。

在现代软件驱动的经济中,由公司持有的硬件及软件资产量及复杂性持续增加。随着员工从使用桌面计算机转变为使用移动装置(例如膝上型计算机、平板计算机及移动电话)且随着工作变得不受位置限制,记录公司的硬件及软件资产变成一个严重的问题。举例来说,代替跨越所有公司计算机使用单个版本的软件应用程序,公司如今通常使用每一应用程序的多个版本以考虑员工在现代移动办公室中使用的各种硬件平台及操作系统。当应用软件更新时、当此类更新可能并未一致地被递送到所有计算机及移动装置时,所述情况进一步复杂化。

此增加的异质性可使软件许可及服务水平协议复杂化。另外,用于移动装置上的应用程序软件的近期扩增造成越来越大的计算机安全风险。恶意软件及间谍软件可容易地伪装于过剩的合法应用程序及版本之中,从而使员工及公司经受对专有数据的未授权存取风险及生产率损失等。

改变经典计算模型的另一近期发展是硬件虚拟化。在例如网页服务器农场及虚拟桌面基础架构(vdi)等应用程序中,数以百计的虚拟机可同时在单个物理平台上执行。此类虚拟机可动态经实例化及/或移除,这进一步增加任一时间在相应物理平台上执行的软件的异质性。

出于例如许可、数字权利管理、应用程序控制及计算机安全等目的,审计软件可用于记录安装于计算机系统上及/或当前在计算机系统上执行的软件。越来越有兴趣开发特别适于现代虚拟化环境的审计系统及方法。



技术实现要素:

根据一个方面,一种包括经配置以执行一组客户虚拟机(vm)及进一步在所述组客户vm外部执行vm审计引擎的至少一个硬件处理器的计算机系统。所述vm审计引擎经配置响应于从远程审计服务器接收到审计请求:将审计代理插入到所述组所述客户vm的目标vm中,所述审计代理经配置以执行所述目标vm的审计,所述审计包括选自由以下各者组成的群组的项目:生成经安装用于在所述目标vm上执行的合法计算机程序列表;及确定硬件资源的量,所述量当前由所述目标vm使用。所述vm审计引擎进一步经配置:响应于插入所述审计代理,导致所述目标vm执行所述审计代理;及响应于所述目标vm执行所述审计代理,从所述目标vm移除所述审计代理。

根据另一方面,一种包括采用计算机系统的至少一个硬件处理器在所述计算机系统上执行的一组客户vm外部执行虚拟机审计引擎的方法。执行所述vm审计引擎包括:响应于从远程服务器接收到审计请求,将审计代理插入到所述组客户vm的目标vm中,所述审计代理经配置以执行所述目标vm的审计,所述审计包括选自由以下各者组成的群组的项目:生成经安装用于在所述目标vm上执行的合法计算机程序列表;及确定硬件资源的量,所述量当前由所述目标vm使用。执行所述vm审计引擎进一步包括:响应于插入所述审计代理,导致所述目标vm执行所述审计代理;及响应于所述目标vm执行所述审计代理,从所述目标vm移除所述审计代理。

根据另一方面,一种包括经配置以使用多个客户端系统执行审计事务的至少一个硬件处理器的服务器计算机系统。审计事务包括:将审计请求发送到所述多个客户端系统的客户端系统;及作为响应,从所述客户端系统接收审计报告,所述审计报告由在所述客户端系统上执行的一组客户vm外部的所述客户端系统上执行的虚拟机vm审计引擎确定。确定所述审计报告包括:响应于从所述服务器计算机系统接收到审计请求,将审计代理插入到所述组客户vm的目标vm中,所述审计代理经配置以执行所述目标vm的审计,所述审计包括选自由以下各者组成的群组的项目:生成经安装用于在所述目标vm上执行的合法计算机程序列表;及确定硬件资源的量,所述量当前由所述目标vm使用。确定所述审计报告进一步包括:响应于插入所述审计代理,导致所述目标vm执行所述审计代理;及响应于所述目标vm执行所述审计代理,从所述目标vm移除所述审计代理。

根据另一方面,一种存储指令的非暂时性计算机可读媒体,所述指令在由计算机系统的至少一个硬件处理器执行时导致所述计算机系统形成虚拟机审计引擎,所述vm审计引擎在公开于所述计算机系统上的一组客户vm外部执行,其中所述vm审计引擎经配置响应于从远程审计服务器接收到审计请求:将审计代理插入到所述组客户vm的目标vm中,所述审计代理经配置以执行所述目标vm的审计,所述审计包括选自由以下各者组成的群组的项目:生成经安装用于在所述目标vm上执行的合法计算机程序列表;及确定硬件资源的量,所述量当前由所述目标vm使用。所述vm审计引擎进一步经配置:响应于插入所述审计代理,导致所述目标vm执行所述审计代理;及响应于所述目标vm执行所述审计代理,从所述目标vm移除所述审计代理。

附图说明

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

图1说明根据本发明的一些实施例的其中多个客户端系统在审计服务器的请求下审计的示范性配置。

图2-a说明根据本发明的一些实施例的经审计客户端系统的示范性硬件配置。

图2-b说明根据本发明的一些实施例的审计服务器的示范性硬件配置。

图3-a展示根据本发明的一些实施例的由经审计客户端系统上执行的管理程序公开的示范性虚拟机及在经审计vm外部执行的vm审计引擎。

图3-b展示根据本发明的一些实施例的其中客户虚拟机由客户端系统上执行的单独审计vm审计的替代性配置。

图4展示根据本发明的一些实施例的由审计安装应用程序实施以设置客户端系统的审计的示范性步骤序列。

图5展示根据本发明的一些实施例的经审计客户端系统与审计服务器之间的示范性数据交换。

图6展示根据本发明的一些实施例的由vm审计引擎执行的示范性步骤序列。

图7展示根据本发明的一些实施例的在各种处理器特权级下执行的审计代理的示范性组件。

图8展示根据本发明的一些实施例的由vm审计引擎执行以将审计代理放到经审计vm中的示范性步骤序列。

图9说明根据本发明的一些实施例的由审计代理的驱动程序加载程序执行的示范性步骤序列。

图10展示根据本发明的一些实施例的由审计驱动程序执行的示范性步骤序列。

具体实施方式

应理解,在以下描述中,结构之间所述所有连接可为直接操作连接或通过中间结构的间接操作连接。一组元件包含一或多个元件。应理解,元件的任何陈述是指至少一个元件。多个元件包含至少两个元件。除非另外要求,否则描述的任何方法步骤不一定需要按说明的特定顺序执行。从第二元素导出的第一元素(例如,数据)涵盖等于第二元素的第一元素,还涵盖通过处理第二元素及任选地其它数据生成的第一元素。根据参数作出确定或决策涵盖根据参数及任选地根据其它数据作出确定或决策。除非另外指定,否则一些数量/数据的指示符可为数量/数据本身或不同于数量/数据本身的指示符。计算机程序是实施任务的处理器指令序列。本发明的一些实施例中描述的计算机程序可为其它计算机程序的独立软件实体或子实体(例如,子例程、库)。除非另外指定,否则合法计算机程序是经安装或以其它方式经配置以由相应计算机系统的合法用户执行的计算机程序。相比之下,由未授权入侵者安装到相应计算机系统的秘密恶意软件(malicioussoftware)(恶意软件(malware))及计算机程序在本文被认为是不合法的计算机程序。据说,当相应计算机程序在相应虚拟机的至少一个虚拟处理器上执行时,计算机程序在虚拟机内或内部执行(或相应虚拟机执行相应计算机程序)。进程是计算机程序(例如应用程序)的例子或操作系统的一部分,且通过具有至少一执行线程及指派到其的虚拟存储器空间而特性化,其中相应虚拟存储器空间的内容包含可执行代码。除非另外指定,否则页表示可个别地映射到主机系统的物理存储器的虚拟存储器的最小单位。除非另外指定,否则寄存器表示与处理器集成或形成处理器的一部分且与随机存取存储器(ram)不同的存储组件。隧道是连接到通信网络的两个实体之间的虚拟点到点连接。计算机可读媒体涵盖非暂时性媒体,例如磁性、光学及半导体存储器媒体(例如,硬盘驱动、光盘、快闪存储器、dram),还涵盖通信链路,例如导电电缆及光纤链路。根据一些实施例,本发明提供(除其它外)计算机系统,其包括经编程以执行本文描述的方法的硬件(例如,一或多个微处理器),还包括编码指令以执行本文描述的方法的计算机可读媒体。

以下描述通过实例且不一定通过限制说明本发明的实施例。

图1展示根据本发明的一些实施例的示范性配置,其中多个客户端系统12a到d在审计服务器14的请求下远程地审计。示范性客户端系统12a到d包含个人计算机系统、移动计算平台(膝上型计算机、平板计算机、移动电话)、娱乐装置(tv、游戏机)、可穿戴装置(智能手表、健身手环)、家用电器,以及包括处理器及存储器且能够操作硬件虚拟化平台的任何其它电子装置。客户端系统12a到d经由通信网络10互连,例如企业网络、因特网等。网络10的部件可包含局域网(lan)。

审计服务器14通信地耦合到客户端系统12a到d且与每一客户端系统12a到d合作以执行相应客户端系统的审计。示范性审计活动包含(除其它外)软件资产的识别及相应软件资产关于许可、使用情况及权利的验证。此审计的粒度可从相对高级(例如,确定哪些应用程序/版本被安装于客户端系统上)到深入审计(包含(例如)确定客户端系统上执行的软件是否使用特定版本的关键组件(例如,驱动程序、补丁、反恶意软件模块)、每一组件何时被安装或存取、单个应用程序使用多少硬件资源等)变化。其它示范性审计活动包含(除其它外)确定审计时哪些软件组件(应用程序、进程、驱动程序等)当前正在客户端系统上执行、确定相应客户端系统的处理器的当前状态、确定当前资源使用水平(例如,cpu、存储器、磁盘、网络等)及确定相应客户端系统的os、各种应用程序的一组配置参数值/设置、用户设置等。

服务器14一般地表示一组互连计算系统,其可或可不与彼此物理接近。在一些实施例中,审计服务器14经配置以存取客户端数据库15。在示范性客户端数据库15中,每一条目与经审计客户端系统12a到d相关联,且可包含从相应客户端系统接收到的一组审计报告(参见下文)的内容。每一条目可进一步使用从相应客户端系统接收到的每一审计报告的接收时间的指示符进行时间标记。数据库15中的每一条目可包括针对相应客户端系统确定的审计数据,包含(例如)相应客户端系统的硬件配置的指示符、操作系统(os)的类型及版本的指示符、一组合法安装的应用程序或其它软件组件(例如,驱动程序、补丁)的指示符、当前加载及/或审计时执行的一组软件组件(应用程序、进程、驱动程序等)的指示符、指示相应客户端系统的各种os、应用程序及/或用户设置的一组参数及审计时资源(例如,cpu、存储器、磁盘等)使用情况的一组指示符。审计数据可进一步包含时间指示符,其指示所列每一软件组件何时被安装及/或所列每一组件最近一次被存取或修改的时间。

图2-a展示客户端系统12(例如图1中的系统12a到d)的示范性硬件配置。为简单起见,所说明的客户端系统是计算机系统,其它客户端系统(例如移动电话、手表等)的硬件配置可稍微不同于说明的配置。客户端系统12包括一组物理装置,包含硬件处理器16及存储器单元18。处理器16包括经配置以使用一组信号及/或数据执行计算操作及/或逻辑运算的物理装置(例如,微处理器、形成于半导体衬底上的多核集成电路等)。在一些实施例中,此类操作以处理器指令序列(例如,机器代码或其它类型的编码)的形式被递送到处理器16。存储器单元18可包括存储由处理器16存取或生成的指令及/或数据的易失性计算机可读媒体(例如,dram、sram)。

输入装置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的南桥。

图2-b展示根据本发明的一些实施例的审计服务器14的示范性硬件配置。服务器14包括至少一个硬件处理器116(例如,微处理器、多核集成电路)、物理存储器118及一组服务器网络适配器126。适配器126可包含网卡及使审计服务器14能够连接到通信网络10的其它通信接口。在一些实施例中,服务器14进一步包括输入、输出及存储装置,其在功能上可分别类似于输入20、输出22及存储装置24。

在一些实施例中,客户端系统12经配置以公开一组虚拟机,例如,如图3-a到b中说明。虚拟机(vm)使用硬件虚拟化领域中已知的多种技术中的任何者仿真实际物理机/计算机系统。在一些实施例中,管理程序30(在所属领域中也称为虚拟机监测器(vmm))在客户端系统12上执行,且经配置以创建或启用多个虚拟化装置,例如虚拟处理器及虚拟存储器管理单元,及代替客户端系统12的真实物理装置将此类虚拟化装置公开到软件。此类操作在所属领域中通常已知为公开虚拟机。管理程序30可进一步使多个虚拟机能够共享主机系统12的硬件资源,使得每一vm单独操作且并未察觉到客户端系统12上当前执行的其它vm。流行的管理程序的实例包含来自vmware有限公司(vmwareinc.)的vmwarevspheretm及开源xen管理程序等。

在图3-a到b中说明的示范性配置中,客户vm32执行客户操作系统(os)34及一组应用程序36a到b。客户os34可包括任何广泛可用的操作系统,例如microsoft等,其提供vm32内执行的应用程序与vm32的虚拟化硬件装置之间的接口。应用程序36a到b一般地表示任何用户应用程序,例如文字处理器、电子表格应用程序,图形应用程序、浏览器、社交媒体及电子通信应用程序等。

在图3-a中说明的实施例中,vm审计引擎40a在管理程序30的处理器特权级(例如,根级或环-1)下在客户vm32外部执行。vm审计引擎40a经配置以执行客户vm32的审计。在一些实施例中,此审计包括将审计代理42放到经审计vm中,如下文详细描述,且一旦审计完成就从经审计vm移除代理42。

在图3-b中说明的替代性实施例中,管理程序30经配置以公开与所有经审计客户vm分离的审计vm33,其中审计vm33可与客户vm32同时执行。审计vm33的一些实施例包括轻型最小操作系统(例如,os的定制版本),且经配置以执行vm审计引擎40b,所述vm审计引擎40b经配置以执行客户vm32的审计。客户vm32及审计vm33的虚拟环境可使用虚拟化领域中已知的任何方法与彼此隔离以保证客户vm32内执行的恶意软件不会感染或以其它方式干扰审计vm33内执行的软件。在图3-b的实施例中,内省引擎44在管理程序30的处理器特权级下在客户vm32及审计vm33外部执行。在图3-a的示范性实施例中,内省引擎44的部分活动可至少部分由vm审计引擎40a执行。

尽管起草了图3-a到b以展示客户端系统12上执行的仅一个客户vm32,但一些实施例可经配置以在运行多个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的所选择的子集的审计。

在一些实施例中,内省引擎44(图3-b)经配置以检测经审计客户vm内的软件执行期间发生的各种事件及与其它审计软件(例如,代理42及/或引擎40a到b)交换此信息。由内省引擎44检测到的示范性事件包含(例如)处理器异常及/或中断、执行客户os34的特定功能的企图、处理器特权(例如,系统调用)的变化、存取特定存储器位置(从特定存储器位置读取、写入到特定存储器位置及/或从特定存储器位置执行)的企图等。内省引擎44可进一步经配置以确定客户vm32内执行的各种软件组件的存储器地址,如下文进一步描述。

用于检测此类事件的若干方法是所属领域中已知的。在一个此实例中,内省引擎44可与管理程序30合作以使用第二级地址转译机构(例如,平台上的扩展页表-ept、平台上的快速虚拟化索引-rvi)设置存储器存取权限。当企图存取特定存储器页违反针对相应存储器页设置的存取权限时,相应企图可触发处理器事件,例如异常或虚拟机退出事件(平台上的vmexit)。作为处理器事件的结果,处理器16可切换到在内省引擎44内执行事件处置器例程,这允许引擎44检测相应事件的发生。此类机构可通过将含有相应功能的一部分的存储器页标记为非可执行来检测(例如)对特定功能的调用。

为了简单且不丢失一般性起见,以下描述将集中于如图3-a中说明那样配置的示范性实施例。所属领域的技术人员应理解,描述的系统及方法可经调适成其它配置,且特定来说,调适成图3-b的示范性配置。在以下描述中,vm审计引擎将一般性地标记为40,其可取决于选取配置表示审计引擎40a或审计引擎40b。

图4展示根据本发明的一些实施例的经执行以设置客户端系统的审计的示范性步骤序列。在审计企业网络的典型场景中,网络管理员可将审计应用程序安装于每一客户端系统12a到d上。审计应用程序可包括各种组件,例如vm审计引擎40、内省引擎44等。所说明的步骤序列可例如由相应审计应用程序的安装程序实用程序实施。当安装于当前未在硬件虚拟化配置中操作的客户端系统上时,审计软件可在最高特权级(例如,支持虚拟化的平台上的vmxroot,另外通常已知及根模式或环-1)下首先接管处理器16,及安装管理程序30。接着,管理程序30可公开客户vm32且移动相应客户端系统上先前执行的所有软件以在客户vm32内执行。管理程序30可进一步设置vm审计引擎40及/或内省引擎44。当安装于已经运行多个虚拟机的硬件虚拟化平台上时,可省略步骤200到202。

在一些实施例中,步骤206可设置从审计服务器14到vm审计引擎40的远程存取。此存取可使审计服务器能够自动或由人类操作者协助将指令直接发送到经审计客户端系统12。此类指令可(例如)指导vm审计引擎40执行特定种类的审计、检验客户vm的存在及/或特定软件组件的特性、确定处理器16的当前状态(例如,一组处理器寄存器的内容)、读取客户os34或其它软件的一组参数设置等。在一个示范性实施例中,步骤206可配置服务器14与管理程序30之间及/或服务器14与审计vm33之间的隧道(即,点到点通信链路)。示范性隧道可根据虚拟专用网络(vpn)及/或安全外壳(ssh)协议及方法设置。一旦设置此隧道,其就可由服务器14使用以将审计请求及/或其它指令发送到vm审计引擎40。

在另一步骤208中,审计安装程序可从管理程序30的等级配置内省及/或事件拦截。步骤208可包括(例如)设置对由经审计客户vm使用的一些存储器页的存取权限使得企图存取相应页将触发处理器事件(例如,vm退出事件),从而使vm审计引擎40或内省引擎44能够检测经审计客户vm32内事件(例如,系统调用)的发生。在一些实施例中,步骤208可进一步设置经审计vm内执行的组件(例如,审计代理42)与相应vm外部执行的组件(例如,审计引擎40、内省引擎44)之间的信令及/或通信机构。此通信或信令可使用硬件虚拟化领域中已知的任何方法。在一个实例中,两个软件组件可经由由两个软件组件共享的物理存储器区段在彼此之间传输数据。为了将数据从vm内部执行的第一组件发送到相应vm外部执行的第二组件,第一软件组件可将数据写入到共享存储器区段且接着发布特权处理器指令(例如,平台上的vmcall),从而导致vm退出事件。vm退出事件(例如平台上的vmexit)将处理器16从执行第一软件组件切换到执行处置器例程(其可为第二软件组件的部分)。因此,可通知相应vm外部执行的第二组件第一组件正尝试传输数据。相反地,为了将数据从第二组件发送到第一组件,第二组件可将数据写入到共享存储器区段且接着将中断注入到相应vm中。中断将由相应vm内执行的中断处置器处置(例如,由第一软件组件处置)。因此,第一组件可检测第二组件正尝试传输数据。在一些实施例中,步骤208包括将适当软件组件注册为用于各种处理器事件的处置器以启用上文描述的通信机构。

图5展示根据本发明的一些实施例的审计服务器14与经审计客户端系统之间的示范性数据交换。服务器14可将审计请求50发送到客户端系统12,请求50指导vm审计引擎40执行客户端系统12的审计。在一些实施例中,审计请求50包含审计类型的指示符(例如,待对客户端系统12执行的审计操作的类型的指示符),其用于列出所有合法应用程序、确定当前os设置等。另一示范性审计请求50包括客户端系统12上当前执行的目标虚拟机的指示符;例如审计请求可指导审计引擎40选择性地执行目标vm的审计。又一示范性审计请求50可包含具体软件组件(例如,microsoft特定驱动程序等)的指示符。此请求可指导引擎40确定(除其它外)相应软件组件是否合法地安装于相应客户端系统上、安装了相应软件组件的哪一版本、相应软件组件当前是否加载于存储器中/当前是否执行、最近使用相应软件组件的时间等。另一示范性审计请求50可指导引擎40确定由目标vm或目标vm内执行的特定软件组件使用的硬件资源(例如,处理器、存储装置、存储器)的当前等级/量/百分比。

审计请求50可包含经审计客户端系统上执行的目标客户vm的标识符。此请求可指导审计引擎40执行相应客户vm的选择性审计。其它请求50可指导审计引擎执行经审计客户端系统上执行的所有客户vm的审计。

审计请求50可根据调度表或响应于网络管理员的动作发送出。审计请求50可一致地发送出到所有客户端系统12a到d或可具体经裁剪到每一经审计客户端系统。在一些实施例中,审计请求可由相应客户端系统上发生的事件触发,或响应于通信网络10上的任何地方发生的事件触发。响应于实施所请求的审计,vm审计引擎40a到b可将审计报告52发送到服务器14。报告52包括相应审计活动的结果,例如,经安装软件组件列表、相应客户端系统的一组当前配置设置等。

图6展示根据本发明的一些实施例的由vm审计引擎40执行的示范性步骤序列。引擎40可监听来自服务器14的审计请求50。当接收到请求50时,引擎40可根据审计请求50选择用于审计的目标vm,且将审计代理放到目标客户vm(例如,图3-a到b中的客户vm32)中。

可根据经审计客户vm的类型,例如,根据经审计vm内当前执行的客户os34的类型,起草代理。os类型可包括名称指示符(例如)及版本指示符(例如版本7、家庭版或企业版)等。在一些实施例中,审计引擎40根据相应客户vm的模型特定寄存器(msr)的内容或由相应msr所指向的存储器区段的内容识别os的类型。在一些实施例中,引擎40可根据由经审计vm内执行的软件写入到此类msr的数据确定os的名称。例如,引擎40可拦截将指令写入到sysenter或syscallmsr及根据此写入指令的参数确定当前执行或当前实例化的os的类型。其它示范性寄存器(其可提供有关os名称的信息)包含控制寄存器、中断描述符表(idt)及全局描述符表(gdt)等。为了根据msr写入识别os类型,内省引擎40可进一步使用与专用于每一os的预定快速系统调用处置器库(例如,根据syscall或sysentermsr的内容处置的系统调用)的模式匹配。此类快速系统调用库可具备审计引擎40及/或内省引擎44,且可经由周期性或按需软件更新保持最新。

在一些实施例中,版本指示符(例如发行名称、创建号等)可通过解析专用于os的相应类型的某些内核数据结构获得。允许识别os版本的示范性数据结构是内核的某些输出符号或内核的某些输出符号,例如ntbuildnumber等。

将审计代理42放到目标客户vm中,步骤序列228到230到232可在环路中重复直到审计完成。在审计进行时,vm审计引擎40可与审计代理42交换数据(例如,各种软件组件的存储器地址、审计的各种结果)。虚拟机内执行的组件与虚拟机外部执行的组件之间的此消息传递可使用虚拟化领域中已知的任何方法实施(例如,经由审计引擎40与审计代理42之间共享的存储器区段,如上文描述)。当审计完成时,步骤234从经审计vm擦除审计代理,例如,通过擦除含有驱动程序加载程序的存储器区段(下文更详述)。在另一步骤236中,审计引擎40用公式表示审计报告52且将审计报告52发送到审计服务器14。

图7从处理器特权级(例如,特权环)的视角展示审计代理42的示范性组件。在一些实施例中,审计代理42包括驱动程序加载程序46及审计驱动程序48。驱动程序加载程序46可由vm审计引擎40注入到运行应用程序36中,例如图3-a到b中的应用程序36a到b。驱动程序加载程序46可因此在应用程序36的特权级下执行,通常在环3(用户模式或用户处理器特权级)中执行。在一些实施例中,驱动程序加载程序46将审计驱动程序48加载到客户vm32上且在客户vm32上启动审计驱动程序48,驱动程序48通常在客户os34的处理器特权级(例如,环0、内核模式或内核级)下执行。接着,审计驱动程序48可在客户vm32内实施审计操作。当审计完成时,加载程序46或vm审计引擎40可从客户vm32移除驱动程序48,例如,通过擦除含有驱动程序48的存储器区段。替代性实施例不使用驱动程序加载程序46,而是改为直接将代码(例如,审计代理42)注入到客户os34的内核中。在此类实施例中,代理42可完全在环0(内核模式)中执行。

将软件组件放到虚拟机中可使用所属领域中已知的各种方法实现。图8展示根据本发明的优选实施例的由vm审计引擎40执行以将代理42放在客户vm32内部(图6中的步骤226)的示范性步骤序列。在步骤250中,vm审计引擎40识别适于注入驱动程序加载程序46的存储器区段。在一些实施例中,驱动程序加载程序46被起草为尽可能的小,例如比存储器页小得多,使得其可安全地伪装于现存数据结构之中而无需使用os的存储器分配设施(使用这些设施可使加载程序46及/或驱动程序48可由包含客户vm32内执行的恶意软件的其它软件发现)。

在一个实例中,vm审计引擎40可搜索适于在通常由驱动程序区段之间的客户os34保留的填充空间内接收驱动程序加载程序46的存储器区段。此填充空间存在,这是因为一些操作系统(例如)分配存储器使得对象的每一不同区段与页边界对准。当区段未占用整个存储器页时,相应页内的剩余存储器空间填充有虚设数据(例如,零值)。在此类实施例中,搜索合适的存储器空间来容纳驱动程序加载程序46可包括扫描针对此虚设数据分配到客户os34的驱动程序的存储器页。

在另一实例中,引擎40可拦截os为小对象(例如,驱动程序)分配存储器的企图,相应对象小于存储器页。代替分配所需的存储器量,引擎40可迫使客户os34将完整的存储器页(例如,4kb)分配到相应对象,且使用相应存储器页内的剩余空间管控驱动程序加载程序46。为了拦截此存储器分配企图,审计引擎40及/或内省引擎44的一些实施例可检测到执行本机os存储器管理功能的企图,例如中的keallocatepoolwithtag。为了确定其处此类功能驻存于相应客户虚拟机32的存储器中的存储器地址,审计引擎40可存取某些数据结构,例如内核二进制图像的输出功能表(例如,中的便携式可执行格式、中的可执行且可链接格式)。可根据所拦截的调用的分配标签确定当前分配的对象类型。例如,在中,‘driv’标签指示驱动程序对象。

在又一实例中,步骤250包括将未使用的存储器页映射到执行进程(例如图7中的应用程序36)的存储器空间。识别了到主机驱动程序加载程序46的合适的存储器区段,在步骤252中,vm审计引擎40可将加载程序46注入到相应存储器区段中。

接下来,审计引擎40的一些实施例可等待当前执行进程(例如应用程序36)企图进行处理器特权改变,例如,通过发布系统调用(例如在平台上发布syscall、或在平台上发布sysenter)。从相应vm外部拦截系统调用可以若干方式实现。在一个实例中,引擎40可复位当前执行企图系统调用的线程的虚拟处理器的处理器寄存器的值。此类处理器寄存器的实例包含平台上的ia32_lstar及ia32_sysenter_eip寄存器。当企图系统调用时,此寄存器操纵将随后导致故障;相应故障可由vm审计引擎40或内省引擎44检测到。在另一实例中,引擎40可将重定向连接置于含有客户os34的系统调用处置器的代码页上。

在一些实施例中,当系统调用被拦截时,步骤256实施一组合格检查,以确定相应系统调用的上下文是否允许驱动程序加载程序46的安全注入。在其中系统调用的拦截是经由系统调用处置器的连接实现的一个实例中,合格检查可包括确定当前栈是否是用户栈。当栈是用户栈时企图注入代码可能会危害系统,这是因为驻存于用户模式中的任何事物都是内核所不信任的。另外,其它线程可窥视来自用户栈的数据,且可甚至能够甚至攻击驱动程序加载程序46。在一些实施例中,确定栈是否是用户栈包括确定栈片段描述符的特权级。另一合格检查可确定中断当前是否被启用。驱动程序加载程序46可能必须执行需要启用中断的一些处理器指令。又一合格检查可确定当前中断请求级别(irql)。一些实施例可能需要(例如)当前irql等于0以能够实施驱动程序加载程序46的操作。

当系统调用满足合格要求时,在步骤260中,审计引擎40可挂起发布相应系统调用的线程的执行,且将处理器16切换到执行驱动程序加载程序46。当加载程序46已完成执行时,审计引擎40可将处理器16切换回到执行原始线程(例如,应用程序36)。

图9展示根据本发明的一些实施例的由驱动程序加载程序46执行的示范性步骤序列。为了为审计驱动程序48分配存储器及/或为了为驱动程序48创建线程,一些实施例可调用客户os34的专用功能,例如中的exallocatepoolwithtag及pscreatesystemthread(类似功能存在于其它os(例如,)中)。在其中需要驱动程序加载程序46具有小存储器占据面积的实施例中,此类os功能的地址可由vm审计引擎40提供到加载程序46,例如,经由上文所描述的消息传递机构。在此类实施例中,驱动程序加载程序46可能实际上未将驱动程序48写入到所分配的存储器。代替地,加载程序46可将所分配的存储器区段的地址传送到vm审计引擎40,而实际写入是由审计引擎40实施。

一旦启动了审计驱动程序48(步骤274),加载程序46就可退出。在一些实施例中,当审计驱动程序48完成执行时,例如,当当前审计操作完成时,驱动程序加载程序46可从客户vm32移除审计驱动程序48。在替代性实施例中,vm审计引擎40可执行清除(例如,从存储器移除驱动程序48)。

图10展示根据本发明的一些实施例的由审计驱动程序48执行的示范性步骤。由于驱动程序48在具有其自身存储器空间及执行线程的客户vm32内执行,所以驱动程序48可使用客户os34可用的所有资源执行客户vm32的审计,例如枚举经安装应用程序列表、确定os的各种参数值、确定与各种软件组件相关联的时间标记、确定资源使用情况等。此类任务可使用所属领域中已知的各种方法实施。例如,审计驱动程序48可枚举客户os34的某些注册表项,相应项揭露经安装应用程序/软件包的身份等。另一审计方法调用由客户os34(例如中的windows管理规范-wmi)公开的应用程序编程接口(api)以获得有关经安装程序的各种数据。在又一实例中,驱动程序48可搜索具体文件及文件夹(例如,中的程序文件)以便获得经安装程序及更新列表。此类示范性方法可单独或一起使用。审计期间收集的数据可被传输到vm审计引擎40,例如,通过将此数据写入到共享于驱动程序48与vm审计引擎40之间的预定存储器区段。

在一些实施例中,响应于执行审计且在退出之前,审计驱动程序48可加载及/或启动安全模块,例如反恶意软件驱动程序。安全模块可确定(例如)经审计客户vm是否包括恶意软件,及/或可删除现存恶意软件或以其它方式使现存恶意软件无法正常工作。由于此安全模块的隐秘及动态部署,其存在及活动可相对难以检测且受相应客户vm内执行的恶意软件的干扰。

本文描述的示范性系统及方法允许远程地在相对大量客户端系统(例如,企业网络)上执行软件审计。本文中的软件审计是指评估合法软件,即,评估经安装及/或配置用于由相应客户端系统的合法用户(例如,系统管理员)在相应客户端系统上执行的软件。示范性审计可确定(例如)当前哪些软件应用程序被安装在公司的计算机上。可使用此信息(例如)促成软件监听、部署升级、防止员工在工作时安装或使用某些软件(例如,聊天应用程序、游戏)、确定员工使用特定品牌的软件(例如,)等。

审计结果可便利地集中于通信地耦合到经审计客户端系统的服务器计算机处。审计可在人类管理员的请求下根据调度表及/或按需自动实施。在本发明的一些实施例中,审计可进一步与计算机安全活动耦合,例如所选择的客户端系统的定向恶意软件扫描/杀毒。

一些实施例使用硬件虚拟化技术提高软件审计的安全性及可靠性。为了避免将审计软件暴露到恶意人类干预及/或感染经审计客户端的恶意软件,一些实施例将包含操作系统的客户端软件移动到虚拟机(vm)及从受尊重的虚拟机外部执行审计的部分。审计软件的部分可因此在管理程序的级别下执行或在相应客户端上执行的单独专用审计vm内执行。

通过充分利用虚拟化,本发明的一些实施例还良好适于审计并行执行多个vm的客户端系统,例如服务器农场及虚拟桌面基础架构(vdi)系统。根据一些实施例配置的单个审计引擎可审计多个vm或相应客户端上执行的所有vm。经配置以在虚拟化环境中实施审计操作的一些常规系统通过分析经审计vm的存储器快照而执行审计。此类常规系统可能需要经审计vm停止以便拍下相应存储器快照。相比之下,本发明的一些实施例无需停止经审计vm,这是因为审计代理可被放到当前执行的vm中。通过不限于可从存储器快照提取的信息,一些实施例可能够访问来自执行的vm内部的基本上更丰富审计数据。

将审计软件永久地安装于审计客户端内可能会将此软件暴露到恶意软件,这可能停止此软件或以其它方式使此软件无法正常工作。与此类常规解决方案相比,本发明的一些实施例在审计的持续时间内动态地将审计代理放到经审计机器中,从而最小化计算机安全风险。在经审计vm内不具有永久审计代理的另一优点是此类配置可能显著促成虚拟机及审计软件两者的管理、部署及升级。当审计解决方案是独立的且并非永久地依赖经审计虚拟机时,审计软件可独立于vm软件而更新。例如,可安装对vm审计引擎40的更新而不会影响相应客户端上执行的客户vm的操作。在硬件虚拟化的许多现代应用程序中,例如vdi,虚拟机通常基于本地存储于客户端上或从vdi服务器计算机接收到的vm图像通常动态地在客户端系统上经实例化及移除。当经审计vm不具有永久审计代理时,vm图像可在任何时间更新或以其它方式改变而不会影响审计软件。

然而,从经审计vm外部执行审计操作造成一个困难的技术问题,在所属领域中通常称为“桥接语义间隙”。虽然经审计vm内执行的软件能够访问与审计有关的丰富信息;但相应vm外部执行的软件通常仅能够访问物理存储器的内容及经审计vm的虚拟处理器的当前状态。因此,从相应vm外部解开vm中软件的语义可能是不可能的,或在最好的情况下可能需要相当大的计算量。为了帮助桥接语义间隙,一些实施例因此将审计代理放在经审计vm内。审计代理可从经审计vm内收集信息且将此信息传送到经审计vm外部执行的组件。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1