# 偷天换日——新型浏览器劫持木马“暗影鼠”分析
0x00 背景
=======
* * *
近日哈勃分析系统截获了一批新型浏览器劫持木马 “暗影鼠”,该木马通常被打包在压缩包内伪装视频播放器通过网页进行传播。该木马的主要功能是对浏览器访问导航页的流量进行劫持,重定向到自己的推广页,非法获取推广利润。该木马最早出现是在今年的4月末,5月初开始小范围传播,但是从5月23开始突然爆发,高峰期全网中此木马用户数超过30W每日,保守估计近期木马作者以此获利总额有近百万元人民币。
![](http://drops.javaweb.org/uploads/images/3132f445d10793d49904be78cd21cf8a98bedb56.jpg)
传播趋势
0x02 木马介绍
=========
* * *
“暗影鼠”启动后首先释放大批子文件,如下图所示
![](http://drops.javaweb.org/uploads/images/e42d7f137adc7b814fa7c9d3bcf63e89d127a18e.jpg)
释放文件列表图
主要子文件功能:
* `cBLK.dll`木马核心功能模块,注入浏览器进程,流量劫持
* `newts.exe`64位系统下kill浏览器进程
* `undoing.exe`获取木马作者后台的推广列表
* `run.bat`清空浏览器缓存和临时文件
* `clk.ini`木马使用的配置文件
![](http://drops.javaweb.org/uploads/images/a715ca882a2073f12b417d5f082366d1ccde6557.jpg)
“暗影鼠”核心作恶流程
该木马在释放了一批子文件之后,枚举当前系统中的进程,与设定好的国内主流浏览器进程名进行对比,如果发现这些浏览器进程的存活,则杀掉相应进程,并且生成一个相应被感染的浏览器主进程的可执行文件。然后拉起这个被感染的假浏览器进程,假浏览器进程会加载之前释放的核心功能dll,然后再dll中hook关键系统函数,进行流量劫持。
0x02 主要功能模块技术分析
===============
* * *
1.遍历进程杀浏览器进程
![](http://drops.javaweb.org/uploads/images/0de233c0682226f46e8003702bbb1f9168624a54.jpg)
进程名比较代码段
枚举进程,寻找国内主流浏览器进程名。在此本文以chrome浏览器为例,对木马母体的TerminateProcess函数下断点,查看第一个参数。
![](http://drops.javaweb.org/uploads/images/73b1d3a2de0c72efb37c85c2c6bb6ac4c1c6fe27.jpg)
结束chrome进程
查看句柄的含义
![](http://drops.javaweb.org/uploads/images/efe7321db0ce488e62722f92c04115d34ccba22e.jpg)
procxp中查看句柄含义
句柄对应的就是chrome进程
![](http://drops.javaweb.org/uploads/images/ee227d6445f305dc75c9f7b21976d229134a190b.jpg)
任务管理器中查看chrome的进程ID
可见木马母体中去杀的进程就是chrome.exe。
2.“狸猫换太子”假浏览器出场
杀掉真的chrome之后,木马母体在chrome.exe的同级目录下创建了下边两个文件。
![](http://drops.javaweb.org/uploads/images/6ab4478593d0e34edece057720fcfbd4eb80f73e.jpg)
释放被感染的chrome
上图中的exe就是一个被感染的chrome,会在启动时加载cBLK.dll,然后执行其内部包含的真正的chrome.exe。
假的chrome启动后,我们用spy++查看当前的浏览器窗口归属
![](http://drops.javaweb.org/uploads/images/5017e864a68d20c1c00c797d6f858c16369ba861.jpg)
spy++查看窗口的进程归属
![](http://drops.javaweb.org/uploads/images/cfd072ce96330b7249ec92fc2fef7ee43892f9ea.jpg)
假chrome进程树
“`
0:000> ?9d4
Evaluate expression: 2516 = 000009d4
“`
0x9d4转成10进制就是2516
可以看到现在使用的chrome就是被感染的chrome。
3.cBLK目的何在
![](http://drops.javaweb.org/uploads/images/a257d8ad242d9d4187869142d816e8b5beb1732d.jpg)
调试器附加假chrome
由上图可知假chrome加载了cBLK.dll,这个dll的主要功能就是hook系统关键函数。
![](http://drops.javaweb.org/uploads/images/543c8792d4e0accb72cba8c080113a0e7713327f.jpg)
主要Hook点
hook LoadLibraryExw
![](http://drops.javaweb.org/uploads/images/2916389223c1eaa6ccb1648a117878be0fda0871.jpg)
阻止加载列表
这个hook点的主要目的就是防止安全软件的浏览器安全模块加载。
hook WSASend发现对导航页的访问时
![](http://drops.javaweb.org/uploads/images/9840d1ffb79f548012fd95746389f3c643e7dae3.jpg)
监控的导航页列表
![](http://drops.javaweb.org/uploads/images/348c1bcbb1d790a48d84b8b9ad345a7110f22346.jpg)
构造302页面
发现对上述导航页的访问,则构造相应的302跳转页面。
hook WSARecv将对应的302页面返回,达到劫持目的
![](http://drops.javaweb.org/uploads/images/18d256beb970c0045e5e1f00d0333db1c59b821d.jpg)
返回302页面
上图中的代码是在cBLK的WSARecv的hook函数中找到的,后边会调用真正的WSARecv,使得浏览器误以为接收到了302跳转页面,达到劫持目的。
4.其他技术点
启动被感染的浏览器进程,该样本还使用了监控浏览器桌面快捷方式点击的方法,非主要技术点在此不展开介绍。该样本也hook其他模块加载和网络发送接收函数,道理和上边说的一致,也不重复了。
哈勃分析系统目前对此样本的已经查杀。
请登录后查看评论内容