作者 主题: 穿越GFW技术及其控制方法https://64.182.117.104:8136/search/label/anti-censorship  (阅读 1572 次)

版本

  • 访客
--穿越GFW技术及其控制方法
  https://64.182.117.104:8136/search/label/anti-censorship
   凹建勋 李理 贾斌 戴魏巍


(清华大学计算机系 网络所 北京 100084)


摘 要:本文分析了GFW所采用的主要技术,介绍了几种突破GFW封锁的软件及其技术原理,并针对它们使用的技术介绍了相应的控制方法,并进一步分析了可能的突破封锁的技术。
关键词:GFW;加密代理;穿越;破网控制;透明Web Cache


目录
[隐藏]

1 一、引言
2 二、GFW及其主要技术
3 1、概述
4 2、GFW所采用的关键技术
5 (1)、国家入口网关的IP封锁
6 (2)、主干路由器关键词过滤拦截
7 (3)、关键词过滤-复位包分析
8 1)IP头部分:
9 2)TCP头部分:
10 三、几种破网软件的原理
11 1、Tor原理分析
12 (1)概述、功能
13 (2)工作原理
14 (3)技术原理
15 2、使用SSH穿越GFW
16 1)SSH简介
17 2)SSH协议的内容
18 3)SSH的安全验证
19 4)SSH的应用
20 5)利用SSH突破GFW
21 3、自由门
22 (1)密钥建立
23 (2)SSL
24 (3)加密代理服务器的实现
25 (4)自由门技术的改进
26 4、无界浏览器
27 (1)无界浏览的使用方法
28 (2)版本沿革
29 (3)无界浏览器使用示意图:
30 (4)特点:
31 5、其他穿越GFW的技术
32 四、对破网软件的控制
33 1、对Tor
34 2、对加密代理型浏览器
35 (1)无界加密代理的工作原理
36 (2)网络活动概述
37 (3)各步骤的发包规律
38 (4)侦察监控方法
39 1)、IP跟踪法
40 2)、数据包筛选法
41 (5)具体工作流程
42 3、一种基于透明Web Cache的内容过滤方法
43 1)逻辑架构图
44 2)透明缓存服务器的工作原理
45 3)黑名单—— 不良网址过滤数据库
46 4)网络数据包的侦听、匹配与阻断
47 五、可能的破网方法:
48 1、使用内容压缩、加密、变换和信息隐藏
49 2、利用主机漏洞搭建代理,自己创建动态代理服务器。
50 3、VPN技术
51 六、结语
52 参考文献
53 任务分工
 



[编辑] 一、引言
WWW空前广泛的应用,正在影响和改变人们的生活方式。但在WWW庞大的网络信息空间中,夹杂着大量的有害信息,主要包括:垃圾信息、虚假信息、政治渗透信息、种族歧视信息和恶意代码等,这些信息的泛滥对Internet造成了严重的信息污染。
对网络空间的监控能有效地阻止有害信息的传播,控制计算机犯罪。放置在可信任网络和不可信任网络之间的防火墙,是运用非常广泛和效果最好的选择[1]。 Internet可以分为国内网络与国外网络两部分。由于各国的安全策略各不相同,因此不同的国家对有害信息的认定有不同的标准。对于我国来说,不良信息主要集中在国外网络。防止信息污染不仅要保证国内网络空同的洁净,同时要防止国外网络不良信息的侵蚀。 目前我国的国际互联网出口的核心节点设在北京、上海和广州,国内的计算机信息网络进行国际联网,必须使用国家公用电信网提供的国际出入口信道。为了有效的控制信息流动,在出口处安装了防火墙[2]。
防火长城,也称中国防火墙或中国国家防火墙,这是对“国家公共网络监控系统”的俗称,是指中华人民共和国政府在其管辖互联网内部建立的多套 网络审查系统的总称,包括相关行政审查系统。其英文名称Great Firewall of China,缩写为GFW[3],国内简称“防火长城”,国外也叫“功夫网”。


[编辑] 二、GFW及其主要技术


[编辑] 1、概述
GFW主要指公共网络监控系统,尤其是指对境外涉及敏感内容的网站、IP地址、关键词、网址等的过滤。GFW的效果通常为,国内网络用户无法访问某 些国外网站或者网页;或者国外网络用户无法访问国内的某些网站或者网页。这里的无法访问,有永久性的无法访问(比如某些色情网站),也有因为URL中含有 敏感关键词或者网页上有敏感内容而暂时性的无法访问。 国家防火墙并非中国的专利。其他国家也有类似的防火墙,对危害其国家安全的信息进行侦听,而中国的国家防火墙会直接切断敏感连接。伊朗、巴基斯坦、乌兹别 克斯坦、北非共和国、叙利亚、缅甸、马尔代夫、古巴、北韩、南韩、沙特阿拉伯、阿拉伯联合酋长国、也门使用与GFW类似的国家防火墙。以下是猜想的GFW 工作原理图[5]。
 


[编辑] 2、GFW所采用的关键技术


[编辑] (1)、国家入口网关的IP封锁
从90年代初期开始,中国大陆只有教育网、高能所和公用数据网3个国家级网关出口,我国政府对认为违反国家法律法规的站点进行IP封锁,这是有效的 封锁技术。对于IP封锁,用普通Proxy技术就可以绕过。只要找到一个普通的海外Proxy,然后通过Proxy就可以浏览自己平时看不到的信息了。所 以,网络安全部门现在通常会将特别反动的网站的网址加入关键字过滤系统,以防止网民透过普通海外HTTP代理服务器访问。
一般情况下,GFW对于海外非法网站会采取独立IP封锁技术。然而,部分非法网站使用的是由虚拟主机服务提供商提供的多域名、单 (同)IP的主机托管服务,这就会造成了封禁某个IP,就会造成所有使用该服务提供商服务的其他使用相同IP的网站用户一同遭殃,就算是内容健康、正当的 网站,也不能幸免。例如如森美的个人网站,内容并无不当之处,但网站使用的是虚拟主机托管服务,而因为有一个香港BBS亦使用该托管服务,这就造成了 GFW为了封锁该BBS,直接把这个固定IP:203.80.210.5封禁了。随之,有82个香港网站由于GFW封锁了这个IP地址,不论合法与否,都 不能在中国大陆访问。


[编辑] (2)、主干路由器关键词过滤拦截
主干路由器关键字过滤拦截在2002年左右开始,中国公安部门研发了一套系统,并规定各个因特网服务提供商必须使用。思科等公司的高级路由设备帮助 中国大陆实现了关键字过滤,最主要的就是IDS(Intrusion Detection System)--- 入侵检测系统。它能够从计算机网络系统中的关键节点(如国家级网关)收集分析信息,过滤、嗅探出指定的关键字,并进行智能识别,检查网络中是否有违反安全 策略的行为。
IDS主要进行IP数据包内容的过滤,如果符合既定的规则,则向该连接两端的计算机发送IP RST包,这可以从前后IP报头TTL值相差较大的特点可推测出来,用这种方法干扰两个通信终端间的正常TCP边接,使数据流中断,而在终端主机上会显示 连接失败。这种关键字过滤-重置技术只对TCP连接有效。而广泛应用的HTTP协议正是使用TCP作为传输层协议,从目前来看,GFW对HTTP报文的过 滤仅限于HTTP头,通常URL请求就位于HTTP的头部分,而GFW对HTTP数据部分很可能不作过滤,这正是某些用PHP编写的HTTP在线代理能避 开关键词过滤的原因,例如PHProxy,它将明文的URL请求放在HTTP数据部分,而不是放在HTTP的头部。对UDP(DNS通常使用 UDP,GFW对捕获的DNS查询报文也进行关键词过滤并返回伪DNS响应,但因UDP没有复位标志而无法进行传输层的干扰)及其他第四层协议无效,对明 文数据有效,对加密数据无效。不同的IDS有可能在一段预定或随机的时间内持续干扰刚刚被中断的两计算机间的所有TCP通信。所以在访问境外网站时,如果 数据流里有敏感字词,即会立即被提示“该页无法显示”或网页开启一些后突然停止,随后在1-3分钟或更长时间内无法用同一IP浏览此域名或IP地址上的内 容,屏蔽时间可能与敏感词等级以及所属网站有关。此种过滤是双向的,也就是说,国内含有关键词的网站在国外不可访问,国外含有关键词的网站在国内不可访 问。 以上所述的技术,也称为域名劫持,原理如下图所示。
 
某些特定的海外网站网址会被列入关键词过滤,即使IP地址未被封锁,也不能访问。 不过,GFW对于网页中含有的关键词字符并不是100%可以过滤成功,即使某些网页被成功过滤并导致“该页无法显示”,此时只要在浏览器进行多次刷新就有 机会显示出来。而且,GFW还会偶尔出现故障而导致关键词过滤系统失效,此时部分只被网址关键词过滤的网站就能正常使用。
对于Google.com的查询返回结果可能是专门过滤的,即GFW针对Google.com返回结果中的网页地址进行过滤,对关键词的过滤并不严格。
从GFW的分布来看,审查过滤系统主要位于国际出口处,但最近通过对审查过滤系统返回的RST复位包IP头进行TTL值分析,发现存在两个 欺骗源,其一位于国际出口处,另一个位于骨干网省级接入处。因此推测GFW对于境内的非法内容也具有一定审查能力。对于境内网络内容的审查可能主要是通过 ICP备案来实现的。
从2007年2月前后,GFW开始对境外及境内的WAP网站含有的敏感字符进行过滤,原本在移动版Google可以打开的维基百科中文版 现已不能通过Google网页转换功能进行访问,连带的就是在访问含有“zh.wikipedia.org”的Google连结后,5分钟内再次访问 Google被拦截。
关键字过滤的弱点就是对已加密的信息无能为力,而网址的关键字和网页的关键字都可以用不同的手段来加密,从而使这样的信息过滤系统从根本上失去作用。不同的加密手段也是后来所有突破网络封锁软件的基础。


[编辑] (3)、关键词过滤-复位包分析
有些网站含有大量的有用信息,同时也夹杂着大量的有害信息,如Google搜索引擎,如果使用域名重定向、lP地址过滤或者URL过滤都会禁止用户访问合法的信息。在这种情况下,可以使用基于内容的过滤,即只屏蔽掉含有有害信息的页面。
通常使用网址的关键字和网页的关键字过滤的方法屏蔽有害页面。防火墙建有一个敏感词词库,一旦网址或Web页面中的内容含有这个词库中的词时,防火墙将截获该网页,阻止对该页面的访问。
这种过滤是一种细粒度的过滤,实际上是对报文数据内容的过滤。在应用层可以实现对URL的过滤以及报文内容的过滤。应用层有害内容过滤不可避免地降低了互联网的通行效率,并且一般其有较大的误报率,但总的来说监控效果较好。
当前基于内容的过滤主要针对文本内容,对图像、音频、视频等多媒体内容的过滤仍未达到实用阶段。
由文[7]的试验,可得GFW具体的过滤方式:采用嗅探软件记录HTTP客户端进出站数据包,且只考虑TCP连接。从进站RST复位包IP 头TTL域值的分析,可认为逻辑上存在两个欺骗源(实际可能只是初始TTL不同),可分别称为“伪源1”和“伪源2”,伪源1离客户端路由跳计数较大,逻 辑位置大致在因特网运营商国际出口处,伪源2离客户端路由跳计数较小,逻辑位置大致在因特网运营商骨干网省级节点处。


[编辑] 1)IP头部分:
Identification(标识)字段:在第一批RST包中,伪源1和伪源2将其设置为一个固定的值,而正常的处理方式是发送的每个IP报文都有不同的标识值,一般按生成次序递增。观察中发现伪源2的第二批RST包中该域值会改变。
Flags(分片标志)字段:伪源1和伪源2处理方式不同,例如伪源1将DF(不分片)标志置0,伪源2将DF标志置1。
Time to Live(生存时间)字段:如前所述,伪源1的RST包到达客户端PC时经过的跳计数较大,而伪源2较小,且可推测与真正的源物理位置有差距。


[编辑] 2)TCP头部分:
Sequence number(序列号)字段:关键词过滤系统很可能会偶而繁忙导致本地出口堵塞,以致RST包发送延迟并晚于真正的源发回的数据包到达客户端PC,造成 RST包被客户端PC丢弃,从而整个过滤干预行为失败。考虑到这个因素,伪源还具有序列号预测功能,例如伪源2相邻的3个RST包中该值分别相差 1460(以太网默认MSS值)和2920(即1460*2)。
Window size(窗口大小)字段:伪源1和伪源2处理方式不同,例如伪源1似乎为该字段设置了一个随机值,伪源2将其置0。正常的RST包是将该字段置0。 此外还包括HTTPS证书过滤、对破网软件的反制、对电子邮件的通讯的拦截等技术。
从以上的分析可知,GFW的主要技术手段大概有两种:
1)、IP封锁 这种方法主要针对国外知名的新闻网站,比如:http://news.bbc.co.uk /,http://wikipedia.org等,从技术上直接禁止了国内对这些IP地址的访问,或者利用的是国内的域名解析服务,可以将某些网站导向到 广告网站或者警告网站。但是,这样的手段只能是重点防卫,而不能全面使用。为了规避IP封锁,只能通过借用国外代理服务器的方式,以国外的代理服务器为跳 板,间接的访问这些被封锁的网站,具体的工具如无界浏览器、加拿大大学研究人员开发的Psiphon等。
2)、关键字过滤
针对多若繁星的个人网站,博客网站,社群网站,采用IP封锁的方法就不合适了,对这些网站的防卫主要依靠关键字过滤,比如说,一旦发现内容 中包含了china,中国共产党这样的关键字,就切断连接。但是,这种技术手段很难在骨干网和骨干路由器上实现,否则骨干路由器的负担太重,难以保持合理 的运行速度。所以,一般的做法是在接入网末端部署具备关键字过滤功能的防火墙,一旦检测到不和谐的关键字,这些防火墙就向两端都发送TCP RST包,让两端的机器以为连接中断了,实际上,原始的TCP包已经通过了防火墙,路本来是通的,只是亮了一下红灯,如果假装没看到红灯,闭着眼睛走过 去,反而不会有任何障碍。


[编辑] 三、几种破网软件的原理
早期的破网软件都是普通代理工具的进一步完善。因为当时还没有采用内容和网址的过滤技术,所以只要找到合适的代理,在浏览器中设置代理服务器和端 口,基本就可以畅通无阻。这些工具擅长于代理的搜索、校验和动态切换,比较有代表性的是“代理猎手”和“MultiProxy”等[6]。
2002年采用关键字过滤技术后,各种加密的代理也就应运而生了。其中比较有名的是SSL加密页面代理,它能够根据用户的请求,把其他网 站的内容抓过来,然后用SSL的加密传递给用户。用户使用加密代理,就能够浏览其他各种被审查封锁的网站,而所有的信息都是加密传输的,包括网址URL。 但随着软件升级,金盾可以嗅出个别固定域名网站的证书,维基百科443端口的SSL加密浏览也被封住了。
此外利用服务端和客户端的软件,自己定义加密手段,把服务端软件安装在海外的机器后,就可以用客户端软件加密浏览海外的信息了。随着各种加密代理的成熟,它们互相之间也开始吸取各自的长处,有些甚至在易用性上进展很大,做到了用户点击运行就可以自由浏览的程度。
使用这些技术的软件包括无界浏览,自由门,花园软件,世界通,火凤凰等等。其中前三个被称为“破网三剑客”。它们的基本工作原理基本上是一 样的:运行软件后自动寻找预置软件服务器列表中的代理服务器,通常寻找最快的那几个,连接成功后自动设置IE,使IE成为代理访问模式。这样就可以直接用 IE访问几乎任何网站了。通过代理返回的数据包经过加密,可以有效穿过关键词的过滤,达到可以访问任何信息的目的。这些软件里内置的代理服务器大多设置在 国外。
 
代理服务器可以用于突破防火墙对IP的封锁。如上图所示。但是要突破GFW对海外网站的封锁,一般的代理就远远不够了。
下图中显示了三种用代理访问海外被封网站的情况。第一个用一般国内的代理,第二个用一般的海外代理,第三个用自由门。对于网页浏览器(如 IE或火狐FireFox)而言,使用自由门时自由门就是网页浏览器的代理,所有的数据流都是经过自由门加密后传输的,所以也叫加密代理。从图中可以看 到,三种情况中只有自由门可以有效的突破网络封锁。 如下图所示。
 


[编辑] 1、Tor原理分析


[编辑] (1)概述、功能
Tor(The Onion Router),中文叫“洋葱路由”,是一种点对点的代理软件,依靠网络上的众多电脑运行的Tor服务来提供代理,帮助用户抵御流量分析系统,对个人的自由与隐私等进行保护。
流量分析是一种对网络的监视行为,它能够从计算机网络系统中的关键点(如国家级网关)收集分析信息,过滤、嗅探指定的关键字,并进行智能识 别,检查网络中 是否有违反安全策略的行为,主要进行网址的过滤和网页内容的过滤,如果符合既定的规则,会干扰用户与服务器的连接,使数据流中断,达到禁止访问的目的。 Tor软件将用户的通信通过一个由遍及全球的志愿者运行的中继(relay)所组成的分布式网络转发,以此来保护用户的安全,它令监视用户的 Internet连接的那些流量分析系统无法知道所访问的站点,它还令所访问的站点无法知道用户的物理位置。Tor能与现有的许多应用程序配合工作,包括 Web 浏览器、即时通讯客户端、远程登录和基于Internet的TCP协议的其他应用程序。


[编辑] (2)工作原理
利用Tor软件可以构建一个分布式、匿名的网络来抵御流量分析系统。
Tor有助于降低简单的和高级的流量分析的风险,把用户的流量分散到互联网上的多个地点,所以不存在单一的一点可以把用户和目的地联系起 来。在Tor网络上,来源和目的地是由一条通过数台中继的随机的路径连接的,数据包在这条路径上传输,因此,不存在在任何单一点上的观察者能够知道数据从 哪里来、到哪里去。
Tor的一个特色是,只要用户运行了Tor server,用户的电脑就成为一个Tor节点,别人可以通过这个节点访问其它节点,用户也可以通过别人的节点进行访问。在Tor节点和节点之间的通信是 完全加密的(SSL),所以不用担心你的通信会泄密。当要访问一个地址时,Tor利用一种路由算法在众多Tor节点中找到一条可达路径。数据经过几“跳” 以后,最终能够到达一个可以访问目标资源的Tor节点。Tor的选路过程并不是按照最优的原则,而是随机的。这和它的设计目的:防止数据追踪有关。使用随 机的路由就使得数据追踪几乎不可能。 以下图1--图3是Tor的工作原理图。
 
图1 工作原理一 用Tor创建一条私有路径时,用户的软件或客户端通过网络上的中继递增地建立一条由若干加密连接组成的电路(circuit)。电路一次扩展一跳 (hop),电路上的中继仅仅知道它从哪一个中继接收数据以及向哪一个中继发送数据。没有一台单独的中继会知道数据包的完整路径。客户端为电路上的每一跳 分配独立的加密密钥以保证连接数据通过时不被跟踪。
 
图2 工作原理二 一旦一条电路建立完成,多种类型的数据可以进行交换,不同种类的软件应用程序也可以在Tor网络上部署。因为每一台中继最多只能知道电路中的一跳,窃听者 (eavesdropper)或者被入侵的中继(compromised relay)都无法通过流量分析把连接的来源和目的地联系起来。Tor仅作用于TCP数据流,任何支持SOCKS的应用程序都可以使用它。
 
图3 工作原理三 出于有效性,Tor 为大约在相同的十分钟内发生的连接分配同一电路。以后的请求被分配不同的电路,这样攻击者就不能把你早先的行为和新的行为联系起来。


[编辑] (3)技术原理
Tor网络是一个overlay网络,每个节点(onion router,OR)都是运行在用户级,不需要内核级等特权;而且与其他的OR维持着一个TLS的连接;运行本地的代理软件(onion proxy,OP)去获取服务器目录,建立电路回路等。
每个OR都维持着一个长期的identity key和一个短期的onion key。Identity key用来给TLS证书做签名,给OR的路由描述符(密钥,地址,带宽,出口规则,等)做签名,给目录做签名(有目录服务器做)。Onion key用来解密用户的请求,然后建立一个电路,协商一个临时密钥。
传输单元
OR同其他的OR,或者OP通讯时,使用了协商好的临时密钥,经由TLS连接进行通讯,将数据隐藏起来,安全的进行转发,阻止了攻击者对数据的修改。
流量按照固定的大小单元(cell)在链路上进行传输。每个单元是512字节,由一个头(header)和一个有效载荷(payload) 组成。这个头中包括:一个电路的标识(circID),指明数据单元要经过的电路号;一个命令字段,表明将要对payload做何处理。基于命令类 型,cell要么是控制单元(control cell),通常由接收者进行解释处理;要么是中继单元(relay cell),携带着端到端的数据流。控制单元的命令主要有:padding(用来保持存活等),create或created(建立一个新的电 路),destroy(销毁一个电路)。
而中继单元在有效载荷的开始又有自己额外的中继头,包含:一个流标识(streamID),一个端到端的校验和(用来做完整性检查),一个中继载荷的长度,一个中继命令。整个的中继头和中继载荷采用了128-比特的AES加密后进行传输。 下图为传输单元的格式。
 
cell结构
电路的建立
下图表明了电路如何建立,密钥如何商议,以及如何访问网页。
 
Alice建立一个2跳的电路,并访问一个网页
Alice与OR1和OR2的密钥协商:
1) Alice发送一个create命令的包,其中包含了电路标识C1,以及用OR1的公钥加密的密钥,这个密钥是Alice单方选择的。C1是Alice和OR1之间需要建立 的电路的标识号。
2) OR1接收到后,回复一个created命令的包,其中包含了,电路标识C1,OR1选择的密钥,以及对双方协商好的密钥K1的Hash值。
3) Alice发送一个relay(中继包)命令给OR1,包的载荷中有一个用K1加密的信息,这个信息中包含了extend命令,OR2名字,和用OR2的公钥加密的密钥。
4) OR1接收到后,用K1进行解密,然后创建一个create包,选取一个OR1和OR2间没有用过的电路标识C2,连同用OR2的公钥加密的密钥一起发送给OR2。
5) OR2接收到后,回复一个created包给OR1,其中包含了自己选取的密钥,和对与Alice协商好的密钥K2的Hash值。
6) OR1接收到后,给Alice发送一个用K1加密的包,包中含有extended命令,OR2选取的密钥,以及K2的Hash值。
7) Alice接收到后,用K1解密,获得与OR2协商好的密钥K2。 至此,Alice便与OR1和OR2协商好了密钥。 Alice经由上面的电路访问网页:
1) Alice将要访问的网页先用K2加密,然后用K1加密,将结果放进一个relay包中给OR1。
2) OR1用K1解开后,将结果信息也放进一个relay包中发送给OR2。
3) OR2接收到后,用K2解密,然后与目标网址进行TCP连接的建立。成功后,用K2加密connected命令包发送给OR1。
4) OR1接收到后,替换掉电路标识,然后对加密的信息再用K1进行加密,将最终结果放进relay包中发送给Alice。
5) Alice接收到connected信息之后,就发送Http请求进行访问,以后的通讯与前几步类似。
中继包
一旦Alice建立好了电路之后,就可以发送中继包。接收到中继包的OR,会查询相应的电路,对数据包进行解密,来查看是否有一个有效的校 验。如果无效,OR查询电路上的下一个OR和电路标识,将原来的电路标识替换后,把解密后的relay包传送给下一个OR。若最后一个OR不能识别这个 relay包,表明有错误发生,这条电路就会被销毁掉。
每个OP对待relay包基本上都是相同的操作,反复对relay包的头和有效载荷用相应的密钥进行解密。如果哪个阶段校验信息是有效 的,则表明这个包是在这层的OR上创建的。要针对一个确定的OR创建relay包,Alice先确定一个摘要信息,然后对relay头和有效载荷进行重复 加密,所用的密钥是与路径上由远及近的OR商议好的密钥。Relay包中这个摘要信息只有在经过最后一个OR的时候,才会发现是一个有效的值,这个OR得 到了Alice真正的目的明文,然后进行目的地的访问。
当这个OR返回给Alice信息时,先用协商好的密钥对这个relay包进行加密,然后按原路返回,每经过一个OR都会进行相应的加密处理,最终传送到Alice时,Alice需要进行多次解密才能提取到真正的信息。
数据流的传输开始与关闭
当Alice的应用程序想要与指定的地址和端口进行一个TCP连接时,她会要求OP去完成这个连接。OP选择一条最新的或者建立一条电路, 选择一个合适的OR作为出口节点与目标机连接。然后OP向出口节点发送一个relay begin包,随机选取一个流标识。一旦出口节点连接到目标机,便回复一个relay connected包。OP接收到后,会给应用程序发送一个连接成功的回应信息。于是OP便开始接收应用程序的数据,将数据打包成relay data包进行发送。
当数据传输完毕需要关闭时,也存在与TCP类似的方法:进行两次握手的正常操作,一个握手的非正常操作。非正常关闭,只需要发送一个relay teardown包。而正常关闭是发送一个relay end包。
目录服务器
Tor用一些共知的OR来记录网络拓扑的变化,节点的状态,包括密钥和出口策略。每一个这样的OR称为目录服务器(directory server),就像一个HTTP服务器,客户端可以从这里获取当前网络的状态和路由列表,其他的OR也可以上传自己的状态信息。OR会定期的向每一个目 录服务器发布他们的状态信息的签名声明。所有客户端软件都事先加载了服务器的列表资料和他们的密钥。
当目录服务器接收到一个OR的签名声明后,会检查这个OR的identity key是否被识别,服务器不会对未识别的OR进行发布。


[编辑] 2、使用SSH穿越GFW


[编辑] 1)SSH简介
传统的网络服务程序,如 FTP、Pop和Telnet在传输机制和实现原理上是没有考虑安全机制的,其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口 令,攻击者可以轻易获得这些数据。而且,这些网络服务程序的简单安全验证方式很容易受到"中间人"(man-in-the-middle)攻击。
SSH是英文Secure Shell的简写形式。通过使用SSH,可以加密所有传输的数据,以抵御"中间人"攻击,而且还能够防止DNS欺骗和IP欺 骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为 FTP、Pop、甚至为PPP提供一个安全的"通道"。
最初的SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件包,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。
SSH在运行方式也不像其他的TCP/IP应用,SSH被设计为工作于自己的基础之上,而不是利用包装(wrappers)或通过Internet守护进程inetd来进行。


[编辑] 2)SSH协议的内容
SSH协议是建立在应用层和传输层基础上的安全协议,它主要由以下三部分组成,共同实现SSH的安全保密机制。
传输层协议,它提供诸如认证、信任和完整性检验等安全措施,此外它还可以任意地提供数据压缩功能。通常情况下,这些传输层协议都建立在面向连接的TCP数据流之上。
用户认证协议层,用来实现服务器的跟客户端用户之间的身份认证,它运行在传输层协议之上。
连接协议层,分配多个加密通道至一些逻辑通道上,它运行在用户认证层协议之上。
当安全的传输层连接建立之后,客户端将发送一个服务请求。当用户认证层连接建立之后将发送第二个服务请求。这就允许新定义的协议可以和以前 的协议共存。连接协议提供可用作多种目的通道,为设置安全交互Shell会话和传输任意的TCP/IP端口和X11连接提供标准方法。


[编辑] 3)SSH的安全验证
从客户端来看,SSH提供两种级别的安全验证。 第一种级别(基于口令的安全验证),只要你知道自己的帐号和口令,就可以登录到远程 主机,并且所有传输的数据都会被加密。但是,这种验证方式不能保证你正 在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就 是受到"中间人"攻击。
第二种级别(基于密钥的安全验证),需要依靠密匙,也就是客户端必须为自己创建一对密钥,并把公钥放在远程服务器上。如果客户端要连接到 SSH服务器上,客户端软件就会向服务器发出请求,请求用客户端的密钥进行安全验证。服务器收到请求之后,先在该服务器的用户根目录下寻找客户端的公钥, 然后把它和客户端发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密"质询" (challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可以用客户端的私钥解密再把它发送给服务器。
与第一种级别相比,第二种级别不需要在网络上传送用户口令。另外,第二种级别不仅加密所有传送的数据,而"中间人"攻击也是不可能的(因为攻击者没有私钥)。但是整个登录的过程可能慢一些。


[编辑] 4)SSH的应用
首先,SSH最常见的应用就是,用它来取代传统的Telnet、FTP等网络应用程序,通过SSH登录到远程主机并执行工作或命令。在不安全的网络 环境中,它提供了很强的验证机制与非常安全的通讯环境。实际上,SSH开发者的原意是设计它来取代原UNIX系统上的rcp、rlogin、rsh等指令 程序的;但经过适当包装后,完全可以取代传统的Telnet、FTP等应用程序。
而用来替代r系列指令的SSH,则在安全方面做了极大的强化,不但对通讯内容可以进行极为安全的加密保护,同时也强化了对身份验证的安 全机制,它应用了在密码学中已发展出来的数种安全加密机制,如 Symmetric Key Cryptography,Asymmetric Key Cryptography, One-way Hash Function,Random-number Generation等,来加强对于身份验证与通讯内容的安全保护。通讯时资料的加密有IDEA,three-key triple DES,DES,RC4-128,TSS,Blowfish 等多种安全加密算法可供选择,加密的key则是通过 RSA 进行交换的。资料的加密可以对抗IP spoofing,RSA这种非对称性的加密机制则可用来对抗DNS spoofing与IP routing spoofing,同时RSA也可以进行对主机身份的验证。
其次,通过使用用SSH可以在本地主机和远程服务器之间设置“加密通道”,并且这样设置的“加密通道”可以跟常见的Pop应用程序、X 应用程序、Linuxconf应用程序相结合,提供安全保障。 SSH的“加密通道”是通过“端口转发”来实现的。客户端可以在本地端口和在远程服务器上运行的某个服务的端口之间建立“加密通道”。然后只要连接到本地 端口。所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。当然只有远程服务器上运行SSH服务器软件的时候“加密通道”才能工作。


[编辑] 5)利用SSH突破GFW
我们知道,GFW对国外敏感网站的封锁主要是通过ip限制与关键词过滤来实现,SSH显然可以突破关键词过滤拦截,即SSH通过创建一条加密隧道来防止特定关键词被GFW发现。以下介绍利用SSH突破GFW的限制的原理。
几个相关的概念。
SSH客户端,SSH服务端,应用程序客户端,应用程序服务端。
就突破GFW限制这个应用而言,SSH客户端与应用程序客户端都位于本地,而SSH服务端与应用程序服务端位于远端。(注:也可以在本地创 建SSH服务端,让应用程序客户端与SSH服务端都位于本地,而SSH客户端与应用程序服务端都位于远端。然后通过一个SSH的反向连接来达到目的。然 而,多数的应用还是前面讲述的情形)。那么,为了突破GFW的封锁,我们有什么要做的呢?
首先,应当在国外有一个运行SSH服务的主机,至于如何获得这样的主机不在本文的讨论范围内(无论你是通过黑客入侵的手段,还是租用此类服务等)。SSH的服务应当位于国外,否则将无法规避GFW的IP限制。
其次需要运行一个国外代理服务器,如果没有,本地的应用将受到限制。因为此时本地的应用将被局限在某一个被限制的站点,而不是一些。如果在运行SSH服务的主机上有足够的权限,当然也可以在其上安装相应的代理服务。
第三是让本地的SSH客户端监听某一端口,一旦该端口有数据要传送,SSH客户端将会在在本地与远端的SSH服务端建立一个加密连接。然后被监听端口的数据将加密传送给SSH服务端,而SSH服务端在收到数据后,将做相应的端口转发。这样做能规避GFW的原因在于:
1)运行SSH服务的主机并非被禁止的IP,因此你可以与其建立连接。
2)本地与远程SSH服务的主机所传送的数据都经过加密,因此GFW防火墙并不能轻易发现敏感信息。
下面具体举一例说明:
比如想通过web方式访问维基百科,而通常情形下这是被GFW所禁止的。所要做的是,先在本地SSH客户端执行如下命令: ssh –L9999:proxy:proxy_port sshd_server 这个命令的用途为:让ssh客户端监听9999端口,如果有数据,将其加密传输至ssh服务端,而服务端则相应向proxy的proxy_port转发。 命令说明:9999是客户端的本地端口,也就是SSH客户端所监听的端口。Proxy,proxy_port分别为代理服务器的名字(或IP)以及它的服务监听端口。sshd_server是运行SSH服务的主机。 这么做以后,只需将本地的浏览器代理设置为localhost:9999。接下来就可以顺利访问维基百科了。(本例中proxy可为http代理或socks代理)。


[编辑] 3、自由门
自由门可以非常安全的让你自由畅游网络世界。其加密强度程度可以与国际金融系统的相比,会自动隐藏你的IP,任何人绝对看不到你的IP。其最新版为自由门6.34版,修复了个别情况下代理密码的设置问题。
该软件的功能就是连接代理服务器,客户端和代理服务器端之间的数据经过高强度的SSL加密,数据传输速度很快,它自动搜索到代理服务器,连接并使用,访问美国骨干网络的速度快很多,能突破多种限制。
自由门软件工作模式分为:代理模式和经典模式。在经典模式下程序会自动设好与密道有关的设置文件并设好IE代理。
自由门软件其实质是用加密代理服务器的技术。为确保包含关键字信息的数据包不被GFW截获,加密代理服务系统器需要与客户端进行安全通信。一次安全通信分为密
钥建立和保密通信两部分。这里详细介绍密钥建立和广泛应用的网络安全套件SSL协议。自由门软件界面如下图所示。
 


[编辑] (1)密钥建立
在客户端和加密代理服务器开始交互大量信息之前,两者需要建立一个安全的信道。于是,双方需要进行密钥建立以确定本次通讯所使用的公共密钥。
密钥建立分为无服务器的对称密钥建立和基于服务器的密钥建立,可根据代理服务器的类型和客户端的数量自行设计。无服务器的对称密钥建立又包 括点对点密钥更新(有共享长期密钥)和无预先共享密钥的密钥建立两种。无预先共享密钥的密钥建立可以使用Diffie-Hellman密钥交换协议来实现 分发公共密钥。其缺点是容易受到中间人攻击。


[编辑] (2)SSL
SSL协议用来在客户端和服务器之间建立安全的TCP连接,并向基于TCP/IP协议的客户/服务器应用程序提供客户端和服务器的验证、数据完整性 及信息保密性等安全措施。主要用于浏览器和Web服务器之间建立安全的数据传输通道,还适用于Telnet、FTP和NNTP等服务。
然而,SSL协议在具体使用中还面临如下3个问题:
①客户端对服务器的身份确认;
②服务器对客户的身份确认;
③在服务器和客户之间建立安全的传输信道。


[编辑] (3)加密代理服务器的实现
加密代理服务技术使用了加解密技术。只有加密通信双方使用相同的协议,客户端才能连接到加密服务器的端口进行访问。因此,如下图所示,客户端需要运行加密代理软件,来实现应用程序和加密服务器之间的信息转发和明密文转换。
 


[编辑] (4)自由门技术的改进
目前GFW侦测类似自由门软件的方法主要根据它们数据包中的特征码方式进行侦测,并进行截获。并对数据包进行IP包进行跟踪,查获到境外的代理服务器后,将其IP地址列入黑名单中。
在自由门的新版本中改变以前的特征码,使数据包的特征码在不断变化中。以及改变数据包经过SSL加密后的特征码。 定期对加密代理服务器进行IP更换措施,并将更换后的加密代理服务器的IP地址通过BBS,Email,聊天室内进行公布。


[编辑] 4、无界浏览器
无网界浏览 8.8是由美国极景网络科技公司推出的高品质软件产品。原理是根据其内置(或软件服务器上)的代理服务器列表不停查找选择速度最快的代理服务器。联机完成 后会自动帮IE设定好HTTP代理服务器:127.0.0.1:9666,如果用其他浏览器也可以手动设定使用。在无界退出时,因为自动清除了主机上的所 有使用信息,所以如要再使用无界浏览器,代理软件将重新搜索可用的加密代理服务器。使用动态SSL代理服务器,完全规避了防火墙的屏蔽。


[编辑] (1)无界浏览的使用方法
1)启动该软件的可执行文件;
2)如果需要的话,添入代理(局域网需要在这里添代理,普通的拨号用户不需要);
3)无界浏览会自动寻找海外代理,找到后,右下角会弹出一个金黄色的锁,这表示无界漫游启动成功了;
4)接着一般会弹出一个Internet Explorer窗口,此时的IE已经被设置了无界浏览的代理127.0.0.1:9666,默认访问的网站,就是无界网络;
5)用户再通过IE访问网络时,都通过无界浏览找到的加密代理,进行数据传输。
6)如果使用其它浏览器(如Mozilla Firefox)访问,无界网络启动成功后,可自己手动设置代理127.0.0.1:9666即可。


[编辑] (2)版本沿革
1)6.9版
2)网络上曾出现无界浏览7.0版,极景网络公司声明于此版本无关,并非自己所出品,完全系被恶意冒用,并跳过7.0版直接推出了8.0版。
3)8.2版在2007年8月初遭到封锁。
4)8.3版于2007年8月6日推出的。
5)8.4版在2007年8月16日推出。
5)8.5版在2007年8月19日(美国时间)推出。
6)8.6版在2007年9月17日(美国时间)推出。
7)8.7a版(测试版)在2007年10月26日推出。
8) 8.7b版(测试版)在2007年10月27日推出。
9) 8.7正式版在2007年10月30日推出。
10)8.8版在2007年11月20日推出。


[编辑] (3)无界浏览器使用示意图:
 


[编辑] (4)特点:
1)、几乎可以访问国外所有的网站。                                                                                       2)、速度快,比一般的代理服务器速度快很多,而且越多人访问的网站,速度越快。
3)、传送过程高度加密。在传输过程中将网页地址(URL)和内容都加密。
4)、当退出运行时,会清除所有访问记录。如果是非正常退出,当重新运行并正常退出后,所有访问记录也都将被清除。         
5)、支持多媒体文件传送与下载,包括声音与图像文件。
6)、网站集锦栏目特别收集海外被禁网站连结,为有兴趣的用户浏览导航。
7)、特别支持Google, AltaVista 等搜索引擎,使搜索到的内容不被过滤。
使用无界软件无法访问国内网站,这可能与GFW屏蔽了国外破网软件的IP地址有关。解决方法是退出无界再重新打开,直到无界的出口IP换成没被屏蔽的IP地址为止。


[编辑] 5、其他穿越GFW的技术
除了以上介绍的四种破网技术外,还可以通过忽略TCP RST包的方式以通过具备关键字过滤功能的防火墙。也有更专业的技术论文详细解释了其技术原理和实践方法,具体请请参考ignoring.pdf。所提出的穿越GFW的解决手段,对于Linux,用如下指令:
iptables -A INPUT -p tcp —tcp-flags RST RST -j DROP
对于FreeBSD,请用对应的指令:
ipfw add 1000 drop tcp from any to me tcpflags rst in 点击不能访问的链接,即可实现正常访问。


[编辑] 四、对破网软件的控制
针对突破防火长城的各类破网软件,防火长城也在技术上做了应对措施以减弱破网软件的穿透能力。比如每年的特定关键时间点,无界等软件就可能会无法正常连接或连接异常缓慢,这时境内外的正常网络互联也会受到干扰。


[编辑] 1、对Tor
可采取建立虚假Tor节点的封锁措施。鉴于无法真正的完全封锁Tor,网络安全部门可在国内网络中安装了大量虚假 Tor节点服务器,所有经过这些“节点”的信息都将被最大程度的审查,与此同时,所有到达这些虚假节点的网络请求都将被屏蔽。有意见认为因为此举会暴露防 火长城的位置,网络审查部门对虚假节点的设立有所节制。但另一方面,tor节点的大量增加很可能仅仅是因为国内用户增加的缘故,即使存在有虚假节点,对于 使用图形界面Vidalia的用户也可以轻松将含有境内节点的路由删除,以确保安全。


[编辑] 2、对加密代理型浏览器
主要针对无界浏览器进行分析。


[编辑] (1)无界加密代理的工作原理
加密代理服务器的工作原理见下图。
 


[编辑] (2)网络活动概述
网络活动步骤如下:
1)、探测。访问国内外知名网站,用来探测是否接入互联阴。
2)、访问。访问“专职DNS服务器”。这些DNS服务器专门为无界提供信息更新支持。
3)、加密。访问加密代理服务器。


[编辑] (3)各步骤的发包规律
1)、探测。随机选择4~6个知名网站进行测试。由于程序存储有限,因此可以找到所有被该程序记录的网站的IP。
2)、访问。这一部分是规律最多、最容易识别的部分。所有的DNS数据包解析地址均为[ns 1.4546355dc.net,即“ns”+数字1或2+“.”+9位十六进制编码+“ net”。由于这样的域名与常规域名存在较大的差异,因此容易发现并跟踪。但是,这个步骤仅出现于程序的第1次运行中。捕获这样的数据包的概率相对较少。
3)、加密。加密代理把秘密信息装扮成普通HTTP数据包的形式。实现和机密服务器的保密通信。由于网络上有海量的HTTP数据包,因此 即使找到加密数据的规律也很难及时地进行数据包过滤查找。但是,当发现加密代理向加密服务器申请信息时,HTTP数据包中总有“GET”字段,所接收的 URL地址有如下规律:
1)包含4~6个由“/',分隔的部分;
2)每部分由3~6的英文小写字母组成;
3)字母随机组合且不是单词。


[编辑] (4)侦察监控方法
无界v6.9的侦控方法主要有IP跟踪法和数据包筛选法两种。其中,IP跟踪法速度快效率高,但准确性欠佳;而数据包筛选法则有较好的准确性。


[编辑] 1)、IP跟踪法
通过运行加密代理软件,采用截取数据包的方法,可以获得相应的IP地址信息。对IP地址信息的跟踪分为3类:
a)、对专职DNS服务器的跟踪。这是侦察工作的重要环节,也是唯一可以全面控制加密信息来源的环节。专职DNS服务器的特点是:1)固 定。每个版本的加密代理软件只能包含有限个专职DNS的IP地址。即使加密代理软件随机地使用全部IP中的几个,也可以通过多次跟踪找到绝大多数的IP地 址。2)专职。这种DNS服务器只向相应的加密代理软件提供所谓的“域名解析”,而不提供通常意义的域名解析。 将获取的专职DNS服务器的IP地址存放在数据库表DNSIP中。
b)、对加密代理服务器的跟踪。尽管加密代理服务器的IP地址是经常变换的,但是它在短时间内具有相对的稳定性,比如同一地区同一天内不会变化。可以建立一个IP地址采集机制,对保存时问超过一天的IP地址进行重新检测,以确认它是否已作废。 将获取的加密代理服务器的IP地址存放在数据库表CPRIP中。
c)、对加密代理软件用户的跟踪。通过对专职DNS和加密代理服务器IP地址的收集,可通过数据包的简单分析查找到使用加密代理服务的用户的IP地址。将这些IP地址保存起来就可以对它们进行进一步的分析,从而找到可疑对象。 将获取的加密代理软件用户的IP地址存放在数据库表USRIP中。


[编辑] 2)、数据包筛选法
面对海量的DNS数据包和HTTP数据包,为了提高效率,将针对数据包的信息过滤作为IP跟踪法的辅助方法。即重点跟踪IP地址在表USRIP中的 用户的DNS数据包和HTTP数据包,从而找到新的专职DNS和加密代理服务器的IP地址。利用上文中加密代理数据包的特征规律,对DNS数据包和 HTTP数据包采用不同的过滤方式:
a)、DNS:过滤域名为“ns”+数字1或2+“.”+9位十六进制编码+“.net”的数据包。
b)、HTTP:过滤URL有上文提到的3个特点的数据包。确认获取的DNS和Web服务器是所需的专职服务器和加密代理服务器。将获得新的专职DNS和加密代理服务器的IP地址存放在表CPRIP和表CPRIP中。


[编辑] (5)具体工作流程
通过以上的2种方法,就可以实现对该加密代理软件的应用范围的扩大寻找,对本地区网络的全面覆盖。具体操作流程见下图。
 

具体工作步骤如下:
1)、通过单机截包实验,找到为实验机提供信息的“专职DNS服务器”和“加密代理服务器”。并将IP地址分别存放在数据库表DNSIP和CPRIP中。
2)、通过在大规模的网络出口节点(例如各省的网络出口)截取具有数据库表DNSIP和CPRIP中IP地址的数据包,将使用该软件的用户的IP存放进数据库表USRIP中。
3)、对数据库表USRIP中的IP按照获取次数的频率进行分级。
4)、对数据库表USRIP中的频率级别较高IP进行跟踪,通过数据包筛选法,寻找新的“专职DNS服务器”和“加密代理服务器”,并将IP地址分别添加在数据库表DNSIP和CPRIP中。
5)、对数据库表CPRIP中的IP进行活性检测,定期去除已经失效的“加密代理服务器”。 在整个监控系统初具规模后,可以做以下的工作: