用于将软件组件列入白名单的方法和系统的制作方法

文档序号:6467771阅读:419来源:国知局
专利名称:用于将软件组件列入白名单的方法和系统的制作方法
技术领域
本发明涉及用于将软件组件列入白名单的方法和系统。
背景技术
根工具包(root-kit)和恶意软件可避开在软件平台上进行操作 的安全软件的检测。 一旦被建立,根工具包可观测用户活动,屏蔽用 户动作,并执行其它恶意或非期望的活动。测量个别软件实体可针对 那个软件实体的完整性和存在校验,但是不可给出该软件实体未被屏 蔽的保证。

发明内容
本发明提供一种方法,包括运行在第一操作环境中加载的第一 软件组件;收集所述第 一操作环境中与所述第 一软件组件有关的运行 时信息;将所收集的运行时信息传递给第二操作环境中的第二软件组 件,所述第二操作环境与所述第一操作环境分离;将所述所收集的运 行时信息与有关所述第一软件组件的已验证信息集进行比较;以及如 果所述所收集的运行时信息不匹配所述已验证信息集,则发送告警。
本发明还提供一种系统,包括在第一操作环境中运行的第一软 件组件;在所述第一操作环境中运行的第二软件组件,收集与所述第 一软件组件有关的运行时信息,并传递所收集的运行时信息;以及在 第二操作环境中运行的第三软件组件,所述第二操作环境与所述第一 操作环境分离,所述第三组件接收所述所收集的运行时信息,并将所 述所收集的运行时信息与有关所述第 一软件组件的已验证信息集进 行比较。


在本说明书的结束部分特别指出作为本发明的主题并清楚地要 求其权利。但是,通过结合附图参照以下详细描述,可透彻地了解关
于本发明的操作的组织和方法及其目的、特征、优点,附图包括 图l是根据本发明的实施例的计算平台的示意图示。 图2是根据本发明的实施例的计算平台上的白名单架构的代表图示。
图3是根据本发明的实施例、通过白名单服务所捕获的样本组件 映像的数据结构的代表图示。
图4是根据本发明的实施例、用于将软件组件列入白名单的方法 的流程图。
将理解,为了说明的简洁和清楚起见,图中所示的元件不一定精 确地或者按比例绘制。例如,为了清楚起见,某些元件的尺寸可能相 对于其它元件经过放大,或者若干物理組件包含在一个功能块或元件 中。另外,在认为适当的情况下,参考标号可在附图中重复,以便指 明对应或相似的元件。另外,可将附图所示的某些块组合成单个功能。
具体实施例方式
在以下详细描述中,阐明大量具体细节,以便提供对本发明的透 彻理解。但是,本领域的技术人员会理解,即使没有这些具体细节也 可实施本发明。在其它情况下,没有详细描述众所周知的方法、过程、 组件、和电路,以免影响使本发明不明确。
除非明确说明,否则从以下论述中,大家清楚地知道,在整个说 明中,采用诸如"处理,,、"计算"、"确定"或诸如此类的术语的 论述表示计算机或计算系统或者类似的电子计算设备的动作和/或过 程,其设备操纵表示为计算系统的寄存器和/或存储器中的例如电的 物理量的数据和/或将其转换为类似地表示为计算系统的存储器、寄存器或者其它这种信息存储设备、传送或显示设备中的物理量的其它 数据。另外,术语"多个"可在整个说明中用来描述两个或更多组件、 设备、元件、参数和诸如此类。
本文所使用的术语"组件"可指可用于获得预期结果的编程逻辑 及关联数据。术语"组件"可与"模块"或"代理"同义,并且可指
可通过^/f牛或固件、或者通过可能具有入口和出口点、以例如c+十、
Intel架构64位(IA-64)可执行代码等编程语言编写的软件指令的集 合来体现的编程逻辑。此外,组件可以是从其它组件或者从其本身可 调用的,和/或可响应4企测事件或中断而被调用。例如,组件可以是 由一个或多个处理器运行的软件包、模块或代理。
本发明的实施例可提供用于将操作系统环境中的软件组件列入 白名单的方法和系统。在一个实施例中,在第一操作环境下,可收集 与第一加栽和运行软件组件有关的运行时信息。可将所收集的信息传 递给在与第 一操作环境分离的第二操作环境中进行操作的第二软件 组件。所收集的运行时信息可与有关第一软件组件的已验证信息集进 行比较。
现在参照图1的根据本发明的实施例、能够实现或运行白名单操 作软件组件的计算平台IOO的示意图示。在一些实施例中,计算平台 IOO可包括或者可以是例如个人计算机(PC)、台式计算机、移动计算 机、膝上型计算机、笔记本电脑、终端、工作站、服务器计算机、个 人数字助理(PDA)设备、网络设备或者能够容纳运行环境104的其它 适当的计算设备。
虽然本发明并不局限于这个方面,但是,计算平台IOO可包括例 如运行环境104、管理模块116和平台硬件118,平台硬件118可包 括例如处理器120、网络接口控制器(NIC)124、存储设备128和/或 存储器132。计算平台100还可与网络140连接,以便与外部计算平 台和其它设备进行通信。网络140可以是局域网(LAN)、城域网(MAN)、 广域网(WAN)或者具有两个或更多网络节点之间的通信链路的其它相似网络。
在一些实施例中,运行环境104可容纳运行操作系统(0S)108。 OS 108可以是配置成运行和控制运行环境104中的例如软件组件112 的其它组件的一般操作的软件组件。在一些情况下,运行环境104可 提供其中组件可进行操作的虚拟运行环境。备选地,运行环境104可 以是非虛拟的。
在一些实施例中,软件组件112可以是特权级组件,例如内核组 件。内核组件可以是或者包括例如加载器、调度器、存储管理器等的 服务;例如网卡、通用串行总线(USB)接口、磁盘驱动器等的扩展/ 驱动;或者例如监测代码运行的入侵检测器的服务-驱动的混合体。
管理^t块116可仲裁对于例如一个或多个处理器120、 NIC 124、 存储设备128和/或存储器132等的硬件或其它资源的一般组件访问。 在一些实施例中,管理模块116的功能可按照OS 108是否虚拟化而 改变。
处理器120可以是或者包括例如中央处理器(CPU)、数字信号处 理器(DSP)、微处理器、控制器、芯片、微芯片或者任何适当的通用 或专用处理器或控制器。在一些实施例中,例如,处理器120可运行 编程指令或者执行可用于计算平台100上的组件的操作的计算操作。
存储设备128可包括集成和/或外围存储设备,例如磁盘及关联 驱动器、USB存储设备、闪速存储器、只读存储器(ROM)、非易失性 半导体设备或者存储将用于平台100上的组件的运行的固有内容的 其它适当的存储设备。在一些实施例中,存储设备128可以是物理上 作为平台IOO的组成部分的存储资源,或者可以是平台IOO可访问的 但必须是平台IOO的组成部分。例如,存储设备128可由平台100通 过网络140、经由网络控制器124进^f亍访问。
存储器132可包括例如一个或多个存储器,诸如随机存取存储器 (RAM)、 ROM、动态RAM (DRAM)、同步DRAM (SDRAM)、闪速存储器、易 失性存储器、非易失性存储器、緩冲存储器、緩沖区、短期存储器单元、长期存储器单元或者用于存储例如OS 108和/或软件组件112等 的数据和/或组件的其它适当存储器单元。在一些实施例中,存储器 132可将其中存储的内容组织进入多组存储位置。如果OS 108经过 虚拟化,则可以是固定和/或可变大小的这些所组织的组可有助于虛 拟存储器管理。备选地,如果0S 108未虚拟化,则存储器132可具 有不同的组织结构。
现在参照图2,它示出根据本发明的实施例的计算平台200上的 白名单架构。本文所使用的"列入白名单"例如可表示4企验软件元件 (例如一段代码、组件、模块、代理、脚本等)例如避开恶意软件或其 它破坏的安全运行或使用的过程。在一些实施例中,计算平台200可 与平台100相似并且基本上是可互换的。此外,以下描述的元件可与 上述相似命名的元件类似并且基本上是可互换的,反过来也是一样。
计算平台200可包括用于管理操作环境206、平台硬件208和二 进制映像存储设备210的管理模块204。管理模块204或者管理模块 204的部分可独立于操作环境206而运行,可独立于操作环境206运 行代码,并且可与操作环境206安全地分离。在一些实施例中,管理 模块204可向操作运行环境206提供或者表示平台硬件208的多个抽 象和/或视图,例如一个或多个处理器220、 NIC 224、存储设备228 和/或存储器232,这是已知的。此外,在一些实施例中,管理模块 204可包括操作运行环境,它能运行例如固件中的指令,并且可以是 例如管理引擎。在这些情况下,操作环境206可以是例如原始的、常 规的或遗留的、如未虛拟化的OS环境。备选地,管理模块204可以 是虚拟机监测器(VMM),并且操作环境206可以是例如虚拟机(VM)或 客户OS。在这些情况下,管理模块204可管理对硬件208的VM访问。 管理模块204可在软件(例如作为由一个或多个控制器或处理器运行 的单机程序和/或主机操作系统的组件)、硬件、固件和/或它们的任 何组合中来实现。
管理模块204可包括用于检验在操作环境206中进行操作的组件的完整性或者验证其特征的测量管理器(IMM) 212。为了枱r验操作组件 的完整性,I醒212可将例如组件214的加载和例如授权的预期的服 务与例如可在例如二进制映像存储设备210中的盘上(on-disk)存 储的操作组件的记录的映像进行比较。存储映像可包含与组件有关的 信息,包括例如代码、数据段、外部符号表和重定位信息。还可包含 与组件有关的其它信息。IMM 212可从二进制映像存储设备210所存 储的映像中生成或提取关于服务的完整性证明。完整性证明可以是例 如关于在运行时(例如在运行期间)组件的有效或合法版本应当如何 在存储器中出现的概述或列表。在一些实施例中,完整性证明可在生 成期间被签署(sign)以免任何篡改或未经授权的修改,并且由此可 包括关于服务的已验证信息集,例如代码和数据段信息、重定位信息、 符号表信息以及检验证明本身的完整性的其它信息。可依靠这个完整 性证明来验证组件214在存储器(如存储器232 )中的映像。
在操作环境206被虚拟化的一些实施例中,虚拟化技术完整性服 务(VTIS)组件(未示出)还可存在于管理模块204中。VTIS组件可保 护管理模块204中的存储器中包含作为操作环境206的如组件214的 当前运行组件的组成部分的完整性检验代码或数据的页面。为了使保 护数据与操作环境206分离,VTIS组件可具有对完整性检验代码或 数据的独占访问权。在一些实施例中,在操作环境206中运行的组件 或模块可以能够在加载或者其它这种事件时由VTIS组件登记,例如 进行完整性检验。
在操作环境206被虚拟化的情况下,I腦212可在例如管理模块 204的VMM中运行。备选地,IMM212可在操作环境206中运行。对于 其中IMM 212在操作环境206中运行的情况,I醒212可由管理模块 204保护,以确保两个或更多操作环境206所使用的物理地址空间没 有重叠。此外,IMM 212还可在启动时向管理模块204的VTIS组件 登记,并且可由VTIS组件进行验证。
在操作环境206未虚拟化的情况下,I醒212可在作为管理引擎的组成部分的固件中来实现。
操作环境206可包括在操作环境206中运行的一个或多个组件, 例如组件214、内核目录服务(KDS)216和白名单管理器(WLM)218。还 可包括其它组件。组件214可以是或者包括在操作环境206中运行的 任何软件组件,例如内核服务、模块或驱动。例如根工具包等恶意软 件可渗入操作环境206,并且例如可修改组件214,使组件214的正 确运行转向(例如设置钩子程序(hook)),或者甚至尝试作为操作 环境206的有效组件进行操作。通过对操作环境206的已知组件验证、 校验或列入白名单,并验证这些组件之间以及与计算平台206上的其 它实体之间的交互,本发明的实施例可保护如计算平台200的计算平
KDS 216可以是或者包括组件、例如在虚拟才几的客户OS或0S中 运行的代理或服务,并且可以能够列出当前在操作环境206中运行的 组件或服务、如组件214。在一些实施例中,KDS 216例如可作为环 路-0 (ring-0)服务来运行。
WLM218可以是或者包括在虚拟4几的客户0S或0S中运行的组件, 它能够收集与单个OS服务或代理(如组件214 )对其它OS服务或代 理进行的外部引用有关的所有信息。在一些实施例中,WLM218和IMM 212可组合成单个模块,但是可使用其它功能组件。收集与单个OS 服务或代理进行的外部引用有关的所有信息在本文中又可称作捕获 组件的映像。WLM 218可通过参考二进制映像存储设备210中存储的 组件214的映像的导入表结构,来确定要收集什么信息。导入表结构 可以是或者包括例如由组件导出的到入口点的导入函数地址的列表。 WLM 218还可引用其它存储映像数据。
为了确定哪些组件可在操作环境206中运行,WLM 218可经由緩 冲区或共享存储器与KDS 216进行通信。共享存储器可以是管理模块 204中的存储空间。对于其中操作环境206被虚拟化(如VM)的实施 例,共享存储器可由VTIS組件来緩沖和保护。对于其中操作环境没有虛拟化的实施例,共享存储器可被緩冲,并且是经由例如主机嵌入
式控制器接口 (HECI)或者管理引擎的其它接口等硬件接口可访问的, 这是已知的。
现在参照图3,它示出可由WLM 218捕获的示例组件映像的数据
结构300的代表图示。图3示出可捕获的组件312的列表310。本文
所使用的组件312可以与图2的组件214相同或者基本上相似。对于
各组件312,列表310可包含其中包括例如组件名称、存储器中的基
址、完整性证明名称、导入列表322和导出列表332 (如导出哈希表)
的信息。还可包含与组件312有关的其它信息。导入列表322可以是
或者包括例如地址、引用或者指向组件312所使用的地址的指针的列
表。还可包含其它信息。导出列表332可以是或者包括例如地址、引
用或者指向组件312所使用的地址的指针的列表。还可包含其它信 自
使用KDS 216提供的信息,WLM 218和IMM 212可结合操作以便 通过将组件的记录的映像及对应数据与从先前存储的引用提取的证 明比较,来检验一个或多个操作组件214的完整性。在一些实施例中, 在KDS 216和WLM 218的登记和/或检验之后,抬、验可包括例如三个 阶段。在第一阶段,组件214的代码和数据段可与完整性证明进行比 较,并且可存储导入和导出指针地址上的状态数据。在第二阶段,这 个已存储状态数据可与完整性证明中的导入和导出指针进行比较。如 果组件通过了第二阶段,则组件的中断处理程序可与也通过了检验的 第二阶段的其它组件或模块的位置进行比较。如果检验的全部三个阶 段都成功,则可检验组件的完整性。如果不成功,则可将告警发送给 例如远程IT控制台。
现在参照图4,它示出根据本发明的实施例,用于对例如组件214 或者其它此类组件或模块的软件组件进行验证、校验或列入白名单的 方法的流程图。该方法的实施例可由例如图l的计算平台100或者能 够容纳运行环境104的其它适当的计算设备来使用或者实现。该方法的实施例还可使用图2的白名单架构以及图3的通过白名单服务所捕 获的组件的映像的数据结构或其它适当数据结构。
如操作402所示,如I函212的I固可开始运行。在一些实施例 中,如管理模块204的管理模块也可正在操作。对于其中管理模块 204是V鹿的情况,I固212可从管理模块204中进行操作并由管理 模块204进行保护。备选地,IMM212可作为客户OS (例如操作环境 206 )的组成部分进行操作,并且可向管理模块204的VTIS组件登记 以便在加载时进行保护。对于其中管理模块不是V醒的情况,IMM 216 可存在于芯片组的管理模块固件中,并且可执行属于如KDS 216的 KDS的所有功能。
在操作404, KDS和菌(如KDS 216和WLM 218 )可向I薩212 登记。在操作406,WLM 218可建立共享存储器通信信道以便与KDS 216 进行通信。共享存储器信道可取决于操作环境206是否虚拟化。对于 其中操作环境206被虚拟化的情况,共享存储器可以是如管理模块 204的V醒中的VTIS保护位置。对于其它实施例,共享存储器可以 是经由例如HECI接口可访问的,并且可被緩冲。也可使用被保护而 不由操作环境206中运行的组件使用的其它共享存储器信道。
KDS 216可使用共享存储器信道向WLM 218传递运行时信息,例 如与诸如模块、内核服务或代理之类的当前在操作环境206中运行的
一个或多个组件有关的虚拟基址(操作408)。还可包含其它运行时信 台
一旦WLM 218具有所有模块的列表,则在操作410,它可收集与 这些模块的一个或多个有关的运行时信息和/或记录这些模块的一个 或多个的映像如操作快照的映像,以便进行检验。记录的映像可包括 代码和数据段、外部符号表和重定位信息以及其它适当的数据。在一 些实施例中,数据可包括例如导入列表322的导入列表以及例如导出 哈希表332的导出表。还可包含其它信息。在一些实施例中,通过从 例如二进制映像存储设备(如二进制映像存储设备210)所存储的二进制文件中加载模块的盘上映像,WLM 218可确定应当记录哪些引用。 也可使用用于盘上映像的其它存储设备。例如,映像可存储在通过如 网络140的网络与计算平台100连接的其它存储设备或者外部硬盘驱 动器上。
在操作412, WLM 218可调用IMM 216来检验模块的代码和静态 数据段的完整性。在一些实施例中,I醒216可使用二进制映像存储 设备210中存储的模块的盘上映像来创建被检验模块的完整性证明。 备选地,完整性证明可存储在例如网络140上的另一个位置、如服务 器上。I固216可使用这个证明来与操作410中所记录的模块的映像 或所收集的运行时信息进行比较以便进行检验。作为操作412的一部 分,IMM 216还可检验模块的依赖模块(例如其它模块)的代码和数 据段。可存储导入地址表(IAT)和导出表(ET)中的条目的测量值以便 用于其它操作。
如果所有测试段成功地通过了这个初始完整性测试(操作414), 则该方法可继续进行第二检验操作。在操作416, I画216可检验模 块与其依赖模块之间的链接(如函数指针)是否有效。在一些实施例 中,I画216可将操作410中所收集的ET和IAT条目值与来自证明 和其它数据的导入查询表(ILT)进行比较。通过获得导入或导出条目 的地址,并枱、睑所计算的运行时地址(如基址加上相对虚拟地址 (RVA))落入械j企—睑模块的线性地址空间,可确定这些导出和导入值, 如偏移值。可比较ILT中的所有条目及其对应的ET条目。也可执行 确定IAT中的条目是否匹配从ILT所计算的运行时地址的校验。这个 检验操作可帮助确保该组件未被根工具包设置钩子程序。
如果操作416的检验成功(操作418),则可执行第三检验、即操 作420。在操作420中,中断处理程序条目(如指针)可与操作416
中所计算的代码的检验段(如检验模块或组件)的存储位置进行比较, 以便检验其有效性。I腦216可从中断描述符表(IDT)中读取条目, 中断描述符表(IDT)可以是作为操作环境206的组成部分的数据结构,并且可由被检验模块用于存储运行被检测模块期间可能发生中断
或异常时所需的指针。IDT条目可指向操作环境206中可在中断期间 被调用的一个或多个其它加载模块或其它运行组件。在一些实施例 中,在操作环境206中运行的部分或全部模块可由例如在操作420之 前操作416的操作进行检验。在这些情况下,指向已经通过操作416 所检验的模块的IDT指针可认为是有效指针。
如果检验了所有模块中断处理程序(操作422),则模块可被认为 已经通过了完整性检验测试(操作424)。但是,如果在操作414、 418 和422的一个或多个,模块没有分别通过操作412、 416和420的检 验测试,则模块完整性可能被损害(操作426),例如根工具包或其它 恶意软件可能正影响操作环境206中的正确操作。在这些情况下,可 发送告警,或者可采取其它适当的响应动作。
操作406-426可对于在操作环境206中进行操作的各组件或模块 重复进行,以便确保操作环境206的安全性是完整的。对于随后可能 加载的其它组件,可在加载或其它此类事件时对于新组件或所有组件 来运行这些操作。此外,还可响应例如系统重新引导、IDT的变化等 的其它触发事件而重复进行操作406-426。
可使用其它操作或者操作序列。此外,可使用其它数量或类型的 完整性或检验校验。
虽然针对有限数量的实施例描述了本发明,但是将理解,可对本 发明进行许多改变、修改和其它应用。本发明的实施例可包括计算机 可读介质,例如存储器、^磁盘驱动器或USB或者其它闪速存储器,其 中包含在由处理器或控制器运行时执行本文公开的方法的指令。本发 明的实施例还可包括用于执行本文的搡作的其它系统。这类系统可集 成所述的元件,或者可包括实现相同目标的备选组件。本领域的技术 人员会理解,所附权利要求旨在涵盖属于本发明的实质的所有这类修 改和变更。
权利要求
1. 一种方法,包括运行在第一操作环境中加载的第一软件组件;收集所述第一操作环境中与所述第一软件组件有关的运行时信息;将所收集的运行时信息传递给第二操作环境中的第二软件组件,所述第二操作环境与所述第一操作环境分离;将所述所收集的运行时信息与有关所述第一软件组件的已验证信息集进行比较;以及如果所述所收集的运行时信息不匹配所述已验证信息集,则发送告警。
2. 如权利要求1所述的方法,其中,所述所收集的信息包括以 下一个或多个代码、数据、外部符号表和重定位信息。
3. 如权利要求2所述的方法,包括存储关于所述第一软件组件的导入地址表和导出指针的状态数 据集;以及将所述状态数据与有关所述第 一软件组件的已验证信息集进行 比较。
4. 如权利要求3所述的方法,包括 从存储设备中读取已验证中断处理程序条目集; 检验所记录的中断处理程序条目集指向已验证的导入和导出偏移。
5. 如权利要求1所述的方法,包括检验所述第一软件组件的 一个或多个依赖软件组件。
6. 如权利要求1所述的方法,其中,所述第一操作环境被虚拟 化,并且所迷第二操作环境是虛拟机管理器。
7. 如权利要求1所述的方法,其中,所述第一操作环境是未虛拟化的操作系统。
8. 如权利要求1所述的方法,其中,传递所述所收集的运行时 信息包括经由所述第二操作环境中的共享存储器来传递所述所收集 的运行时信息。
9. 一种系统,包括在第 一操作环境中运行的第 一软件组件;在所述第 一操作环境中运行的第二软件组件,收集与所述第 一软 件组件有关的运行时信息,并传递所收集的运行时信息;以及在第二操作环境中运行的第三软件组件,所述第二操作环境与所述第一操作环境分离,所述第三组件接收所述所收集的运行时信息,并将所述所收集的运行时信息与有关所述第一软件组件的已验证信息集进行比较。
10. 如权利要求9所述的系统,其中,所述所收集的信息包括以 下一个或多个代码、数据、外部符号表和重定位信息。
11. 如权利要求10所述的系统,其中所述第二软件组件存储关于所述第一软件组件的导入地址表和 导出指针的状态数据集;以及所述第三软件组件将所述状态数据与有关所述第一软件组件的 已验证信息集进行比较。
12. 如权利要求11所述的系统,其中所述第三软件组件从存储设备中读取已验证中断处理程序条目 集;以及检验所记录的中断处理程序条目集指向已验证的导入和导出 偏移。
13. 如权利要求9所述的系统,其中所述第三软件组件检验所述第 一软件组件的一个或多个依赖软 件组件。
14. 如权利要求9所述的系统,其中,所述第一操作环境被虚拟
15.如权利要求9所述的系统,其中,所述第一软件组件经由所 述第二操作环境中的共享存储器来传递所述所收集的运行时信息。
全文摘要
公开了用于将软件组件列入白名单的方法和系统。在第一操作环境下,可收集与第一加载和运行软件组件有关的运行时信息。可将所收集的信息传递给在与第一操作环境分离的第二操作环境中进行操作的第二软件组件。所收集的运行时信息可与有关第一软件组件的已验证信息集进行比较。描述了其它实施例并要求其权利。
文档编号G06F21/00GK101436237SQ200810173889
公开日2009年5月20日 申请日期2008年11月13日 优先权日2007年11月13日
发明者G·纳加休香, H·M·克霍斯拉维, R·L·萨希塔, S·格罗韦 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1