首页
社区
课程
招聘
搜狗输入法恶意劫持百度搜索流量分析
发表于: 2015-5-27 19:09 45260

搜狗输入法恶意劫持百度搜索流量分析

2015-5-27 19:09
45260
搜狗输入法恶意劫持百度搜索流量分析

1、搜狗输入法版本:
7.5.0.5674

2、现象:
1)  在浏览器中使用百度搜索引擎输入关键词时将出现搜索选项列表,点击后跳转至搜狗搜索,如下图所示:
 
点击列表中的选项后:
 

3、测试实验:
1)搜狗输入法并不劫持360搜索,如下图:
 

结论:说明搜狗输入法对当前打开的页面有判断,猜测是通过页面URL进行了判断

2)百度页面除了搜索框其他入口也会触发该搜索选项列表出现,如下图在登录框输入文本时也触发了搜狗搜索选项列表:
 
结论:搜狗输入法并未对输入文本框目标进行判断

3)使用IP地址代替域名打开百度首页。测试机ping www.baidu.com 得到的IP地址为:61.135.169.121,结果搜狗输入法未出现搜索选项列表,如图所示:
 
结论:本次实验一定程度上验证了实验1)的猜想。该搜索选项的出现跟网页当前URL有关系。
4)实验中将浏览器可执行文件做修改,如将firefox.exe改为firefox1.exe,则该搜索选项列表同样未能出现:
 
结论:搜狗输入法对当前进程有判断,如果不是浏览器进程将不会触发搜索选项列表。

5)最终结论:搜狗输入法在用户打开浏览器访问www.baidu.com进行搜索时,将出现搜索选项列表,诱导用户点击打开搜狗搜索,从而实现恶意劫持百度搜索流量的目的。

4、技术分析:
1)进程筛选
搜狗输入法核心模块为SogouPY.ime,实质为一个DLL文件。使用IDA打开分析,加载基址为:0x177C0000,其模块内部有如下逻辑:
将所有常见浏览器可执行文件名硬编码存入全局字符串数组,并将当前进程exe文件名在列表中遍历,获取其在列表中的索引,若未找到,则返回-1,下面是IDA反汇编结果:
 
 

2)当前页面URL获取及判断
针对不同浏览器使用不同的获取方式,这里以firefox为例,搜狗输入法使用了MSAA(Microsoft Active Accessibility)技术获取到了当前页面URL,相关详情可参考如下链接:http://www.cnblogs.com/wxxweb/archive/2012/01/09/2317094.html
在SogouPY.ime模块中,函数sub_17833900 ()便是该代码的实现,用于获取firefox浏览器中当前页面URL地址。调试发现,若篡改获取到的URL内容,则会阻止搜狗输入法打开搜索选项列表。另外该函数除了获取URL,还获取HTML的Title字段。

向上追溯得到获取页面信息总分发入口:根据浏览器不同类别从不同方法获取
 

继续向上追溯,获取当前浏览器信息后(浏览器类别、当前页面URL、当前页面Title等)后,进入了判断的环节。
函数sub_17D11B00()内部根据上面获取到的URL判断是否是搜索引擎:
 

调试得到wcsstr()的参数1:获取到的页面URL,参数2:搜索引擎域名。其列表如下:
 
顺便让我知道了世界上还有个www1.baidu.com,火星了。比照这些搜索引擎挨个试了一下:
(前面两个不用试了吧)
www1.baidu.com:

 
www.soso.com:
这个也不用试了,已经被搜狗吃了的搜索引擎。

cn.bing.com:
 

www.google.cn: 

so.sowang.com:
 

www.chinaso.com:
 

www.youdao.com:
 

www.zhongsou.com:
 [
这里与前面的实验1比较冲突的是对www.haosou.com并没有展开这个搜索候选词列表。猜测应该是有其他的云控策略在决定,暂时未分析到。

3)搜狗搜索打开点:
打开firefox,使用WinDbg Attatch该进程,执行命令:bp shell32!ShellExecuteW,给函数ShellExecuteW下断点。打开百度首页,切换搜狗中文输入法,随意输入字符,出现搜狗搜索选项列表,点击其中一个,命中断点!
查看参数:

这里看出:这里通过启动当前浏览器(firefox.exe)打开了URL。
根据堆栈返回地址,分析该调用来自函数sub_17812DF0 ()。

IDA反汇编太多,不便截图。总体来说,该函数判断当前浏览器如果是IE内核,则通过获取到浏览器IWebBrowser2接口指针,调用其Navigate2方法访问搜狗搜索页面。
如果是非IE内核,则调用上面的ShellExecuteW打开URL。

判断方法同2)中的Sogou_GetWebBrowserType(sub_178356D0()),该函数获取当前浏览器类别,内部通过进程名、当前焦点窗口窗口类名(”Internet Explorer_Server”)综合判断进行分类。下面是IDA反汇编逻辑部分截图:
 

5总结:
和实验得到的结论一致:
1、  搜狗输入法判断当前是否是浏览器进程。
2、  根据当前焦点窗口句柄,进一步根据不同浏览器获取当前打开的页面地址,标题等信息。
3、  如果判断当前打开的是搜索引擎,则弹出搜索词候选框,引导用户点击。
4、  用户点击后,在WM_LBUTTONUP消息中派遣函数中根据浏览器是否为IE内核来分别使用IWebBrowser2->Navigate2()方法或ShellExecuteW打开搜狗搜索。

PS: 这个进程跟搜狗输入法这个功能有非常大的关系,候选词列表正是该进程访问搜狗服务器获取到的。如果结束该进程,或禁用其网络功能,搜狗输入法这一功能就无法正常工作了。

分析不对的地方还请各路大神指正。


[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 3
支持
分享
最新回复 (59)
雪    币: 4022
活跃值: (92)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
分析的很不错,我也上过搜狗输入法的这个当!
2015-5-27 19:18
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
看来百度跟搜狗之间马上又有一场恶战要开始!
2015-5-27 19:23
0
雪    币: 144
活跃值: (335)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
都这么流氓了,跟谁学的啊?
2015-5-27 19:30
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
火钳刘明,静看百度搜狗**
2015-5-27 19:56
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
6
为什么不加上360的haosou
2015-5-27 20:03
0
雪    币: 977
活跃值: (244)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
还好我家的 搜狗 没有这样啊
2015-5-27 21:05
0
雪    币: 10924
活跃值: (3294)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
果断将搜狗输入法删除了,卡了个b,直接用bing输入法。
2015-5-27 21:17
0
雪    币: 511
活跃值: (353)
能力值: ( LV9,RANK:450 )
在线值:
发帖
回帖
粉丝
9
没关系,我用google
2015-5-27 21:33
0
雪    币: 100
活跃值: (471)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢楼主的分享,讲解得很清楚明白,我这样的小菜都能看懂了:)
2015-5-27 22:22
0
雪    币: 5
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
膜拜!!!!!!!!!!
2015-5-27 22:38
0
雪    币: 21
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
手机搜狗也这样!
2015-5-27 23:02
0
雪    币: 8
活跃值: (120)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
为什么我的没有呢????
2015-5-27 23:09
0
雪    币: 1604
活跃值: (640)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
14
分析的很好,楼主有空再研究看看,搜狗进程是如何影响浏览器内核的 javascript 解释器的。因为百度主页有大量实现AJAX的脚本代码,用于返回匹配用户输入关键词的“候选词列表”,这个列表才是web搜索引擎原生的,而搜狗进程可以屏蔽掉这个列表,然后添加自己的列表来诱骗用户点击,这应该是通过某种机制影响到浏览器进程的结果;
(最近百度的主页进行过优化,http的非加密版本主页不再向用户返回候选词列表,而是直接根据用户的输入,返回相关度最高的搜索结果页面,劫持在这种情况下应该无效了才对,因为即使构建了伪装的列表,其“背景”也将是搜索引擎返回的结果页面,很容易识别的)
另外,根据楼主的分析可以看出搜狗劫持了大量的浏览器,包括360浏览器,qq浏览器,以及大量的web搜索引擎站点,包括谷歌中国和谷歌香港,那么是否只要删除DLL的 .data 节中保存的浏览器进程名和搜索引擎URL列表的数据结构,或者修改
Sogou_GetWebBrowserType(),Sogou_GetWebBrowserIndex() 这2个函数内部的判断逻辑,就可以阻止搜狗劫持用户的搜索界面了呢?
第三步使用 WinDBG 调试时,应该是附加到搜狗输入法的主进程,还是附加到 Firefox进程,然后下API断点?
2015-5-27 23:51
0
雪    币: 12
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
这个叫 “恶意劫持” 好像有点过了

尽量采用中性词语会更合适些
2015-5-28 00:53
0
雪    币: 3
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
然而我的6.7版本并没有此情况出现,当然这是13年的东西了
2015-5-28 08:16
0
雪    币: 16161
活跃值: (1345)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
自制的 汇编修改版 去后门的QQ浏览器诞生了 ……
点此处下载
跟www.qhrjf.com我的网页上的那几个汇编过的 浏览器一样,都是搜索栏中的新闻恶心人
有的干掉容易些,有的搞起来比较坑啊。
2015-5-28 08:18
0
雪    币: 341
活跃值: (138)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
18
还有网站啊。。好屌
2015-5-28 08:27
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
19
我这觉得这个没什么吧,它在自己的输入法上做引导,又不是说直接搞百度啥的,如果这产品给你做,你也会这样做的~~太正常了,你其实可以直接按空格输入到百度搜索框上,可是你们太懒,下拉就选(产品狗就猜到你们懒,所以这种设计在产品方案来说并没有什么不对)。。。

国内的产品设计其实都是大同小异,偏向畸形化
2015-5-28 09:06
0
雪    币: 2291
活跃值: (933)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
20
调试的时候如果修改这两个函数返回值的确可以让搜狗输入法不打开候选词列表,这个亲测过。最后那个问题,SogouPY.ime作为输入法模块是被载入到浏览器进程地址空间的,所以是用Windbg Attatch浏览器进程。之所以选择了firefox,因为其他浏览器(IE、chrome)会启动很多子进程,而firefox只有一个进程,研究起来方便些。
2015-5-28 09:36
0
雪    币: 10924
活跃值: (3294)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
21
这个52的一贴:
前几天在论坛上看到《搜狗输入法彻底沦为流氓软件了,竟然模拟用户点击安装浏览器!》(http://bbs.kafan.cn/thread-1782639-1-1.html)的帖子。堂堂的大搜狗,竟然用这么恶劣的手段,可耻啊可耻啊。
帖子最后说,搜狗通过云控只针对北上广外的用户进行流氓推广。实际分析发现搜狗不但有地域限制,还会对目标电脑进行筛选,只要符合筛选就会触发流氓安装行为。
以下是我的分析。
0x01,首先检测电脑上有没有安装360的软件。这么做很明显是想绕过360监控。

0x02,其次电脑上有没有安装Safari或chrome浏览。可能是因为使用Safari或chrome多是办公白领、专业IT人员,不容易骗。
另外,还会通过COM信息检查有没有访问过微博、登陆过搜狗论坛、上过360论坛。也确实,懂得用这些的用户懂得维权,发现流氓捆绑一定会去微博或论坛上反馈。并且,要是再给自己的老用户捆绑一次岂不是遭唾弃?!

0x03,最后一个条件更智能——搜狗还会对电脑的使用时间、计算机程序空闲状态进行计算,当发现电脑cpu比较空闲的时候再进行偷偷安装。那点小聪明,搜狗全用到这里了。

我自己的亲身感觉,就是在老爷机上,搜狗输入法导致我的电脑卡了一B。

如果不是流氓,就不会出现修改版本:

搜狗拼音输入法 7.5 正式版,字母代号C版来啦!详细版本号为v7.5.0.5412;新版工具箱、符号大全全新改版,删繁就简更易用;另外字库新增生僻字。搜狗拼音输入法是电脑装机必备软件,版本有传统版和智慧版之分,其打字超准、词库超大、速度飞快、外观漂亮,因此使得输入操作变得事半功倍。
补丁功能7.5.0.541
本补丁完美支持win32和win64位系统
果核博客新版本绿化补丁来袭,进制修改,软件体积大大减小!
果核博客专注精简优化,砍掉所有多余功能、无搜狐微门户弹窗、无勋章相关推荐、无推销软件行为,无多余干扰提示,无相关多余进程驻留,
删除了云候选程序、勋章推荐组件、搜索候选组件、辅助工具模块、升级服务程序、崩溃反馈程序、网络更新模块、皮肤推荐下载器、皮肤盒子、flash皮肤、彩虹字/火星文、图片表情、搜索栏等组件,可自行在工具箱添加应用;完美支持Windows 32、64位系统,支持Win8/8.1
2015-5-28 09:36
0
雪    币: 60
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
大赞  为何 ** 有关部门 不加大检查力度,
2015-5-28 09:44
0
雪    币: 292
活跃值: (153)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
23
还好我去年用OD早就把搜狗联网给阉了,好用多了。。。。
2015-5-28 10:05
0
雪    币: 207
活跃值: (81)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
都这么流氓了,跟谁学的啊?
一直在用大水牛的搜狗修改版
2015-5-28 10:38
0
雪    币: 1
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
搜狗还是要防火墙屏蔽联网才能用,不然小动作太多了
2015-5-28 10:53
0
游客
登录 | 注册 方可回帖
返回
//