kangkai 发表于 2013-9-19 19:01

菜鸟对一个QQ粘虫的简单分析

//Author: kangkai
//Date: 2013年9月19日
//Email: jxpenghu@sohu.com
文件: C:\Users\penghu\Desktop\木马\集体相片.exe
大小: 274944 字节
文件版本: 5, 6, 8, 19
修改时间: 2013年8月31日, 22:36:12
MD5: F721C43468789C1777C2C9C616FD8B6E
SHA1: 5474123B264B0E7C15CC72A40F702BE98C100D0A
CRC32: 0CA3B0BB
壳信息:UPX

该QQ粘虫的功能和动作都非常少,主要是通过检测QQ窗口,如果QQ窗口置顶了,就调用函数展示伪造的QQ登陆窗口,通过网页的形式将QQ账号和密码发送出去。除此之外没有任何的操作信息。


UPX0:0046187B push    ebx
UPX0:0046187C push    esi
UPX0:0046187D push    edi
UPX0:0046187E or      ebx, 0FFFFFFFFh
UPX0:00461881 call    ?AfxGetThread@@YGPAVCWinThread@@XZ ; AfxGetThread(void)
UPX0:00461886 mov   esi, eax
UPX0:00461888 call    ?AfxGetModuleState@@YGPAVAFX_MODULE_STATE@@XZ ; AfxGetModuleState(void)
UPX0:0046188D push   
UPX0:00461891 mov   edi,
UPX0:00461894 push   
UPX0:00461898 push   
UPX0:0046189C push   
UPX0:004618A0 call    sub_465BDF      ; ?AfxWinInit@@YGHPAUHINSTANCE__@@0PAGH@Z
UPX0:004618A0                         ; doubtful name
UPX0:004618A5 test    eax, eax      ; 获取当前线程,如果获取到则继续向下执行
UPX0:004618A7 jz      short loc_461


UPX0:00460605 push    esi
UPX0:00460606 call    ?AfxGetThreadState@@YGPAV_AFX_THREAD_STATE@@XZ ; AfxGetThreadState(void)
UPX0:0046060B mov   esi, eax
UPX0:0046060D call    GetCurrentThreadId
UPX0:00460613 push    eax             ; dwThreadId
UPX0:00460614 push    0               ; hmod
UPX0:00460616 push    offset ?_AfxMsgFilterHook@@YGJHIJ@Z ; lpfn
UPX0:0046061B push    0FFFFFFFFh      ; idHook
UPX0:0046061D call    SetWindowsHookExA ; 对获取到的ID安装消息钩子,进行监控
UPX0:00460623 push    offset ?CreateObject@?$CProcessLocal@V_AFX_CTL3D_STATE@@@@SGPAVCNoTrackObject@@XZ ;

CProcessLocal<_AFX_CTL3D_STATE>::CreateObject(void)
UPX0:00460628 mov   ecx, offset dword_49FB00
UPX0:0046062D mov   , eax
UPX0:00460630 call    sub_46540C
UPX0:00460635 mov   esi, eax
UPX0:00460637 cmp   dword ptr , 0
UPX0:0046063B jz      short loc_460

UPX0:0040B4B2
UPX0:0040B4B2 loc_40B4B2:             ; "*.*"
UPX0:0040B4B2 push    offset a__0
UPX0:0040B4B7 lea   ecx,
UPX0:0040B4BB call    sub_45BC31
UPX0:0040B4C0 mov   ecx,
UPX0:0040B4C4 lea   eax,
UPX0:0040B4C8 push    eax             ; lpFindFileData
UPX0:0040B4C9 push    ecx             ; lpFileName
UPX0:0040B4CA call    FindFirstFileA; 查找文件名,判断是否执行文件
UPX0:0040B4D0 cmp   eax, 0FFFFFFFFh
UPX0:0040B4D3 mov   , eax
UPX0:0040B4D7 jnz   short loc_40B4



UPX0:0045DE36               push    eax             ; lpWndClass
UPX0:0045DE37               push    dword ptr ; lpClassName
UPX0:0045DE3A               push    dword ptr ; hInstance
UPX0:0045DE3D               call    GetClassInfoA
UPX0:0045DE43               test    eax, eax
UPX0:0045DE45               jnz   short loc_45DE9A
UPX0:0045DE47               push    esi             ; lpWndClass
UPX0:0045DE48               call    RegisterClassA; 注册窗口类,为后面的调用伪造的QQ窗口做准备
UPX0:0045DE4E               test    ax, ax
UPX0:0045DE51               jnz   short loc_45DE57
UPX0:0045DE53               xor   eax, eax
UPX0:0045DE55               jmp   short loc_45DE9D

UPX0:0041C084
UPX0:0041C084 loc_41C084:             ; bRepaint
UPX0:0041C084 push    1
UPX0:0041C086 push    eax             ; nHeight
UPX0:0041C087 push    ebp             ; nWidth
UPX0:0041C088 push    0               ; Y
UPX0:0041C08A push    0               ; X
UPX0:0041C08C mov   ecx, esi
UPX0:0041C08E call    ?MoveWindow@CWnd@@QAEXHHHHH@Z ; CWnd::MoveWindow(int,int,int,in;隐藏指定的窗口

UPX0:0041C093
UPX0:0041C093 loc_41C093:             ; hWnd
UPX0:0041C093 push    ebx
UPX0:0041C094 call    IsWindow      ; 确定指定的窗口句柄已存在的窗口
UPX0:0041C09A pop   edi
UPX0:0041C09B pop   ebp
UPX0:0041C09C test    eax, eax
UPX0:0041C09E jz      short loc_41C0A

D84C
UPX0:0045D84C loc_45D84C:
UPX0:0045D84C push    edi
UPX0:0045D84D push    esi
UPX0:0045D84E call    ?AfxHookWindowCreate@@YGXPAVCWnd@@@Z ; AfxHookWindowCreate(CWnd *)
UPX0:0045D853 push       ; lpParam
UPX0:0045D856 push    ; hInstance
UPX0:0045D859 push       ; hMenu
UPX0:0045D85C push    ; hWndParent
UPX0:0045D85F push       ; nHeight
UPX0:0045D862 push        ; nWidth
UPX0:0045D865 push             ; Y
UPX0:0045D868 push             ; X
UPX0:0045D86B push       ; dwStyle
UPX0:0045D86E push    ; lpWindowName
UPX0:0045D871 push    ; lpClassName
UPX0:0045D874 push    ; dwExStyle
UPX0:0045D877 call    CreateWindowExA ; 创建一个QQ登陆窗口
UPX0:0045D87D mov   edi, eax
UPX0:0045D87F call    ?AfxUnhookWindowCreate@@YGHXZ ; AfxUnhookWindowCreate(void)
UPX0:0045D884 test    eax, eax
UPX0:0045D886 jnz   short loc_45D

UPX0:0044D22E
UPX0:0044D22E loc_44D22E:
UPX0:0044D22E push    esi
UPX0:0044D22F mov   esi, offset Addend
UPX0:0044D234 push    edi
UPX0:0044D235 push    esi             ; lpAddend
UPX0:0044D236 call    InterlockedIncrement ; 保证当前只能运行钓鱼窗口QQ窗口无法运行
UPX0:0044D23C cmp   ds:dword_4A0168, ebx
UPX0:0044D242 mov   edi, InterlockedDecrement
UPX0:0044D248 jz      short loc_44D2
UPX0:0044D24A push    esi             ; lpAddend
UPX0:0044D24B call    edi ; InterlockedDecrement
UPX0:0044D24D push    13h
UPX0:0044D24F call    __lock
UPX0:0044D254 pop   ecx
UPX0:0044D255 push    1



UPX0:0045DC52 push    dword ptr ; hWnd
UPX0:0045DC55 call    GetWindowTextLengthA ; 返回QQ密码的长度,并且存放在缓冲区
UPX0:0045DC5B lea   ecx,
UPX0:0045DC5E push    ecx             ; nMaxCount
UPX0:0045DC5F mov   ecx,
UPX0:0045DC63 push    eax
UPX0:0045DC64 call    ?GetBufferSetLength@CString@@QAEPADH@Z ; CString::GetBufferSetLength(int)
UPX0:0045DC69 push    eax             ; lpString
UPX0:0045DC6A push    dword ptr ; hWnd
UPX0:0045DC6D call    GetWindowTextA; 获取QQ密码
UPX0:0045DC73 mov   ecx,
UPX0:0045DC77 push    0FFFFFFFFh
UPX0:0045DC79 call    ?ReleaseBuffer@CString@@QAEXH@Z ; CString::ReleaseBuffer(int)
UPX0:0045DC7E jmp   short loc_45D




UPX0:0041C0A0 push    5               ; nCmdShow
UPX0:0041C0A2 push    ebx             ; hWnd
UPX0:0041C0A3 call    ShowWindow      ; 展示伪造的QQ登陆窗口


UPX0:0045D735 push    dword ptr ; hhk
UPX0:0045D738 call    UnhookWindowsHookEx ; 卸载消息钩子
UPX0:0045D73E and   dword ptr [esi+2Ch














9hack 发表于 2013-9-19 19:12

不错,分析的很好,支持下

kuwo911 发表于 2013-9-19 21:00

感谢分享   学习了    节日快乐

墨迹墨迹 发表于 2013-9-19 21:42

{:301_1001:}中秋快乐!

mozhiyi 发表于 2013-9-19 23:00

下载看看,效果如何

JoyChou 发表于 2013-9-21 15:52

分析得挺简单的。

kangkai 发表于 2013-9-21 20:15

JoyChou 发表于 2013-9-21 15:52 static/image/common/back.gif
分析得挺简单的。

向大牛学习

check081 发表于 2013-9-22 19:46

新帖啊。学习了

牛奶很好喝 发表于 2013-10-6 00:38

窗口伪造得很真实

紫凌飘雪 发表于 2013-10-12 21:41

又认识了一种盗号会出现的情况
页: [1]
查看完整版本: 菜鸟对一个QQ粘虫的简单分析