一款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加载过程:
- 读取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的组合方式
- 云沙箱对抗:通过多级延时和合法行为伪装规避动态分析
此架构代表了当前高级免杀技术的典型实现,其模块化设计和多级跳转机制为防御检测带来了显著挑战。防御方需采用多层次、立体化的检测策略才能有效应对此类威胁。