吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7437|回复: 9
收起左侧

[PC样本分析] 菜鸟对一个QQ粘虫的简单分析

[复制链接]
kangkai 发表于 2013-9-19 19:01
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子!
病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途!
禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
//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账号和密码发送出去。除此之外没有任何的操作信息。


[AppleScript] 纯文本查看 复制代码
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    [esp+0Ch+arg_C]
UPX0:00461891 mov     edi, [eax+4]
UPX0:00461894 push    [esp+10h+arg_8]
UPX0:00461898 push    [esp+14h+arg_4]
UPX0:0046189C push    [esp+18h+arg_0]
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     [esi+30h], eax
UPX0:00460630 call    sub_46540C
UPX0:00460635 mov     esi, eax
UPX0:00460637 cmp     dword ptr [esi+14h], 0
UPX0:0046063B jz      short loc_460

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



UPX0:0045DE36                 push    eax             ; lpWndClass
UPX0:0045DE37                 push    dword ptr [esi+24h] ; lpClassName
UPX0:0045DE3A                 push    dword ptr [esi+10h] ; 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    [ebp+lpParam]   ; lpParam
UPX0:0045D856 push    [ebp+hInstance] ; hInstance
UPX0:0045D859 push    [ebp+hMenu]     ; hMenu
UPX0:0045D85C push    [ebp+hWndParent] ; hWndParent
UPX0:0045D85F push    [ebp+nHeight]   ; nHeight
UPX0:0045D862 push    [ebp+nWidth]    ; nWidth
UPX0:0045D865 push    [ebp+Y]         ; Y
UPX0:0045D868 push    [ebp+X]         ; X
UPX0:0045D86B push    [ebp+dwStyle]   ; dwStyle
UPX0:0045D86E push    [ebp+lpWindowName] ; lpWindowName
UPX0:0045D871 push    [ebp+lpClassName] ; lpClassName
UPX0:0045D874 push    [ebp+dwExStyle] ; 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 [esi+1Ch] ; hWnd
UPX0:0045DC55 call    GetWindowTextLengthA ; 返回QQ密码的长度,并且存放在缓冲区
UPX0:0045DC5B lea     ecx, [eax+1]
UPX0:0045DC5E push    ecx             ; nMaxCount
UPX0:0045DC5F mov     ecx, [esp+8+arg_0]
UPX0:0045DC63 push    eax
UPX0:0045DC64 call    ?GetBufferSetLength@CString@@QAEPADH@Z ; CString::GetBufferSetLength(int)
UPX0:0045DC69 push    eax             ; lpString
UPX0:0045DC6A push    dword ptr [esi+1Ch] ; hWnd
UPX0:0045DC6D call    GetWindowTextA  ; 获取QQ密码
UPX0:0045DC73 mov     ecx, [esp+4+arg_0]
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登陆窗口[attach]209831[/attach][attach]209831[/attach]


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



QQnianchong_副本.png


QQ截图20130919170409_副本.png







集体相片.zip

250.32 KB, 下载次数: 61, 下载积分: 吾爱币 -1 CB

密码:52pojie

免费评分

参与人数 1热心值 +1 收起 理由
willJ + 1 欢迎分析讨论交流,[吾爱破解论坛]有你更精.

查看全部评分

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

9hack 发表于 2013-9-19 19:12
不错,分析的很好,支持下
kuwo911 发表于 2013-9-19 21:00
墨迹墨迹 发表于 2013-9-19 21:42
mozhiyi 发表于 2013-9-19 23:00
下载看看,效果如何
JoyChou 发表于 2013-9-21 15:52
分析得挺简单的。
 楼主| kangkai 发表于 2013-9-21 20:15
JoyChou 发表于 2013-9-21 15:52
分析得挺简单的。

向大牛学习
check081 发表于 2013-9-22 19:46
新帖啊。学习了
牛奶很好喝 发表于 2013-10-6 00:38
窗口伪造得很真实
紫凌飘雪 发表于 2013-10-12 21:41
又认识了一种盗号会出现的情况
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 15:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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