网通用户访问VeryCD等P2P网站被劫持的分析和解决方案

  今天总算闲了下来,随手把前几天VeryCD被劫持的一些分析记录和解决方法整理出来。相信这份资料对个人站长来说非常有参考价值。

  顺便推荐一下Caoz写的一篇文章,希望大家都能了解做网站背后的辛酸:由做站长的艰辛说起

  ====

  话说VeryCD等网站被劫持的第二天,劫持还在继续。我闲着无聊在QQ群里胡扯,被Dash和xdanger逮到。正好我非常荣幸的是北京网通用户,这个伟大的任务就只能交给我了。

  先用正常方式访问一下VeryCD,得到下面的结果

  Sam@Bogon:~$ curl -v -H www.verycd.com* About to connect() to x.x.x.x port 80 (#0)* Trying x.x.x.x... connected* Connected to x.x.x.x (x.x.x.x) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3> Accept: */*> Host: www.verycd.com> < HTTP/1.1 200 OK< Content-Type: text/html;charset=gb2312< Content-Length:182< * Connection #0 to host x.x.x.x left intact* Closing connection #0Sam@Bogon:~$

  可以发现返回的结果直接被劫持并替换。并不像一般的挂马等行为是在网页内容的最前或者最后部分插入劫持代码。

  之后直接输入VeryCD的IP,返回的结果是VeryCD的squid服务器默认页面,说明IP并没有成为劫持的判断标准。应该是VeryCD的域名或者网页中某个特征导致劫持设备对内容进行替换。(此处省略结果)

  既然域名是判断的标准之一,那么就可以尝试替换HTTP协议中Host的办法来测试

  (1)Sam@Bogon:~$ curl -v -H 'Host: www.veryc.com' www.verycd.com* About to connect() to www.verycd.com port 80 (#0)* Trying x.x.x.x... connected* Connected to www.verycd.com (x.x.x.x) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3> Accept: */*> Host: www.veryc.com> < HTTP/1.1 200 OK(略) (2)Sam@Bogon:~$ curl -v -H 'Host: verycd.com' www.verycd.com* About to connect() to www.verycd.com port 80 (#0)* Trying x.x.x.x... connected* Connected to www.verycd.com (x.x.x.x) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3> Accept: */*> Host: verycd.com> < HTTP/1.1 200 OK< Content-Type: text/html;charset=gb2312< Content-Length:182< * Connection #0 to host www.verycd.com left intact* Closing connection #0Sam@Bogon:~$ (3)Sam@Bogon:~$ curl -v -H 'Host: www.veryc.com' www.verycd.com/verycd.com* About to connect() to www.verycd.com port 80 (#0)* Trying x.x.x.x... connected* Connected to www.verycd.com (x.x.x.x) port 80 (#0)> GET /verycd.com HTTP/1.1> User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3> Accept: */*> Host: www.veryc.com> < HTTP/1.1 200 OK(略) (3)Sam@Bogon:~$ curl -v -H 'Host: w.verycd.com' www.verycd.com* About to connect() to www.verycd.com port 80 (#0)* Trying x.x.x.x... connected* Connected to www.verycd.com (x.x.x.x) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3> Accept: */*> Host: w.verycd.com> < HTTP/1.1 200 OK(略)

  例子中,分别用了4种测试方法

  1为发送一个主机头为www.veryc.com的请求到verycd的服务器,可以看到数据正常返回,没有被劫持

  2为发送了一个主机头为verycd.com的请求到verycd的服务器,可以看到数据被劫持了

  3为发送了一个主机头为www.veryc.com,使用GET方式获取/verycd.com文件的请求到verycd的服务器,可以看到数据正常返回,没有被劫持

  4为发送一个主机头为w.verycd.com的请求到verycd的服务器,可以发现数据没有被劫持

  通过上面的结论可以看出,用于劫持的设备只对域名的host部分做判断。

  我们再来一个有趣的测试:如果把host发送到网通的bbn.com.cn去会怎样呢?

  Sam@Bogon:~$ curl -v -H "Host: www.vercd.com" www.bbn.com.cn* About to connect() to www.bbn.com.cn port 80 (#0)* Trying 202.106.195.131... connected* Connected to www.bbn.com.cn (202.106.195.131) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3> Accept: */*> Host: www.vercd.com> < HTTP/1.1 200 OK< Date: Sat, 08 Nov 2008 13:33:06 GMT< Server: Apache/2.0.59 (Unix) DAV/2< Last-Modified: Thu, 06 Nov 2008 07:21:36 GMT< ETag: "73c63-119c6-259cc000"< Accept-Ranges: bytes< Content-Length: 72134< Content-Type: text/html< Set-Cookie: BIGipServerweb_pool=107325632.20480.0000; path=/< (略)

  可以看到,什么事情都不会发生。这说明劫持设备应该是在北京网通出口上。

  为了证实设备就在北京网通的出口上,我分别用北京不同线路的机器进行了测试,发现访问均一切正常。但某小ISP租用了网通的出口,出现了被劫持的情况。

  为了再证实我的猜想,我在一台位于北京某不受影响的ISP的服务器上分别装了pptpd和rinetd,先测试使用VPN链接到此服务器pptpd,所有数据包通过此服务器发送,访问VeryCD.com,一切正常,数据没有被劫持。

  然后再把本机的hosts指向此服务器,通过服务器的rinetd对数据包进行转发至VeryCD的服务器,发现数据包被劫持。

  结论:加密后的数据不会被劫持。

  我再到外部随便找了一台服务器,此服务器跟VeryCD无任何关系,也不位于同一物理位置,结果如下

  Sam@Bogon:~$ curl -v -H 'Host: www.verycd.com' server.outside* About to connect() to server.outside port 80 (#0)* Trying x.x.x.x... connected* Connected to server.outside (x.x.x.x) port 80 (#0)> GET / HTTP/1.1> User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3> Accept: */*> Host: www.verycd.com> < HTTP/1.1 200 OK< Content-Type: text/html;charset=gb2312< Content-Length:182< * Connection #0 to host server.outside left intact* Closing connection #0

  分析到了这一步,事情已经非常明朗了:

  在北京网通的出口,被人有意或者无意放置了一套类似于GFW的设备用于劫持所有在列表内的P2P网站。我个人更加愿意相信这是网通在测试新设备。因为很明 显,劫持后返回的数据使用了一个警告(warn)的标题,劫持者对于这些被劫持的网站的流量有一个很清晰的认识,并没有自己使用服务器来支撑这些流量(根 据我掌握的数据,这些网站的流量,就算是静态的html文件也需要十几台服务器做支撑),而是不带任何用于分成或者统计的代码跳转到百度(百度用于统计和 分成的代码是tn=xxxx)。(被劫持的第三天有部分流量被分到information.com,直接把information.com弄挂了)。

  至于百度也是有苦难言。白白来了这么多无效流量,消耗资源不说,还要背上一个骂名。据我所知,出事后百度也在到处找方式接触受害网站了解情况。

  ====

  解决方法:

  根据上面的结论,这件事情的解决方法有下面几种:

  1.更换域名,跟劫持者耗。对网站所有者来说低成本,但会造成大量用户不知道新域名而流失。但可以借助百度贴吧来解决。

  2.使用BGP协议,更改北京网通用户到网站服务器之间的路由,跳过劫持设备。缺点是成本太高,BGP协议可以被网通人为忽略。

  3.在劫持设备以内放置一台分流服务器,分流服务器使用VPN或者别的加密链路链接至主服务器进行数据交换。这样用户使用非加密链接链接至分流服务器,劫持设备无法进行劫持。

  4.网站使用ssl,用户和网站之间数据均经过加密,劫持设备无法截取。

  ====

  课外作业:

  既然这套设备类似GFW,众所周知GFW是双向的,不知道这套设备怎样呢?带着这个疑问,我做了一个课外实验,让外省的朋友使用上面的测试方法访问我的机器

  curl -vIH "Host: www.verycd.com" http://124.64.1xx.xx/* About to connect() to 124.64.1xx.xx port 80 (#0)* Trying 124.64.1xx.xx... connected* Connected to 124.64.1xx.xx (124.64.1xx.xx) port 80 (#0)> HEAD / HTTP/1.1> User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3> Accept: */*> Host: www.verycd.com> < HTTP/1.1 200 OKHTTP/1.1 200 OK< Date: Thu, 06 Nov 2008 15:28:27 GMTDate: Thu, 06 Nov 2008 15:28:27 GMT< Server: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7lServer: Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7l< Last-Modified: Mon, 24 Sep 2007 05:23:06 GMTLast-Modified: Mon, 24 Sep 2007 05:23:06 GMT< ETag: "29d84-17ef-43adad0ba6280"ETag: "29d84-17ef-43adad0ba6280"< Accept-Ranges: bytesAccept-Ranges: bytes< Content-Length: 6127Content-Length: 6127< MS-Author-Via: DAVMS-Author-Via: DAV< Content-Type: text/htmlContent-Type: text/html

  可以看到,这套设备真不咋地,不支持反向过滤。

  ====

  又及:

  在测试的过程中,我发现连续发送N个请求出去,总有几个漏网之鱼,能正确返回数据。这说明了啥?

  1.设备是旁路的,失败的截取不会影响到正常的数据传输

  2.设备要么是性能有缺陷,要么有防ddos的功能。我更加愿意相信前者。

  3.不管设备是性能有缺陷还是能防ddos,我相信一点:在大量数据的攻击下,设备肯定会失去部分作用。

时间: 2024-09-20 19:48:23

网通用户访问VeryCD等P2P网站被劫持的分析和解决方案的相关文章

北京网通无法访问 VeryCD域名遭劫持

VerCD是中国的基于开放源码P2P网络共享软件eMule(电骡)的媒体资源提供网站.VeryCD开始于2003年9月,并使用eMule作为基本共享客户端.VeryCD的目标与使命是通过开放的技术构建全球最庞大.最便捷.最人性化的资源分享网络.它由网站社区操控,由网友提供资源.VeryCD已经成为国内媒体资源最丰富的网站之一. VeryCD提醒您:VeryCD网站所有内容都由网友提供,VeryCD仅为网友提供信息的交流平台,所有资源的实际文件都只保存在网友自己的计算机上,VeryCD的服务器不会

两大P2P网站被“劫持” 域名被指向百度

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 据 DoNews 11月6日消息(记者 肖克锋)11月6日,据DoNews网友反映,北京网通5日晚间出现故障,致使BtChina与VeryCD两大P2P网站均被指向百度首页. 该网友称,从11月5日21:00起,当北京网通ADSL用户访问BTChina和VeryCD时,系统就会自动跳转到百度首页,而这一故障一直持续到6日早上才陆续恢复

十一假期或成钓鱼网站“狩猎”季 趋势科技提醒用户访问正规订票网站

消费者在十一黄金周的出游热情不仅让正规商家们翘首以盼,也让网络不法分子们垂涎欲滴.趋势科技发现,不法分子正通过伪造各类网络购票网站.手机票务APP等,骗取消费者的个人用户信息.银行账号.支付密码,甚至直接窃取网银资金.趋势科技提醒消费者,十一长假网络订票务必前往正规的网站,登录后留意网站域名是否正常,并安装可信的个人防毒软件帮助实时甄别网络钓鱼威胁. 利用网络订票早已成为时下流行趋势,涉及范围不仅局限于车票.机票.船票,甚至全国7000多个景区门票都已能在线预订购买,且90%以上价格低于市场价.

P2P网站VeryCD等称遭北京网通劫持无法访问

498)this.w idth=498;' onmousewheel = 'javascript:return big(this)' height=207 alt="" src="http://new.51cto.com/files/uploadimg/20081107/0918100.jpg" width=550 border=0>图1 VeryCD网站跳转截图11月6日晚间消息,VeryCD发布公告称其遭到北京网通劫持,部分北京网通(联通)用户访问会直接跳

传电驴(VeryCD)下载将于本月关闭 P2P网站避风紧张转型

继中国第一P2P门户BTChina命运终结之后,国内未取得国家广播电视总局视听许可证的各大P2P网站,都开始了紧张的转型工作. 不止BTChina一家,在近期已经被关的BT站点被关了400逾家.黄希威表示,"其实BTChina被关是迟早的事,只是想坚持到最后一刻.同时表示对网传自己被拘留的谣言做出澄清".因没有视听许可证被工信部删除备案号,国内知名影视下载网站BTChina命运终结之后,另外一家知名P2P下载网站VeryCD的命运成为了时下网民最为关心的问题. 关于VeryCD是否被封

网站分析:用户访问、内容浏览和流量来源

我们在使用一些网站分析工具的时候会发现一般报表会被分成三大模块:用户访问.内容浏览和流量来源.每个分类都由各种分析度量组成了各类的展示报表,这里先介绍一下内容浏览模块(主要指的是网站的页面浏览)下的各种度量,以及基于这些度量我们可以实现哪些细分. 页面的基本度量 关于一些常见的网站分析度量的定义可以参考我之前的文章--网站分析的基本度量,下面罗列的是一些页面的度量: 页面浏览次数(Pageviews) 页面被打开或请求的次数. 唯一页面浏览次数(Unique Pageviews) 这个是Goog

一步一步SharePoint 2007之八:允许所有域用户访问网站

摘要 上一篇文章让我在同事们面前丢尽了脸,真是郁闷啊,到现在还是红红的:)没办法啊,咱脸皮儿薄呀 !(呵呵,没人扔臭鸡蛋过来吧?) 为了测试添加域用户后的效果,今天我的脸皮又厚了半寸,没办法啊,只能在别人的电脑上才能测试 效果呀! 呵呵,废话少说,开始正式实现允许所有域用户访问网站了. 正文 特别提醒的是,这里不是逐个逐个地允许域用户访问,而是一次性允许所有域用户都可以访问网站. 这里说的一次性允许所有域用户都可以访问,实际上就是允许域用户组可以访问网站.这样做的好处 嘛,哈哈,我只要加一次用户

本机搭建tomcat服务器 架设网站 局域网内用户访问 页面动态加载的数据无法加载

问题描述 本机搭建tomcat服务器 架设网站 局域网内用户访问 页面动态加载的数据无法加载 本机搭建的tomcat服务器,数据库.局域网内用户访问系统页面,ajax动态加载数据无法显示.如图: [用户类型]是ajax动态加载的!本机页面正常,局域网内用户只有页面,没数据! 解决方案 你的代码呢?用chrome开发工具或者firebug看看报错了没有,ajax返回了什么内容. 解决方案二: 浏览器log中有没有错误,ajax打印下返回结果

跟踪优化用户访问足迹体现网站信任感

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 用户体验设计一直在重视网站安全感,用户信任感,但对于站长而言,谨防用户访问站点被病毒攻击或者在页面上体现详细的联系方式就是安全感和信任感的体现吗?笔者从一个用户的角度访问站点,和大家分享我做为一个"用户",网站中的哪些优化设计能让我对网站的信任度更深. 初来乍到 第一印象很重要 不管用户通过和中方式关顾网站,给用户留下的第