与虚拟机透明的安全
监控技术实验
- 0 - / 11
1.实验目的与意义
(1)掌握 Linux 操作系统的安装、使用开发环境搭建。
(2)学习 KVM或Xen Hypervisor的安装、使用,以及操作系统。
(3)学习使用 Libvmi 工具对虚拟机的行为(进程、 内存、网络、I/O、以及特定进程的行为)进行安全监控和分析。 2.基本原理和方法
通过在开源HypervisorKVM或Xen之上搭建虚拟机,并使用与之兼容的虚拟机内省工具 libvmi对虚拟机的行为进行监控。
LibVMI是美国Sandia国家实验室的Brian D.Payne等人开发的提供虚拟机内省(VMI)功能的程序库。使用LibVMI,可以方便地在宿主机上透明读写虚拟机的内存。libvmi的运行原理如图1所示。
图1 LibVMI的运行原理和系统结构
3.实验环境
物理服务器操作系统: Linux Hypervisor: KVM或Xen 虚拟机操作系统: Windows 7 VMI监控工具: libvmi
- 0 - / 11
4. 实验内容及步骤
(1)搭建虚拟机环境 I.安装并配置Linux操作系统,安装好Linux后安装openssh-server以便ssh登录进行实验。
II.安装Xen
之后重启,使用sudo xm list 查看信息:
完成Xen的安装。 III.配置网络
在/etc/network/interfaces中配置好物理端口信息后,加入以下文本以配置虚拟机网络使之桥接于物理端口:
之后重启网络:
IV.创建虚拟机
重启计算机,引导选择Xen进入系统。 首先为虚拟机生成30G镜像空间:
之后创建虚拟机的配置文件,配置为内存2G,一个CPU:
- 1 - / 11
使用xm create 命令启动虚拟机:
这样就成功运行了虚拟机。
然后使用VNC软件通过SSH隧道与虚拟机连接,并安装Windows 7系统。 最后关闭系统,将虚拟机配置文件中的启动配置修改为硬盘启动:
(2)安装并使用libvmi I.安装libvmi
由于libvmi官方示例代码将使用python版本,故此需要安装PyVMI:
II.配置libvmi
将以下虚拟机信息写入etc/libvmi.conf:
III.运行示例程序
在libvmi的./tools/pyvmi/examples文件夹下执行process-list.py示例程序:
- 2 - / 11
(3)对进程的某一行为进行监控
以下步骤说明如何配合使用内存监控软件(Cheat Engine)监视虚拟机内的记事本程序(notepad.exe)当前打开的文件名。
I.首先在虚拟机内用记事本打开一个文本文件*.txt;
II.用Cheat Engine打开notepad.exe进程,在内存浏览器中查找字符串[*.txt],记录下找到的多个内存地址;
III.再用打开的记事本程序打开另一个文件,重复上一步操作,比较两次找到的内存地址,选取两次都出现的一个,作为如下外部内省程序exp1.py的输入参数(外部内省程序通过调用vmi.read_str_va(vaddr)输出此va即虚拟机中程序的虚拟地址所指向的字符串);
IV.运行实验程序,可以看出程序输出值与虚拟机中程序一致,这说明libvmi可以对进程的行为进行监控。
- 3 - / 11
- 4 - / 11
(4)模拟加密监控
I.在虚拟机内运行exp2.c;
II.将exp2.c的输出结果作为exp2.py的参数,并运行该程序,虚拟机外部程序通过被监控程序的输出获得要监控数据的内存地址,后通过vmi.read_va()与vmi.read_str_va()取得相应的数据;
III.查看程序运行结果中包含虚拟机程序的数据信息,实现模拟加密监控。 IV.外部程序exp2.py
- 5 - / 11
- 6 - / 11
虚拟机内程序exp2.c:
- 7 - / 11
- 8 - / 11
5.实验总结 总结本次实验。
- 9 - / 11