news 2026/7/26 9:46:21

银狐木马伪装术:从搜狗拼音MSI安装包到Shellcode加载全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
银狐木马伪装术:从搜狗拼音MSI安装包到Shellcode加载全解析

1. 银狐木马攻击链全解析

最近在分析一个特别狡猾的木马样本,攻击者把恶意代码藏在了搜狗拼音输入法的MSI安装包里。这种手法在安全圈被称为"供应链攻击",就像给快递包裹偷偷塞了违禁品。我拆解了整个攻击流程,发现攻击者至少用了三层伪装:

第一层是合法的MSI安装包,文件名为sogou_pinyin_guanwang.msi,大小159.12MB,看起来完全正常。用lessmsi工具打开后能看到里面包含两个关键文件:qmbrowser.exesougo_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函数名(如CreateProcessInternalWNtCreateSection)都采用运行时解密。我调试时不得不在内存下断点,等字符串解密后才能看到真实调用的函数。

最狡猾的是错误处理机制。当检测到调试器时(通过IsDebuggerPresentCheckRemoteDebuggerPresent),它会转而执行一段看似正常的代码路径——加载系统自带的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)时采用多层加密:

  1. 初始握手使用RC4加密,密钥硬编码在资源段
  2. 后续通信采用动态生成的XOR密钥
  3. 关键指令额外用TEA算法二次加密

我在分析网络流量时发现,它还会伪装成正常的HTTPS流量。只有当检测到特定User-Agent(包含"qbmobile"字符串)时才启用真实功能。

4.2 模块化功能设计

木马实现了超过30种功能命令,这里列举几个典型模块:

系统管理模块

  • 命令0x1C:runas提权执行
  • 命令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)

动态检测

  • 监控CreateProcessLoadLibrary的异常调用链
  • 记录服务创建时的异常命名模式
  • 捕获DefineDosDeviceA的非常规使用

网络检测

  • 识别RC4+TEA的混合加密流量
  • 检测包含特定User-Agent的TCP连接
  • 分析心跳包的时间间隔规律

在实际防御中,建议结合YARA规则和EDR的进程行为监控。我编写的一个检测规则曾成功捕获变种样本,关键点是匹配服务描述中的异常空格分布(如"Rsklmdev Xypqrjkcd Fvwopqi"这种不自然的单词组合)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 14:33:36

Spug 社区案例集:300人企业运维效率提升40%实践

Spug 社区案例集:300人企业运维效率提升40%实践 【免费下载链接】spug openspug/spug: Spug 是一个开源的企业级运维自动化平台,支持资产管理、作业调度、配置管理、脚本执行等多种运维场景,帮助企业提升运维效率。 项目地址: https://gitc…

作者头像 李华
网站建设 2026/7/14 14:33:36

新能源场景生成与削减:Matlab 实现之旅

新能源场景生成与削减 风电、光伏、新能源 软件:Matlab 介绍:(时序蒙塔卡洛模拟?启发式同步回带削减) 根据weibull和beta分布生成场景根据预测生成100次风电光伏场景,常规负荷正态分布,然后再进行削减到5个…

作者头像 李华
网站建设 2026/7/14 14:33:38

LiuJuan20260223Zimage模型Java客户端调用详解与性能优化

LiuJuan20260223Zimage模型Java客户端调用详解与性能优化 最近在项目中集成了LiuJuan20260223Zimage模型,发现它的图像生成能力确实不错。不过,作为后端开发者,我们更关心的是如何把它稳定、高效地集成到自己的Java服务里。直接调用API很简单…

作者头像 李华
网站建设 2026/7/14 14:33:35

终极README模板使用指南:5分钟打造专业开源项目文档

终极README模板使用指南:5分钟打造专业开源项目文档 【免费下载链接】Best-README-Template An awesome README template to jumpstart your projects! 项目地址: https://gitcode.com/gh_mirrors/be/Best-README-Template Best-README-Template是GitHub上最…

作者头像 李华
网站建设 2026/7/14 14:33:38

GitHub实战:协作开发DAMOYOLO-S自定义数据集训练代码

GitHub实战:协作开发DAMOYOLO-S自定义数据集训练代码 你是不是也遇到过这种情况?自己好不容易调通了一个AI模型,想和团队小伙伴一起改进,结果代码传来传去,版本乱成一锅粥,谁改了哪里都说不清楚。或者想借…

作者头像 李华
网站建设 2026/7/14 14:33:39

光电二极管放大电路在强光信号下的延迟特性分析

1. 光电二极管放大电路延迟现象揭秘 那天我在实验室调试特斯拉线圈时,发现一个有趣的现象——氖泡发出的光信号被光电二极管检测到后,输出信号竟然比实际光信号延迟了460微秒。这让我意识到,光电二极管放大电路在强光信号下的延迟特性远比想象…

作者头像 李华