伪装为HelloGPT安装程序的银狐木马样本分析
字数 3713
更新时间 2026-05-13 13:23:45
伪装为HelloGPT安装程序的银狐木马样本分析教学文档
0x01. 概述与背景
本教学文档旨在详细解析一个伪装成“HelloGPT”安装程序的“银狐”(SilverFox)木马样本。该样本通过钓鱼网站分发,其攻击链涉及了反虚拟机、反沙箱检测、白加黑DLL劫持、多阶段载荷投放及持久化通信等技术,展现了高度专业化、工程化的特点。分析基于腾讯安全威胁情报中心披露的样本及关联变种。
0x02. 反虚拟机和反沙箱技术分析
样本在初始执行阶段包含多层环境检测逻辑,旨在逃避在虚拟化或沙箱分析环境中运行。
2.1 反沙箱检测(时间加速检测)
- 原理:利用沙箱为加速分析而进行的时间虚拟化特性。
- 实现:
- 调用
GetTickCount64(或其类似功能API)获取当前系统时间戳(t1)。 - 调用
Sleep(2000)使程序休眠2秒。 - 再次调用
GetTickCount64获取新时间戳(t2)。 - 计算时间差
Δt = t2 - t1。 - 判断逻辑:如果
Δt < 1800毫秒(即1.8秒),则判定为处于时间加速的沙箱环境中,程序将终止或进入误导性分支。
- 调用
- 绕过方法:可通过动态调试工具(如x64dbg)在关键判断点修补返回值,使程序继续执行正常逻辑。
2.2 反虚拟机检测(多重检测)
样本采用了三种主要的虚拟机检测技术:
-
动态链接库检测:
- 样本内包含一串加密字符串,解密后为
vmGuestLib.dll(VMware Tools组件)。 - 通过调用
LoadLibraryA(“vmGuestLib.dll”)尝试加载该库。若加载成功(返回句柄非空),则判定为运行在VMware虚拟机中。
- 样本内包含一串加密字符串,解密后为
-
WMI ACPI热力监控检测:
- 通过COM接口执行WMI查询:
SELECT * FROM MSAcpi_ThermalZoneTemperature。 - 原理:虚拟机通常不模拟或未正确配置ACPI(高级配置与电源接口)的热力区域温度传感器。如果查询无结果或失败,则可能判定为虚拟机环境。
- 通过COM接口执行WMI查询:
-
物理磁盘容量检测:
- 利用设备符号链接
\\.\PhysicalDrive0创建设备对象。 - 向该设备发送IO控制代码
IOCTL_DISK_GET_LENGTH_INFO(0x7405C),以获取物理磁盘0的总容量信息。 - 判断逻辑:如果获取到的磁盘总容量小于250 GB,则判定为典型的虚拟机小容量虚拟磁盘环境,从而怀疑自身处于虚拟机中。
- 利用设备符号链接
综合绕过:在调试分析时,需对上述三个检测函数的返回值进行修补,使它们都返回预期的“非虚拟环境”结果(通常为1),方可进入后续恶意代码执行流程。
2.3 辅助检查
- UAC权限检查:检查当前进程是否以管理员权限运行。由于伪装成安装程序,通常会请求UAC提权,因此此项常为真。
- 互斥体(Mutex)检查:样本会检查一个特定的互斥体是否存在,可能用于实现单实例运行或与C2通信的同步。
0x03. 释放与白加黑(Living-Off-the-Land)技术执行
通过环境检测后,样本开始部署其恶意载荷。
-
释放合法安装程序:
- 将真正的HelloGPT安装程序释放到用户临时目录(
%TEMP%)并启动,以维持表面正常功能,迷惑用户。
- 将真正的HelloGPT安装程序释放到用户临时目录(
-
下载并解密CAB载荷:
- 从远程服务器(IP: 43.229.215.74)拉取加密数据。
- 使用RC4算法对数据进行解密,得到一个CAB压缩包(payload.cab)。
-
利用合法系统程序(LOLBin)解压:
- 在
%TEMP%目录下创建一个随机名称的子目录。 - 将解密得到的
payload.cab文件写入该目录。 - 调用系统自带的
expand.exe命令行工具解压CAB文件。这是典型的“Living-Off-the-Land”技术,利用可信系统程序来规避安全软件对恶意解压行为的检测。
- 在
-
白加黑DLL劫持:
- 解压后释放三个文件:
ttd.exe(主程序,被VMP商用壳保护)、liblua.dll(DLL文件)、guofu.txt(加密的核心载荷)。 ttd.exe是一个合法或无害的可执行文件,但它会在运行时尝试加载同目录下的liblua.dll。- 攻击者提供的
liblua.dll是一个恶意的“黑DLL”。当ttd.exe被执行时,会加载这个恶意的liblua.dll,从而将执行流转移到攻击者代码中。 - 最终通过命令行参数启动:
ttd.exe -k TCBIA007。
- 解压后释放三个文件:
0x04. 恶意DLL(liblua.dll)分析
恶意DLL负责加载并执行最终的核心载荷。
-
加载加密载荷:
- 恶意DLL包含一个加密字符串
vd~wd?eie,解密后得到实际要读取的加密文件名(即guofu.txt)。 - 读取
guofu.txt文件内容到内存。该文件内容熵值高,明显经过加密。
- 恶意DLL包含一个加密字符串
-
内存解密与执行:
- 在内存中使用单字节异或(XOR) 算法,结合循环冗余校验(CRC)来解密文件内容。
- 解密后得到的是一段位置无关代码(PIC),即Shellcode,无标准的PE头(MZ)。
- 解密完成后,直接跳转到Shellcode的起始地址执行。
-
建立C2通信:
- Shellcode会动态解析并调用
ws2_32.dll中的网络API(如socket,connect,send)。 - 首次连接回传的C2服务器IP地址为
43.229.215.74,与下载CAB文件的服务器一致,表明其为同一攻击基础设施。
- Shellcode会动态解析并调用
0x05. 核心载荷行为与持久化
最终的Shellcode会从C2服务器获取更多阶段的恶意代码,并在受害主机上执行复杂操作。
-
多阶段载荷投放:
- 从C2拉取数据,解密后写入以下文件(路径和名称可能因环境而异):
C:\ProgramData\h_x86_..._0.dat:疑似包含密钥。C:\ProgramData\s_x86_..._0.dat:加密的PIC代码。C:\Users\[用户名]\AppData\Local\Temp\00-0C-29-9D-F8-AC_..._dump_... .bin:一个完整的PE可执行文件。
- 从C2拉取数据,解密后写入以下文件(路径和名称可能因环境而异):
-
系统侦察与持久化尝试:
- 调用
schtasks查询名为\Microsoft\Windows\AppID\Converter的计划任务。此处主要用于侦察,而非直接创建任务,可能意在了解环境或检查是否存在特定配置。 - 载荷会加载多个系统库(
user32.dll,shell32.dll等),为后续的图形界面操作或系统调用做准备。
- 调用
-
文件与目录排查清单:
该木马在系统中创建或使用了以下文件及目录,可作为排查指标(xxxxxx代表用户名):C:\Users\xxxxxx\AppData\Roaming\Feishu(可能用于数据渗出或存放配置)C:\Users\xxxxxx\AppData\Local\Temp\下8位大写字母的随机目录C:\Users\xxxxxx\AppData\Local\Temp\00-0C-29-9D-F8-AC_220bb9_x86_dump_xxxxxxx.binC:\QLY2025Dumps(可疑目录)C:\ProgramData\s_x86_A0C1853B9682483C865C3144B04ABD5C_0.datC:\ProgramData\h_x86_A0C1853B9682483C865C3144B04ABD5C_0.datC:\ProgramData\goufu.txt(可能与guofu.txt为同一文件)C:\ProgramData\interfaceNT(可疑目录)
0x06. 总结与防护建议
攻击链总结:钓鱼网站分发 -> 环境检测(反沙箱/反虚拟机)-> 释放合法程序掩护 -> 下载加密载荷 -> 利用LOLBin解压 -> 白加黑DLL劫持执行 -> 多阶段Shellcode内存加载 -> 连接C2获取进一步指令与载荷。
防护与检测建议:
-
用户层面:
- 仅从官方应用商店或软件官网下载安装程序。
- 对任何来源不明的“破解版”、“特别版”安装包保持警惕。
- 安装并更新 reputable 的安全软件。
-
分析检测层面:
- 行为监控:关注
expand.exe被非系统进程调用解压CAB文件的行为。 - 网络流量:监控对可疑IP(如
43.229.215.74)的外联请求。 - 文件系统:定期扫描系统中是否存在上述排查清单中的可疑文件与目录。
- 进程内存:检测含有高熵值数据、无模块加载的Shellcode内存注入行为。
- DLL侧载:监控可执行文件从非标准路径(如临时目录)加载DLL的行为。
- 行为监控:关注
-
企业安全层面:
- 部署具备反漏洞利用、行为阻断能力的终端检测与响应(EDR)系统。
- 使用应用程序白名单策略,限制非授权程序的执行。
- 对网络出口流量进行深度包检测(DPI)和威胁情报匹配。
相似文章
相似文章