前言:
在网络安全的世界里,最危险的往往不是那些大张旗鼓勒索你的病毒,而是那些悄无声息潜伏在系统深处的“后门”。
本次我们要分析的样本,表面上是一个《DNF(地下城与勇士)》的游戏交易价格表,但实际上是一个典型的利用**“白加黑(DLL劫持/侧加载)”**技术构筑的后门病毒。它利用拥有正规数字签名的合法程序(白文件)来加载恶意代码(黑文件),以此骗过杀毒软件的眼睛,并在你的电脑中留下一扇只有攻击者能打开的“后门”。
样本信息#
| 文件名 | sha1 | 注释 |
|---|---|---|
| 截图.bmp | b7f594a1966e3d86170d217fb6edf55bbf4b1475 | 快捷方式 |
| Au.exe | 056c5c9795131cb787cccfe19eeecb6175836403 | 白文件 |
| Reg.dll | f52d5de2123e1dc802237bb78db61027652605d9 | |
| Config.dat | 0f150392802759c33eed6266239f4a9a8cba5337 | |
| HD_Comm.dll | b85a6e7db920baac5f8268e60395f07f6757e45e | 黑文件 |
| DNF价格表.jpg | 2c12856cc88e98ca3d80e3c1d5b22cd09dcf2edc | |
| io.dat | aad8554c20d27c80ff2dfd5b5dac3316e1de674f | |
| TenioDL_core.dll | b85a6e7db920baac5f8268e60395f07f6757e45e | HD_Comm.dll |
| load.exe | 056c5c9795131cb787cccfe19eeecb6175836403 | Au.exe |
| dllhost.exe | 898912356430702ed4d96beb8a0053a82869c7df | 黑文件 |
第一阶段:伪装与诱饵#
后门病毒的第一步永远是进入系统。不同于蠕虫的主动传播,后门病毒通常需要依靠社会工程学诱导用户点击。
在这个样本中,攻击者将文件伪装成了看似无害的图片:
- 表面现象:用户看到一个名为“截图.bmp”的文件,图标也是图片的样式 。

- 真实面目:这是一个快捷方式(.lnk)文件。

- 触发机制:当你双击这个“图片”时,实际上执行了一串命令:
rundll32.exe dat\reg.dll DriverInfo。
🔰 文件扩展名欺骗
很多病毒会将图标修改为文件夹或图片,实际上是可执行程序(EXE、SCR)或快捷方式(LNK)。在这个案例中,病毒利用Windows默认隐藏已知文件扩展名的特性,诱导用户运行恶意指令。
第二阶段:环境准备与核心启动#
这是该样本最核心的技术特征,也是它区别于普通木马的关键。普通木马直接运行恶意EXE容易被杀毒软件拦截,而这个后门选择了“借刀杀人”。
1. 释放与环境准备#
恶意模块 HD_Comm.dll(被伪装成库文件)首先运行,它会检测自身是否重复运行(互斥体检测),然后将自身复制并重命名为 TenioDL_core.dll,同时释放一个名为 Au.exe 的文件 。

2. “白加黑”运作流程#
- 白文件:
Au.exe。这实际上是腾讯公司的一款合法程序,拥有有效的数字签名 。在杀毒软件看来,这是“良民”。

-
黑文件:
TenioDL_core.dll。这是病毒生成的恶意动态链接库。 -
漏洞利用:
Au.exe在运行时会尝试加载名为TenioDL_core.dll的库文件。由于它没有校验该DLL的路径或签名,病毒便将恶意DLL放在Au.exe同级目录下。根据Windows的加载顺序,Au.exe优先加载了恶意的DLL,从而让恶意代码在合法进程的内存空间中运行 。
🔰 DLL侧加载 (Sideloading)
想象一下,你(白文件)回家开门需要钥匙(DLL)。正常情况下你用的是原配钥匙,但攻击者偷偷把你口袋里的钥匙换成了万能钥匙(黑DLL)。当你开门时,虽然人是合法的,但使用的工具已经是恶意的了。这就是“白加黑”——利用合法的白名单程序运行恶意代码,极难被查杀。
第三阶段:解密与权限突破#
恶意代码加载成功后,并没有直接暴露核心行为,而是通过一系列复杂操作来确立控制权。
1. 载荷解密#
恶意DLL加载后,并没有直接暴露核心代码,而是去读取一个名为 Config.dat 的文件 。
- 伪装:
Config.dat头部伪造成MZ(可执行文件)头,但实际上是被加密的数据 。

-
执行:病毒在内存中解密该文件,这实际上是一个PE(可执行)结构的代码,解密后直接在内存中执行,避免了在硬盘上留下明显的恶意EXE文件 。
通过xdbg动态调试,然后dump解密后的内存。文件大小通过.\config.dat 的大小确认64CF0。


1, 选择 插件/Scylla 打开插件窗口
2, 选择 File/ Dump memory

解密后的文件
sha1<29a161ac14fde538fb10e71bf8aefbe0c0bc16f8>29a161ac14fde538fb10e71bf8aefbe0c0bc16f8>
PcMain.dll
模块:wow_helper、UserService

2. 身份窃取(代币盗窃)#
这是代码分析中发现的高级行为。 病毒为了让诱饵图片能正常展示给用户,或者为了突破 Windows 的会话隔离(Session 0 Isolation):
-
窃取令牌:它会查找桌面进程
explorer.exe,并窃取其用户令牌(Token)。
-
模拟身份:利用
DuplicateTokenEx和CreateProcessAsUserA,病毒从原本可能的系统权限(System)“降维”伪装成当前登录的用户 。

- 目的:这样做的目的是让释放的诱饵图片能直接弹出在用户的桌面上,不引起怀疑,同时获得访问用户文件的权限。
第四阶段:狡猾的持久化#
为了保证电脑重启后病毒依然存活,它精心构建了一个隐蔽的“基地”。
1. 构建“Limit”目录#
病毒并未随机存放文件,而是在系统目录下创建了一个名为 Limit 的隐藏文件夹 。
- 它将原本的
Au.exe重命名为load.exe放入该目录 。 - 将恶意的
TenioDL_core.dll和配置文件也一并搬运进去 。 - 混淆视听: 这个名字极具欺骗性,看起来非常像 Windows 的系统组件。
load.exe

2. 冷门注册表项驻留#
为了避开用户和常规优化软件对 启动项的检查,病毒修改了较隐蔽的注册表键值:Run
- 位置:
HKEY_USERS\...\Software\Microsoft\Windows NT\CurrentVersion\Windows\load。 - 行为:将此键值指向 。 这样每次用户登录,系统都会自动“拉起”这个后门,且极难被发现。
Limit\load.exe
**注意:**如果检测到 360 在运行,这一步会被跳过 。
360tray.exe不存在,篡改自启动项

3. 反安全软件#
针对金山毒霸:采取“暴力”策略。 代码中显式调用 KillProcessByName,试图直接结束金山毒霸(KSafeTray.exe)的进程 。

针对 360安全卫士:采取“隐忍”策略。 如果检测到 360(360tray.exe)在运行,它会直接放弃后续的注册表启动项写入。 病毒选择“认怂”以避免触发 360 的主动防御弹窗,宁可放弃开机自启,也要保全当前在内存中的运行 。

第五阶段:隐蔽通信与最终载荷#
建立了稳固的据点后,后门开始执行它真正的任务:控制与窃取。
1. 隐蔽桌面#
为了不让用户察觉异样,病毒创建了一个名为“GAME”的隐藏虚拟桌面 。它在这个用户看不见的桌面上运行恶意操作,即便是弹窗报错,用户在前台也看不到。

2. 最终诱饵投放#
为了安抚用户,避免用户因为“打不开图片”而起疑,病毒最后会将 io.dat 文件解密并重命名为 DNF价格表.jpg 展示给用户 。
用户看到了想要的价格表,以为一切正常,殊不知后台已经门户大开。

3. 多重套娃#
病毒甚至还释放了另一组“白加黑”组合:load.exe(另一个腾讯签名的白文件)配合 dllhost.exe(恶意代码),进一步下载或执行攻击者指定的命令 。

总结:如何识别后门病毒?#
通过分析这个样本,我们可以总结出后门病毒的特征:
| 特征维度 | 本样本 (Backdoor) |
|---|---|
| 反杀软策略 | 智能化:遇强则避(躲避360注册表监控),遇弱则杀(结束金山进程)。 |
| 运行身份 | 令牌窃取:会模拟用户身份运行,突破会话隔离。 |
| 持久化 | 冷门路径:使用 Limit 隐藏目录 + Load 注册表键值 + 文件改名伪装。 |
防御建议:
- 警惕“假图片”:在文件夹选项中开启“显示已知文件类型的扩展名”,不要被
.bmp的图标欺骗。 - 关注异常启动项:定期检查注册表启动项(如
Run、Load键值),发现未知路径的程序需警惕。 - 可疑的目录结构:如果你下载的“图片”或“文档”附带了一堆看不懂的
.dll和.dat文件,那大概率是碰上“白加黑”病毒了。