谁控制了我们的浏览器?

http://www.baidu.com/link?url=4Qw_a5JHvJi8NPp7of9HqRWN93EPxC2Vy9CPxm3e-KgcO443jRRS_1jzcWDAF8qf5oPPwipv0D6BRQf5XMNi1a

本文遵从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的设备插在国内的某个或某几个大节点上。

  真相大白。我们被愚弄了,全中国的网民都成了某些人的赚钱工具。

  3、现在怎么办?

  在坏家伙被捉出来之前,我们要想不受这个玩意的骚扰,可以考虑下面的方法:

  A、请各单位的网络管理员,在网络的边界设备上,完全封锁211.147.5.121。
  B、在你自己的个人防火墙上,完全封锁211.147.5.121。
  C、如果你的浏览器是FireFox、Opera、GreenBrowser、或者MyIE,可以把“http://211.147.5.121/*”丢到弹出窗口过滤列表中去。

  绝不只是广告那么简单,这涉及到我们的选择,我们的自由,这比垃圾邮件更加肮脏和无耻。今天是广告,明天就可能在你下载软件的时候给你加个adware或者加个病毒进去,谁知道呢?我们的HTTP通信完全控制在别人手里。

  4、如何把坏家伙揪出来?

  如果你是一个有权力调查和处理这件事的人,从技术上,可以考虑下面的手段:

  方法1、

  伪造的回应数据中并没有处理TTL,也就是说,我们得到的回应数据中TTL是和inject设备位置相关的。以我收到的数据包为例,真实的服务器端回应TTL是107,伪造的回应TTL是53。那么,从我们这里到被请求的服务器之间经过了21(128-107)个节点,从我们这里到inject设备经过了11(64-53)个节点。只需要traceroute一下请求的服务器,得到路由回溯,往外数第11个节点就是安插inject设备的地方!

  方法2:

  假如坏家伙也看到了这篇文章,修改了TTL,我们仍然有办法。在google上以下面这些关键字搜索:php?curtime,htm?curtime,asp?curtime,可以得到大量访问时会被inject的网址。编写脚本反复访问这些网址,验证从你的ip访问过去是否会被inject。将确实会被inject的结果搜集起来,在不同的网络接入点上挨个用traceroute工具进行路由回溯。分析回溯的结果。

  上面我们已经说明了,坏家伙是在某个或者某些重要节点上安插了inject设备,那么这个节点必然在被inject的那些网址到我们的IP之间的某个位置上。例如有A、B、C、D四个被inject到的网站,从四个地方进行路由回溯的结果如下:

MyIP-12-13-14-15-65-[89]-15-57-A
MyIP-66-67-68-69-85-[89]-45-68-84-52-44-B
MyIP-34-34-36-28-83-[89]-45-63-58-64-48-41-87-C
MyIP-22-25-29-32-65-45-[89]-58-D

  显然,inject设备极大可能就在“89”所在的机房。

  方法3:

  另一方面,可以从存放广告业面的211.147.5.121这个IP入手,whois查询结果如下:

inetnum: 211.147.0.0 - 211.147.7.255
netname: DYNEGY-COMMUNICATION
descr: DYNEGY-COMMUNICATION
descr: CO.LTD
descr: BEIJING
country: CN
admin-c: PP40-AP
tech-c: SD76-AP
mnt-by: MAINT-CNNIC-AP
changed: hui_zh@sina.com 20011112
status: ALLOCATED PORTABLE
source: APNIC

person: Pang Patrick
nic-hdl: PP40-AP
e-mail: bill.pang@bj.datadragon.net
address: Fl./8, South Building, Bridge Mansion, No. 53
phone: +86-10-63181513
fax-no: +86-10-63181597
country: CN
changed: ipas@cnnic.net.cn 20030304
mnt-by: MAINT-CNNIC-AP
source: APNIC

person: ShouLan Du
address: Fl./8, South Building, Bridge Mansion, No. 53
country: CN
phone: +86-010-83160000
fax-no: +86-010-83155528
e-mail: dsl327@btamail.net.cn
nic-hdl: SD76-AP
mnt-by: MAINT-CNNIC-AP
changed: dsl327@btamail.net.cn 20020403
source: APNIC

  5、我为什么要写这篇文章?

  新浪为我提供桃色新闻,我顺便看看新浪的广告,这是天经地义的;或者我安装某某网站的广告条,某某网站付给我钱,这也是天经地义的。可是这个211.147.5.121既不给我提供桃色新闻,又不给钱,却强迫我看广告,这就严重伤害了我脆弱而幼小的心灵。事实上,你可以敲诈克林斯·潘,强奸克里奥·佩德拉,咬死王阳明,挖成吉思汗墓,我都不会计较,但是现在你既然打搅了我的生活,我就不得不说几句了。

  6、我是谁?

  如果你知道MyName,又知道MyCount的话,那么,用下面这段perl可以得到:2f4f587a80c2dbbd870a46481b2b1882。

#!/usr/bin/perl -w

use Digest::MD5 qw(md5 md5_hex md5_base64);

$name = 'MyName';
$count = MyCount;

for ($i=0; $i〈$count; $i++)
{
$name = md5_hex($name);
}

print $name;

以下签名,用于以后可能出现的关于此文的交流:
1 6631876c2aea042934a5c4aaeabb88e9
2 a6a607b3bcff63980164d793ff61d170
3 6a58e8148eb75ce9c592236ef66a3448
4 ded96d29f7b49d0dd3f9d17187356310
5 cc603145bb5901a0ec8ec815d83eea66

  注:本文为转载,作者不详,发布日期为:2004.7.20。

转载于:https://www.cnblogs.com/pengzheng/p/3826670.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面试题大全答案版文库_java高级面试题带答案

java高级面试题,java面试题大全带答案,线程面试题,java面试宝典20191、[请对以下在J2EE中常用的名词进行解释(或简单描述)](http://www.wityx.com/post/172_1_1.html)2、[socket通信](http://www.wityx.com/post/175_1_1.html)3、[简述线程的…

SP1693 COCONUTS - 题解

SP1693 COCONUTS 题意: 几个士兵在投票,有支持与反对两种选择,每个人有自己的看法,但是他们有时也会为了支持朋友的看法而放弃自己的看法,请求出一种方案,使得违背自己初始看法的人数与看法不一致的朋友对数…

最近特忙

昨天上午上课,中午开支部大会,下午学院职工会议,晚上去东联蛇餐馆吃蛇肉,回来后参加体验英语月闭幕式及英语合唱表演决赛。这中间我还出去给我的论文小组快了一个讨论会。昨天共开了三个会,真是忙得天昏地暗&#xff0…

NoSQL系列:选择合适的数据库

NoSQL系列:选择合适的数据库 为什么使用NoSQL数据库? 阻抗失衡 关系模型和内存中的数据结构不匹配 采用更为方便的数据交互方式提升开发效率 待处理的数据量很大 数据量超过关系型数据库的承载能力 大集群的出现 在成本方面,集群中应用关系数…

mysql历史日志文件_MySQL 历史 binlog 日志处理

MySQL 历史 binlog 日志处理一、问题的引出MySQL binlog 如果不清理会占用服务器的空间,那么怎么处理binlog日志呢二、解决办法1、物理删除df -Th 查看磁盘空间➜ bobbob-pc ~ df -Th文件系统 类型 容量 已用 可用 已用% 挂载点udev devtmpfs 7.8G 0 7.8G 0% /devtmpfs tmpfs 1…

史上最全搞怪WC标志(组图)--设计者太有才了。

转载于:https://www.cnblogs.com/onlyzq/archive/2007/12/22/1010318.html

1 vmware 如何联网,以及行命令令初步

VMware安装Linux(我安装的是ubuntu),没法上网,上网教程见:https://blog.csdn.net/qq_28090573/article/details/78730552 安装完成Linux,进入系统,显示的是图形界面,但是学习Linux&a…

mysql几个timeout参数_MySQL中 timeout相关参数解析

前言:MySQL中有两个关于连接超时的配置项。他们之间在某些条件下会互相继承,那究竟这两个参数会在什么情况下起作用呢?本文将会通过一些测试实例来证明总结两者的相互关系。参数介绍:The number of seconds the server waits for …

XML操作类

publicclassXmlControl:Object { protectedstringstrXmlFile; protectedXmlDocument objXmlDoc newXmlDocument(); publicXmlControl(stringXmlFile, Boolean bOverWrite, stringsRoot) { try{ //如果覆盖模式&#xff…

shell脚本中if的相关参数

转自:http://blog.csdn.net/aaaaatiger/article/details/1713611[ -a FILE ] 如果 FILE 存在则为真。 [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。 [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。 [ -d FILE ] 如果 FILE 存在且是一个…

mysql设置端口_修改mysql端口以及出现的问题

为了提高服务器的安全性,本节课主要讲的是Linux下如何修改Mysql端口。支持Linux环境下大部分系统的修改,如Centos和Ubuntu等。一、编辑my.cnfvi /etc/my.cnf二、在[mysqld]下添加port3506三、重启mysql服务service mysqld restart这里我之前出现了一个…

[转]你打算如何提升自己?

一年一度的金九银十,对于职场人来说,人们比盼望过年过节还期待,过年过节只是得到更好的休息,而金九银十,如果机会适当,得到的是实实在在的提升,职位提升、薪酬提升。在物价和股票都上升的时候&a…

下载安装webstrom及激活

太久没在新电脑上安装websrtom,又有点忘了咋激活。 一、安装 1.直接在浏览器搜索webstrom,打开官网,直接点击download。如下图 2.打开安装包,开始安装,直接点击 next 3.选择安装路径(安装在你想安装的位置&…

CentOS命令行安装配置KVM详细教程

系统为centos 6.4 64位 最小化安装 服务器为dell R720,所以网卡为em0,在vmware作为练习安装学习,同样可以,命令行不是为了显的牛B,而是不用考虑桌面兼容性和其他原因的影响一、查看是否支持虚拟化vmware开启方式虚拟化…

mysql addslashes_PHP函数addslashes和mysql_real_escape_string的区别

首先:不要使用mysql_escape_string,它已被弃用,请使用mysql_real_escape_string代替它。mysql_real_escape_string和addslashes的区别在于:区别一:addslashes不知道任何有关MySQL连接的字符集。如果你给所使用的MySQL连…

WebBrowser 控件 内存溢出 补丁 From Microsoft

在程序中用WebBrowser长时间不停访问不同页面会造成内存溢出,微软给出了补丁,但是似乎没有怎么测试。要获得补丁必须通过邮件申请,我申请了三次才凑够了XP,2003和Vista的补丁,给大家分享。不过微软说没有经过回归测试&…

C#中如何得到Graphics对象

2019独角兽企业重金招聘Python工程师标准>>> 利用Graphics对象,我们可以绘制理想的UI。这里首先介绍C#中如何得到Graphics对象。 /如何得到Graphics对象 1. Control.CreateGraphics();直接通过Control类的公开方法获取。可以是Form,基础控件&…

【Lucene4.8教程之中的一个】使用Lucene4.8进行索引及搜索的基本操作

版权声明:本文为博主原创文章。转载请注明来自http://blog.csdn.net/jediael_lu/ https://blog.csdn.net/jediael_lu/article/details/30035025 在Lucene对文本进行处理的过程中,能够大致分为三大部分: 1、索引文件:提取文档内容并…

mysql 5.5 创建用户_MySQL5.5以上版本添加用户

MySQL数据库在5.5以后的版本对添加用户的操作进行了改版,已经不能使用原有的添加语法操作。MySQL数据库5.6版本变更:在数据库用户这一块,为了数据安全,5.6版本不在允许root用户通过insert语句对user表进行添加用户如图报错语法貌似…

discuz!nt论坛搬迁后出错,提示:对象名 'dnt_templates' 无效

2007年10月30日 星期二 16:23对象名 dnt_templates 无效解决方法: --解决重装系统并还原论坛数据库后,数据库帐号不关联的问题。--注意请用sa帐号 进行如下操作--操作之前,确保当前SqlServer中存在和原来数据库所有者同名的帐号 Exec sp_conf…