一款mm的免杀启动架构分析
字数 2502 2025-08-23 18:31:25

MM免杀启动架构深度分析与技术教学

一、MSI文件作为初始载体

1. MSI文件特性

  • 本质:Microsoft Installer安装包,由Windows系统的MS Installer系统服务解析执行
  • 权限优势:运行在SYSTEM账户下,可获得管理员甚至SYSTEM最高权限
  • 分析工具:使用微软"Orca"工具可查看MSI内部结构

2. 恶意MSI结构分析

  • 表面伪装:图形界面的正常程序外观
  • 真实payload存放位置:disk1.cab压缩包中
  • 关键表项:
    • CustomAction表:存储安装过程中的自定义操作
    • InstallExecuteSequence表:定义安装执行顺序
  • 安装路径:C:\Windows\HAHA(非常规路径)

二、多级加载器架构

1. 第一级加载器:viewer.exe

  • 功能特点:
    • 通用启动器,主要调用ShellExecuteEx启动多种类型文件
    • 设计原则:功能简单,调用特征函数少,减少杀软检测特征
  • 分析难点:
    • 使用较新VS版本开发,需要IDA 7.7+才能正确识别winmain

2. 第二级加载器:CNM.exe

  • 文件构造:
    • 由"txt"和"txt_1"两个文件二进制连接而成
    • "txt"仅含"MZ"两个字节(PE文件起始magic字符)
  • 功能实现:
    • 加载并解密opk.txt(按字节xor 0x6C)
    • 使用CreateTimerQueueTimer延时100ms执行shellcode(规避行为检测)
  • 文件特征:
    • 代码量与文件大小不符,疑似从原始程序扣取部分重填加载代码

3. 第三级加载器:opk.txt(shellcode)

  • 本质功能:DLL Loader
  • 技术特点:
    • 加载自身尾部携带的处理过的DLL到0x10000000地址
    • 特殊处理:
      • 内嵌DLL无DOS头,Loader补全但不加"MZ"magic字符
      • Import Directory顺序打乱,由加载器负责复原正确IAT
  • 关键函数:
    • sub_32:加载DLL并通过call eax跳转到DLL入口点

三、内存DLL与后续阶段

1. opk加载的内存DLL功能

  • 对抗安全软件:专门针对360的对抗功能
  • 持久化:实现驻留机制
  • 网络操作:下载关键DLL(libcurl.dll)
  • 进程控制:启动下一级erp.exe后退出CNM.exe进程

2. 第四级加载器:erp.exe

  • 文件特征:
    • 带有数字签名但缺少开发者信息
    • 包含CCLiveMTR.pdb信息(疑似基于CCLive类标准程序修改)
  • 行为特征:
    • 读取配置文件:C:\Windows\HAHA\CCLiveMTR.conf
    • 网络连接:videoms.cc.163.com
    • 日志记录:C:\Users\[用户名]\AppData\Roaming\CC\logs\CCLiveMTR.log
  • 免杀技术:
    • 不改动带签名的exe,而是篡改其调用的非系统DLL(libcurl.dll)
    • 关键DLL从互联网动态下载

3. libcurl.dll篡改技术

  • 目标函数:curl_easy_init被篡改
  • shellcode加载过程:
    1. 读取C:\Windows\HAHA\xo.had文件(shellcode)
    2. 解密算法:(v6 ^ 0x7B) + 0x7B) ^ 0x7B
    3. 使用XMM寄存器实现并行处理提高效率
    4. 通过CryptEnumOIDInfo的回调函数指针跳转到shellcode

4. 最终payload:xo.had

  • 结构特点:
    • 尾部附带DLL的Loader
    • 加载的DLL在DllMain中仅调用DisableThreadLibraryCalls
    • 真实功能在导出函数RunDll中实现
  • 远控功能:
    • 自定义传输协议和简单加密算法
    • 连接香港服务器(分析时已下线)
    • 复杂跳转表实现多功能调度
    • 多线程处理机制

四、免杀技术总结

1. 文件层面技术

  • 合法文件利用
    • 使用带数字签名的合法程序(如erp.exe)
    • 不改动可执行文件本身,而是篡改其调用的DLL
  • 文件分割技术
    • 将PE文件分割为仅含"MZ"的小文件和主体部分
    • 运行时动态组合,规避基于"MZ"magic字符的检测
  • 非常规安装路径:使用C:\Windows\HAHA等非标准目录

2. 加载执行技术

  • 多级跳转架构:至少5级加载过程(viewer→CNM→opk→erp→libcurl→xo)
  • 延时执行:使用CreateTimerQueueTimer等非典型函数实现延时执行
  • 内存加载:关键payload始终在内存中加载执行,不落盘
  • 动态下载:关键恶意组件(如libcurl.dll)从互联网动态下载

3. 对抗分析技术

  • 行为伪装:模拟合法程序行为(如CCLiveMTR的配置读取、日志记录)
  • 代码混淆
    • 导入表顺序打乱
    • 自定义解密算法
    • 使用非常规跳转方式(CryptEnumOIDInfo回调)
  • 模块化设计:各阶段功能分离,便于单独替换免杀

五、防御检测建议

  1. 静态检测增强

    • 检测非常规PE文件结构(如缺失DOS头的DLL)
    • 监控Import Directory异常情况
    • 识别多文件组合执行的异常行为
  2. 动态行为监控

    • 监控CreateTimerQueueTimer等非常规执行跳转
    • 检测内存中非标准DLL加载行为
    • 跟踪多级进程创建链
  3. 网络行为分析

    • 监控程序异常下载行为
    • 检测与非常规域名(如videoms.cc.163.com)的连接
    • 分析非标准端口通信
  4. 系统加固

    • 限制非标准目录(如C:\Windows\HAHA)的可执行文件运行
    • 监控数字签名程序的异常DLL加载行为
    • 实施最小权限原则,限制SYSTEM权限滥用

六、技术演进观察

  1. 已发现基于此架构的至少两个变种版本
  2. 框架化设计允许快速替换被杀组件
  3. 趋势:越来越多利用合法数字签名程序+篡改DLL的组合方式
  4. 云沙箱对抗:通过多级延时和合法行为伪装规避动态分析

此架构代表了当前高级免杀技术的典型实现,其模块化设计和多级跳转机制为防御检测带来了显著挑战。防御方需采用多层次、立体化的检测策略才能有效应对此类威胁。

MM免杀启动架构深度分析与技术教学 一、MSI文件作为初始载体 1. MSI文件特性 本质:Microsoft Installer安装包,由Windows系统的MS Installer系统服务解析执行 权限优势:运行在SYSTEM账户下,可获得管理员甚至SYSTEM最高权限 分析工具:使用微软"Orca"工具可查看MSI内部结构 2. 恶意MSI结构分析 表面伪装:图形界面的正常程序外观 真实payload存放位置:disk1.cab压缩包中 关键表项: CustomAction表:存储安装过程中的自定义操作 InstallExecuteSequence表:定义安装执行顺序 安装路径:C:\Windows\HAHA(非常规路径) 二、多级加载器架构 1. 第一级加载器:viewer.exe 功能特点: 通用启动器,主要调用ShellExecuteEx启动多种类型文件 设计原则:功能简单,调用特征函数少,减少杀软检测特征 分析难点: 使用较新VS版本开发,需要IDA 7.7+才能正确识别winmain 2. 第二级加载器:CNM.exe 文件构造: 由"txt"和"txt_ 1"两个文件二进制连接而成 "txt"仅含"MZ"两个字节(PE文件起始magic字符) 功能实现: 加载并解密opk.txt(按字节xor 0x6C) 使用CreateTimerQueueTimer延时100ms执行shellcode(规避行为检测) 文件特征: 代码量与文件大小不符,疑似从原始程序扣取部分重填加载代码 3. 第三级加载器:opk.txt(shellcode) 本质功能:DLL Loader 技术特点: 加载自身尾部携带的处理过的DLL到0x10000000地址 特殊处理: 内嵌DLL无DOS头,Loader补全但不加"MZ"magic字符 Import Directory顺序打乱,由加载器负责复原正确IAT 关键函数: sub_ 32:加载DLL并通过call eax跳转到DLL入口点 三、内存DLL与后续阶段 1. opk加载的内存DLL功能 对抗安全软件:专门针对360的对抗功能 持久化:实现驻留机制 网络操作:下载关键DLL(libcurl.dll) 进程控制:启动下一级erp.exe后退出CNM.exe进程 2. 第四级加载器:erp.exe 文件特征: 带有数字签名但缺少开发者信息 包含CCLiveMTR.pdb信息(疑似基于CCLive类标准程序修改) 行为特征: 读取配置文件:C:\Windows\HAHA\CCLiveMTR.conf 网络连接:videoms.cc.163.com 日志记录:C:\Users\[用户名 ]\AppData\Roaming\CC\logs\CCLiveMTR.log 免杀技术: 不改动带签名的exe,而是篡改其调用的非系统DLL(libcurl.dll) 关键DLL从互联网动态下载 3. libcurl.dll篡改技术 目标函数:curl_ easy_ init被篡改 shellcode加载过程: 读取C:\Windows\HAHA\xo.had文件(shellcode) 解密算法:(v6 ^ 0x7B) + 0x7B) ^ 0x7B 使用XMM寄存器实现并行处理提高效率 通过CryptEnumOIDInfo的回调函数指针跳转到shellcode 4. 最终payload:xo.had 结构特点: 尾部附带DLL的Loader 加载的DLL在DllMain中仅调用DisableThreadLibraryCalls 真实功能在导出函数RunDll中实现 远控功能: 自定义传输协议和简单加密算法 连接香港服务器(分析时已下线) 复杂跳转表实现多功能调度 多线程处理机制 四、免杀技术总结 1. 文件层面技术 合法文件利用 : 使用带数字签名的合法程序(如erp.exe) 不改动可执行文件本身,而是篡改其调用的DLL 文件分割技术 : 将PE文件分割为仅含"MZ"的小文件和主体部分 运行时动态组合,规避基于"MZ"magic字符的检测 非常规安装路径 :使用C:\Windows\HAHA等非标准目录 2. 加载执行技术 多级跳转架构 :至少5级加载过程(viewer→CNM→opk→erp→libcurl→xo) 延时执行 :使用CreateTimerQueueTimer等非典型函数实现延时执行 内存加载 :关键payload始终在内存中加载执行,不落盘 动态下载 :关键恶意组件(如libcurl.dll)从互联网动态下载 3. 对抗分析技术 行为伪装 :模拟合法程序行为(如CCLiveMTR的配置读取、日志记录) 代码混淆 : 导入表顺序打乱 自定义解密算法 使用非常规跳转方式(CryptEnumOIDInfo回调) 模块化设计 :各阶段功能分离,便于单独替换免杀 五、防御检测建议 静态检测增强 : 检测非常规PE文件结构(如缺失DOS头的DLL) 监控Import Directory异常情况 识别多文件组合执行的异常行为 动态行为监控 : 监控CreateTimerQueueTimer等非常规执行跳转 检测内存中非标准DLL加载行为 跟踪多级进程创建链 网络行为分析 : 监控程序异常下载行为 检测与非常规域名(如videoms.cc.163.com)的连接 分析非标准端口通信 系统加固 : 限制非标准目录(如C:\Windows\HAHA)的可执行文件运行 监控数字签名程序的异常DLL加载行为 实施最小权限原则,限制SYSTEM权限滥用 六、技术演进观察 已发现基于此架构的至少两个变种版本 框架化设计允许快速替换被杀组件 趋势:越来越多利用合法数字签名程序+篡改DLL的组合方式 云沙箱对抗:通过多级延时和合法行为伪装规避动态分析 此架构代表了当前高级免杀技术的典型实现,其模块化设计和多级跳转机制为防御检测带来了显著挑战。防御方需采用多层次、立体化的检测策略才能有效应对此类威胁。