瑞星劫持浏览器主页分析

作者: admin 分类: 开发问题 发布时间: 2017-04-10 17:01 ė3,529 浏览数 6没有评论
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)

一 现象

最近打开IE浏览器,发现地址栏是锁定的默认主页,但是显示的网页内容确是瑞星安全导航。

xianxiang.png

通过分析,发现瑞星是通过在驱动层注册进程回调,在应用层启动服务监控创建的进程,当发现浏览器启动,且打开的网址是劫持网址,会对浏览器默认主页进行劫持。

二 分析

(1) 进程监控分析

重点分析了一下瑞星服务进程ravmond的进程回调处理函数ExeMonCallBack,其关键部分如下

ExeMon1.png

首先通过驱动层上报的进程启动信息去获取一些关键信息,通过ProcessID获取父进程的全路径,通过Process的全路径去获取当前启动的进程是否是需要劫持的浏览器进程。

exemon2.png

exemon3.png

如图,我们看到ravmond基本劫持了常用的所有浏览器,且设置了一个开关,在开关开启的时候对type为10,10000,20000000的浏览器不做劫持,对应的浏览器分别为IE,QQ浏览器,juzi浏览器。通过调试发现目前开关并没有打开。

之后通过一个Event事件来防止重入。Event事件的名字格式为{RsDrvmcl_sessionid_browsertype} 例如主动打开IE浏览器,Event的名称为{RsDrvmcl_1_00000010},在执行劫持操作时创建event,在获取到浏览器类型成功后去打开event,如果打开成功,说明当前正在对该浏览器主页做劫持,本次打开不做处理。

exemon4.png

如果当前启动的进程是目标浏览器进程,ravmond会对当前进程的命令行以及父进程做是否需要劫持判断,对命令行的判断主要分为三步:

1,当前浏览器打开的URL是否为Rising导航,如果是不做劫持。

2,当前浏览器打开的URL是否为特定的hao123带渠道导航,如果是不做劫持。

3,当前浏览器打开的URL是否在预置的导航网址列表中,如果是开始劫持。

exemonurl1.png

通过dump内存看到,瑞星预置的劫持导航将近100条,里面不仅包含用户常用的主流导航(hao123 baidu 搜狗导航 360导航 2345导航 QQ导航),还包含大量的小导航,以及跳转站例如123.dh136.com,123.hao245.com等等。除了对导航网址进行判断以外,还对常见的桌面快捷方式打开参数等进行了劫持,如下图所示。

exemoncmd1.png

主页劫持只针对由explorer kdesk qmlaunch mxstart进程启动的浏览器生效。

exemonwork.png

在上述条件都满足的情况下,创建一个线程启动假的浏览器

exemongetpath.png

线程函数里面主要做了两部分的工作,一部分是通过浏览器类型去获取对应的假浏览器路径,一部分是创建进程。

通过分析,可以发现各浏览器对应的假浏览器进程如下

360chrome.exe => wsafechb.exe

360se.exe => wsafetqa.exe

qqbrowser.exe => wsafesdb.exe

SogouExplorer.exe => wsafeeid.exe

liebao.exe => wsafeche.exe

Maxthon.exe => wsafesda.exe

UCBrowser.exe => wsafechc.exe

chrome.exe => wsafea.exe

iexplore.exe => wsafeei.exe

exemoncp.png

Vista以后操作系统增加了session隔离机制,一个用户对应一个独立的session,服务程序运行在session0当中,用户程序运行在session1 session2…里面,由于当前是在服务进程中,要从服务中启动一个具有桌面UI交互的应用,需要使用CreateProcessAsUser,并手动设置环境块。

(2) 浏览器劫持分析

浏览器劫持主要是通过使用假浏览器进程创建一个webbrowser替换掉原有的webbrowser来实现的,我以IE浏览器为例来分析。

在满足劫持条件后,瑞星服务程序会启动一个假的浏览器进程,IE对应的是wsafeei.exe。

ws1.png

wsafeei.exe首先先创建一个名字为AXWIN Frame Window的窗口。

ws2.png

然后以新建窗口为父窗口,创建一个webbrowser,并创建线程将新创建的窗口替换到IE中。

ws3.png

线程中循环等待IE界面出现,并获取IE的”Frame Tab” “TabWindowClass” “Shell DocObject View”三个窗口的句柄,如果9秒内IE没有启动,则放弃劫持。

ws4.png

将wsafeei创建的窗口的父窗口设置为TabWindowClass,获取TabWindowClass的位置以及大小,对应设置 wsafeei创建的窗口为对应的位置和大小,将IE的ShellDocObjectVIew窗口隐藏掉,显示wsafeei创建的窗口,对应的webbrowser打开瑞星导航。为了不影响IE的正常使用,其注册了消息过滤函数,处理IE相关的消息。

到此为止,就成功的劫持掉了IE的默认主页。

三 结论

通过在服务进程中监控进程启动,替换浏览器的窗口来劫持主页,可以避免与主页保护软件的正面对抗,达到劫持效果,思路令人佩服。如果用在正规的主页保护技术上那就更好了。

http://www.freebuf.com/articles/web/131156.html



只回答业务咨询点击这里给我发消息 点击这里给我发消息

学习日记,兼职软件设计,软件修改,毕业设计。

本文出自 学习日记,转载时请注明出处及相应链接。

本文永久链接: https://www.softwareace.cn/?p=1622

0

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">


Ɣ回顶部

无觅相关文章插件,快速提升流量