查看: 64997|回复: 64

网通封路由的技术原理分析

[复制链接]
发表于 2007-3-3 12:23:24 | 显示全部楼层 |阅读模式
最近我们这的垃圾网通,在插了一年的广告之后,终于开始封路由了。
其实这并不难理解,在神奇的中国,是什么事情都可能发生的!!!
与其他人不同的是,我自己写的那个反网通插广告的软件,已经平稳地在我机器上运行,所以目前我比其他人少忍受了流氓广告的骚扰。

下面切入正题:
最近经常发现,在打开某个新网站的时候,IE立即显示该页无法显示,然后刷新一次网页,就可以正常显示了。
通常如果网站无法连接,IE建立tcp连接会超时,要过一会儿才能看到该页无法显示的提示。

这是怎么回事呢?
开始怀疑是我的SPI过滤广告的程序出错,导致SOCKET阻塞,没有返回。后来排查了源码,发现没有问题,卸载了之后情况依旧,不是这里。
再看网上的介绍,我怀疑是自己的TCP协议出问题了,于是执行命令,重载了TCP协议。重启后,发现还是没有解决。不对。

所以鄙人决定抓包分析。(Sinffer Pro 4.7)
开始抓包,随便访问了一个出现过这种情况的网站,果然出现了该页无法显示的提示。

ok,下面我们看看抓包的结果吧。(图1)

这是标准的建立TCP三次握手的过程,有什么错误么?没有吧。。。不过,等等!!!
第二次握手,从服务器返回的数据报,里面的ISN(服务器的初始序列号),怎么这么奇怪呢?
为什么是1?正常的服务器的初始序列号一般来说不会是1的,这种情况基本是千载难逢的。
先不管,总之我们的TCP协议栈发了一个ACK=2的应答给服务器,TCP三次握手成功。

再看图2,怎么回事呢?在我们发送了GET后,怎么又来了一个代表TCP第二次握手的数据报?

我们这次就明白了,原来刚才收到的第二次握手的数据报,是伪造的。它给出了错误的ISN,导致我们用错误的ISN跟服务器建立了TCP连接。
当然了,真正的服务器是不能接收一个错误的序列号的,所以后面,你的连接就被服务器复位了。

详细的,请看Sniffer的抓包分析吧。

至于网通是怎么判断我在使用路由的,我也说不太好。
估计是用了几个联合的特征来判断的。
我一台机器用路由上网,有时候也会被封杀。当然2台机器上网,情况更严重了。

——————我是分隔线——————

本文所提及的驱动等,可以跟踪下面的链接
http://www.csna.cn/forum.php?mod ... &extra=page%3D2

[ 本帖最后由 robur 于 2007-4-22 12:05 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2007-3-3 16:40:18 | 显示全部楼层
我们这次就明白了,原来刚才收到的第二次握手的数据报,是伪造的。它给出了错误的ISN,导致我们用错误的ISN跟服务器建立了TCP连接。
当然了,真正的服务器是不能接收一个错误的序列号的,所以后面,你的连接就被服务器复位了。

如果说第二步的[SYN,ACK]是伪造的话,那么3-way handshake的最后一步[ACK]是无法完成的,因为ack的seq不对,直接就被server给reset了。从cap上看,显然这个连接是已经建立了。而且最后server发出的RST的seq=2.

[ 本帖最后由 iLRainyday 于 2007-3-3 17:11 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-3-3 17:23:47 | 显示全部楼层
有一个时间差异问题需要注意。
你可以通过TTL来看看。
baidu的TTL应该是49吧,伪造的TTL是115。
回复

使用道具 举报

发表于 2007-3-3 17:34:38 | 显示全部楼层
那么看起来通过3-ways handshake建立起的连接只是同某个中间设备建立起来的,也就是说SYN被hijack了。然后client发出get,直接就被这个中间设备回复以RST。

看来client其实始终都没有和baidu建立起真正的连接。
回复

使用道具 举报

 楼主| 发表于 2007-3-3 18:40:36 | 显示全部楼层
客户端和baidu没有建立真正的连接,因为数据报的SEQ从第二次握手开始就是错误的。

但是客户端不知道有所谓的“中间设备”,更没有和中间设备建立一个TCP连接。(中间设备只是发送一个伪造的二次握手数据报,来阻止客户和服务器完成连接。注入式会话劫持)

最后,复位客户会话的是服务器。因为其收到了一个非预期的数据报(ACK=2)。服务器对这个数据报作出响应,按这个数据报的ACK给客户发送一个SEQ=2(上一个ACK)的RST。

应该是这样。
回复

使用道具 举报

 楼主| 发表于 2007-3-3 18:50:34 | 显示全部楼层
我从今天开始将会对网通封用户路由的情况进行分析。
先发一个我做分析的网络模型上来,给大家看看,呵呵,很绝啊!
另外说一下,我的ADSL,在一条电话线上,是可以同时使用一个帐号接入创建10个活动的PPPoE连接的,线路复用了……

反封锁方法嘛,其实也好办,治标治本的方法。。。苦心钻研中。。。

ADSL Modem的RJ45——》宽带路由LAN口1——》宽带路由LAN口2——》HUB LAN口
这个连接,其实就是想把ADSL Modem连接在HUB上。但是因为端口翻转的问题。。。不得以用宽带路由的交换机功能中转了一下

宽带路由WAN口,连接到HUB的LAN口,因为ADSL相当于连接到HUB上,就是让路由通过HUB连接到ADSL Modem,进行通信,我在旁边的笔记本上可以进行抓包分析。

我的台式服务器是正常连接到路由的LAN口上的,通过路由方式上网。

这样我的Sniffer基本可以抓到相当于在Internet上的本机流经数据,比在局域网中抓的效果好很多。

[ 本帖最后由 robur 于 2007-3-3 18:55 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2007-3-3 21:37:47 | 显示全部楼层
回复

使用道具 举报

发表于 2007-3-3 23:01:20 | 显示全部楼层
网通中间设备利用时间优势,抢先发了个假的第二次握手,一招就把与真正服务器的TCP连接破坏掉了

[ 本帖最后由 wap12345 于 2007-3-3 23:04 编辑 ]
回复

使用道具 举报

发表于 2007-3-3 23:33:45 | 显示全部楼层
回复

使用道具 举报

发表于 2007-3-4 16:34:15 | 显示全部楼层
try this:

iptables -A INPUT -p tcp --tcp-flags RST RST -j DROP
回复

使用道具 举报

 楼主| 发表于 2007-3-4 19:13:42 | 显示全部楼层
看来iLRainyday兄弟是通晓Linux的高手啊,呵呵,佩服,那东西我一直没敢用呢

另外,这个东西貌似并不是为了真正封路由,而是为了减少其网络的负载。
你看,P2P下载中大量的连接请求被RST,你的下载速度能快么?

网通公司啊,为了赚钱,不顾一切地拉用户入网,然后为了减少自己网络负载,就出此下策!
回复

使用道具 举报

发表于 2007-3-4 20:46:39 | 显示全部楼层
其实不是啦,都是今天看的一篇论文《Ignoring the Great Firewall of XXX》

现在电信上封宽带路由器以及非法接入似乎也是用的这个法子。

另外,《Improving TCP's Robustness to Blind In-Window Attacks》这一篇draft对这种blind attack做了讨论。
draft-ietf-tcpm-tcpsecure-07.txt

TCP has historically been considered protected against spoofed packet injection attacks by relying on the fact that it is difficult to guess the 4-tuple (the source and destination IP addresses and the source and destination ports) in combination with the 32 bit sequence number(s). A combination of increasing window sizes and applications using a longer term connections (e.g. H-323 or Border Gateway Protocol [RFC4271]) have left modern TCP implementation more vulnerable to these types of spoofed packet injection attacks. Many of these long term TCP applications tend to have predictable IP addresses and ports which makes it far easier for the 4-tuple to be guessed. Having guessed the 4-tuple correctly, an attacker can inject a RST, SYN or DATA segment into a TCP connection by carefully crafting the sequence number of the spoofed segment to be in the current receive window. This can cause the connection to either abort or possibly cause data corruption. This document specifies small modifications to the way TCP handles inbound segments that can reduce the chances of a successful attack.

[ 本帖最后由 iLRainyday 于 2007-3-4 20:58 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-3-6 15:28:48 | 显示全部楼层
经历了大约40次蓝屏死机,终于用NDIS搞出了一个过滤驱动。
刚才测试,可以过滤该种攻击

安逸了,再等我测试一下,发上来。。。

CNC,表逼我。。。
回复

使用道具 举报

发表于 2007-3-8 15:12:33 | 显示全部楼层
等你发上来呀
期待中。。。。。
回复

使用道具 举报

 楼主| 发表于 2007-3-8 23:42:29 | 显示全部楼层
诸多被电信、网通压迫的xd们,你们的希望来了。。。

鄙人已经成功开发出了基于NDIS的过滤驱动,工作在网卡驱动上面,可以直接在系统底层拦截非法的数据报(比如网通用会话劫持插入的广告,或者我在顶楼说的这个操作)

经过鄙人反复测试,这套过滤驱动,可有效运行于Windows 2000,xp和2003。(用DDK啊,Vista的DDK还没有出来吧)
不过单独只过滤广告的那个程序,可以运行于Vista,Vista兼容以前的SPI规范的。

最近事情太多,等我过两天,发上来,给大家看看吧。

总之,现在我这里,已经成功屏蔽了网通插进来的所有乱七八糟的东西。用驱动实现就是好啊,可以在数据报没进入TCP/IP协议栈的时候,就把包丢掉,SEQ和ACK也就不会被占用了,呵呵。

其实这东西前几天弄出来了,今天把过滤会话劫持插广告的功能,加进去了。

再次证实了一个道理:求人不如求自己。我打过N多次10060,有个P用啊?
回复

使用道具 举报

发表于 2007-3-9 15:02:45 | 显示全部楼层
lz你可以tracert or ping 网站的地址看看ttl,这样测出的ttl一般都是准的,比较看看那个是真的s a回包。
ps:tcp劫持技术对icmp不起作用~~
回复

使用道具 举报

发表于 2007-4-19 12:26:34 | 显示全部楼层
汗。。。网通的做法不地道
回复

使用道具 举报

发表于 2007-4-19 18:32:33 | 显示全部楼层

不太懂啊

你们说的杂恁高深啊,我是个新手,听得似懂非懂,进后得多听你们多看你们得帖子,学习学习
回复

使用道具 举报

发表于 2007-4-22 09:55:44 | 显示全部楼层
怎么到这里就结帖了?
还等lz发驱动呢。
回复

使用道具 举报

 楼主| 发表于 2007-4-22 12:03:25 | 显示全部楼层
原帖由 y2k1 于 2007-4-22 09:55 发表
怎么到这里就结帖了?
还等lz发驱动呢。

http://www.csna.cn/forum.php?mod ... &extra=page%3D2

xd看帖子不认真啊,也怪我,没有把每个帖子的链接关联起来……
上面那个地址就是了,呵呵
回复

使用道具 举报

发表于 2007-5-5 08:05:48 | 显示全部楼层
加油,完全看不懂
回复

使用道具 举报

发表于 2007-5-5 13:57:04 | 显示全部楼层
这真是高手满天飞啊
回复

使用道具 举报

发表于 2007-5-8 09:28:05 | 显示全部楼层
看的一头大汗,晕了~
回复

使用道具 举报

发表于 2007-5-30 00:29:19 | 显示全部楼层

佩服,我改写PassThru,做了一个通用的包检查和过滤驱动

佩服,我改写PassThru,做了一个通用的包检查和过滤驱动。不过使用驱动直接控制数据包,太底层了。需要一个编译程序,将直接的过滤检查及修改请求,编译为驱动可识别的硬性规则。郁闷。本人编译挂科了。有兴趣的可以加我QQ:280188300

说明:通用的驱动可以检查数据包,修改数据包。使用的NDIS中间层驱动。在所有协议的底层,有特有的优势。希望我的工作是有意义的。
回复

使用道具 举报

发表于 2007-5-30 09:19:51 | 显示全部楼层
看了后很有启发,真是分析的很有道理
回复

使用道具 举报

发表于 2007-6-9 11:21:46 | 显示全部楼层
看来还要学习的东西还多.
回复

使用道具 举报

发表于 2007-6-11 03:15:06 | 显示全部楼层
以后还要各位大哥照顾小弟我呢!!!!1小鸟一只呢`!!!
回复

使用道具 举报

发表于 2007-6-11 18:52:10 | 显示全部楼层
这个想法估计网通酝酿已久了!
终于实施了!
回复

使用道具 举报

发表于 2007-7-22 11:30:04 | 显示全部楼层
看一看。。。。。。。
回复

使用道具 举报

发表于 2007-7-23 05:10:41 | 显示全部楼层
等你发上来呀等你发上来呀等你发上来呀等你发上来呀等你发上来呀等你发上来呀等你发上来呀等你发上来呀等你发上来呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表