虚拟机自省XenAccess和vmitools

     虚拟机自省是保证虚拟机安全的一个重要的概念和技术,英文virtual machine introspection(VMI),第一次提出虚拟机自省技术的应该是Tal Garfinkel在论文“A Virtual Machine Introspection Based Architecture for IntrusionDetection”。虚拟机自省的技术思想大概是这样子的:一台虚拟机被赋予hypervisor(虚拟机监控器)的权限,去监视其他的虚拟机;监视是在一个隔离的和安全的虚拟机中进行的,监视的过程会得到操作系统的内存,磁盘以及CPU的信息等。

   XenAccess项目的主要是建立了一个用于自省的函数库(当时是基于Xen hypervisor),它可以提供一个特权域,用来获取其他客户机上的操作系统的信息。现在XenAccess项目已经不再更新和维护,XenAccess已经用于LibVMI项目,可以在LibVMI项目中找到VMITools更新的自省工具。XenAccess的信息可以在网站http://code.google.com/p/xenaccess/上查看。

  下面我们看一下关于vmitoolsVirtual machine introspection tools)的介绍,原文可以在http://code.google.com/p/vmitools/中找到。LibVMI也是一个用于自省的函数库,它主要功能集中在虚拟机内存的读写上。另外,LibVMI也会提供一些函数用于获取CPU寄存器,中断或停止中断一台虚拟机,打印二进制数据等。LibVMI设计是可以运行在多种虚拟化平台上的,暂时只支持XenKVM。当虚拟机内存快照保存为文件的时候,LibVMI也支持读物理内存的快照。

主要的技术细节

  本质上说,内存的自省就是从一台虚拟机上获得另一台虚拟机上的内存视图的过程。表面上听起来很容易实现,比如Xen中还提供有可以帮助这种内存获取方式的函数(KVM中没有)。

  但是其实有一个很难的问题,就是两台虚拟机之间存在语义鸿沟。比如说,查找虚拟地址时,LibVMI必须进入用户虚拟机扫描页表;然而,为了扫描这些页表,LibVMI必须首先知道页目录的位置。

  以下是虚拟机自省工具使用的一个例子——使用自省去查看一个内核符号。

  1.VMI程序请求区查看一个内核符号;

 2.LibVMI找到相应内核符号的虚拟地址;

 3.匹配内核页目录找到正确的页表;

4.匹配页表找到正确的数据页;

5.数据也返回到LibVMI函数库;

6.LibVMI返回VMI请求的数据(可能需要匹配许多页)。


最近刚开始看虚拟机自省,也是刚刚看到XenAccess和vmitools,就把这些概念性的东西翻译出来,其实对很多地方还不理解,如有不对的地方请指出,互相交流,互相学习。

参考文献:

[1]XenAccess,http://code.google.com/p/xenaccess/

[2]VMITools,http://code.google.com/p/vmitools/

[3]Garfinkel, Tal, and Mendel Rosenblum. "A Virtual MachineIntrospection Based Architecture for Intrusion Detection." NDSS. Vol. 3.2003.n


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值