[发明专利]一种Windows平台下检测虚拟机监视器存在的方法有效
申请号: | 201110003479.0 | 申请日: | 2011-01-10 |
公开(公告)号: | CN102063594A | 公开(公告)日: | 2011-05-18 |
发明(设计)人: | 宁剑;刘波;陈林;肖枫涛;王天佐;陈新;张静;马晓龙;彭磊 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F21/00 | 分类号: | G06F21/00;G06F9/455 |
代理公司: | 国防科技大学专利服务中心 43202 | 代理人: | 郭敏 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 windows 平台 检测 虚拟机 监视器 存在 方法 | ||
技术领域
本发明涉及检测虚拟机监视器(VMM)存在的方法,尤指通过页表缓冲寄存器差异来检测虚拟机监视器存在的方法。
背景技术
在硬件虚拟化技术中,虚拟机监视器(Virtual Machine Monitor,VMM)是能够为计算机系统创建高效、隔离的副本的软件。由于VMM具有比客户操作系统(Guest OS)更高的权限,越来越多的恶意代码利用VMM作为隐藏自身行为与提供恶意服务的平台。对于这种恶意代码的检测技术主要以检测VMM(Virtual Machine Monitor)存在特征为主,只有检测了VMM存在,才能以此作为检测这种新型恶意代码存在的重要依据之一。传统的检测VMM方法目前有以下几种:
(1)检测逻辑差异。逻辑指纹是指计算机物理硬件系统与虚拟化的硬件系统提供的不同接口之间的语义差异。检测逻辑差异就是通过发现运行环境与x86体系结构的差异来判断VMM的存在。但是,这种检测必须基于一个前提:虚拟机软件为了简化实现,只模拟了某一种能够支持虚拟机所有功能但是实现更为简便的芯片组,包括VMware Player和Microsoft Virtual PC等。一旦虚拟机软件精确模拟出相应的芯片组,这种检测方法将失效。
(2)RedPill。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 PTEs分配内存空间。同时,为另一个页表项Special PTE分配内存空间,这个内存空间用于存放更改映射后地址B。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110003479.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:向量化数据传输的方法和装置
- 下一篇:一种耐磨耐热麻口铸铁材料及制备方法