一种基于VMWare WorkStation的Windows虚拟机进程枚举
方法技术领域
本发明涉及虚拟化终端安全领域,并且更具体地涉及一种基于VMWare
Workstation的Windows虚拟机进程枚举方法。
背景技术
进程列表是指计算机操作系统中当前正在运行的进程的集合。特别地,Windows来
宾虚拟机上正在运行的进程的集合称之为Windows来宾虚拟机进程列表或者Windows虚拟
机进程列表。虚拟化环境下,获取来宾虚拟机的运行状态(即进程列表)是管理来宾虚拟机
的一个重要部分。
目前,在虚拟化环境下,通常可以采用如下两种方法来枚举Windows虚拟机进程列
表:
方法一,登录目标Windows来宾虚拟机,然后采用传统的计算机操作方法来枚举进
程列表。传统的计算机操作方法包含如下三种:方法1是指通过“Windows任务管理器”进行
查看;方法2是指通过Windows命令进行查看;方法3是指通过Windows API编程来实现进程
枚举。这三种方法具有如下缺点:枚举操作依赖于Windows操作系统使用知识、枚举操作需
要登录目标Windows来宾虚拟机、枚举操作需要在目标Windows来宾虚拟机上执行,消耗来
宾虚拟机的资源。
方法二,在宿主机上使用VMWare WorkStation提供的VIX API编程来实现对
Windows来宾虚拟机进程列表的枚举。该方法具有如下缺点,即VIX API需要拥有目标
Windows来宾虚拟机的用户和口令才可以获取该目标虚拟机的进程信息。
发明内容
针对上述现有技术中存在的问题,本发明的目的在于提供一种基于VMWare
Workstation的Windows虚拟机进程枚举方法,其在宿主机上,通过VMWare Workstation提
供的vprobe技术来获取目标Windows来宾虚拟机的进程信息,并对所获取的进程信息进一
步加工整理,从而枚举目标Windows来宾虚拟机正在运行的进程列表。该方法不依赖于
Windows操作系统使用知识,不需要登录目标Windows来宾虚拟机、不消耗目标Windows来宾
虚拟机资源、以及不需要目标Windows来宾虚拟机的用户和口令。
为了实现上述目的,本发明采用的技术方案如下:
一种基于VMWare Workstation的Windows虚拟机进程枚举方法,包括如下步骤:
步骤一:选定宿主机,并在宿主机上安装VMWare Workstation;
步骤二:利用虚拟化技术,读取目标来宾虚拟机的基本信息,并判断目标来宾虚拟
机的操作系统类型,如果操作系统类型不是Windows系统,则结束,如果操作系统类型是
Windows系统,则前进至步骤三;
步骤三:根据目标来宾虚拟机的进程链表内存地址的偏移量来编写vprobe脚本;
步骤四:在宿主机上执行vprobe脚本,并将vprobe脚本的执行结果保存在宿主机
上的临时文件中;
步骤五:从临时文件中读取执行结果并分析整理出目标来宾虚拟机的最终进程列
表。
进一步,步骤一还包括:在VMWare Workstation上安装Windows虚拟机用作目标来
宾虚拟机。
进一步,步骤一还包括:根据给定的虚拟机标识符,找到目标来宾虚拟机。
进一步,步骤三还包括:利用虚拟化技术,从目标来宾虚拟机的ntoskrnl.exe文件
中读取内核标记,从而进程链表内存地址的偏移量。
进一步,Windows虚拟机是一个或多个。
进一步,宿主机的操作系统包括Windows系统、Linux系统、Unix系统。
进一步,虚拟机标识符包括虚拟机名、虚拟机ID。
进一步,目标来宾虚拟机的基本信息包含操作系统类型、寄存器信息、内存信息。
进一步,虚拟化技术包含vprobe技术。
本发明的优点及有益效果:
(1)不执行“Windows任务管理器”、Windows命令或者Windows API,枚举进程列表
不依赖于Windows操作系统的使用知识。
(2)在宿主机上直接获取目标Windows来宾虚拟机的进程信息,不需要登录目标来
宾虚拟机而且不消耗目标Windows来宾虚拟机资源。
(3)利用虚拟化技术vprobe来枚举进程信息,不需要目标Windows来宾虚拟机的用
户和口令。
附图说明
图1为本发明的Windows虚拟机进程枚举方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图,对本发明进
行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定
本发明。
根据本发明的一个实施例,在宿主机上,通过虚拟化平台VMWare Workstation提
供的vprobe技术来枚举目标Windows来宾虚拟机的进程列表,从而实现对Windows来宾虚拟
机进行管理。换言之,vprobe技术提供了一种在宿主机上读取目标Windows来宾虚拟机的寄
存器和内存信息的方法,通过对目标来宾虚拟机的寄存器和内存信息进行解读,遍历
EPROCESS结构体来枚举Windows来宾虚拟机的进程,从而实现对Window来宾虚拟机进行管
理。
图1示出了根据本发明的一种基于VMWare Workstation的Windows虚拟机进程枚
举方法。在步骤S100中,选定宿主机,并在宿主机上安装VMWare Workstation,宿主机的操
作系统可以是Windows系统、Linux系统或者Unix系统,并且VMWare Workstation可以是宿
主机支持的各种版本。在步骤S200中,在VMWare Workstation上安装Windows虚拟机用作目
标来宾虚拟机,并将Windows虚拟机开机。VMWare Workstation上可以安装一个或多个
Windows虚拟机。在步骤S300中,根据给定的虚拟机标识符——例如虚拟机名、虚拟机ID
等——寻找目标来宾虚拟机。在步骤S400中,利用虚拟化技术——例如vprobe技术——读
取找到的目标来宾虚拟机的基本信息,包括虚拟机的操作系统类型、寄存器信息、内存信息
等。在步骤S500中,判断目标来宾虚拟机的操作系统类型,如果目标来宾虚拟机的操作系统
不是Windows操作系统,则结束;如果目标来宾虚拟机的操作系统是Windows操作系统,则前
进到步骤S600。在步骤S600中,利用虚拟化技术从目标Windows来宾虚拟机的ntoskrnl.exe
文件中读取目标来宾虚拟机的内核标记,并计算目标来宾虚拟机的进程链表内存地址的偏
移量。在步骤S700中,根据步骤S600中计算而得的偏移量编写vprobe脚本文件。在步骤S800
中,在宿主机上执行步骤S700中编写的vprobe脚本文件,vprobe脚本自动将其执行结果保
存在宿主机上的临时文件中。在步骤S900中,从步骤S800的临时文件中读取vprobe执行结
果,并对vprobe执行结果分析整理,从而得到目标Windows来宾虚拟机的最终进程列表,进
而实现对目标Windows来宾虚拟机的进程进行枚举。
以上实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此
而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不
脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因
此,本发明专利的保护范围应以所附权利要求为准。