银狐木马终于还是对微信下手了
- 2025-12-01 20:02:27
近期,360反病毒安全团队捕获到一类活跃度极高的恶意样本。攻击者将目标锁定在国民级应用——“微信”身上,其利用经典的“DLL劫持”技术,实施所谓的“白加黑”攻击。与以往常见的针对version.dll或userenv.dll两个文件的劫持不同,此次攻击者选择劫持的是更为隐蔽的系统库文件——cryptbase.dll,以及 d3dcompiler_74.dll。攻击者通过钓鱼邮件、捆绑软件等方式,将这些精心构造的恶意DLL文件释放到用户的微信安装目录下。
技术分析
运行流程概述
由于Windows系统的DLL加载机制是按照特定的路径顺序进行搜索,所以当用户启动微信程序时,这些恶意文件会先于正常系统文件被加载,导致微信进程在毫不知情的情况下成为木马的“宿主”。这不仅使得恶意代码能够绕过大量基于白名单的安全防护,更让黑客获得了稳定的系统启动机会,从而对受害主机实施长期的远程控制、数据窃取。
本文将针对该攻击样本的劫持原理、执行流程进行深入分析。
图1. 木马攻击流程示意图
劫持机制说明
本次分析的示例样本路径如下:
C:\Program Files\Tencent\Weixin\4.1.4.19\cryptbase.dll
以上路径所指向的cryptbase.dll文件是Windows操作系统的一个核心系统库文件,原本属于Base Cryptographic API的一部分。包括微信在内的许多应用程序,都会在运行时调用这个库文件进行加密、解密或证书验证等操作。系统中正常的cryptbase.dll文件,通常存在于以下两个目录中:
C:\Windows\System32\
C:\Windows\SysWOW64\
当微信主程序WeChat.exe启动崩溃检查组件crashpad_handler.exe时,会尝试加载一些DLL文件,其中就包含上述这个cryptbase.dll文件。但在这个加载过程中,并没有明确指定该待加载的DLL文件的绝对路径,而是完全依赖于Windows系统的默认搜索顺序,对这些待加载文件进行查找。
图2. 微信组件按系统默认顺序加载被劫持的DLL文件
根据Windows的DLL加载机制,默认的搜索顺序通常如下:
1. 应用程序所在的目录(如本案例中的D:\Program Files\Tencent\WeChat);
2. 系统目录(通常为C:\Windows\System32);
3. 16位系统目录(通常为C:\Windows\System);
4. Windows目录(通常为C:\Windows);
5. 当前工作目录;
6. 环境变量PATH中列出的其他目录。
显然,在未指定DLL文件绝对路径的前提下,木马所存在的路径是最优先被加载的位置,会先于系统的正常文件被加载。
图3. DLL劫持攻击原理示意图
代码分析
用于劫持的木马DLL文件,会在启动后先从其内置数据中解密出一个URL:
hxxp://augvertu[.]com/xxxca.txt
其相关解密代码如下:
图4. 解密处的URL链接
解密后,木马会继续访问这个拿到的URL,并解析服务器返回的数据,将其中#ST#到#ed#之间的数据段先用Base64解码后,再进行Shellcode解密。
图5. 解密从服务器获取到的数据
解密出来的Shellcode内容,其代码和数据部分会被黑客预先用codemark 进行分隔。其中,数据区块前部主要为执行参数、执行条件,以及一些标志位,而后部则是逆序处理过的域名,形如:
图6. 解密出数据的内容
完成后,木马会再度根据解密出的配置信息进行远程的C2连接:
图7. 与远端C2服务器进行连接
连接成功后,会再度从该C2服务器中拉取所需的加密数据:
图8. 从C2服务器上拉取加密数据
对于请求到的内容,通过如下算法进行解密:
图9. C2服务器数据解密代码
解密后的代码可以执行包括远程控制在内的各种操作,其中也包括上线模块.dll以及登录模块.dll等。
图10. 解密出的远程控制代码
接下来,木马会将合法的tracerpt.exe程序作为宿主,以进程注入的方式在其内存空间中开辟一段代码执行空间,并写入恶意Shellcode代码,完成写入操作后,再唤醒宿主进程的主线程,这样宿主进程便会直接跳转去执行注入内存当中的Shellcode恶意代码。
图11. 木马对tracerpt.exe进行注入
木马会将解密后的恶意代码写入注册表当中,此后木马会直接读取注册表中存储的恶意代码,并加载到内存当中执行,属于典型的无文件攻击方式。猜测这一步骤是为了防止对C2服务器的网络访问被阻断,使用本地注册表来保障对Payload的随时调取。
图12. 将恶意代码数据写入注册表当中备份
注册表中所保存的Shellcode代码是一个经典的x64反射式DLL加载器,其主要功能是在内存中加载一个黑客指定的可执行程序。
图13. 注册表中保存的Shellcode数据
而在解密获取到的第二段Shellcode中,包含了多个功能模块。其主要功能为:检测敏感软件窗口信息、获取剪贴版信息、键盘记录等。
完成后,木马会再度使用远程线程注入技术,将一段新的Shellcode及相关数据注入系统进程svchost.exe中并执行。
图14. 木马对svchost.exe进程进行远程线程注入
这段注入的Shellcode代码会进行截屏、清除系统事件日志、导出函数、加载傀儡进程,以及检测安全软件等操作。
图15. 被检测的安全软件列表
安全提醒与防护建议
360安全终端可直接对该木马进行有效查杀。
图16. 360安全终端查杀木马
针对此类利用微信目录进行DLL劫持的攻击,建议采取以下措施进行排查:
自我排查
检查您的微信安装目录。如果在安装时未进行指定,则安装路径通常位于:
C:\Program Files (x86)\Tencent\WeChat\[版本号]\
在安装目录下查看是否存在以下文件:
cryptbase.dll
d3dcompiler_74.dll
上述文件均为Windows系统组件,正常情况下不会出现在微信的安装目录下,而应位于C:\Windows\System32目录中。如果在微信目录下发现这些文件,您的电脑有极大概率已被植入木马。
处置方案
一旦发现微信可能被感染,可按照如下方案进行处置:
l终止进程:立即在任务管理器中结束所有 WeChat.exe 进程。
l删除文件:手动删除微信目录下的上述可疑 DLL 文件。
l全盘杀毒:使用有效的杀毒软件进行全盘扫描,查杀可能残留的释放器(Dropper)或其他恶意组件。目前,360安全卫士无需升级即可查杀和拦截该类木马。
l修改密码:考虑到木马可能具有键盘记录或窃密功能,建议在清除病毒后修改微信及相关敏感账号的密码。
日常防范建议
此外,建议所有用户增强安全意识,对此类攻击进行日常防范。
l下载渠道:务必通过官网下载软件安装包,避免使用第三方下载站或不明来源的“绿色版”“破解版”软件。
l开启文件扩展名显示:防止攻击者利用“双重后缀名”(如 readme.txt.exe)或伪装图标进行欺诈。
l安装可靠的安全软件:对于安全软件拦截或阻止的程序,不要轻易添加信任运行。