热点推荐
ZOL首页 > 软件资讯 > 新闻资讯 > 互联网 > 知识文章:是谁控制了我们的浏览器?

知识文章:是谁控制了我们的浏览器?


CnBeta 【转载】 2006年08月21日 08:51 评论
本文遵从GPL协议,欢迎转载。

  1、现象是什么?

  大约从今年年初开始,很多人就发现,在浏览一些网站的时候,地址栏的url后面会被莫名其妙地加上“?curtime=xxxxxxxxxx”(x为数字),并且弹出广告窗口。很多人以为这是网站自己弹出的广告,也就没有在意。

  我是属于很在意的那些人之一。

  2、这是怎么回事?

  经过测试和分析,我们发现,上述现象与使用何种浏览器无关(我们测试了各种流行的http客户端),与使用何种操作系统也无关(linux用户也有相关报告)。我对出现该现象的IE浏览器进程进行了跟踪调试,没有发现任何异常。可以断定,并不是系统被安装了adware或者spyware。

  那么是不是那些网站自己做的呢?后来发现,访问我们自己管理的网站时也出现了这种情况,排除了这个可能。

  那么剩下唯一的可能就是:有人在某个或某几个关键网络节点上安装了inject设备,劫持了我们的HTTP会话——我实在是不愿相信这个答案,这个无耻、龌龊的答案。

  伟大的谢洛克·福尔摩斯说过:当其他可能都被排除之后,剩下的,即使再怎么不可思议,也一定是答案。

  为了验证这个想法,我选择了一个曾经出现过上述现象的网站附近网段的某个IP。直接访问这个IP的HTTP服务,正常情况下是没有页面的,应该返回 404错误。我写了一个脚本。不断访问这个IP,同时记录进出的数据包。在访问进行了120次的时候,结束请求,查看数据。120次请求中,118次返回的都是正常的404错误:

HTTP/1.1 404 Object Not Found
Server: Microsoft-IIS/5.0
Date: Mon, 19 Jul 2004 12:57:37 GMT
Connection: close
Content-Type: text/html
Content-Length: 111

〈html〉〈head〉〈title〉Site Not Found〈/title〉〈/head〉
〈body〉No web site is configured at this address.〈/body〉〈/html〉

  但是有两次,返回了这个:

HTTP/1.1 200 OK
Content-type: text/html

〈html〉
〈meta http-equiv='Pragma' content='no-cache'〉
〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉
〈script〉
window.open('http://211.147.5.121/DXT06-005.htm', '', 'width=400,height=330');
〈/script〉
〈head〉
〈title〉〈/title〉
〈/head〉
〈body〉
〈/body〉
〈/html〉

  更进一步分析数据包,可知劫持流程如下:

  A、在某个骨干路由器的边上,躺着一台旁路的设备,监听所有流过的HTTP会话。这个设备按照某种规律,对于某些HTTP请求进行特殊处理。

  B、当一个不幸的HTTP请求流过,这个设备根据该请求的seq和ack,把早已准备好的数据作为回应包,发送给客户端。这个过程是非常快的。我们的 HTTP请求发出之后,仅过了0.008秒,就收到了上面的回应。而任何正常的服务器都不可能在这么短的时间内做出回应。

  C、因为seq和ack已经被伪造的回应用掉了,所以,真正的服务器端数据过来的时候,会被当作错误的报文而不被接受。

  D、浏览器会根据〈meta http-equiv='Refresh' content='0;URL=?curtime=1091231851'〉这一行,重新对你要访问的URL进行请求,这一次,得到了请求的真正页面,并且调用window.open函数打开广告窗口。

  在google中以“php?curtime”、“htm?curtime”、“asp?curtime”为关键字搜索,出现的基本上是国内网站,这表明,问题出在国内。用于inject的设备插在国内的某个或某几个大节点上。

  真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。
1 2 3 下一页
频道热词:微信  手机QQ  12306  
视觉焦点
新浪微博