一种Windows平台下检测虚拟机监视器存在的方法技术

技术编号:5997413 阅读:203 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种Windows平台下检测虚拟机监视器存在的方法,目的是针对恶意代码利用VMM作为隐藏自身行为与提供恶意服务的平台的问题,提出一种通过资源差异来检测VMM存在的方法。技术方案是:先给页表Allocated?PTEs和页表项Special?PTE分配内存空间;对Allocated?PTEs写入更改映射前地址A;对Special?PTE写入更改映射后地址B;对Allocated?PTEs依次进行访问,使所有指向地址A的页表项都存入页表缓冲寄存器中;把Allocated?PTEs指针内容依次改为Special?PTE所指向的地址B;执行Windows系统中的特权指令RDMSR;设置计数器,遍历页表缓冲寄存器内的全部页表项,通过判定计数器的数值是否跟N一致来则判定当前系统内是否存在VMM。采用本发明专利技术可对VMM进行有效检测,提高系统安全性。

【技术实现步骤摘要】

本专利技术涉及检测虚拟机监视器(VMM)存在的方法,尤指通过页表缓冲寄存器差异 来检测虚拟机监视器存在的方法。
技术介绍
在硬件虚拟化技术中,虚拟机监视器(Virtual Machine Monitor,VMM)是能够为 计算机系统创建高效、隔离的副本的软件。由于VMM具有比客户操作系统(Guest OS)更高 的权限,越来越多的恶意代码利用VMM作为隐藏自身行为与提供恶意服务的平台。对于这 种恶意代码的检测技术主要以检测VMM (Virtual Machine Monitor)存在特征为主,只有 检测了 VMM存在,才能以此作为检测这种新型恶意代码存在的重要依据之一。传统的检测 VMM方法目前有以下几种(1)检测逻辑差异。逻辑指纹是指计算机物理硬件系统与虚拟化的硬件系统提供的 不同接口之间的语义差异。检测逻辑差异就是通过发现运行环境与x86体系结构的差异 来判断VMM的存在。但是,这种检测必须基于一个前提虚拟机软件为了简化实现,只模 拟了某一种能够支持虚拟机所有功能但是实现更为简便的芯片组,包括VMware Player和 Microsoft Virtual PC等。一旦虚拟机软件精确模拟出相应的芯片组,这种检测方法将失 效。(2) RedPill0 RedPill项目通过在用户模式运行一个单机语言指令SIDT,存储处 理机寄存器里中断描述符列表寄存器(IDTR)的内容。通过判断IDTR的地址范围来确定当 前操作系统是否运行在VMM之上。但是这种检测方法存在着局限性对于VMM直接运行在 硬件环境上的情况,VMM并不把IDTR重定位到一个新地址,从而也就无法区分当前操作系 统的运行环境。(3)检测时间差异。由于VMM需要通过某种特定的方式取得操作系统的控制权(通 常通过捕获特权指令),当VMM对特权指令产生下陷并模拟整个特权指令的执行过程最终把 正常执行结果返回操作系统,这一系列动作会对特权指令的执行产生一个延迟。这种方法 就是通过检测特权指令在真实系统和VMM中执行时间的差异来判断VMM的存在。对于这种 检测方法,部分VMM可以采取修改时间戳寄存器的方法避免检查,所以这种检测方法通用 性不强。以上三种方法虽然各具特色,从不同方面提出了基于不同环境对于VMM的检测方 法,但是三种方法受制于应用环境,通用性不强。对于检测VMM的方法,可以从VMM和客户操作系统之间共享的系统资源差异入手, 因为无论VMM怎么隐蔽自己,它总会占用或者消耗系统的资源,例如处理器、物理内存和磁 盘空间,可能还有网络带宽。基于这种资源共享构架,可以从这些资源差异中发现VMM的特 性,作为检测VMM存在的方法,但目前还没有通过页表缓冲寄存器这种资源差异来检测VMM 存在的技术方案的公开报导。
技术实现思路
本专利技术要解决的技术问题在于针对恶意代码利用VMM作为隐藏自身行为与提供 恶意服务的平台的问题,提出一种通过资源差异来检测VMM存在的方法,使用户在通用环 境下,实现对VMM存在的有效检测,从而以此作为检测以VMM为平台的恶意代码的重要依 据,提高系统安全性。为了解决上述技术问题,本专利技术的技术方案为以CPU中的页表缓冲寄存器为检 测目标,为两个页表指针分别分配内存地址——更改映射前地址和更改映射后地址。通过 修改页表项的指针地址,同时对页表缓冲寄存器的内容不进行更新。在检测程序产生一个 特权指令之后,对目标页表缓冲寄存器进行检测,如果页表缓冲寄存器在特权指令执行期 间被更改,则证明系统中存在VMM;反之,如果页表缓冲寄存器在特权指令运行前后没有变 化,则证明系统中不存在VMM。定义A 更改映射前地址,即页表项中存储的原始物理地址。B 更改映射后地址,即页表项中存储的更改以后的物理地址,明显区别于A。N (N为正整数)页表缓冲寄存器大小。PTE =Page Table Entry,页表项,指页表中的基本组成单位,其内容是当前页表项 对应的物理地址。Allocated PTEs 分配好内存空间且大小为N的一组页表项。Special PTE 分配好内存空间且大小为1的页表项。具体技术方案为第一步、根据页表缓冲寄存器大小N,通过Windows提供的函数Malloc ()为Allocated PTCs分配内存空间。同时,为另一个页表项Special PTE分配内存空间,这个内存空间用于 存放更改映射后地址B。第二步、对Allocated PTCs通过Windows提供的函数Memset ()写入更改映射前 地址A ;对分配单独的页表Special PTE写入更改映射后地址B,用于区别更改映射之后页 表缓冲寄存器的变化。第三步、对Allocated PTEs依次进行访问,将所有指向地址A的页表项都存入页 表缓冲寄存器中,也就是说页表缓冲寄存器内全部的N条记录都指向更改映射前地址A。第四步、在不改变页表缓冲寄存器内容的前提下,把Allocated PTCs指针内容依 次改为Special PTE所指向的地址B。通过改变虚拟地址到物理地址的映射,把Special PTE所指向的地址B存入Allocated PTEs的内存空间里,这个过程并不改变页表缓冲寄存 器的内容。此时,页表缓冲寄存器内的指针地址A与实际页表项Allocated PTCs的指针地 址B不一致。第五步、执行Windows系统中的特权指令RDMSR,如果存在VMM,该指令引起系统控 制权的下陷,即系统控制权转换给VMM。第六步、设置一个计数器Counter,初始值为N ;设置指针i,并使该指针指向页表 缓冲寄存器的起始地址。第七步、若i > =起始地址+N,转第十步;否则转第八步。第八步、对指针i所指向的页表项内的指针地址进行判定若当前页表项内的指针地址为更改映射前的地址A时,i加1,转第七步;否则转第九步。第九步、使计数器Counter数值减1,i加1,转第七步。第十步、对计数器Counter的数值进行判断如果计数器Counter的数值为N, 说明在特权指令RDMSR执行期间,页表缓冲寄存器没有被篡改,则判定当前系统内不存在 VMM ;如果计数器Counter的数值小于N,则说明在特权指令RDMSR执行期间,页表缓冲寄存 器被使用过,判定当前系统内存在VMM,且计数器Counter的数值越小,检测的准确性越高。与现有技术相比,采用本专利技术可达到以下技术效果1.本专利技术从操作系统与VMM共享资源页表缓冲寄存器入手,避免了传统基于时间检测 和基于逻辑差异检测的局限性。无论VMM体积再怎么小巧,功能再怎么单一,都必须和操作 系统争夺系统资源,因此本专利技术适用范围广,通用性较强。2.与现有针对内存或是通用寄存器的检测技术相比,本专利技术的检测目标为CPU内 部的页表缓冲寄存器,避免了 VMM对检测目标的恶意篡改,使得本专利技术可靠性和准确度有 了大幅度提高。附图说明图1为本专利技术的总流程图。 具体实施例方式图1是本专利技术的总流程图。步骤1)、给大小为N的页表Allocated PTCs和另一个页表项Special PTE分配内 存空间;步骤2) JfAllocated PTEs写入地址A,对Special PTE写入地址B ; 步骤3)、依次读取大小为N的Allocated PTEs内容,使本文档来自技高网
...

【技术保护点】
一种Windows平台下检测虚拟机监视器存在的方法,其特征在于包括以下步骤:第一步、根据页表缓冲寄存器大小N,通过Windows提供的函数Malloc()为页表项Allocated PTEs和 Special PTE分配内存空间,Allocated PTEs为分配好内存空间且大小为N的一组页表项;Special PTE为分配好内存空间且大小为1的页表项;页表项是页表中的基本组成单位,其内容是当前页表项对应的物理地址;第二步、对Allocated PTEs通过Windows提供的函数Memset()写入更改映射前地址A即页表项中存储的原始物理地址;对Special PTE写入更改映射后地址B,即页表项中存储的更改以后的物理地址;第三步、对Allocated PTEs依次进行访问,使所有指向地址A的页表项都存入页表缓冲寄存器中,也就是说页表缓冲寄存器内全部的N条记录都指向更改映射前地址A;第四步、在不改变页表缓冲寄存器内容的前提下,把Allocated PTEs指针内容依次改为Special PTE所指向的地址B;第五步、执行Windows系统中的特权指令RDMSR,如果存在VMM,该指令引起系统控制权的下陷,即系统控制权转换给VMM;第六步、设置一个计数器Counter,初始值为N;设置指针i,并使该指针指向页表缓冲寄存器的起始地址;第七步、若i >=起始地址+N,转第十步;否则转第八步;第八步、对指针i所指向的页表项内的指针地址进行判定:若当前页表项内的指针地址为更改映射前的地址A,i加1,转第七步;若当前页表项内的指针地址不为更改映射前的地址A,转第九步;第九步、使计数器Counter数值减1,i加1,并转第七步;第十步、判定计数器Counter的数值是否跟页表缓冲寄存器大小N一致,如果计数器Counter的数值为N,则判定当前系统内不存在VMM;如果计数器Counter的数值小于N,判定当前系统内存在VMM。...

【技术特征摘要】

【专利技术属性】
技术研发人员:宁剑刘波陈林肖枫涛王天佐陈新张静马晓龙彭磊
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1