# 偷天换日——新型浏览器劫持木马“暗影鼠”分析

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2016-05-31T04:06:00Z
Canonical: https://wepostx.com/topics/284

> 乌云历史资料归档
>
> **原始作者：** 腾讯电脑管家
> **原始编号：** superkieran-wooyundrops:1228
> **原始发布时间：** 2016-05-31 12:06
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

# 0x00 背景

近日哈勃分析系统截获了一批新型浏览器劫持木马 “暗影鼠”，该木马通常被打包在压缩包内伪装视频播放器通过网页进行传播。该木马的主要功能是对浏览器访问导航页的流量进行劫持，重定向到自己的推广页，非法获取推广利润。该木马最早出现是在今年的4月末，5月初开始小范围传播，但是从5月23开始突然爆发，高峰期全网中此木马用户数超过30W每日，保守估计近期木马作者以此获利总额有近百万元人民币。

![原文图片](/media/2016/06/ae2a6569a68d51672aac9fbb03e80b50)

传播趋势

# 0x02 木马介绍

“暗影鼠”启动后首先释放大批子文件，如下图所示

![原文图片](/media/2016/06/e121aae01e3aa591b1a2d6c02087be5b)

释放文件列表图
主要子文件功能：

- cBLK.dll 木马核心功能模块，注入浏览器进程，流量劫持

- newts.exe 64位系统下kill浏览器进程

- undoing.exe 获取木马作者后台的推广列表

- run.bat 清空浏览器缓存和临时文件

- clk.ini 木马使用的配置文件

![原文图片](/media/2016/06/ea9ab29951d3546abdabfa9f15bb77f0)

“暗影鼠”核心作恶流程
该木马在释放了一批子文件之后，枚举当前系统中的进程，与设定好的国内主流浏览器进程名进行对比，如果发现这些浏览器进程的存活，则杀掉相应进程，并且生成一个相应被感染的浏览器主进程的可执行文件。然后拉起这个被感染的假浏览器进程，假浏览器进程会加载之前释放的核心功能dll，然后再dll中hook关键系统函数，进行流量劫持。

# 0x02 主要功能模块技术分析

1.遍历进程杀浏览器进程

![原文图片](/media/2016/06/e583f7d967178805c21f3b751ed00724)

进程名比较代码段
枚举进程，寻找国内主流浏览器进程名。在此本文以chrome浏览器为例，对木马母体的TerminateProcess函数下断点，查看第一个参数。

![原文图片](/media/2016/06/617894c6140a59ddf196133ab475adb3)

结束chrome进程
查看句柄的含义

![原文图片](/media/2016/06/93bcb7270ae4a3f9375969ba335aae91)

procxp中查看句柄含义
句柄对应的就是chrome进程

![原文图片](/media/2016/06/a3d52bcf7473a1cd496c258a97293951)

任务管理器中查看chrome的进程ID
可见木马母体中去杀的进程就是chrome.exe。
2.“狸猫换太子”假浏览器出场
杀掉真的chrome之后，木马母体在chrome.exe的同级目录下创建了下边两个文件。

![原文图片](/media/2016/06/8f56ae194c86c948907d54126eebcd77)

释放被感染的chrome
上图中的exe就是一个被感染的chrome，会在启动时加载cBLK.dll，然后执行其内部包含的真正的chrome.exe。
假的chrome启动后，我们用spy++查看当前的浏览器窗口归属

![原文图片](/media/2016/06/67a4d48943522e1778bf1d9dbd9463b6)

spy++查看窗口的进程归属

![原文图片](/media/2016/06/31693d9fefb84d020bc67c382c6cbabf)

假chrome进程树

```text
0:000> ?9d4 Evaluate expression: 2516 = 000009d4
```
0x9d4转成10进制就是2516
可以看到现在使用的chrome就是被感染的chrome。
3.cBLK目的何在

![原文图片](/media/2016/06/a0d8c4a843c0500379ef1b9de2c16ea3)

调试器附加假chrome
由上图可知假chrome加载了cBLK.dll，这个dll的主要功能就是hook系统关键函数。

![原文图片](/media/2016/06/eeb69124d78105e7686b872d57331aa2)

主要Hook点
hook LoadLibraryExw

![原文图片](/media/2016/06/5ac69ab898d20a1f500d692186bceb59)

阻止加载列表
这个hook点的主要目的就是防止安全软件的浏览器安全模块加载。
hook WSASend发现对导航页的访问时

![原文图片](/media/2016/06/3b96c78b8c38e48211a0268a94ed8de8)

监控的导航页列表

![原文图片](/media/2016/06/6d2b23551802382f0490eab01d1ada2b)

构造302页面
发现对上述导航页的访问，则构造相应的302跳转页面。
hook WSARecv将对应的302页面返回，达到劫持目的

![原文图片](/media/2016/06/81a8d7b5e46273aa55cbee774e8315cd)

返回302页面
上图中的代码是在cBLK的WSARecv的hook函数中找到的，后边会调用真正的WSARecv，使得浏览器误以为接收到了302跳转页面，达到劫持目的。
4.其他技术点
启动被感染的浏览器进程，该样本还使用了监控浏览器桌面快捷方式点击的方法，非主要技术点在此不展开介绍。该样本也hook其他模块加载和网络发送接收函数，道理和上边说的一致，也不重复了。
哈勃分析系统目前对此样本的已经查杀。

## Replies
