找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2033

积分

0

好友

285

主题
发表于 5 天前 | 查看: 10| 回复: 0

银狐木马一阶段分析

银狐木马样本形态多变,本次分析的PE样本是一个32位的GUI程序。通过静态分析工具可以看出,这是一个Nullsoft Scriptable Install System (NSIS) 安装程序。NSIS安装包会将安装脚本、压缩后的Payload等内容嵌入在二进制文件中。静态分析工具加载信息如下图:

PE文件静态分析信息

NSIS安装器首先通过 GetTempPathA 获取一个可写的临时目录;如果失败,则回退至 C:\Windows\Temp,以保证执行的可靠性。随后,它会创建一个NSIS专用的工作目录(~nsu.tmp),并将当前目录切换至该位置。其代码逻辑如下图:

NSIS安装器代码逻辑

分析发现,真正有用的文件只有两个:Thunder.exelibexpat.dllThunder.exe 是由迅雷开发的合法、已数字签名的可执行文件,通常作为迅雷下载管理器生态的一部分分发。在该感染链中,这个二进制本身并不具备恶意行为,而是被滥用为 DLL劫持的宿主程序。如下图:

临时目录中的文件列表

Thunder.exe 从安装器的临时目录中执行时,由于Windows默认的DLL搜索顺序,它会优先从本地路径加载 libexpat.dll。这一行为可以在 x64dbg 中得到验证。如下图:

x64dbg调试验证DLL加载

银狐木马二阶段分析

被释放的 libexpat.dll 并未导出任何有意义的函数,也不会被 Thunder.exe 显式调用。该DLL依赖Windows加载器机制,通过 DllMain 回调执行代码。无论DLL是否导出函数、是否被宿主进程主动使用,该回调都会被无条件调用。

主函数一开始就执行了多种反调试和反沙箱技术。该DLL会进行进程枚举,扫描进程列表以查找常见的分析工具和沙箱环境。同时,DLL还会查询系统资源,检查是否满足最低运行要求。此外,一旦检测到任何沙箱环境,恶意程序就会立即终止自身运行。代码逻辑如下图:

反分析和反沙箱检查代码

当DLL完成反分析检查后,便进入核心执行逻辑。它首先禁用Windows Update服务(wuauserv),随后从磁盘加载一个加密的Payload。该Payload通过动态解析的方式运行,并从临时目录中加载 box.ini 文件。该文件会被完整读入内存,使用内嵌的加密常量进行解密,随后以shellcode的形式执行。其代码逻辑如下图:

加载并执行加密Payload的代码

box.ini 文件的内容如下图:

加密的box.ini文件内容

该shellcode采用了一种经典的进程注入技术来执行。执行流程首先会检查 explorer.exe 是否存在,并将其作为后续的目标进程。随后以挂起状态启动该进程,恶意程序获取其初始线程上下文。接着,通过 VirtualAllocEx 在远程进程中分配可执行内存,并使用 WriteProcessMemory 将Payload写入该进程内存中。其代码逻辑如下图:

进程空壳化注入代码

LogStatus 函数实现了一个在整个DLL中使用的内部日志机制,用于记录执行进度和错误状态。该函数会生成带有时间戳的日志消息,将其追加写入本地文件(C:\data.db),并在写入磁盘前对内容应用一种轻量级的自定义混淆处理。其代码逻辑如下图:

LogStatus函数实现

银狐木马三阶段分析

通过附加调试器到被空壳化的 explorer.exe 进程,并监控由 VirtualAllocEx 分配的内存区域,可以转储注入的Payload。当Payload被 WriteProcessMemory 写入并且执行流被重定向后,可直接从内存中提取该区域,从而获得下一阶段的Payload进行分析。通过调试器可以看到被加密的Payload如下图:

内存中提取的加密Payload

分析解密后的Payload发现,最终Payload是由Donut生成的shellcode。在该场景下,Donut被用于将一个托管Payload封装成原始shellcode,使其能够完全在内存中执行而不落地到磁盘。这对恶意软件分析人员提出了挑战。

解密后的Payload如下图:

解密后的Donut Shellcode

使用工具查看Payload如下图:

Donut版本信息识别

可以使用 undonutdonut-decryptor 工具来dump Donut的Payload。
undonut 下载地址:
https://github.com/listinvest/undonut

donut-decryptor 下载地址:
https://github.com/volexity/donut-decryptor

银狐木马四阶段分析

当Donut加载器成功将最终Payload注入到被空壳化的 explorer.exe 进程后,Valley RAT会初始化其复杂的配置管理子系统。它首先设置反分析流程,然后调用 sub_405E40() 函数初始化配置,并创建用于C2通信的线程。

该函数实现了一个两阶段加载机制,共解析出22个不同的配置参数。

第一阶段

命令与控制(C2)基础设施(9 个参数):

  • p1:, p2:, p3: —— 三层C2服务器地址(与网络分析中发现的 b[.]yuxuanow[.]top 对应)
  • o1:, o2:, o3: —— 各层 C2 对应的端口号
  • t1:, t2:, t3: —— 连接类型标志(1 = HTTP/HTTPS,0 = 原始 TCP 套接字)

运行参数(5 个参数):

  • dd: —— 首次 C2 通信前的初始休眠时间(秒)
  • cl: —— Beacon 回连间隔(秒)
  • bb: —— 构建/僵尸版本号(观察到为 1.0)
  • bz: —— 备用 C2 地址
  • fz: —— 未知参数

功能开关(8 个布尔参数):

  • kl: —— 键盘记录(1 启用,0 禁用)
  • sh: —— 远程 Shell(1 启用,0 禁用)
  • bd: —— 完整后门模式(1 启用,0 禁用)
  • dl: —— 下载/文件传输能力
  • jp:, sx:, bh:, ll: —— 其他功能开关

对应的C2配置代码如下图:

Valley RAT内嵌C2配置代码

第二阶段

加载内嵌配置后,Valley RAT 会查询 Windows 注册表以获取更新的 C2 基础设施信息。如下图:

注册表查询更新配置代码

如果注册表值存在且长度超过 10 字节,Valley RAT 会完全替换其内嵌配置,随后只重新解析关键的 C2 参数(p1t3)。

这使得银狐木马操作人员无需重新部署新样本或重新获取执行权限,就能动态更新 C2 地址。如下图:

C2通信故障切换逻辑代码

该通信循环通过在主C2(p1)备用 C2(p2) 之间交替通信来实现多层级故障切换,在连续失败200 次后切换到第三层 C2(p3)。它同时支持HTTP/HTTPS原始 TCP 协议,并使用可配置的回连间隔(cl:)以降低被检测的概率,同时通过延迟首次连接(dd:)来规避沙箱环境。

在成功建立连接后,Valley RAT 会发送一个 “ready” 信标(命令 ID:4),如果配置中启用了键盘记录功能(kl: 标志),则激活该功能,随后进入等待C2指令的状态。该架构与已发现的基础设施高度吻合:b[.]yuxuanow[.]top(103.20.195[.]147) 作为主 shellcode C2,二级/三级 C2 在 itdd[.]club、gov-a[.]work 和 xzghjec[.]com 等域名之间轮换。

Valley RAT 实现了一种模块化插件架构,通过基于注册表的持久化机制来实现能力的动态扩展。该恶意软件会将下载的插件存储在注册表路径 HKCU\Console\0\d33f351a4aeea5e608853d1a56661059 下,该注册表值名称与 Valley RAT 已确立的指纹特征一致,遵循在多个 Valley RAT 攻击活动中观察到的 MD5 哈希命名规则

插件管理器有两种运行模式:一种是从C2 服务器接收模块,在内存中分配具有 PAGE_EXECUTE_READWRITE 权限的可执行内存,并将2628字节的配置数据加上插件载荷代码REG_BINARY 的形式持久化写入注册表;另一种是从注册表中读取之前已存储的插件,将其与硬编码的签名进行校验后,创建执行线程运行。

每个插件都包含一个魔数字节保护(0xC9),用于防止重复执行。该架构使 Silver Fox 操作人员能够按需向受感染系统部署诸如高级键盘记录、凭据窃取或横向移动等专用能力模块,并通过注册表存储实现跨重启的自动持久化。如下图:

插件注册表持久化代码

在从C2服务器下载插件后,Valley RAT会使用相同的进程空壳化技术,将插件注入到 tracerpt.exe 中。tracerpt.exe 是一个由 Microsoft 签名的合法系统工具。恶意软件会以挂起状态创建该进程,将插件代码注入其内存,并将执行流重定向到恶意载荷。

在注入之前,攻击者还会使用此前分析过的、包含C2地址和功能标志的 4768 字节配置数据对插件进行补丁处理,以确保插件在运行时具备完整的通信与功能控制能力。如下图:

插件注入tracerpt.exe代码

银狐木马IOC

第一阶段文件Sha256 Hash:
77ea62ff74a66f61a511eb6b6edac20be9822fa9cc1e7354a8cd6379c7b9d2d2

第二阶段文件Sha256 Hash:
fa388a6cdd28ad5dd83acd674483828251f21cbefaa801e839ba39af24a6ac19

第三阶段文件Sha256 Hash:
f74017b406e993bea5212615febe23198b09ecd73ab79411a9f6571ba1f94cfa

第四阶段文件Sha256 Hash:
068e49e734c2c7be4fb3f01a40bb8beb2d5f4677872fabbced7741245a7ea97c

域名:
ggwk[.]cc
b[.]yuxuanow[.]top

IP地址:
45.207.231[.]94
103.20.195[.]147

以下是银狐木马的其它基础设施和对应的IP:
itdd[.]club 45.207.231[.]107
xzghjec[.]com   8.217.9[.]165
gov-a[.]work    160.124.9[.]103
gov-a[.]fit 160.124.9[.]103
gvo-b[.]club    160.124.9[.]103
gov-c[.]club    160.124.9[.]103
gov-a[.]club    160.124.9[.]103
govk[.]club 160.124.9[.]103
dingtalki[.]cn  47.239.225[.]43
hhiioo[.]cn 43.100.22[.]158
kkyui[.]club    43.100.22[.]158
hhimm[.]work    43.100.22[.]158
swjc2025bjkb[.]cn   43.100.123[.]207
2025swmm[.]cn   43.100.123[.]207
hhiioo[.]work   43.100.63[.]145

欢迎在 云栈社区 交流更多安全技术。




上一篇:Python开发者必备:10个提升效率的内置模块详解
下一篇:Python 2026:为什么它仍是全栈开发与AI项目的首选语言
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 09:03 , Processed in 0.295196 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表