
1. 银狐木马攻击链全解析最近在分析一个特别狡猾的木马样本攻击者把恶意代码藏在了搜狗拼音输入法的MSI安装包里。这种手法在安全圈被称为供应链攻击就像给快递包裹偷偷塞了违禁品。我拆解了整个攻击流程发现攻击者至少用了三层伪装第一层是合法的MSI安装包文件名为sogou_pinyin_guanwang.msi大小159.12MB看起来完全正常。用lessmsi工具打开后能看到里面包含两个关键文件qmbrowser.exe和sougo_pinyin_guanwang.exe。前者是带数字签名的合法程序后者是真正的输入法安装程序。第二层伪装藏在qmbrowser.exe里。这个程序会加载同目录下的qbcore.dll而这个DLL才是真正的恶意组件。攻击者很聪明地利用了白加黑技术——用合法程序加载恶意DLL这种手法能轻松绕过很多杀软的静态检测。第三层是qbcore.dll的shellcode加载机制。它会读取同目录下的1.txt文件这个看似普通的文本文件实际上是个PE加载器技术原型来自GitHub上的sRDI项目Shellcode Reflective DLL Injection。我逆向分析时发现攻击者对开源项目做了定制化改造使得加载过程更加隐蔽。2. 恶意DLL的Shellcode加载技术2.1 sRDI项目改造分析qbcore.dll的核心功能是加载并执行shellcode其技术实现基于著名的sRDI项目。这个开源工具原本是红队用来测试防御能力的现在却被黑产团伙拿来主义。我在分析时特别注意了攻击者的几处关键修改首先是对内存加载方式的优化。原始sRDI会一次性映射所有PE节区而恶意版本改为按需加载。当我在IDA中跟踪VirtualAlloc调用时发现它先分配小内存块加载DOS头和PE头等执行到具体功能时才动态加载对应节区。其次是字符串混淆。所有关键API函数名如CreateProcessInternalW、NtCreateSection都采用运行时解密。我调试时不得不在内存下断点等字符串解密后才能看到真实调用的函数。最狡猾的是错误处理机制。当检测到调试器时通过IsDebuggerPresent和CheckRemoteDebuggerPresent它会转而执行一段看似正常的代码路径——加载系统自带的version.dll并调用无关函数。这种反沙箱技巧让自动化分析工具很容易误判。2.2 文件隐藏技巧攻击者在同目录下放置的1.txt文件实际上是个精心设计的PE加载器。通过010 Editor查看二进制结构可以发现它伪装成文本文件的几个特征文件开头是合法的UTF-8 BOM头EF BB BF前512字节填充了可打印字符真实PE结构从0x400偏移开始节区名称伪装成.text、.data等合法名称这种手法能骗过简单的文件类型检测。我在测试时发现用file命令检测会显示UTF-8 Unicode text只有用binwalk深度扫描才能发现内嵌的PE结构。3. 持久化与防御规避技术3.1 三重持久化机制这个木马实现了三种不同的持久化方式会根据执行环境自动选择最优方案第一种是注册表启动项。当直接运行时会记录启动时间到HKCU\Software\Microsoft\Windows\CurrentVersion\Run键值伪装成系统更新相关名称。第二种是服务安装。木马会把自己复制到Windows\system\Umnof.exe然后创建名为Xyarsj Lmefw的服务。有趣的是它会修改文件前0x400字节为随机数据这招专门对抗基于文件哈希的检测。第三种是启动目录复制。通过DefineDosDeviceA创建特殊链接后将自身拷贝到启动目录。我实测发现它还会监控这些持久化点如果被删除会自动恢复。3.2 反分析技巧在逆向过程中我遇到了几个精心设计的反分析陷阱时间炸弹木马检查系统安装时间如果小于30天就休眠24小时再执行环境检测通过GetSystemMetrics检查屏幕分辨率、鼠标移动轨迹等垃圾代码插入大量无意义的算术运算和API调用干扰静态分析互斥体迷惑创建名为Global{CommandLineA}的互斥体实际功能却与命名无关最绝的是它的自清洁功能。当通过服务启动时会立即执行cmd /c del [自身路径]删除原始文件使得取证更加困难。4. C2通信与功能模块分析4.1 加密通信机制木马连接C2服务器45.207.12.71:1815时采用多层加密初始握手使用RC4加密密钥硬编码在资源段后续通信采用动态生成的XOR密钥关键指令额外用TEA算法二次加密我在分析网络流量时发现它还会伪装成正常的HTTPS流量。只有当检测到特定User-Agent包含qbmobile字符串时才启用真实功能。4.2 模块化功能设计木马实现了超过30种功能命令这里列举几个典型模块系统管理模块命令0x1Crunas提权执行命令0x5B清理Windows事件日志命令0x28添加Defender排除路径数据窃取模块命令0x3A键盘记录命令0x40麦克风录音命令0x8f注册表项导出浏览器攻击模块命令0x22清除QQ浏览器数据命令0x24窃取Chrome历史记录命令0x27劫持360安全浏览器特别值得注意的是命令0x56它会将配置信息写入C:\ProgramData\config.ini。这个文件采用INI格式但实际是序列化数据解析后发现包含C2备用地址和触发条件。5. 防御检测方案针对这类供应链攻击我总结了几种有效的检测方法静态检测检查MSI包中的异常文件关系如合法exe加载非标准dll扫描文本文件中嵌入的PE结构检测sRDI特征字节序列如0xE8, 0x00, 0x00, 0x00, 0x00动态检测监控CreateProcess与LoadLibrary的异常调用链记录服务创建时的异常命名模式捕获DefineDosDeviceA的非常规使用网络检测识别RC4TEA的混合加密流量检测包含特定User-Agent的TCP连接分析心跳包的时间间隔规律在实际防御中建议结合YARA规则和EDR的进程行为监控。我编写的一个检测规则曾成功捕获变种样本关键点是匹配服务描述中的异常空格分布如Rsklmdev Xypqrjkcd Fvwopqi这种不自然的单词组合。