跨过GFW重置TCP连接通向自由网络的可行途径

原文“对TCP连接被重置解决方案的探究――跨过GFW通向自由网络的可行途径”转自IGFW
TCP 三次握手:TCP 连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP 窗口大小信息。以下步骤概述了通常情况下客户端计算机联系服务器计算机的过程:
1. 客户端向服务器发送一个SYN置位的TCP报文,其中包含连接的初始序列号x和一个窗口大小(表示客户端上用来存储从服务器发送来的传入段的缓冲区的大小)。
2. 服务器收到客户端发送过来的SYN报文后,向客户端发送一个SYN和ACK都置位的TCP报文,其中包含它选择的初始序列号y、对客户端的序列号的确认x+1和一个窗口大小(表示服务器上用来存储从客户端发送来的传入段的缓冲区的大小)。
3. .客户端接收到服务器端返回的SYN+ACK报文后,向服务器端返回一个确认号y+1和序号x+1的ACK报文,一个标准的TCP连接完成。
TCP 使用类似的握手过程来结束连接。这可确保两个主机均能完成传输并确保所有的数据均得以接收。

中国的网络环境很复杂,同时中国也是对互联网高度控制的国家之一,当然仅限于大陆。而控制中国网民自由上网的网络海关正是大名鼎鼎的 GFW(Great Fire Wall,长城防火墙),GFW的工作原理就是重置TCP连接,那么在此就不得不提一下TCP协议三次握手的简单原理。

根据TCP协议的规定,用户和服务器建立连接需要三次握手:第一次握手用户向服务器发送SYN数据包发出请求(SYN, x:0),第二次握手服务器向用户发送SYN/ACK数据包发出回应(SYN/ACK, y:x+1),第三次握手用户向服务器发送ACK数据包发出确认(ACK, x+1:y+1),至此一个TCP连接建立成功。其中x为用户向服务器发送的序列号,y为服务器向用户发送的序列号。

现在我们来谈谈GFW的工作原理。GFW负责监控全国的TCP连接,当发现敏感词时就会介入,将服务器发回的SYN/ACK包改成SYN/ACK, Y:0,这代表TCP连接被重置,用户便主动放弃了连接,提示连接失败。可以看出,其实GFW就是在欺骗用户,让用户误认为服务器拒绝连接,而主动放弃继 续与服务器连接。

因为GFW是工作在TCP协议层上,这看似坚不可破,可我们不应忽略的是,检测全国TCP连接可不是一个简单的工作,即便是上千台的分布式计算机也 未必有能力逐个TCP连接监控,那么GFW是如何做到的呢?很简单,GFW只在连接发起时监测第一个TCP连接,这样就可大大提高GWF的工作性能。但就 是这样一个提供性能的方法却给GFW留下了一个致命的漏洞,我今天探讨的方案也正是建立在这个漏洞基础上。

首先我们正常发送SYN数据包到服务器进行第一次握手,之后服务器发回SYN/ACK到用户进行第二次握手,接下来,用户继续发送第一次握手时的 SYN数据包,此时GFW根据TCP协议规则认为本次TCP连接结束,停止了对本次TCP连接用户的监视,而服务器知道TCP连接尚未建立怎么会结束,所 以忽略了这个数据包而不受影响。但我们至此只完成了工作的一半,因为GFW是双向监视的,服务器依然被GFW监控,如果服务器能发回一个连接重置的数据 包,GFW也会停止对服务器的监视。虽说来容易,可服务器并不收用户控制,如何才能让服务器随用户的意愿发送连接重置数据包呢?根据TCP协议规则,如果 用户发回的数据包有错误,服务器就会发回连接重置数据包,前文提到,第三次握手时用户发送的ACK数据包应该是ACK: x+1:y+1,可如果用户发送的是ACK: x+1:y,那么服务器自然会发生连接重置数据包。当GFW收到这个包时,认为服务器也重置了此连接也就不再监视服务器了。但这个连接重置包被用户接收后 不能主动放弃连接,这样就需要用户忽略这个重置数据包,不过用户这边我们说了算,怎么搞都行。至此,GFW不再监视本次TCP的用户和服务器,双方可以自 由通信。

下面我再总结下这个TCP连接的过程:

用户-[SYN, x:0]->GFW-[SYN, x:0]->服务器{第一次握手}
用户<-[SYN/ACK, y:x+1]-GFW<-[SYN/ACK, y:x+1]-服务器{第二次握手} 用户-[RST, x:0]->GFW[认为用户TCP连接结束]-[RST, x:0]->服务器{忽略}
用户-[ACK, x+1:y]->GFW[停止监视用户]-[ACK, x+1:y]->服务器{判断是坏包}
用户{忽略}<-[RST, y:0]-GFW[认为服务器重置连接]<-[RST, y:0]-服务器{重置连接} 用户-[ACK, x+1:y+1]->GFW[停止监视服务器]-[ACK, x+1,y+1]->服务器{第三次握手}

这样,一个三次握手的过程被我们改成了六次握手,成功骗过了GFW,好戏正式开始了。

下面再来谈谈GFW的一些事吧。GFW并不是我们想象中的那么强大,相反它漏洞百出,非常脆弱。因为GFW是基于分布式的,所以修补漏洞十分困难, 如果GFW更改监视规则而监视所有TCP数据包则会使性能大大降低。另外GFW会记录下访问过敏感信息的ip一段时间,使该ip无法继续与相应服务器连 接,那么这个记录ip的缓存区就一定有上限,自然就有溢出的可能,如果大量ip访问敏感信息,GFW就会因为这个缓存区溢出而无法检视其他的TCP。没 错,这个其实就是DDoS,2010年1月3日前后的“解封”也听说是与北京GFW被DDoS有关。听说GFW有学生参与,而这些筑墙的哈工大和北邮的同 学们能力不一,导致GFW模块质量参差不齐,这也是GFW存在漏洞的重要因素之一。

但最终技术无罪,只是技术被政治所利用才是最大的悲哀。其实不止是中国,美国用来做网络深度检测的CNCI,预算300亿美元,是GWF的多少倍。区别只在于中国的执事者做事太笨拙而又没有底线,导致普通人也能看出破绽。

最后,对这个方案的探索体现了人们对技术的热衷,而对翻墙的研究则体现了人们对事实与自由的追求。而不论是从对技术热衷的角度还是从对事实与自由追求的角度,我都很愿意成为他们中的一员。

原文链接:https://allinfa.com/tcpcross-gfw.html
原文标题:跨过GFW重置TCP连接通向自由网络的可行途径 - 美博园
※ 除声明转载,美博园文章均为"原创",软件版权归原作者,转载请以上面超链接注明来源!

本文TinyURL短网址: http://tinyurl.com/yauklno3
本文Google短网址: https://goo.gl/NTR4Ah

如喜欢本站请订阅: 或者 点此【RSS订阅真相网】

网 友 留 言

2条评论 in “跨过GFW重置TCP连接通向自由网络的可行途径”
    • 美博园 says:

      朋友也是这方面的专家了,欢迎来到美博园。情况基本上是你说的那样,只是很抱歉目前朋友还不想公开加密方式,正如你所知道的,一旦公布了可能很快就会被破解,这次只是设计了简单网页进行广泛测试,不久再推出正式网站,PP优点是简便,如能推广何不是广大网民之福。

这里是你留言评论的地方

8 + 9 =
Copyright © 2007 - 2018 , Design by 美博园. 版权所有. 若有版权问题请留言通知本站管理员. 【回到顶部】