浅析宽带运营商劫持

今天请求公司主站裸域会导致莫名奇妙的跳转到yiqifa.com然后再跳转回www域的诡异问题,清理Cookies、更换DNS均无效,郁闷!在公司群里讨论了一下大概可以锁定为宽带运营商劫持,由于之前安装了Wireshark也没怎么用,正好出现类似问题,使用HTTP抓包工具分析再好不过了。关闭大部分的可能产生网络连接的软件,Start&Action!

去掉正常的请求响应包,锁定到302请求,依次向下查看,果然发现了一些猫腻。截图如下:

Screen Shot 2015-04-18 at 16.07.18

96号 百度HM请求包61.135.185.140

URL:http://hm.baidu.com/h.js?ca88bf7b092f300a228b2c153a0a9fc8

97号 百度HM响应包61.135.185.140

HTTP 302 Location=http://122.141.234.60:51234/bdpop.sl.php?http://hm.baidu.com/h.js?ca88bf7b092f300a228b2c153a0a9fc8

当浏览器302跳转上述地址时响应Cookie里面增加了一个DIANSHANG=54

100号 跳转URL请求包122.141.234.60

URL:http://122.141.234.60:51234/bdpop.sl.php?http://hm.baidu.com/h.js?ca88bf7b092f300a228b2c153a0a9fc8

103号TCP超时快速重传包61.135.185.140

HTTP 304

106号跳转URL响应包122.141.234.60

HTTP 200

window.location='http://p.yiqifa.com/n?k=2mLErn2OWE3lrI6H2mLErI6H6ljqWmLm6lwLWN6HWl3FWNtsrI6HkQLErnWLWlDO39MErBXpgZUfgmL-&e=c&t=http://www.wangjiu.com';

117号浏览器加载上述Location请求包

我们所看到的劫持发生在96号请求包和97号响应包之间,大致过程如下:

1)浏览器将/h.js的请求(96号)发送到百度;

2)宽带运营商嗅探到这个请求后,会将百度的302响应进行篡改,然后转发至用户浏览器(97号),与此同时对百度TCP连接的响应直接给予超时处理;

3)此时真正的响应(来自百度)可能还未到达用户。这就导致了百度服务器认为响应没有送达用户浏览器-发起TCP快速重传(103号),但是用户浏览器在这个过程已经确认收到响应(来自宽带运营商);

4)根据响应结果,浏览器触发302跳转,然后就是我们所看到的先跳转yiqifa.com(117号)然后yiqifa将它的CPSID带上再跳转回主站(后续包)。