田老师说和乌云老师合作的项目,当然要看乌云老师的论文啦。
文章摘要:通过检测虚拟机内部的隐藏文件,检测工具可以及时判断虚拟机是否受到攻击.传统的文件检测工具驻留在被监视虚拟机中,容易遭到恶意软件的攻击.基于虚拟机自省原理,设计并实现一种模块化的虚拟机文件检测方法 FDM.FDM借助操作系统内核知识,解析虚拟机所依存的物理硬件,构建虚拟机文件语义视图,并通过与内部文件列表比较来发现隐藏文件.FDM将硬件状态解析和操作系统语义信息获取以不同模块实现,不仅具备虚拟机自省技术的抗干扰性,还具备模块化架构的可移植性与高效性.实验结果表明,FDM能够准确快速地检测出虚拟机内部的隐藏文件。
虚拟机自省
参考链接:
http://www.chinacloud.cn/upload/2016-02/16020410023813.pdf
http://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CJFQ&dbname=CJFDLAST2016&filename=RJXB201606004&v=MTEyOTQ5RllJUjhlWDFMdXhZUzdEaDFUM3FUcldNMUZyQ1VSTEtmWmVSckZ5RG5VTDdOTnlmVGJMRzRIOWZNcVk=
http://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CMFD&dbname=CMFD201501&filename=1014064067.nh&v=MzA2MTJxSkViUElSOGVYMUx1eFlTN0RoMVQzcVRyV00xRnJDVVJMS2ZaZVJyRnlEblVMek9WRjI2R3JPK0d0SEs=
虚拟机自省架构
libvmi库
官网:http://libvmi.com/
参考:https://github.com/libvmi/libvmi
此次项目主要依赖于libvmi库,libvmi库就是一个c库,它提供了对正在运行中的底层虚拟机的运行细节进行监视的功能,监视的功能是由观察内存细节,陷入硬件事件和读取CPU寄存器来完成的。这种方式被称作虚拟机自省(virtual machine introspection)。
主要要搞清楚他的内存自省功能,内存自省能允许用户从dom0监控(也就是读取内存数据)以及控制(也就是改写内存数据)操作系统。
上图是通过libvmi获取内核符号的流程,主要有以下过程组成:
- 应用程序请求查看内核符号。
- libvmi通过系统的System.map获取内核符号的虚拟地址。
- 找到虚拟地址所对应的内核页目录,并获取对应的页表。
- 通过页表找到正确的数据页。
- 数据页被返回给libvmi。
- libvmi将数据返回给vmi应用程序。
安装:
例子
获取虚拟机所有进程,关键是先根据system_map拿到current_task(当前运行进程),就可以顺藤摸瓜,连根拔起。
1 |
|
```