详解电信封路由打开网页显示检测到多台电脑页面,及解决方法

网上很多人说的电信检测路由的方法都是胡乱猜测,下面的方法是比较正确的。

从某些渠道获知,电信采取对ADSL用户内网主机个数的检测,根本不是通过什么SNMP协议等方法,而通过修改MAC地址的方法来防止检测也是一个很荒谬的流言

而采取cookie的方法目前来说网页劫持比较多,这样做的同时除了可以获取到主机的个数,而且可以像广州有线电视无耻的插广告的方式,来插入垃圾网页强制要求用户浏览。
    
  接下来就开始说明一下广州电信是如何拦截用户的网页浏览的。
  测试的环境: 浏览器ie 6.0 抓包工具: sniffer pro 4.7 adsl路由上网
  测试步骤:重新拨号,用浏览器打开www.google.com网页,同时运行抓包工具分析整个访问流程。
  
  如果是正常的网页访问想必大家都知道就2个步骤:
  步骤1:客户端向服务器发出访问请求
  步骤2:服务器向客户端发回网页数据

但是在这次抓包过程中,却发现整个访问的步骤多了很多大体步骤如下:
  

         步骤1:客户端向google服务器发访问请求(google服务器的IP为64.233.189.104)  
  步骤2:怪事来了!google服务器竟然发过来一个命令要求
          客户端带着某种参数去访问IP地址为59.42.71.199的服务器。  
  步骤3:于是客户端向IP 为59.42.71.199的服务器发出带参数的访问请求,  
  步骤4:IP为59.42.71.199的服务器返回数据给客户端(返回的数据包含2个功能,一个是在客
         户端设置了一个cookie文件,一个是让客户端重新访问www.google.com)  
  步骤5:于是客户端又傻忽忽的去访问google服务器;  
  步骤6:google服务器给客户端返回正常的网页数据。
 
经过查询59.42.71.199的IP是广州电信的ip,而且该主机我也扫描过了,是一台windows2003+II6的服务器,服务器名是gz-web(我想一般人是不会用这个机器名的吧。),而且本人的主机到该服务器只需要10跳,和202.96.128.68广州的域名服务器的跳数一样,那么是不是电信的搞的服务器,呵呵。。。。。我就不多说了。

以上不难看出我们在访问google的时候,出现了异常,其中关键在那里呢,就在步骤2!,当我们正常的去访问某个网站的时候(比如google),这时候,电信拦截了这个客户端的访问请求,并伪造出了这个网站给客户端的返回数据,欺骗客户端去访问电信指定的一个垃圾或恶意的网站,在客户端访问网站的同时给在客户端上生成相当于验证码的cookie,从而获取用户信息或其他不可告人的目的,当他们目的达到后,又欺骗客户去重新访问正常的网站并不再搞拦截欺骗。

那么通过cookie来获取内网主机个数的原理是什么的,这个就我个人看法是,要求通过对内网所有的用户的网页劫持,强制要求所有用户去访问某个恶意的网站,并生成cookie种到用户的主机内。而每个cookie的内容在每台主机都是不一样的,这样如果在某个时间段内,有相同的ip,但是有5个不同的cookie来访问过这个恶的网站,那么马上就可以分析出该ip内至少有5台主机。
  
  但是这里我们需要注意的几个方面是:
  一,电信不会拦截所有的网站,主要对大家经常使用的网站进行拦截欺骗,
  二,电信也不会一直对某个用户进行拦截,一般是用户拨号上网后,第一次访问网页时进行拦截,以后不定期的或周期性的对客户进行拦截。
  三,个人信息隐私问题,再在这里用户访问网页所有的动作,电信全部可以记录下来。
  

相必我们都记得索尼就曾经在光盘中加入防止盗版的信息,遭遇了巨额赔款。中国电信的此举显然也是严重侵犯了用户的隐私,若遭遇网民的集体诉讼…………………………. 反正我是不太看好!。
  这个就是关键的第二步
  ******************内容*************************
  <HTML>
  <head>
  <title>
  </title>
  <META HTTP-EQUIV=”Pragma” CONTENT=”no-cache”>
  <META http-equiv=”Content-Type” content=”text/html;charset=gb2312″>
  </head>
  <body>
  <iframe width=0 height=0 style=”display:none; width:0px;height:0px;”src=”http://59.42.71.199/ndatin.aspx?1479443740&m=4¶m=ABZFhOb………tdVdVkyOXRMdz09″>
  </iframe>
  </body>
  </html>
  ********************************************************
  
  大家请注意“ width=0 height=0 style=”display:none; width:0px; height:0px” 这个东西,也就是说大家访问新的网站打开的新窗口的长宽都是 0! 也就是是说新打开的窗口 我们是看不到的!
  
   1.jpg

    这是第4步骤:目的是设置cookie,并让客户端重新访问原网站。
  
  ******************内容*****************
  HTTP/1.1 200 OK
  Date: Tue, 18 Jul 2006 12:38:14 GMT
  Server: Microsoft-IIS/6.0
  X-Powered-By: ASP.NET
  Set-Cookie: ASP.NET_SessionId=bz1XXXXXXXXX; path=/
  Set-Cookie: ExpCookieTicket2005=K6XXX…XXXXkg==;

  ****在这里给客户设置cookie****
  expires=Fri, 28-Jul-2006 12:38:14 GMT; path=/
  Cache-Control: private
  Expires: Mon, 17 Jul 2006 12:38:14 GMT
  Content-Type: text/html; charset=utf-8
  Content-Length: 246
  <HTML>
  <HEAD>
  <META HTTP-EQUIV=”Pragma” CONTENT=”no-cache”>
  <script>
  try
  {
          window.setTimeout(“top.location.href = ‘http://www.google.com/’;”, 800);

  ****用这个指令让用户重新访问正常网站****
  }
  catch (e)
  {
  
  }
  </script>
  <title></title>
  </HEAD>
  <body>
  </body>
  </HTML>
  ***************************************
  
  
2.jpg

这是别人分析出的IPID检测共享上网的方法:

因自己专业原因,家里有4台电脑,结果就收到电信强制发来的页面,称什么“我公司检测到您使用了多台机器共享上网,超出您申请的宽带接入使用许可。因此暂时终止您的上网服务,请尽快致电10000与我公司联系恢复服务”。上网先搜索看有没有办法破解,果然,TP-LINK针对这个问题提供了TL- R402M V2版本路由器升级软件 http://www.tp-link.cn/download/list.asp?id=489 ,可惜我不是用的这款路由器,看来得自己动手破解了。 于是我借了一台路由器, 升级后来分析他们之间差异,这样就可以着手破解了。

大家共享上网,一般都是用路由器作NAT、NAPT方式的IP地址转换,把多个内网地址转换成一个公网IP地址。

路由器或者代理只是对IP地址作了转换,从外部来看是看不出来与普通的IP包有什么不同的,那么是如何检测到的呢,用IP协议构建的互联网,一共有5层结构,电信能获取得只能是第三层到第五层,至于网上有TX说的什么伪造MAC地址的办法肯定不行,MAC地址出了路由器就被重新封装了,电信根本拿不到。至于应用层分析,狗的这层千差万别的应用,他们也更本没这个技术能力来确定我们机器的数量。看来只有分析IP和TCP包头了,仔细分析IP报头看看到底有那些信息可能泄漏我们内网机器得数量。看一下IP报文的结构:
  
  0 4 8 16 31
  版本 首部长 服务类型 总长度
  标识 标志 片偏移量
  寿命 协议 首部校验和
  源端IP地址
  目的端IP地址
  长度可变的任选字段 填充
  数据
  …
  
  版本:IP协议的版本,大家都是4。
  首部长度:报头首部的长度,4字节的整倍数。
  服务类型(TOS):每个机器都一样,用来表示优先级。
  总长度:整个报文首部和数据的长度。
  标识(identification):数据报的标识,用来标识出数据长度超过MTU分片时,进行重新组装数据的位置标识。这部分可以用来分析共享上网的特征。
  标志:有MF和DF分别标志分片结束和不能分片。
  片偏移: 长报文分片后,在原报文中的位置。
  生存时间(TTL):数据报在网络中的寿命。
  协议: 携带数据使用的协议。
  首部校验和:报文首部的校验信息。
  源地址:4字节源IP地址。
  目的地址:4字节目的地址。
  从IP报头的组成来看,只有可能携带内网信息的就是“标识(IPID)”,在每一台内网机器作地址转换时,IPID的序号是没变化的,而每台机器又是随机从一个数开始,有规律单调增加,看来根据这个ID的不连续来判断机器的数量。 抓包看看,果然:
  12:19:41.000000 10.10.49.204.61993 > 10.199.201.37.http: . [tcpsum ok] ack 4292552168 win 64240 (DF) (ttl 127, id 40255, len 40)
  12:20:23.000000 10.10.49.204.62017 > 10.199.201.37.http: . [tcp sum ok] ack 1 win 64240 (DF) (ttl 127, id 40756, len 40)
  12:21:37.000000 10.10.49.204.62216 > 10.54.226.252.http: S [tcpsum ok] 1820371619:1820371619(0) win 16384 (DF) (ttl 127, id 57601, len48)
  12:21:40.000000 10.10.49.204.61993 > 10.199.201.37.http: . [tcpsum ok] ack 4293696808 win 64240 (DF) (ttl 127, id 41427, len 40)
  12:22:06.000000 10.10.49.204.61993 > 10.199.201.37.http: . [tcpsum ok] ack 4293946004 win 64240 (DF) (ttl 127, id 41671, len 40)
  12: 23:10.000000 10.10.49.204.62017 > 10.199.201.37.http: . [tcpsum ok] ack 1633741 win 64240 (DF) (ttl 127, id 42293, len 40)
  12:24: 00.000000 10.10.49.204.61993 > 10.199.201.37.http: . [tcpsum ok] ack 4294795172 win 64240 (DF) (ttl 127, id 42632, len 40)
  12:24: 24.000000 10.10.49.204.61993 > 10.199.201.37.http: SFRPW[bad tcp cksum 1748!] 2115643160:2115643180(20) ack 972685314 win 46144urg 3585 (DF) (ttl 125, id 42893, len 40)
  12:25:05.000000 10.10.49.204.62259 > 10.200.222.45.http: P [badtcp cksum 6be7!] ack 1 win 19652 (DF) (ttl 127, id 1673, len 40)
  12:25:53.000000 10.10.49.204.61993 > 10.199.201.37.http: . [tcpsum ok] ack 940080 win 64240 (DF) (ttl 127, id 43799, len 40)
  12:25:56.000000 10.10.49.204.61993 > 10.199.201.37.http: . [badtcp cksum 579d!] ack 1019539 win 17520 (DF) (ttl 125, id 43846, len 40)
  12:25: 56.000000 10.10.49.204.62017 > 10.199.201.37.http: E [badtcp cksum 8380!] 2120652494:2120652506(12) win 11414 urg 5633 (DF) (ttl125, id 43859, len 40)
  12:26:05.000000 10.10.49.204.62259 > 10.200.222.45.http: R [tcpsum ok] 3206002624:3206002624(0) win 0 (DF) (ttl 127, id 1731, len 40)
  
  有三个变化范围的IPID序号,彩色标记出来的IPID序列号的变化很有规律,一定范围内变化的报文就是由一台机器发出的,嘿嘿,根据这个因此可以判断有三台机器共享上网。
  
  再看看TCP头里面有什么东西可以看看,抓包来看,居然Windows将每个TCP的包头中的可选扩展段用来打标每台机器的时间戳,想必我们每台机器的时间不会都调得如此精准,每个机器发出的时间戳的误差不会完全相同,看来利用这个时间戳也可以大致判断内网的机器数量。

很多人说打开网页出现了下面这个页面:
亲爱的用户: 您好!我公司检测到您使用了多台机器共享上网,根据公安部门对互联网信息安全管理的相关规定,不允许宽带私自串接。为了做好网络安全管理工作,切实保证您的上网质量及合法权益,请您切断非正式注册用户接入(切断非正式注册用户后您将能正常上网)。如有其他疑问,请咨询电信客服热线10000。感谢您对我公司的支持! 2008年1月

这个页面是怎么来的呢?

下面这个方法是我和一群做小区宽带的山寨ISP长期研究的结果,电信显示上面页面就是这个方法,不过我们是用来给快到期的用户下发继费通知的!(相比之下山寨寨主们比电信要厚道多了)

其实在检测到用户有用路由器带多个用户之后,要让用户显示这个页面就很简单了。

电信现在基本上是pppoe认证,认证过程是:用户向网络广播一个pppoe server(BRAS) 发现包,当服务器(BRAS)收到这个包后马上回复,用户向收到的反应最快的一台服务器(BRAS)发出认证请求,然后把用户名密码发给服务器(BRAS),服务器(BRAS)再把用户名密码发给radius服务器来验证用户的合法性,验证成功radius 把用户的属性(Profile)下发给pppoe server(BRAS).

如果确定用户用路由器带了多机,就在radius 里面修改用户的属性(Profile),标记为用路由用户。

然后用户在下一次来验证时,radius下发用户属性时,下发一个特定段的IP给用户,这个ip也是公网ip可以正常访问公网。

只不过在访问web服务时,打开所有的请求都被重定向到上面那个提示页面上。

方法得简单只要在路由上加一条规则:

chain=dst-nat src-address-list=(radius下发的特定ip 段) protocol=tcp dst-port= 80 action=dst-nat dst-address=提醒服务器ip dst-port= 80

意思是:把所有ip地址是特定段的目的端口为80协议为tcp的请求重定向到提醒服务器上。这样打开任何网站都会显示上面的内容。

要解决这个很简单,使用代理服务器就行了,不过使用代理服务器打开网站比较慢,而且不稳定。当然如果自己在另外一个地方有带宽资源的话可以在那里架一个代理。
还中以用其它的自动代理的软件,不过有很多软件现在都不太好使,好使的又基本上都是那些打开反动网站的工具。

当然还可以用vpn等来访问网站。

关于怎么样解决防止电信通过cookies 来检测内网机器数量暂时还没想到办法,网上的山寨主们正在想办法。

我暂时提供一个防止cookies检测的方法,不过要像前面说的那样用sinnfer抓包,找出检测的那个服务器的IP.

找到ip后 设置一条这样的防火墙规则:chain=forward dst-address=检测服务器ip protocol= tcp dst-port=80 content=cookies acction=drop
在一般稍好一点的带内容滤的防火墙上设置为,禁止访问外网的ip检测ip服务器的ip的数据包里面带有cookies的包通过。有这个功能的路由器可以试试。

现阶段最有效的办法就是多打10000号反应网速慢,上不了也打电话,死活不承认共享上网,据说电信之所以没有完全封路由不是因为技术上做不到,而是因为:电话被打爆,设备不敢开。



本文固定链接: http://www.ntxz.net/?p=1556 | 周忞 | 吉心的记事本



该日志由 吉心 于2011年03月29日发表在 网络摘编 分类下, 你可以发表评论
在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 详解电信封路由打开网页显示检测到多台电脑页面,及解决方法 | 周忞 | 吉心的记事本
关键字: , ,

详解电信封路由打开网页显示检测到多台电脑页面,及解决方法:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!