"龙之谷"盗号木马详细分析
病毒的时间戳是08/13/2010
逆了木马主体所有函数,释放出的bin没有看,放全局消息钩子来截获信息。
代码中有很多填充内容的部分,繁琐无味,我帖的时候去除了这些无意义代码。
病毒样本已经在四楼上传。有对bin感兴趣的朋友不妨看看
这个病毒自身验证的过程我之前的一个帖子说了:
传送门~
http://bbs.pediy.com/showthread.php?t=119736
先看说明,再看代码~
1,从自身提取一个名为"MWAI"的资源,并释放到系统临时文件夹中,名称为kb****.bin (*的是0~9的随即数字)。
2,接着进行自身验证,通过比较当前进程文件的最后8位是否为7001000000010000来判断木马是否完整(
比如脱壳的版本~因为这个木马用的PEcompect壳,可以用脱壳机直接脱掉),如果验证通过,则提取当前
木马文件的后0x170个字节内容追加到刚刚释放的bin文件中,来完成bin文件的组装。
3,先在"SOFTWARE\snda\dn"中找游戏路径,如果没找到,则
到"Software\Microsoft\Windows\ShellNoRoam\MUICache"中寻找
4,删除游戏目录下的mfc42.log文件
5,把释放出的bin复制一份到系统目录\system下并修改后缀为axs,并设置隐藏属性
6,LoadLibrary加载释放出的bin,并调用其LoadDll函数,安装全局WH_GETMESSAGE钩子
7,复制释放的bin到游戏目录下,并命名为mfc42.log,设置隐藏属性
8,判断"系统目录\DllCache"下和"系统目录\system\"下是否存在"d3d8thk.dll"文件,如果存在则备份
到"系统目录\d3d8thk.dll.dat"
9,打开"系统目录\d3d8thk.dll.dat"读取该PE文件各部分信息存放到一自定义结构体,一个buffer局部
变量指针,一个sections指针数组中,结构体说明如下:
[esi] = buffer
存放pe文件指针
[esi+8] = IMAGE_DOS_HEADER
[esi+c] = dos stub
[esi+10] = dos stub大小
[esi+14] = 0x40(IMAGE_DOS_HEADER大小)
[esi+18] = IMAGE_NT_HEADER
[esi+1c] = 第一个IMAGE_SECTION_HEADER结构
[esi+20] = 第二个
依次类推~
struct _PEINFO{
LPCSTR lpImage_Dos_Header;
LPCSTR lpImage_Dos_Stub;
int iSizeOfDosStub;
int iSizeOfDosHeader;
LPCSTR lpImage_Nt_Header;
LPCSTR lpImage_Section_Header[0x10]
}
[esi+1c+50] 中保存着各个SECTIONS的数据指针
+4 依次类推~
LPCSTR lpSections[0x10];
10,在该"系统目录\d3d8thk.dll.dat"文件中搜索分别搜索".code"和"text"节,复制自身的0x00407034
位置的357个字节内容到目标section头,判断目标section的offset0x164处的值,如果正确写入了数据,
则该处的数据应该为0x9090,然后在目标section中继续搜索"246",在其后面填充内容"kb****.axs",在
"246"前填充一个0x70(ascii的p)。
11,把修改后的"系统目录\d3d8thk.dll.dat"写回。
12,复制"系统目录\d3d8thk.dll.dat" 到 "游戏目录\d3d8thk.dll"
13,移动"系统目录\system\d3d8thk.dll"到"系统目录\system\d3d8thk.dll.****(4个随即大写字符)"
,然后马上删除"系统目录\system\d3d8thk.dll.****(4个随即大写字符)"。移动"系统目录
\d3d8thk.dll"到"系统目录\d3d8thk.dll.****(4个随即大写字符)"
14,判断"系统目录\DllCache\d3d8thk.dll"是否存在,如果存在,检测是否存在360,如果存在,则利用
技巧躲避360的api调用检查来调用sfc_os.dll5号函数,从而修改系统文件。如果没有360,则依次检
查"conime.exe","IEXPLORER.EXE","ctfmon.exe","explorer.exe"进程,如果其中一个进程存在,则注入
该进程,并执行指定代码,进行提权和执行5号函数,并移动"系统目录\DllCache\d3d8thk.dll",但这个地方比较有趣,就是实际上如果没有360的话,这个操作无法成功,因为在注入远程进程中的代码中存在bug,无法完成系统函数移动的操作,具体请看代码。
15,移动"系统目录\DllCache\d3d8thk.dll"到"系统目录\DllCache\d3d8thk.dll.****(4个随即大写字
符)"
16,复制"系统目录\d3d8thk.dll.dat"到"系统目录\system\d3d8thk.dll.dat"
17,"系统目录\system\d3d8thk.dll.dat"改名为"系统目录\system\d3d8thk.dll"
18,复制文件"系统目录\d3d8thk.dll.dat"到"系统目录\DllCache\d3d8thk.dll"
19,删除在临时文件夹中释放出的bin文件
20,获取环境变量"TEMP"中的临时文件路径,并在其目录下创建名为"临时文件路径\tempVidio.bat"的批处理文件,并执行该文件,执行操作:删除病毒本身,然后删除批处理本身。
【第零段】
在当前系统中寻找dnlauncher.exe和DragonNest.exe 游戏进程,如果发现则关闭进程
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
