夜雨聆风学习资料网

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

相关学习资料