ARTICLE · 1248629
以假乱真!银狐木马仿腾讯电脑管家安装包,暗藏银狐双载荷
概述:
这份银狐木马为150 MB 安装包文件,与“QQ 电脑管家”相近的文件名伪装成安装程序,诱使用户点击运行。安装包内同时包含腾讯电脑管家安装文件,以及两组隐藏的加密载荷。运行后,安装器会释放并启动恶意程序,还会释放电脑管家安装文件、创建桌面快捷方式,形成安装正常软件的表象。
样本概况
文件名 | qqdngj-x64-win-1.3.8.exe |
SHA-256 | B767278B350361CC646345F03951A71F2E45A9694829A3E51B76E8AE41708BD3 |
大小 | 157,834,022 字节 |
类型 | NSIS 安装程序 |
NSIS 文件解压后可见 11 个 NHENCV1 对象(文件头 ASCII:NHENCV1),该特征是银狐木马常见特征。以 AES解密并释放两组 文件ev2f79.exe和ev2c34.exe。
安装脚本尝试执行 ev2f79.exe,随后约 5 秒再调用 ev2c34.exe。脚本检查 360tray.exe、HipsTray.exe,按条件尝试添加 Defender 对 C:\、D:\、F:\ 的排除,并写入 HKCU\Software\MicrosoftUserAdmin 中 SOURCE=QQPCDownload310254。另释放 %PROGRAMFILES%\Community\QQPCDownload310254.exe 与桌面快捷方式。
文件投递可分三条路径。前两条各有一个被 Exec 尝试启动的主程序;第三条只释放文件与创建桌面快捷方式,没有对其直接 Exec执行。
投递路径 | 文件关系 |
%APPDATA%\comain_ev2f79\ ev2f79.exe / ntrin.er / otrm.oi / yinma.vc / dxyvnb.ti | ev2f79.exe 读取 otrm.oi解密出导出函数为 SetIoC的dll,该SetIoc解密yinma.vc 与 dxyvnb.ti。ntrin.er 为 yinma.vc 后续载荷。 |
%APPDATA%\comain_ev2c34\ ev2c34.exe / bnymir.ou / bteuns.pt / cmrsk.ce / fhkan.oi / ap.asin | 六件文件由安装脚本释放。 |
%PROGRAMFILES%\Community\QQPCDownload310254.exe %DESKTOP%\QQPCDownload310254.lnk | 释放QQPCDownload310254.exe文件,并创建指向它的桌面快捷方式。 |

流程图
详细分析
原始样本为”qqdngj-x64-win-1.3.8.exe”,该文件图标为QQ电脑管家,同时详细信息里描述为”腾讯电脑管家“,该样本图标与正常的QQ电脑管家图标一致。


首先,样本为NSIS文件,运行后,会解密自身释放两组文件
ev2f79.exe
该文件带有Tencent Technology(Shenzhen) Company Limited腾讯科技数字签名,但不可用。

ev2f79.exe读取otrm.oi 解密反射加载导出函数为 SetIoC的dll
ev2f79.exe 从同目录读取 otrm.oi,对读入的每个字节 XOR 0x36,得出解密后的shellcode。该 shellcode 运用 sRDI 反射加载技术;其目的不是直接运行一份磁盘 DLL,而是在 ev2f79.exe 当前进程内手动映射内嵌的 PE32 DLL,并调用其导出函数SetIoC。

ev2f79.exe 对 otrm.oi 进行XOR 解码
手动解析PE文件,实现反射加载,复制 PE 头到新的内存空间

复制内嵌 DLL 的 PE 头
调用加载的dll的导出函数SetIoc

手动映射后解析并调用 SetIoC 导出。
SetIoC 先尝试获取 SeDebugPrivilege,为后续注入系统进程做准备。再枚举 360tray.exe,如果找到,进入 yinma.vc / ntrin.er 条件分支;无论是否找到,后续均运行 dxyvnb.ti 分支。

找到360tray.exe 进入 yinma.vc / ntrin.er 分支;两种结果均运行 dxyvnb.ti

SetIoC 的 360tray.exe 条件

SetIoC 的 dxyvnb.ti 后续处理分支
yinma.vc:线程池注入svchost.exe
Yinma.vc经 XOR 解码后包含 x64 sRDI 装载桩,内嵌 DLL 的导出函数为“ VC”,该函数功能是读取并以 XOR 0x36 解码 ntrin.er,并将解码后的shellcode注入svchost进程。
该“ VC”函数的作用先是获取svchost.exe句柄,后续线程池注入该进程。

保存 svchost.exe 的 PID
创建 PAGE_EXECUTE_READWRITE的共享 Section,权限为可执行。

创建共享 Section
随后准备 CreateThreadpoolIo 回调。

CreateThreadpoolIo 回调注册
通过长度为 1 字节的 WriteFile 写入,触发 I/O ,完成线程池注入。这属于共享 Section 映射 + 线程池 I/O 完成回调设计。

完成线程池注入
ntrin.er :反射加载监控关闭安全进程
ntrin.er 解码后的shellcode反射加载内嵌dll,该dll的导出函数为“ER”,ER 在宿主进程svchost内创建监控线程。线程通过遍历当前电脑进程,比对安全软件名单,尝试每隔100毫秒关闭安全软件进程。

VC 所处理的 ntrin.er sRDI 桩解析并调用内嵌 DLL
尝试每隔100毫秒关闭安全软件进程。

TerminateProcess尝试终止安全软件进程
进程名 | 注释 |
360safe | 360 |
QQPCRTP.exe | 腾讯电脑管家实时防护 |
QQPCTray.exe | 腾讯电脑管家托盘 |
QMSignScan.exe | 腾讯安全产品相关 |
QHActiveDefense.exe | 360 主动防御 |
QHWatchdog.exe | 360 监控 |
QHSafeMain.exe | 360 主程序 |
QHSafeTray.exe | 360 托盘 |
PopWndLog.exe | 安全产品辅助进程 |
PromoUtil.exe | 安全产品辅助进程 |
MsMpEng.exe | Microsoft Defender 反恶意软件服务 |
MpCmdRun.exe | Microsoft Defender 命令行工具 |
dxyvnb.ti:计划任务创建
dxyvnb.ti 则包含 Donut 风格装载器shellcode,该shellcode内嵌 一个Import-Task .NET EXE。以 VSSVC.exe 为目标进行线程池注入,目的是创建系统计划任务。
SetIoC 后续对已落地的 dxyvnb.ti 逐字节 XOR 0x36,得到 Donut 风格 shellcode;它携带名为 Import-Task 的 PE32。随后SetIoC 对电脑上的VSSVC.exe准备共享 Section区完成线程池 I/O 投递。非管理员条件下,程序还以runas 请求以管理员重新启动当前程序。

Donut 装载器转入内嵌 CLR 程序的调用点
该样本会尝试创建或更新两个计划任务,文件夹为 \Microsoft\Windows\Application Experience。两个任务名分别是是 TaskTrigger → comain_ev2c34\ev2c34.exe、TaskTrigger2 → comain_ev2f79\ev2f79.exe,并在系统登录约 20 秒后触发。
本地配置对应的分支跳过 AMSI / ETW 补丁例程
ev2c34.exe
该文件也带有Tencent Technology (Shenzhen) Company Limited腾讯科技数字签名,但不可用。

ev2c34.exe 属于 VCL 窗体程序,该进程会加载 VideoAdjustDLL.dll 并查找 CreateVideoAdjustTool。安装包中未提取到这份 DLL,所有该进程未能成功运行后续。
ev2c34.exe 调用 VideoAdjustDLL.dll / CreateVideoAdjustTool。
另外,虽然安装包中没有VideoAdjustDLL.dll该分支未能成功运行,我对后续的第二部分载荷bnymir.ou、bteuns.pt、cmrsk.ce、fhkan.oi、ap.asin也进行了分析。
bnymir.ou、bteuns.pt、cmrsk.ce、fhkan.oi 都是内嵌dll的反射式加载部件,ap.asin 可解出ip地址;但在 ev2c34.exe 可见入口、窗体事件和应用代码区未找到读取这五个文件的调用。
fhkan.oi
该部件也是反射加载内嵌dll,内嵌dll的导出函数首先会读取两个“dXBsaW5l”“bG9jYWxndWFyZA”dXBsaW5l互斥体。 若两个句柄都取得,自终止该进程。 OpenMutexA(SYNCHRONIZE, FALSE, "Local\\dXBsaW5l");
OpenMutexA(SYNCHRONIZE, FALSE, "Local\\bG9jYWxndWFyZA");

随后,该样本会选择线程池注入的进程,当UserAccountBroker.exe进程不存在时,注入edpnotify.exe进程。

ap.asin
ap.asin 长 260 字节,按 plain[i] = raw[i] XOR ((0x27×i + 0x5A) & 0xFF) 解码后,在两个 130 字节记录的起始处得到下列c2地址。
记录 | 解码后地址 |
1 | 103[.]215[.]76[.]91 |
2 | 43[.]135[.]48[.]48 |
这与6个月前腾讯安全威胁情报中心发布的相似手法样本的C2有差别,他们提取到的c2为:
143[.]92[.]56[.]242
43[.]129[.]232[.]247 相关链接:https://www.ctfiot.com/307255.html
说明此次分析的样本中的c2已被攻击者更新。
Yara检测规则:
rule QQDNGJ_Original_NSIS_Compressed_Stream_Fingerprint
{
meta:
description= "Direct raw-byte fingerprint of the observed NSIS compressed stream"
confidence= "high for the observed packed build; not behavioral or family-wide"
strings:
$nsis= "NullsoftInst" ascii
//四段原始压缩流字节
$block_a= { FC 0F 21 61 71 8C 42 05 CC E2 55 22 1C 9C 93 F9 6C 8B C3 8C F4 BD A2 90 }
$block_b= { 3B 55 9C BF FD EF 7C C8 A0 CD 1C 18 FB 15 43 86 73 BC 2A 4A 89 B5 CA 52 }
$block_c= { 02 7A 26 A0 C2 E8 6D 0E 42 A1 5B EC E9 65 4D DB D3 E1 64 97 1F 6E 43 52 }
$block_d= { 4E DF 92 0F 11 C8 90 B2 29 7F 93 2B 30 C5 4E 45 31 F5 0E A8 3E 3B CA F7 }
condition:
pe.is_peand pe.overlay.offset > 0 and pe.overlay.size > 16MB and
$nsisat pe.overlay.offset + 8 and
for3 of ($block_*) : ( $ in (pe.overlay.offset .. filesize - 1) )
}
IOC
释放文件 | 目录 | SHA-256 |
ev2f79.exe | %APPDATA%\comain_ev2f79\ | 47D444BBBB4C80A8250748DA17E34CEB82CE6353C6DA58FA912DE45A96C910B3 |
ntrin.er | %APPDATA%\comain_ev2f79\ | 6311D46495B54C0BBB3B1CE2962EAECA90E5BC7FB49FADEAD9D3DAC1A2A61FB0 |
otrm.oi | %APPDATA%\comain_ev2f79\ | B4B3881FAC7889E356623AA2BABDDD5DEA9ECEDCF9B2EDE0792FD3326C3D83CA |
yinma.vc | %APPDATA%\comain_ev2f79\ | 5427D1FFDBC7ECD5DAF28C73A4402A831A713CC414D9B5A3D7684CC7A7933538 |
dxyvnb.ti | %APPDATA%\comain_ev2f79\ | D70431FE84CA9362E194895817EB49419AB9B0585CFB64EBD3F934A391093C5E |
ev2c34.exe | %APPDATA%\comain_ev2c34\ | E2E6AF79DA0A97517B8110DFA078D4B5F401969A8F7400BBA1265AB26414AE0C |
bnymir.ou | %APPDATA%\comain_ev2c34\ | 80EA61AA50E8FC47F3DB2B37ECA7350B21A3AA8F957C7CF9490BB7C3757379E1 |
bteuns.pt | %APPDATA%\comain_ev2c34\ | 29FBB5ABC68C1C3F912500670F2CEB41B4BA3A9BF6AF9C9A681AEDFA7EB8E279 |
cmrsk.ce | %APPDATA%\comain_ev2c34\ | 2F592516E42BDF4B48EB92ECED833DB8C43681D00874257EE6E53395104D0142 |
fhkan.oi | %APPDATA%\comain_ev2c34\ | D50B4753FD94A5D80E3931356FB483CEEE749E7421E61DD5AA698805A2D6FF3B |
ap.asin | %APPDATA%\comain_ev2c34\ | BBC2DB469C8495998F22A23EACF3E97C5875A6B07B46179D187FE035E6098328 |
下面为解析出的内嵌 PE / Donut 模块。
内嵌模块 | SHA-256 |
otrm.oi → SetIoC DLL | 8FF7AA13E5EA85BEC125A8D3EA8775C0EBA8D925DF6979225F30EB6890A8D6C8 |
yinma.vc → VC DLL | DF4FF0BD8F8B3AEA68623F8A7CF354BBCCCACD4547B272D17FA29EA8A3C7D666 |
ntrin.er → ER DLL | 29239F15A5A0DEA341EB75BC810862E90B872DC08F945C396E626AF90D479433 |
bnymir.ou → AndUp DLL | A3212FD57D674BC8BF22E871A1F880E842FC507F2D6B9CD8BCFF9D5F1C4E431C |
bteuns.pt → Guard DLL | BF112E7A5AC0814433937B98A058FAE537D7E8DD3C1C6730E7D207BC9C4939A3 |
cmrsk.ce → CreateEnv DLL | 2263D7FB708B52E3A6F3B3C534FC7C07E92A8861287A684426622DE9F8CBF65A |
fhkan.oi → AndStop DLL | 29EEC87595F6EFB8C324C2FA26D79F371CB8351F22DC10976BDC4B47115DB10C |
dxyvnb.ti → Donut 内层模块 | 78323B984C1243C89220013EC030C178C3E62DC896ED94E5B42EEAA07C2D0F26 |
主机、网络及检测字符串
类别 | 值 | 说明 |
注册表 | HKCU\Software\MicrosoftUserAdmin\SOURCE = QQPCDownload310254 | 正常腾讯电脑管家安装 |
落地/快捷方式 | %PROGRAMFILES%\Community\QQPCDownload310254.exe;%DESKTOP%\QQPCDownload310254.lnk | 安装脚本释放并建快捷方式 |
服务/进程 | VSS;VSSVC.exe;svchost.exe | 系统上的VSS服务和两个线程池注入的进程 |
C2 | 103[.]215[.]76[.]91;43[.]135[.]48[.]48 | ap.asin解码得到c2 |















































































