名单类型银狐样本的对抗分析
字数 2679
更新时间 2026-02-27 12:41:52

银狐样本对抗分析与混淆去除教学文档

1. 背景与样本概况

近期出现一类活跃且变化迅速的银狐攻击样本。典型的钓鱼文件名为“2026年第一季度违规内职人员名单信息公告.exe”。该攻击团伙的加载器经过多次迭代,近期主要在混淆技术上进行升级,增加了混淆强度,导致传统静态分析工具(如IDA)难以处理,甚至容易崩溃,动态单步调试效率低下,关键函数被大量垃圾代码遮蔽,影响分析。

2. 样本初步行为分析

选取一个较新的样本进行分析,其哈希值为:8cd23d5552c846482cefa3a0344928e924312416a9ac6f1b9f2e6a1f05ae13f2

2.1 反调试检测
程序入口处包含简单的调试器检测逻辑,一旦检测到调试器存在,则直接退出程序。这是对抗分析的第一道屏障。

2.2 代码段解密
样本在初始阶段并非直接执行混淆代码,而是增加了一层解密层。其核心流程如下:

  1. 通过调用 ZwProtectVirtualMemory 修改 .text 代码段的内存属性(例如,改为可写可执行)。
  2. 对位于 .text 段的特定区域进行异或解密。这部分数据属于编译后处理(Post-Compilation)的附加数据,并非原始编译产物。
  3. 解密完成后,程序的控制流才会跳转到解密后的真实代码开始执行。此阶段函数调用多为间接调用,增加了跟踪难度。

3. 核心混淆技术与静态分析对抗

解密后的代码呈现出高度混淆的特征,主要体现在虚假控制流(Bogus Control Flow, BCF)上。

3.1 不透明谓词(Opaque Predicate)
这是BCF的一种常见实现。在IDA的流程图中,表现为密密麻麻、挤成一团的基础块(Basic Blocks)。查看伪代码,会发现存在大量复杂的算术运算和条件判断,但这些运算的结果在运行前实际是确定的(例如,始终为真或始终为假),从而引导或误导分析者,插入大量永不执行的“死代码”。

3.2 常量隐藏技术
混淆器通过两种主要方式隐藏真实代码中的常量值,阻止IDA的常量传播与简化分析:

  1. 函数封装常量:将常量值放在一个单独的函数中返回。例如,函数 sub_14008E740() 的执行结果始终返回一个固定值(如数字6),但IDA在静态分析时无法直接计算此调用结果,因此保留了复杂的函数调用逻辑。
  2. 全局变量伪装常量:将常量声明为全局变量(如 char byte_1400BE9C0),并赋予初始值。通过检查交叉引用可以发现,这些变量只有读取操作,没有写入操作,因此其值在运行时恒定不变,本质就是常量。

4. 基于IDA的自动化去混淆方法

面对这种混淆,可以采用动态调试定位关键API,但本教学文档遵循原文“静态对抗”的思路,重点讲解如何利用IDA Python脚本进行自动化去混淆,提升静态分析效率。

核心目标:利用IDA的“死代码消除”(DCE)优化原理,通过代码修补(Patching),将混淆器隐藏的常量“暴露”给IDA分析引擎,使其能够简化代码。

4.1 去除“函数封装常量”混淆

  • 识别:首先需要识别出那些仅返回固定常量的函数。可通过人工分析或脚本特征匹配(如函数体积小、无参数、返回值固定)来确定目标函数列表。
  • 修补策略:将对这些函数的 call 指令,替换为等效的“将立即数移入寄存器”的指令。
    • 例如,对于始终返回 6call sub_14008E740,可将其替换为 mov al, 6
    • 由于原始 call 指令(5字节)与 mov al, imm8(2字节)长度不同,需要用空操作指令 nop 填充剩余的字节。
    • 注意:实际生成的代码可能是 xor al, al(将al清零)等形式,编写脚本时需要考虑这些等价形式。

4.2 修正“全局变量伪装常量”

  • 识别:通过交叉引用分析,定位所有只有读取(R)引用、没有写入(W)引用的全局字符(char)型变量。
  • 修补策略:在IDA中修改这些全局变量的类型定义,将其从 char 改为 const char。这相当于告诉IDA该变量是常量,从而允许其在后续分析中进行常量传播和折叠优化。

4.3 脚本执行与效果
编写并执行IDA Python脚本,依次完成上述两类修补。完成后,IDA重新生成伪代码,可见代码逻辑大幅简化:

  • 大量基于不透明谓词的无效分支和垃圾计算被消除。
  • 代码流程变得清晰可读,虽然可能仍有冗余赋值,但核心算法已显现。

例如,去混淆后的一段解密算法核心逻辑得以显露:
v13[i] = (i - 111) + v13[i] - 2 * ((i - 111) & v13[i])
通过观察可知,每个字符的解密密钥与索引 i 和一个随机数相关,据此可轻松编写解密脚本。

5. 关键功能分析

去混淆后,能够快速定位到样本的核心恶意代码:

  1. 服务发现:样本会遍历系统服务,寻找“计划任务”服务(Schedule)的进程PID,为后续的进程注入做准备。
  2. 进程注入:分析表明,该样本使用ALPC(高级本地过程调用) 机制进行进程注入。去混淆并手动简化后的注入代码流程,与已知的攻击技术 PoolParty的RemoteTpAlpcInsertion 相对应。这是一种利用线程池和ALPC端口进行远程线程注入的技术,具有较好的隐蔽性。
  3. 后续行为:完成注入后,样本会执行典型的自我删除操作,并部署最终的Shellcode。此部分攻击链与银狐团伙以往的攻击方式相比没有显著变化。

6. 总结与IoC

6.1 分析总结

  • 对抗要点:该银狐变种的核心对抗手段是强静态混淆,结合简单的动态检测。采用“解密层+虚假控制流+常量隐藏”的组合拳,旨在阻碍自动化分析工具和安全研究人员的静态分析效率。
  • 对抗方法:通过编写IDA脚本,将混淆代码中隐藏的常量“固化”,辅助IDA的DCE优化,是突破此类混淆的有效静态分析方法。配合动态调试进行关键点验证,能高效完成分析。

6.2 危害指标(IoC)

  • 样本哈希(SHA-256)8cd23d5552c846482cefa3a0344928e924312416a9ac6f1b9f2e6a1f05ae13f2
  • 典型文件名2026年第一季度违规内职人员名单信息公告.exe(或类似利用社会工程学的名称)
  • 关键注入技术:利用ALPC机制的RemoteTpAlpcInsertion。
 全屏