• 标 题:[转载] - Vmware 的后门
  • 作 者:ljtt
  • 时 间:004-07-03,21:11
  • 链 接:http://bbs.pediy.com

Vmware 的后门 (1)   - [技术] 


Vmware 的后门

后门简介

       Vmware 后门是 vmware 和 vmware tools 通信的一个接口。例如,vmware-checkvm 程序就是利用这个后门检测自己是否运行在 vmware 里。

 

       这个后门开在 IO 端口 0x5658。利用这个后门时,必需:

l        EAX = 0x564D5868 ( “VMXh” )

l        EBX 为参数,一般不用。

l        ECX 低 16 位为功能号。其实是一个函数数组的索引。Vmware 调用对应的函数处理后门请求。 这个函数数组共有 36 个元素,但某些没有定义。ECX 的高 16 位为功能参数。

l        EDX = 0x5658 ( “VX” ),为 IO 端口号。

 

通过读端口 (in) 命令调用后门。

 

后门详细描述

       下表列出后门的各个功能。

0
 未定义
 
1
 getMhz 得到 CPU 速率
 
2
 APM 函数族
 
3
 getDiskGeo
 
4
 getPtrLocation
 
5
 setPtrLocation
 
6
 得到宿主机剪贴板数据长度
 
7
 读宿主机剪贴板数据
 
8
 设置宿主机剪贴板数据长度
 
9
 向宿主机剪贴板写数据
 
10
 得到 vmware 版本
 
11
 取设备信息
 
12
 连接或断开设备
 
13
 取 GUI 配置信息
 
14
 设置 GUI 配置信息
 
15
 取宿主机屏幕分辨率
 
16
 未定义
 
17
 未定义
 
18
 osNotFound, vmware 提示插入引导盘 
 
19
 GetBiosUUID
 
20
 取虚拟机内存大小
 
21
 未定义
 
22
 OS2 系统用到的一个函数
 
23
 getTime,取宿主机时间
 
24
 stopCatchup
 
25
 未定义
 
26
 未定义
 
27
 未定义
 
28
 initScsiIoprom
 
29
 未定义
 
30
 Message,通道函数族
 
31
 rsvd0
 
32
 rsvd1
 
33
 rsvd2
 
34
 ACPID 函数
 
35
 未定义
 

 

应用

vmcall.s
       vmcall.s 为 vm.c 提供 vmcall(uint32_t out[4],int cmd,uint32_t param) 函数,实现调用后门功能

 

        .text

        .align 2

 

.globl vmcall

        .type   vmcall,@function

vmcall:

        pushl   %ebp

        movl    %esp, %ebp

 

        movl 0x8(%ebp),%eax

        push %edi

        push %ebx

        push %ecx

        push %edx

        mov %eax,%edi

        mov $0x564d5868,%edx

        mov %edx,%eax

        mov 0xc(%ebp),%edx

        mov 0x10(%ebp),%ebx

        mov %edx,%ecx

        mov $0x5658,%edx

        in (%dx),%eax

        mov %eax,0x0(%edi)

        mov %ebx,0x4(%edi)

        mov %ecx,0x8(%edi)

        pop %edx

 

 
[原文出处] - http://www.blogbus.com/blogbus/blog/index.php?blogid=4982&pg=8&cat=