最近我的手机使用广电宽带网络时总是莫名其妙跳转到一号店,而且网页下面也会出现广告条,这种情况明显是运营商劫持投放广告。广告如下
换dns
首先最可能的是dns污染了,于是我把dns换成了阿里dns 223.5.5.5
,但是情况并没有任何改变,还是有广告出现。
既然换dns无用,那很有可能就是dns劫持了,应对方法也很简单,在路由器上安装pdnsd来强制使用tcp方式查询dns,这样作确实有用。网页广告有两种,一种是上图底部图片形式的广告条,来自游侠,另一种是白底黑字的广告条,貌似是百度的。这么做只能让第一种广告消失。而且网页还是会自动跳转到一号店。
这么看的话,他们应该是dns劫持和tcp劫持都用了,于是我向运营商投诉了,到第二天确实好像暂时没有广告了,但是过了一天广告又出现了,一号店跳转也出现了,估计他们根本就没有处理,只是广告出现频率低,我那天没遇到而已。
分析
既然投诉没用,那就抓到证据举报吧。开始抓包
由于广告和一号店跳转出现频率是在太低,我抓了一个多小时都没能抓到包。只是在投诉之前出现了一次广告,我当时还没开抓包工具,只留了一张截图
其中那个139
的ip明显有问题,虽然我不太懂js,但是看了看其中的js代码,貌似不是加广告的,但是不管怎么说,这个东西只有在使用广电宽带才有,肯定和广告有关系,而且看其中的代码有判断浏览器UA的,这可能就是广告只在手机出现而不在电脑出现的原因。
幸运的是,就在我写这篇文章时,终于抓到了一号店跳转的包
由于网页加载完成就会自动跳转到一号店,不能查看网页资源,但是看抓包数据,我这边不知为何向一号店ip发出了一个get请求,然后收到一个302跳转,指向了一号店的官网,而且网址后面跟有跟踪id,http://m.yhd.com/4?tracker_u=901839607
,这个网址明显是用来推广的,这个包的ttl值是44,但是在打开一号店的网页后,这个包后面收到的来自一号店的包ttl值都是235,这个包明显是伪造的,用于一号店网盟的推广。
伪造的包:
真包:
除了自动跳转到一号店以外,当我访问m.yhd.com时,网页会自动跳转到一个yiqifa.com的链接,然后再跳转到一号店的推广地址http://m.yhd.com/4?uid=00f162afa8cac7df89ff&tracker_type=1&tracker_u=10303410999&website_id=840145
,这个与上一个不同,上一个是一号店网盟的推广,这个是亿起发的推广,在我向m.yhd.com发起请求后,同样也会收到一个302跳转,这次是指向 http://p.yiqifa.com/n?k=2mLErn2LWE3SrI6H2mLErI6H6EDF1QLF6njq6nPHWNKqrI6HkQLErn2S1nzmWlDmrBbbYwA5WmL-&e=shanxic&t=http://m.yhd.com/\r\n
然后yiqifa.com再次发出302指向一号店达到推广的目的,这个伪造的包ttl值是59,明显也不是一号店的。
最后我查看了两个伪造包的响应速度,都在50ms以内(好像一次是二十几毫秒,一次是40毫秒),更加肯定这不是来自一号店的。可以确定是运营商的问题,由于两种攻击ttl值差别较大,所以ttl值很可能不是真实的,因此难以判断攻击者位置,但根据响应速度来看,比阿里DNS西安节点响应速度还快点,攻击者应该就是在西安。
附一张别人的图说明攻击原理
这种攻击除了加密数据以外没有其他办法防御,实在是讨厌,希望能尽快解决。
我抓到的数据包: http://pan.baidu.com/s/1pL3ujWZ