您的位置:首页 > 其它

VMI学习总结 - Virtualmachine introspection

2012-08-30 20:29 309 查看
VMI学习总结

因为上学的时候,做个这方向的东西,比较感兴趣,特别是当时没有完全做好,一直想进一步的学习。工作之后,时间少了,也得多学点东西。最近看了几篇论文,总结一下!

Virtualmachine introspection
,主要的功能是从虚拟机外面
VMM层观察虚拟机,检查虚拟机的状态,用于安全检测较多,当然也有很多其他功能。

VMI工具可以分为两类,一类需要在虚拟机里安装
agent,收集信息,类似于客户端与服务端的模式。另一种是虚拟机里什么都不用安全,可以称作无代理模式。

目前面临的一个主要的问题是,在VMM层无法直接获得虚拟机内部的语义,在VMM层观察,基本上相当于从CPU层观察,可以获得信息包括寄存器,内存,设备IO等等,但是无法直接获得如进程、文件、网络连接等信息。这个问题被称作
:semantic gap .

如何解决这个问题,是主要的研究方向,已有的方法是,读取虚拟机内存,然后根据 对虚拟机运行的操作系统的知识分析内存,获得相关信息。比如在
xp中,进程控制块总是放在一个固定的虚拟地址。在Linux平台。有很多方法可以获得task结构体的位置,根据结构体中字段的相关信息,可以进一步获得其他信息。这种方法依赖
于虚拟机操作系统内核,通常需要足够多的知识才能获得足够的信息。而且
windows是不开源的,关键的内核数据结构需要靠 逆向工程,而且开发商可能打一个补丁,数据结构就变化了。Linux内核的版本更多,可以随意更改,变化也很大。

为了解决VMI工具开发的难题,有人开发了一套自动开发VMI工具的东西,依赖于数据流跟踪和代码分析。可以重用虚拟机内部的代码。

根据这些缺点,有人开发了DKSM,直接内核结构操作,直接修改内核的代码和数据结构,相当于rootkit,欺骗位于VMM层的VMI。这种方法作者也说了,如果VMI检查内核代码的完整性,很容易就会被发现。作者说了
一种 return-oriented的方法,给出了论文链接。说这种方法可以不破坏内核,达到同样的目的。下一步准备看看。

后记:表达能力实在太差了,根本就没有完全表达出来,没有逻辑和层次感。酝酿了很久,在在KVM
平台实现一下,深入的学习!这种工具如果做 实时监控可能会效率很多,我在公司里面,同事做的项目基本上没发现有实时监控的都是有服务器端异步分析,

更多的,首先要有 一套API 来获得虚拟机状态信息,然后在此API的基础上,分析获得的信息,来达到目的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: