浅谈当前电信检测宽带共享的机制

来源:互联网 发布:spss 数据全部成问好 编辑:程序博客网 时间:2024/05/02 02:32
本人在深圳,家里用的是中国电信的宽带,之前一直带的是两台电脑,后来把笔记本带回家后就出现了各种无法打开网页的问题。究竟是怎么回事?
 
时间得推回毕业后的那段时间,某一晚,两台台式机还在正常使用的时候。再把笔记本打开上网之后,其中一台电脑就无法打开网页了,但奇怪的事是QQ竟然是保持在线的,发几条消息,还真的发出去了。
 
显然,根据经验来说,这种问题多半是DNS问题,因为QQ内置了IP地址,可以在DNS失效的时候尝试直接连接,所以即使没有DNS的情况下QQ在线也是正常现象。
 
下一步,果断打开nslookup检查DNS状态,但是更加奇怪的事是DNS的解析是完全正常的,此时再试打开网页,依然不行。
 
可能会想到,是不是浏览器问题?虽然从没更改过设置,既然是排除问题,那还得检查一下代理等设置,当然,也是没有问题。
 
也许再抱着希望,再试试,这回网页又顺利的打开了。好吧,能上了咱就不管它了。
 
过了一会,到隔壁又去摸了一下笔记本,再一回来,现象重现,显然,这已经超出了偶然的范围了。
 
本地没有问题,那只能是网络部分的问题了,究竟是什么问题呢,咱抓包看看就清楚了。
 
WireShark必备工具,开始监听后,尝试访问随便一个网站,切换回来一看,问题出来了。
 
第一,DNS解析的来回两个包正常,所以DNS木有问题;
第二,QQ的数据包也是有来有往,所以QQ也不会掉线,发消息也非常正常;
第三,网页HTTP协议之前的三次握手包,从SYN包发出去之后就立即被RST了,连续三个如此,也难怪网页立即挂掉了;
 
刷多几次网页,无一外乎的全部被RST重置了,这个手段完全就是……阝方 火 长 土成……不过对付P民就不需要这个啦……
 
既然国内网站也被wall掉,又能收到RST包,那只能是电信发现我超过了两台电脑,所以动手脚了,手法和那个东西无异。
 
好,废话说完,转入正题,电信是怎么发现我超过了2台设备呢???
 
现今国内网络,都是使用PPPoE协议作为第2层基础传输协议用以承载用户的数据,而用户们的网络使用是基于第3层的IP协议,网络协议是一层一层向上承载的,显然,ISP既解决了一般传输的安全问题又解决了计费认证的烦恼,真是开心啊。但是作为用户,肯定是不可靠的,说只能支持2台电脑,但国人聪明啊,自己拉分线去牟利,以私人之名拉群用网络,这肯定就动了人家的奶酪了嘛。所以,ISP们也要好好整顿整顿这些家伙。
 
第一种途径,TTL值。TTL值是Time To Live的意思,是IP数据包中的其中一个包头标志,虽然本意是用来限制数据包的生存时间(题外话:为什么要限制生存时间?数据包每经过一次路由,TTL值就会减去1,直至为0时丢弃。假设某一个路由器的路由配置错误导致形成了路由环路,若没有TTL限制,那么这个数据包就会一直在网络中无限漂流,直至越来越多的包把网络堵死为止。),由于每一个发送数据包的程序不同、操作系统不同、设备不同,所发出的数据包的TTL起始值也不同,假设监视设备发现你家的线路上出现很多不同的TTL值数据包,则可以认为你线路上承载了不同的电脑。但是前面说了,TTL值可以被应用程序通过底层接口去更改的(题外话:一般编程中使用Socket可以获得基于IP层的控制权,但多数情况下,程序员们还是喜欢直接使用TCP或者UDP的传输层接口,而且不设定或者使用高层接口,则使用系统的默认值),所以用这个标志来判定的话,估计99%的用户都会悲剧。至于如何对此法进行反侦察,估计也就不言而喻了。
 
第二种途径,标识号。标识号和TTL值一样,是IP数据包中的一个包头标志,标识号是用来标识一个数据包的编号(题外话:因为IP数据包是可以分片的,就是说你发出ABC三个字母的时候,可能被分别拆成单个字母发送出去,而接收时也可能因为到达的顺序不一样导致收到CBA的问题,所以标识号就用来标识每一个包的编号,这样收到分片的数据包就可以按照正确的顺序重新排列了),而这个看似没啥作用的标识字段,对于ISP来说,可是非常关键的。因为我们的操作系统,对IP数据包的标识号处理一般都是从某一个初始值开始顺序递增,在一定时期内是非常规律的,无论是TCP数据还是UDP数据,他们的IP数据包的标识号都是统一由操作系统所控制的,而且受影响的机会很小(题外话:高级编程中,托管环境内的SOCKET接口是不允许更改这个包头的,或者说,压根就没有这个成员字段),所以这是辨别线路上用户数量的绝佳办法。由于一般情况下,同一台电脑在一段时间内的IP数据包的标识号是有规律递增的,而且数据包经过路由器时,除了地址、端口、TTL等少数信息被修改外,其他数据都会原样转发出去,所以在线路上检测发现有超过一定数量的规律性数据包流,那么就可以判定这条线路上存在多人使用的情况了,此类检测方式目前还是非常流行的,准确率也极大的提高了,估计有不少用了普通路由器的同志都栽在此处了。因此,很多宣称反共享免疫的路由器,都是针对这个对症下药的,也难怪效果还真的不错。此外,iptables也有一个module可以解决这个问题,有兴趣的自己可以买个linux内核的路由器DIY一下。
 
第三种途径,网页广告。正所谓道高一尺魔高一丈,既然被发现了,那就玩更阴的。用电信的人都知道,每天上网总是会时不时弹出各种电信的广告(或者各种账单信息),有弹窗的,也有内嵌的,更加细心的通知会发现时不时打开一个网页还会经过几次跳转,亦或是在地址栏后加了点尾巴。虽然这不是中毒,也不影响访问,但实际上,你已经被盯梢上了!究竟网页广告是如何成为间谍的呢?
 
一起来揭开电信当前共享检测神秘的面纱吧:
 
第一步,时不时的开几个网页,触发一下检测机制,稍后便有请求被劫持了;
 
第二步,查看源代码,如果你清楚HTML代码,你会发现,原来我们的请求实际上被嵌套在一个页面框架里了。也就是:目标网页 -> 新网页【 框架1(目标网页)占100%-> 框架2(检测网页)占0%】;
 
第三步,分析原理:我们看到,检测网页里,实际上是对http://121.15.207.143:4022/logo.jpg进行请求,虽然我们看到是logo.jpg的图片,但是后面带的p=xxx的参数,实际才是电信想要搜集的东西。具体参数里是什么?看图2,显然,这是在收集浏览器的信息,包括了版本号、窗口可用大小、屏幕分辨率的信息,而这些信息却恰恰是每个终端都很可能不同的。比如次要版本号,打了补丁和没打补丁的用户、不同浏览器的用户 都是不一样的,再比如可用分辨率,xp系统少30px,win7系统少40px,这些参数都是很容易确定了一条线路上有多少不同用户在使用。至此,我们揭开了网页广告方式进行检测的神秘面纱;
 
第四步,一试究竟,既然知道了这回事,到底那个logo.jpg是啥,好奇的我来直接访问看看?可惜,无论你怎么访问,最后人家都是不理你的。因为只有触发了以后,只能提交请求,其他时间都是不理你的,而且如果回传了非正确的参数,还会帮你302到127.0.0.1上面的,够隐蔽的吧!
 
知己知彼百战不殆,既然电信如此流氓,我们如何应对?简单的,把对应的121.15.207.X的IP和4022端口封掉就完事了,不过要注意,检测回传的IP可是会变动的,并不是固定的,我家所在的深圳这边的目前就是几个同段的IP,为了省事,我直接在路由器上REJECT掉了这些地址端口的TCP请求。如果你使用的是iptables封禁的话,建议用REJECT而不是DROP,因为后者会形成浏览器等待超时,导致触发检测时响应过慢。
 
好吧,本期浅谈到这,转载请注明出处,谢谢阅读。
原创粉丝点击