【文章标题】: 一款QQ盗号木马的分析
【文章作者】: CCDebuger
【使用工具】: OD,IDA,PEiD
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
今天逛汉化新世纪,看到一个标题叫“超级攻击软件udp攻击器”的帖子(http://bbs.hanzify.org/index.php?showtopic=50996),看跟帖有人说是木马,没事就拿来玩了一下。这个帖子的附件是个 udp.rar 文件,下载后先用 PEiD 扫描了一下解压后的 udp.exe 文件,显示是 Borland Delphi 5.0 KOL [Overlay]。呵呵,有 Overlay,那就先来看看附加数据是啥。用16进制查看一下附加数据,典型是个 EXE 文件,把附加数据保存为 test.exe,用 PEiD 扫一下,显示是 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay]。本来想用 UPX 自身来脱的,可 UPX 脱不了,那就用OD手脱吧。这东西脱壳简单,我就不讲了。脱完看了一下,是个易语言的程序,用16进制工具看了看,应该就是发帖人所说的那个udp攻击器了,不是真正的木马,忽略。再重新用16进制工具打开原来的那个 udp.exe,观察一下附加数据,发现附加数据的末尾有 UDP.exe、muma.exe这两个字串。呵呵,这个放木马的倒也挺有趣啊,直接就把木马命名为 muma.exe。从这看来这是捆绑过的,那我们就用 OD 来让它把那个 muma.exe 释放出来吧。先用 IDA 来分析一下主程序,发现有两个地方调用 ShellExecuteA,这是用来释放捆绑文件后运行的。OD 载入程序,在
调用这两个函数的上面一点设断点,开始来看它释放:
0040461D |. 50 PUSH EAX ; |FileName = "e:\Temp\\UDP.exe"
0040461E |. 68 30474000 PUSH <udp.Operation> ; |Operation = "Open"
00404623 |. 6A 00 PUSH 0 ; |hWnd = NULL
00404625 |. E8 2EF6FFFF CALL <udp.ShellExecuteA> ; \ShellExecuteA
这是第一个断下来的地方,是运行那个真正的 UDP.exe 的。这时候文件已经释放到系统临时目录了,我设置在 E:\Temp 下。我还不想让这个 UDP.exe 运行,直接把 00404625 地址处的那条指令 CALL <udp.ShellExecuteA> NOP掉,现在 F9 继续:
004046D9 |. 50 PUSH EAX ; |FileName = "e:\Temp\\muma.exe"
004046DA |. 68 30474000 PUSH <udp.Operation> ; |Operation = "Open"
004046DF |. 6A 00 PUSH 0 ; |hWnd = NULL
004046E1 |. E8 72F5FFFF CALL <udp.ShellExecuteA> ; \ShellExecuteA
第二个断下来的地方是 004046D9,呵呵,muma.exe 出来了。这时不要动OD,直接到系统的临时目录下把 muma.exe 剪切到其他文件夹,关掉 OD,清空系统临时目录下的文件,我们来玩这个 muma.exe 吧。
先用 PEiD 来检测一下这个 muma.exe,分析显示 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo [Overlay],直接用 UPX 的 -d 命令脱之。脱完检测是 Borland Delphi 6.0 - 7.0 [Overlay],先用16进制工具看一下附加数据,一堆ASCII字符。怀疑有可能是配置文件。再用资源工具看了一下,里面有个名称为 DATEINFO 的是个 PE 文件,先导出来保存为 DATEINFO.dll 文件。先上 IDA 看一下 muma.exe 和 DATEINFO.dll,muma.exe 主要是用来释放那个 DATEINFO.dll 的,这个 DATEINFO.dll 再来 hook 进程。通过 IDA 的分析知道这个木马是用来盗QQ的。为了得到木马的配置文件,我本来准备上虚拟机用 OD 动态调试那个 DLL。正好 nbw 在,给他看了一下,他说他知道这个木马,配置就是 EXE 里的附加数据,这下简单了,我就直接对这个 muma.exe 下手,虚拟机也不要了,呵呵。用 OD 载入 muma.exe,开头感觉有点像灰鸽子。因为我杀毒软件也关了,裸奔,小心一点,因为木马肯定要释放文件,所以我先在 CreateFileA 上全部设上断点,以绝后患,然后结合 IDA 的分析慢慢跟吧。载入后一路F8到这:
0040576D . 50 PUSH EAX ; /Arg3
0040576E . 6A 00 PUSH 0 ; |Arg2 = 00000000
00405770 . 6A 00 PUSH 0 ; |Arg1 = 00000000
00405772 . E8 6DE9FFFF CALL muma.004040E4 ; \回车看看这个CALL的代码
按回车键,看看00405772这个CALL的代码,原来是调用 CreateMutexA,直接NOP掉00405772处的这句(用回车键进入CALL看代码后可以按 ALT+C 返回到当前的 EIP)。现在继续:
00405777 . 8BF0 MOV ESI,EAX
00405779 . 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14]
0040577C . E8 FBEDFFFF CALL muma.0040457C ; 跟进去看看
跟进0040577C处的那个 CALL,原来是获得系统目录,再获取 C 盘的卷标号,用来在系统目录的\Program Files\Common Files\Microsoft Shared\MSINFO\下生成以系统卷标号命名的dll文件的。懒得看了,反正在 CreateFileA 上设了断点,又经过 IDA 的分析,直接F9,断在 CreateFileA 上:
00404DED . 50 PUSH EAX ; |FileName
00404DEE . E8 E1F2FFFF CALL <JMP.&KERNEL32.CreateFileA> ; \断在这,读muma.exe这个文件
00404DF3 . 8BF0 MOV ESI,EAX
00404DF5 . 83FE FF CMP ESI,-1
一路 F8 到这:
00404E98 . 50 PUSH EAX ; |Buffer
00404E99 . 56 PUSH ESI ; |hFile
00404E9A . E8 D5F2FFFF CALL <JMP.&KERNEL32.ReadFile> ; \ReadFile
00404E9F . 8D55 E4 LEA EDX,DWORD PTR SS:[EBP-1C]
00404EA2 . 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10] ; 那段附加数据中的ASCII字串出现了
00404EA5 . E8 AAFCFFFF CALL muma.00404B54 ; 跟进去好好看看
00404B54 /$ 55 PUSH EBP
00404B55 |. 8BEC MOV EBP,ESP
00404B57 |. 83C4 D8 ADD ESP,-28
00404B5A |. 53 PUSH EBX
00404B5B |. 56 PUSH ESI
00404B5C |. 57 PUSH EDI
00404B5D |. 33C9 XOR ECX,ECX
00404B5F |. 894D D8 MOV DWORD PTR SS:[EBP-28],ECX
00404B62 |. 894D DC MOV DWORD PTR SS:[EBP-24],ECX
00404B65 |. 894D E0 MOV DWORD PTR SS:[EBP-20],ECX
00404B68 |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
00404B6B |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
00404B6E |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00404B71 |. E8 C2EDFFFF CALL muma.00403938
00404B76 |. 33C0 XOR EAX,EAX
00404B78 |. 55 PUSH EBP
00404B79 |. 68 B84C4000 PUSH muma.00404CB8
00404B7E |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00404B81 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00404B84 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
00404B87 |. E8 74EAFFFF CALL muma.00403600
00404B8C |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00404B8F |. E8 6CEAFFFF CALL muma.00403600
00404B94 |. C645 EA FC MOV BYTE PTR SS:[EBP-16],0FC
00404B98 |. C645 EC F0 MOV BYTE PTR SS:[EBP-14],0F0
00404B9C |. C645 EE C0 MOV BYTE PTR SS:[EBP-12],0C0
00404BA0 |. 33C0 XOR EAX,EAX
00404BA2 |. 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
00404BA5 |. C645 E6 00 MOV BYTE PTR SS:[EBP-1A],0
00404BA9 |. BB 02000000 MOV EBX,2
00404BAE |. 33FF XOR EDI,EDI
00404BB0 |. 33F6 XOR ESI,ESI
00404BB2 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 第二次出现附加数据中的ASCII字串
00404BB5 |. E8 8EEBFFFF CALL muma.00403748
00404BBA |. 8945 F4 MOV DWORD PTR SS:[EBP-C],EAX
00404BBD |. 3B75 F4 CMP ESI,DWORD PTR SS:[EBP-C]
00404BC0 |. 0F8D B9000000 JGE muma.00404C7F
00404BC6 |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4] ; 解码算法开始
00404BC9 |. 0FB60430 |MOVZX EAX,BYTE PTR DS:[EAX+ESI]
00404BCD |. 83E8 3C |SUB EAX,3C
00404BD0 |. 79 2A |JNS SHORT muma.00404BFC
00404BD2 |. 8D45 DC |LEA EAX,DWORD PTR SS:[EBP-24]
00404BD5 |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
00404BD8 |. 8A1432 |MOV DL,BYTE PTR DS:[EDX+ESI]
00404BDB |. E8 40EBFFFF |CALL muma.00403720
00404BE0 |. 8B55 DC |MOV EDX,DWORD PTR SS:[EBP-24]
00404BE3 |. 8D45 E0 |LEA EAX,DWORD PTR SS:[EBP-20]
00404BE6 |. E8 65EBFFFF |CALL muma.00403750
00404BEB |. FF45 F0 |INC DWORD PTR SS:[EBP-10]
00404BEE |. 46 |INC ESI
00404BEF |. C645 E6 00 |MOV BYTE PTR SS:[EBP-1A],0
00404BF3 |. BB 02000000 |MOV EBX,2
00404BF8 |. 33FF |XOR EDI,EDI
00404BFA |. EB 7A |JMP SHORT muma.00404C76
00404BFC |> 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4]
00404BFF |. 8A0430 |MOV AL,BYTE PTR DS:[EAX+ESI]
00404C02 |. 2C 3C |SUB AL,3C
00404C04 |. 8845 E7 |MOV BYTE PTR SS:[EBP-19],AL
00404C07 |. 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10]
00404C0A |. 3B45 F4 |CMP EAX,DWORD PTR SS:[EBP-C]
00404C0D |. 74 70 |JE SHORT muma.00404C7F
00404C0F |. 8D47 06 |LEA EAX,DWORD PTR DS:[EDI+6]
00404C12 |. 83F8 08 |CMP EAX,8
00404C15 |. 7C 44 |JL SHORT muma.00404C5B
00404C17 |. 8A45 E7 |MOV AL,BYTE PTR SS:[EBP-19]
00404C1A |. 24 3F |AND AL,3F
00404C1C |. 8BF8 |MOV EDI,EAX
00404C1E |. 81E7 FF000000 |AND EDI,0FF
00404C24 |. B9 06000000 |MOV ECX,6
00404C29 |. 2BCB |SUB ECX,EBX
00404C2B |. D3EF |SHR EDI,CL
00404C2D |. 8D45 D8 |LEA EAX,DWORD PTR SS:[EBP-28]
00404C30 |. 33D2 |XOR EDX,EDX
00404C32 |. 8A55 E6 |MOV DL,BYTE PTR SS:[EBP-1A]
00404C35 |. 0BD7 |OR EDX,EDI
00404C37 |. E8 E4EAFFFF |CALL muma.00403720
00404C3C |. 8B55 D8 |MOV EDX,DWORD PTR SS:[EBP-28]
00404C3F |. 8D45 E0 |LEA EAX,DWORD PTR SS:[EBP-20]
00404C42 |. E8 09EBFFFF |CALL muma.00403750
00404C47 |. FF45 F0 |INC DWORD PTR SS:[EBP-10]
00404C4A |. 33FF |XOR EDI,EDI
00404C4C |. 83FB 06 |CMP EBX,6
00404C4F |. 75 07 |JNZ SHORT muma.00404C58
00404C51 |. BB 02000000 |MOV EBX,2
00404C56 |. EB 1D |JMP SHORT muma.00404C75
00404C58 |> 83C3 02 |ADD EBX,2
00404C5B |> 8BCB |MOV ECX,EBX
00404C5D |. 8A45 E7 |MOV AL,BYTE PTR SS:[EBP-19]
00404C60 |. D2E0 |SHL AL,CL
00404C62 |. 8845 E6 |MOV BYTE PTR SS:[EBP-1A],AL
00404C65 |. 8A441D E8 |MOV AL,BYTE PTR SS:[EBP+EBX-18]
00404C69 |. 2045 E6 |AND BYTE PTR SS:[EBP-1A],AL
00404C6C |. B8 08000000 |MOV EAX,8
00404C71 |. 2BC3 |SUB EAX,EBX
00404C73 |. 03F8 |ADD EDI,EAX
00404C75 |> 46 |INC ESI
00404C76 |> 3B75 F4 |CMP ESI,DWORD PTR SS:[EBP-C]
00404C79 |.^ 0F8C 47FFFFFF \JL muma.00404BC6
00404C7F |> 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20] ; 直接F4到这
00404C82 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] ; 看一下堆栈窗口,解码后的配置已经到手了
00404C85 |. E8 EEEDFFFF CALL muma.00403A78
00404C8A |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
00404C8D |. 8B55 E0 MOV EDX,DWORD PTR SS:[EBP-20]
我是懒得看它的解码算法,直接在算法结束后的地方00404C7F按F4,这时已经解码完成了。看一下堆栈窗口,呵呵,配置都出来了:
0 1 http://www.xxx.com/qq.asp ddssbb21@163.com smtp.163.com ddssbb21 dsb6823291 ddssbb21@163.com 1 120 1 0 1 1 1
邮箱是ddssbb21@163.com,密码是ddssbb21或dsb6823291。收工,这时可以把OD关掉了。
后记:
既然拿到了邮箱帐号和密码,那就去这位的邮箱看看吧。看了一下这位的邮箱,里面还要十几个偷来的QQ号。看了一下个人信息(隐去部分信息):
姓 名:邓*
省 份:广东
城 市:广州
地 址:广东广州市广东工业大学龙洞校区**学*班
邮 编:510520
电 话:020-870802**
E-mail:ddssbb21@163.com
邮箱里有个注册个人主页的确认信,一个论坛的帐号和密码。我只是看看,nbw把他的密码通通改掉了,哈哈。看了这位的邮箱,才知道这个木马是QQ大杀器 2.0。本来不想写的,后来想想写出来让大家热闹热闹吧,呵呵。就写这么多吧,感谢nbw的协助。
既然有人要,我还是把附件贴出来吧。压缩包内的 muma.bin 是改了名的EXE文件。想测试的话,可以把它改成muma.exe。不过千万不要直接运行,否则后果自负!
解压密码:muma
--------------------------------------------------------------------------------
【版权声明】: 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[注意]APP应用上架合规检测服务,协助应用顺利上架!