基本信息
报告名称:Trojan.Exprez分析
作者:yuansunxue
报告更新日期: 2012 - 07 -
样本发现日期: 2012 - 05 -
样本类型:
样本文件大小/被感染文件变化长度:变化的
样本文件MD5 校验值:4bd959319d16b8da148762c1a5feabf8
样本文件SHA1 校验值:bb77922763367aeba13a70749bcfb3aa1316551748135206a9f4cbfbfaef4afc
壳信息:无
可能受到威胁的系统:windows
相关漏洞:
已知检测名称: Virus:Win32/Quervar.gen!B(微软)
Trojan-Dropper.Win32.Dorifel.chl(卡巴)
简介
感染.doc .docx .exe 下载恶意软件执行
被感染系统及网络症状
文件系统变化
创建如下文件:
%application data%\Microsoft\[9个随机字符].exe
.doc .docx .exe
注册表变化
[将要/可能]被[创建/修改/删除]的[注册表键/键值]
网络症状
从如下网址下载配置文件:
http://vnk.sk/js/way.php
http://avtoclub.eu/admin/ajax/way.php
http://1nlreality.sk/admin/user/way.php
详细分析/功能介绍
当样本被运行后,会进行如下操作:
1、判断程序的后缀名
如果是dll:
a、创建文件%application data%\Microsoft\ntuser.ini
b、感染.doc .docx .exe (原来的doc docx .exe用rc4加密放到overlay里面,且对于doc docx被拷贝成[原来的名字]xcod.scr 调试时是
[原来的名字].空格xcod.scr)
c、下载配置文件
如果是exe:
有参数
-launcher
a、创建文件%application data%\Microsoft\ntuser.ini
b、感染.doc .docx .exe
c、下载配置文件
d、如果taskmgr.exe 正在运行 则进程退出
-update + 要更新的文件名.exe 且%application data%\Microsoft\下有exe
a、创建%application data%\Microsoft\[9个随机字符].exe 拷贝其到更新的文件路径 (如果更新的文件正在运行,则
先将其关掉)
-update + 要更新的文件名非.exe 且%application data%\Microsoft\下有exe
a、创建%application data%\Microsoft\[9个随机字符].exe 拷贝其到更新的文件路径
-update + 要更新的文件名 且%application data%\Microsoft\下没有exe
什么也不做
没有参数
如果运行在64位下面:
如果%application data%\Microsoft\下有exe 则重新创建一个%application data%\Microsoft\[9个随机字符].exe,并把原来的覆盖掉
如果%application data%\Microsoft\下没有exe 则新创建一个%application data%\Microsoft\[9个随机字符].exe,
c:\Documents and Settings\SRE\Start Menu\Programs\Startup\[9个随机字符].lnk,lnk指向%application data%\Microsoft\[9个随机字符].exe -launcher
运行在32位下面
如果是第一次运行则 创建%application data%\Microsoft\[9个随机字符].exe,Vista:
拷贝到%windir%\WindowsCodecs.dll xp:拷贝到%windir%\xpsp2res.dll
如果不是第一次运行则
如果%application data%\Microsoft\下有exe 则重新创建一个%application data%\Microsoft\[9个随机字符].exe,并把原来的覆盖掉
如果%application data%\Microsoft\下没有exe 则新创建一个%application data%\Microsoft\[9个随机字符].exe,
c:\Documents and Settings\SRE\Start Menu\Programs\Startup\[9个随机字符].lnk,lnk指向%application data%\Microsoft\[9个随机字符].exe -launcher
接下来:
如果是被感染的文件 则从overlay里rc4解密除原始文件,原始文件可能是doc docx .exe
是doc docx则用word打开
是.exe 则直接运行
如果是母体 退出
相关服务器信息分析
都是死的 或者是无效的
总结(比较有意思的地方)
1.感染exe,原来的exe用rc4加密放到overlay里面,比较有意思的地方在于病毒会保证感染后的图标和版本信息和原来的一样,主要
用到了如下的api来实现的:
EnumResourceNamesW
BeginUpdateResourceW
FindResourceW
LoadResource
SizeofResource
LockResource
UpdateResourceW
EndUpdateResourceW
2.感染.doc .docx,原来的doc docx用rc4加密放到overlay里面,保证感染后的恶意文件的图标和doc docx的图标一样,也是用上面的api实现,
因为.doc和.docx后缀的是不能运行的,这里用到了rlo(2e 20)进行了字符串反转。
原来的.doc .docx 被拷贝成[原来的名字][\x2e20]xcod.scr 看起来是:
[原来的名字]rcs.docx
其实不止是.doc .docx 病毒作者完全可以感染其他后缀的文件,比如:.txt .pdf 只要保证感染后的图标和后缀对应的图标一致即可
修复 ,写了个程序来修复下,纯属练手,只贴一些关键的,其他的看附件吧:
针对doc .doc的特殊判断:
//如果是以.scr结尾 则继续判断是否是被感染的doc 或者docx文件
if (strcmp(&FindFileData.cFileName[strlen(FindFileData.cFileName) - 4],".scr") == 0)
{
//进一步判断是否是.docx
if (memcmp(&FindFileData.cFileName[strlen(FindFileData.cFileName) - 8],"xcod",4) == 0)
{
printf("found docx file %s \n\r",wsTmp);
strcpy(wsDst,wsTmp);
//生成原来正确的文件名
wsDst[strlen(wsTmp) - 9] = 0;
strcat(wsDst,".docx");
// 变成unicode访问 因为有rlo控制符 所以要特殊处理
strcpy(wsTest,wsTmp);
wsTest[strlen(wsTmp) -9] = 0;
dwNum = MultiByteToWideChar(CP_ACP,0,wsTest,-1,NULL,NULL);
MultiByteToWideChar(CP_ACP,0,wsTest,-1,wsRightFile,dwNum);
lstrcatW(wsRightFile,L"\x202e");
wcscat(wsRightFile,L"xcod.scr");
//HANDLE htest;
//htest = CreateFileW(wsRightFile, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
//htest = CreateFileW(L"d:\\test\\atomic_msg_text\x202excod.scr", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
//生成正确的文件名的unicode形式
dwNum = MultiByteToWideChar(CP_ACP,0,wsDst,-1,NULL,NULL);
MultiByteToWideChar(CP_ACP,0,wsDst,-1,wsDstFile,dwNum);
//移动到被感染前的正确的文件名
test = MoveFileW(wsRightFile,wsDstFile);
//test = GetLastError();
//如果移动成功 则将正确的文件名赋给wsTmp 为后面修复的文件名
if (test == 1)
{
strcpy(wsTmp,wsTest);
}
}
//进一步判断是否是.doc
else if(memcmp(&FindFileData.cFileName[strlen(FindFileData.cFileName) - 7],"cod",3) == 0)
{
printf("found doc file %s \n\r",wsTmp);
strcpy(wsDst,wsTmp);
wsDst[strlen(wsTmp) - 8] = 0;
strcat(wsDst,".doc");
strcpy(wsTest,wsTmp);
wsTest[strlen(wsTmp) -8] = 0;
dwNum = MultiByteToWideChar(CP_ACP,0,wsTest,-1,NULL,NULL);
MultiByteToWideChar(CP_ACP,0,wsTest,-1,wsRightFile,dwNum);
lstrcatW(wsRightFile,L"\x202e");
wcscat(wsRightFile,L"cod.scr");
//HANDLE htest;
//htest = CreateFileW(wsRightFile, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
//htest = CreateFileW(L"d:\\test\\atomic_msg_text\x202excod.scr", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
dwNum = MultiByteToWideChar(CP_ACP,0,wsDst,-1,NULL,NULL);
MultiByteToWideChar(CP_ACP,0,wsDst,-1,wsDstFile,dwNum);
test = MoveFileW(wsRightFile,wsDstFile);
if (test == 1)
{
strcpy(wsTmp,wsTest);
}
}
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课