能力值:
( LV9,RANK:3410 )
|
-
-
2 楼
浮出一位前辈 :D
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
详细的说
|
能力值:
(RANK:1060 )
|
-
-
4 楼
; *****************************************************
; * 检测 VMMVARE *
; *****************************************************
MAGIC equ 564D5868h ;VMXh
CMD_PARAM equ 0
CMD_NUM equ 0Ah
PORT_NUM equ 5658h ;VX
CHK_VMMVARE:
pushad
assume esi:ptr EXCEPTION_RECORD,edi:ptr CONTEXT
xor esi, esi
lea eax,[esp-8]
xchg eax, dword ptr fs:[esi]
call @F
CHK_VMMVARE_SEH PROC C uses ebx esi edi pExcept,pFrame,pContext,pDispatch
xor eax,eax
mov esi,pExcept
mov edi,pContext
test [esi].ExceptionFlags,7
jne _continue_search
cmp [esi].ExceptionCode,STATUS_PRIVILEGED_INSTRUCTION
jne _continue_search
inc [edi].regEip ;eip++
jmp _pure_exit
_continue_search:
inc eax
_pure_exit:
ret
CHK_VMMVARE_SEH ENDP
@@:
push eax
MOV EAX,MAGIC
MOV EBX,CMD_PARAM
MOV ECX,CMD_NUM
MOV DX,PORT_NUM
IN EAX,DX
XOR EAX,EAX
;unistall SEH frame
pop fs:[eax]
add esp,4
CMP EBX,MAGIC
JNZ @F
INC EAX
@@:
test eax, eax
.if !zero?
jmp @import_bute_exit; exit
.endif
assume esi:nothing,edi:nothing
popad
CHK_VMMVARE_END:
ret
|
能力值:
(RANK:1060 )
|
-
-
5 楼
看来昨天打雷把ljttt劈出来了;)
|
能力值:
(RANK:10 )
|
-
-
6 楼
52:D
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
good
|
能力值:
( LV9,RANK:170 )
|
-
-
8 楼
学习~
|
能力值:
( LV8,RANK:130 )
|
-
-
9 楼
pop %ecx
pop %ebx
pop %edi
leave
ret
vm.c
vm.c 为主程序。命令行参数为后门功能号
#include <stdio.h>
#include <signal.h>
#include <stdint.h>
extern uint32_t vmcall(uint32_t buf[4],int func,uint32_t arg);
void segfault(int seg)
{
fprintf(stderr,"vmcall failed\n");
_exit(1);
}
int main(int argc,char **argv)
{
int i;
uint32_t buf[4];
int cmd;
if (argc == 1)
{
puts("arg.......");
return 1;
}
cmd = atoi(argv[1]);
signal(SIGSEGV,segfault);
memset(buf,0,sizeof(buf));
vmcall(buf,cmd,0);
printf("%x: %x-%x-%x-%x\n",cmd,buf[0],buf[1],buf[2],buf[3]);
return 0;
}
举例
编译: gcc ?g ?o vm vm.c vmcall.s
1. 1 号调用取 CPU 速率
$ ./vm 1
1: 69f-0-1-0
69f 十进制 1695,CPU 速率为 1695Mhz
2. 10 号调用取 vmware 版本,也用来判断是否运行在 vmware 里。
$ ./vm 10
a: 6-564d5868-4-0
6 是 vmware 版本号。注意这和 about 里看到的不同。4 表示是 vmware workstation,其它可能取值有:
2 ESX Server
1 Express
3 GSX Server
3. 15 号调用取宿主机屏幕分辨率
$ ./vm 15
f: 4000300-0-f-0
分辨率是 0x400 * 0x300,即 1024 * 768
4. 28 号调用 vmware 的实现有问题,导致我的 vmware workstation 4.0.0.4460 立刻崩溃。原因Vmware 试图去读 0x14 的内存地址,不过因为没有用户输入,无法利用。
附录:分析工具和环境
Vmware 4.0.0.4460 和 vmware 4.0.5.6030。宿主机 Windows 2003 Standard。
GuestOS RedHat 8 (Kernel 2.6.2, gcc 3.2)。
IDApro 用于静态分析,OllyDBG 用于动态调试。
静态分析 vmware-checkvm 程序发现这个后门。
静态分析 + 动态调试得到各功能信息。
|
能力值:
(RANK:10 )
|
-
-
10 楼
good
|
能力值:
(RANK:350 )
|
-
-
11 楼
最初由 heXer 发布 没贴完哦,后面还有,补上
呵~这篇曾进入论坛精华6,后面一半没有。下次放进精华7里去。
|
能力值:
( LV9,RANK:170 )
|
-
-
12 楼
Good!
|
能力值:
( LV9,RANK:170 )
|
-
-
13 楼
精华
有没有编好的利用该后门的东西,学习学习
|
能力值:
( LV4,RANK:50 )
|
-
-
14 楼
学习!
|
|
|