翻墙软件的选择与安全系数(2)
不少翻墙软件都宣称自己安全系数很高(例如自由门和无界),很多人也直接把翻墙软件等同于匿名软件,但这是错误的:翻墙软件和匿名软件根本就是两回事!
但几乎所有的翻墙软件的确都有一定的匿名效果,这又是怎么回事呢?
这要从翻墙软件的原理说起:GFW的封锁手段主要有DNS污染,IP地址屏蔽以及HTTP关键词过滤等,其中我提到的这三种是最常用的。
那么为了对付封锁,最容易想到的一种方法就是:先将连接请求加密传输到墙外的远程服务器上,再由远程服务器进行后续处理并传回数据,这样GFW的三种手段都会失效。
将连接进行加密,就防止了共匪的截取监听(专业名称叫嗅探);远程服务器进行后续处理,就成功隐藏了真实IP。共匪想要查水表,嗅探和根据真实IP抓人是最主要的手段,翻墙软件同时对抗了这两种手段,也就在一定程度上实现了匿名。
但翻墙的目的是突破GFW封锁而非隐藏身份,所以使用的加密算法基本上不会很强(例如我曾提到过的PPTP和L2TPVPN,已经可以被GFW轻易 暴力破解了[1]),而且多数都不会验证远程服务器的身份,这就给GFW提供了中间人攻击的机会(简单来说就是GFW插进你与远程服务器的连接之中,知道 了你的所有数据包内容,具体我以后专门写一篇科普),一旦被中间人攻击了,你翻墙之后干的一切就都被共匪知道了(GFW除了封锁,还有个功能就是监控,而 不被察觉的监控才是最可怕的)。
更糟糕的是这几年来GFW越来越疯狂,对于无法判定的强加密流量一律进行阻断,还引入的DPI(深度包检测)以及在此基础上的特征检测和流量分析技 术,翻墙工具的开发重心不得不转到流量混淆(想办法伪装成“正常”加密流量)和减少协议特征上,至于匿名要求的强加密和身份验证机制以及远程服务器的可靠 性这些几乎不在翻墙软件开发者的考虑范围之内。这很正常,但也就意味着翻墙与匿名完全无法等同了。(尤其是hosts翻墙和其他只对付了DNS污染的翻墙 手段,毫无匿名性可言,墙内VPN更是直接会把你给卖了)
看到这里诸位应该就能明白该怎么考察翻墙软件的安全水平了:
1,加密算法是什么算法,程度强不强;
2,连接到远程服务器时,有没有身份验证机制,如果有是否完备;
3,远程服务器本身是否可靠,抵抗黑客攻击破解的能力怎样;
4,远程服务器究竟知道你多少信息,一旦泄露会带来怎样后果;
5,对抗流量分析或关联分析的能力有多强;
6,是不是所谓的“智能翻墙”(连接国内网站时是直接连接的);
7,被共匪逆向追踪到你的可能性有多大;
8,共匪知道你在翻墙的可能性有多大;
9,翻墙软件制作者背景怎样,是否可靠;
10,翻墙软件本身出现恶性BUG的可能性有多大
以后的系列里我会从这几点出发对主流翻墙手段进行相应的分析(技术性太强的手段我不会去分析,有些翻墙软件是闭源的,具体原理不是很明确,我只能尽力去进行推测,有几点可能会分析不出,请见谅)
补充说明:关于第6点,主要是社会工程学上的考虑:假如你在G+上发了个“如何煽动颠覆国家政权”的帖子,同时又直连了墙内网站,那么事后共匪在追踪你时就会比较容易(有个真实IP此时在翻墙,很可疑的)
所以我建议不要为了省事选择“智能翻墙”,如果翻墙的时候需要去墙内网站,请翻墙去,视频网站就找一个墙内的在线代理再去。
关于第7点,要想不被共匪逆向追踪要做很多工作,不过我这次重心就放在翻墙工具的安全性上,有兴趣的诸位可以看我的科普文中匿名与隐私保护分类下的文章[2]
PS:我昨天搞了个最常用翻墙工具调查[3],结果显示使用TOR的人寥寥无几,真是令人失望:(
我说,想要安全翻墙其实只要TOR+前置代理就可以了,TOR最近也复活了,墙内可以通过MEEK和obfs4直接连接了,怎么用的人还是那么少?
我知道相当多的翻墙党只在乎一个速度,不喜欢TOR,我就用TOR开发者Jacob Appelbaum的话来告诫你们吧:“在叙利亚,人们有时说Tor很慢。我对此的回应是:“你想死的有多快?”我没有不敬之意,这是一个严肃的问题:可 能人们意识到Tor匿名性的重要性时,为时已晚。
使用Tor可能会好一些,因为如果你使用其他快速的VPN,但可能后来才发现这个VPN的加密并 不好。同时,使用其他VPN也有一些弊端:比如,有人报告说Ultrasurf等系统把用户访问的网页地址显示给系统出资方。从某种意义上说,这成了一个 监控平台,只不过你避免了一批人的监控,却换了另一批人来监控你。同时这是一个法轮功组织研发的翻墙软件。如果一个翻墙软件与特定的意识形态有直接的关 联,在中国的国情下使用该软件是十分危险的
你必须考虑所有这些隐私:如果你只看速度一个因素,你可能会身陷麻烦。Tor的大多数替代品并非正真意义上的替代品:它们不是对等网络,不是免费软件,不是开源软件,或者不是被直接受益于该系统的人运营。我认为这些都是十分重要的。”
注意Jacob Appelbaum提到了无界,下一篇我就会分析一下无界的安全性(从我的调查来看无界也是很流行的,使用者很多)
参考资料:
1,VPN翻墙,不安全的加密,不要相信墙内公司https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
2,科普文链接集合https://plus.google.com/u/0/109790703964908675921/about
3,https://plus.google.com/u/0/109790703964908675921/posts/YUNHtWQaRvF
原文:https://plus.google.com/109790703964908675921/posts/3Gftt3JifTx
===============================
VPN翻墙,不安全的加密,不要相信墙内公司
翻墙手段中很重要的一种就是利用VPN翻墙,这种方法可以说技术门槛相当低,就是多数时候花钱才能享受到高质量的服务。
先介绍一下VPN:VPN是Virtual Private Network(虚拟专用网)的缩写,本来是用于企业的一种网络服务,原理是客户端使用相应的VPN协议先与VPN服务器进行通信,成功连接后就在操作系 统内建立一个虚拟网卡,一般来说默认PC上所有网络通信都从这虚拟网卡上进出,经过VPN服务器中转之后再到达目的地。通常VPN协议都会对数据流进行强 加密处理,从而使得第三方(例如GFW)无法知道数据内容,这样就实现了翻墙。翻墙时VPN服务器知道你干的所有事情(HTT[P,对于HTTPS,它知 道你去了哪)。(下面有流程图)
VPN协议主要有这几种:PPTP,L2TP,IPSEC,OPENVPN,SSL VPN,Ikev2 VPN,Cisco VPN,其中的PPTP和L2TP是明文传输协议。对,他们是明文传输协议,但为什么还是有不少人能用这两种方式翻墙呢?
当一名用户在使用PPTPVPN翻墙时,实际上他同时启用了128位的MPPE(微软点对点加密)算法来为数据进行加密[1],”那么GFW就不知 道数据传输内容了,所以就实现了翻墙“大家都会得出这样的结论吧?真的很不幸,GFW其实并不仅仅是封锁,它还有着监控的作用,而且现在GFW已经具备了 暴力破解MPPE加密的能力了(暴力破解的意思就是用枚举法直接枚举得到密钥从而解密):PPTP协议的加密实现-MPPE是基于RC4(可以在几分钟内 被破解),MS-CHAP2的实现是用用户密码的MD4作为密钥加密,这在十年前是安全的,在今天一个莱特币矿机分分钟搞定了。我说难怪有人说他用VPN 上推特会在联通查到记录呢[2],人家曙光几秒钟就穷举了那点MD4(有消息说GFW使用的是曙光超级计算机集群)
还有”MPPE的128位session key是基于mschapv2的hash生成的,套了几次md4和sha1而已,如果获得了初始认证的key,如果对整个pptp vpn抓包了的话,可以推出后续的session key从而解密整个pptp vpn流量。所以说PPTP vpn缺乏forward secrecy,一旦key被破解就可以解密全部之前的流量“[3],简单来说就是MPPE所采用的算法是很落后的,很容易被破解,而且MPPE算法诞生 于十几年前,现在GFW再差劲也拥有破解这一算法的能力了。
这里提一下:我看到有人反馈说当shadowsocks的加密连接算法设置为默认的RC4或略有改进的RC4-MD5时,用上一段时间就会被GFW 封锁,需要改密码或IP才能继续使用,一开始我推测是特征检测,但理论上来说特征检测是不受加密方式影响的,换句话说如果GFW成功识别了 shadowsocks与远程服务器建立连接时的特征,那么不管使用什么加密方式都会很快被GFW干扰,而不会只有RC4-MD5和RC4连接被干扰,那 么最大的可能就是GFW可以破解RC4-MD5,而这同时也是MPPE使用的加密算法,那么PPTPVPN就不再安全了
L2TP则不含任何认证和加密功能,都是由 IPSec 负责的,IKE是 IPSec 的一部分;L2TP 本身只完成数据传输之类的工作,不负责认证和加密,需要配合其它安全协议使用,例如 L2TP/IPSec 这样的,当然这是可选的可以不用,不用的话就没有安全性可言了。(有人发现GFW经常性把L2TP/IPSec干扰为明文的L2TP[4])
用了也不能保证安全,L2TP/IPSec并未被GFW严重封锁,搞不好就是故意的,为了更好的欺骗我们翻墙党同时进行监控。(主要是前面提到的容 易被GFW干扰成明文,至于加密是否牢固,要看VPN公司选择的加密算法,不过那些付费VPN公司没几个会介绍所使用的加密算法的。)
OPENVPN在12年18大之后就被特征检测搞得半残了,不过现在有些地方效果还不错。OPENVPN的身份验证机制很完善,隧道加密程度也非常强(OPENSSL加密算法)所以也被封锁的很严重[5]
很多人(包括以前的我)都认为GFW的唯一目的就是封锁。封锁一定是主要目的,原因我们翻墙党都很清楚,但请大家想一下为什么墙内还有那么多VPN服务提供商存在呢?和天朝相似的伊朗直接在法律中写上了使用VPN违法,但为什么到现在共匪都没有这么做呢?
共匪要用经济发展换取统治合法性,就不可能像朝鲜那样建立天朝局域网,否则人家外资怎么进得来呢?墙内还有一大堆企业依靠墙外的互联网服务呢(例如 云计算平台)。GFW越来越高的误伤率已经引起了不少人的不满,共匪又从来不肯公开承认GFW的存在,害怕翻墙者增多以及自己制造的”墙内互联网是自由的 “的谎言破灭。要说把翻墙的人都抓起来,也不现实:
一是翻墙的人太多(至少千万),而且不少人都不关心政治,抓了反倒起反效果,让更多人知道GFW的存在外加更关心政治;
二是GFW本身就没有任何法律依据,就算抓了,怎么判决呢?共匪官方说辞里面GFW是不存在的,要是因为翻墙抓人,不是直接自打脸了吗?
三是GFW误伤了太多科技类网站,搞得科研人员已经把翻墙作为必修技能之一了,要是谁翻墙就抓谁,科研人员怎么办?
四是不少翻墙软件都引入了流量混淆技术(例如TOR和赛风三),很多时候GFW都判断不出用户是不是在翻墙,怎么抓啊?
五是如果共匪真的什么都不顾,谁连接外网就抓谁,那么必然会激起众怒(去年封锁了github就引起不少程序员的抗议,最后GFW被迫解封),只会让自己快速倒台。
所以GFW采取了一个办法:故意让墙内活动着一批VPN服务提供商(这些公司都是随时会把用户流量日志送给共匪的),同时不断封锁那些无法控制的翻 墙软件和付费VPN,对于可以轻易破解的PPTP和易被干扰的L2TP则故意放开一码,不惹怒太多人的同时又进行欺骗,让一些人以为自己安全,其实自己的 一举一动都已经在共匪的监视当中了,如果进行了什么”煽动颠覆国家政权“的行动就会被查水表(我用流程图表示出这一过程)
还有一个证据:有人反映不少墙内VPN都没办法作为TOR的前置代理:”國內vpn貌似都是有問題的呀(都不支持Tor)
打開Tor瀏覽器顯示洋蔥頭是打x的,沒有變成綠色的洋蔥頭。
只有連接國外vpn,Tor的洋蔥頭才是綠色的“
”国内VPN不仅过滤域名,IP,甚至过滤协议,审查浏览记录,各种无节操“
”有可能如你所说——国内 VPN 对 IP 或域名进行了过滤,导致 TOR 无法用【国内】VPN 做前置代理。
另外,国内 VPN 的提供者,很容易受到朝廷的胁迫。
因此,朝廷很容易拿到这些 VPN 服务器上的访问日志。
所以,俺自己从来不用这类 VPN,也建议“高危人群”不要用“[6]
墙内VPN的客户端很可能就有后门,那么你的防线就会全面崩溃,所以不要使用墙内的VPN服务(除非你只打算浏览网页)
我在这[7]提了一下PPTP和L2TPVPN都不安全了,现在写出这篇科普具体说明一下。建议用VPN+TOR,共匪无法破解TOR流量,只能干瞪眼。
最后照例附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,PPTP中文维基https://zh.wikipedia.org/wiki/%E9%BB%9E%E5%B0%8D%E9%BB%9E%E9%9A%A7%E9%81%93%E5%8D%94%E8%AD%B0
2,https://twitter.com/Vela1680/status/532068496788574208
3,http://www.v2ex.com/t/116609
4,http://www.v2ex.com/t/79364
5,https://www.x-berry.com/vpn-tunneling-protocol/
6,http://program-think.blogspot.com/2014/11/https-ssl-tls-1.html?comment=1416217711675&q=tor&scope=comment-content#1416217711675
7,TOR网桥,主动探测攻击和烧钱的GFW
https://plus.google.com/109790703964908675921/posts/aLcyVfcH7mP
原文:https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
===============================
翻墙软件的选择与安全系数(3)
——1,无界的安全性
(在科普发布之后,有一些被共匪洗脑洗傻了的货色来说我是五毛,哈哈,哪个五毛会用共匪这词?看看我的补充说明吧:https://plus.google.com/109790703964908675921/posts/4cqs6rvsNJT)
系列的上一篇我预告过这一篇要分析的翻墙软件:无界。那么现在就开始吧!
TOR开发者一直都不信任无界,看完你就知道他们为什么不信任了。
无界和自由门是一样的背景,都是由法轮功学员开发的翻墙软件,历史也非常悠久了[1]。无界宣称自己全程对用户数据进行超高度加密传输,安全性极 强,而且能有效保护隐私,用无界上网后别人不会在PC上发现痕迹,没人能追踪到你,可以自由浏览任何网站,几乎无法被封锁,无需安装的纯绿色软件[2]。
听起来很厉害,甚至比TOR都厉害(TOR还要搭配上特制的TBB才能有效保护隐私呢,无界宣称不需要对浏览器进行额外设置就能保护隐私,不是比TOR还厉害吗?),但这些是真的吗?
真相是残酷的:无界的宣传全部都是假的!
听我慢慢道来:首先,不管无界开发者怎么吹,有一点他们是不得不承认的,那就是无界是个一重代理,远程服务器知道你的一切。
那么,问题来了:无界服务器可靠吗?安全性怎样?服务器拥有者会不会出卖你呢?
无界开发者对于服务器相关信息一直坚持保密,声称是为了用户安全,不过这也是谎言!
先来看看他们的服务器是怎样的吧:
他们的服务器由一个代理链条组成:用户连接到Squid proxy(一种可以提升网速的缓存代理[3]),再连接到ziproxy[4](没有缓存功能的HTTP代理),最终连接到目标网站。
有人看到这大概会有意见:既然是代理链条,为什么你还说无界是一重代理呢?
首先,注意一下其中的Squid proxy是无法单独翻墙的,只是起到一个辅助作用而已,真正起作用的是ziproxy;最重要的是,不管是哪个proxy,在HTTP的情况下,他们中 的任何一个都知道你的一切,不管其中哪个的数据泄露,你都会game over,那么从安全性上来说这就是一重代理。
接着说服务器的事吧。这两个proxy本身的安全性倒是还过得去,用户也很多,更新也算是及时,但问题是无界服务器上的这两个proxy更新是不及 时的!无界服务器使用的是落后的旧版本,而且很久都没有打过补丁了。具体来说就是无界服务器使用了这样的版本: squid/2.7.STABLE7,一个不安全的版本[5],还有与SSL/TLS相关的 lighttpd 1.4.26, Apache httpd 2.2.3 on CentOS, Apache httpd 2.0.63, Apache
httpd 1.3,这些版本都是被发现有严重安全漏洞的[5,6]
对于一重代理,远程服务器的安全就是一切啊,而且无界服务器会很仔细的记录流量并储存相应日志,一旦日志落到共匪御用黑客手里,后果不用我说了吧? 偏偏无界服务器如此脆弱,别说什么开发者自吹的“额外安全保护”,连基本的及时更新打补丁都做不到,最关键的是使用的都是已经明确有严重安全漏洞的版本, 鬼才会相信服务器的安全系数高呢!
那,安全系数不高,但“自由浏览任何网站”总做到了吧?
很不幸,没有!
无界服务器内置了ACL[8](连接控制清单),屏蔽了不少网站,啊,是那种有成人内容的网站,但大部分都是合法的。换句话说,美国政府都找不到理由屏蔽这些网站,但自吹“自由浏览”的无界开发者们却这么做了,他们又在撒谎!
服务器脆弱不堪,那所谓的“超高度加密连接”是真的吗?
对不起,也是假的!
用户到无界服务器的这段连接的加密方式是RC4[8],RC4都是二十多年前的老皇历了,GFW再废柴也能轻松暴力破解了[7],这算个屁的“超高度加密连接?”
还有更坏的消息:不仅加密是废柴,无界客户端与远程服务器通信时也根本就连个像样的身份验证机制都没有[8],对,中间人攻击,在没有身份验证的情况下,GFW搞个中间人攻击轻而易举,你就等着被查水表吧!
分析到这里,诸位应该大致能明白为什么TOR开发者不信任无界了:这种安全性渣到爆的狗屁居然一直自吹“安全系数很高”,骗了多少人?更重要的是又 他妈害了多少人!想一想,一个小白相信了无界的虚假宣传,挂着无界发表了一些“煽动颠覆国家政权”的言论,然后共匪很轻易就能来查他的水表,而他还以为可 能是自己误操作泄露真实身份的呢,却不知道是不安全的无界把他害了!
不过还没完呢:无界严格意义上来说可不是“绿色软件”,尽管不需要安装,但启动之后会在无界所在的文件路径上生成设置文件和一个名为utmp的文件 夹(储存临时文件),而且同时会修改系统注册表(为了自动设置IE代理)。特别注意:对于系统注册表的修改,不管哪台PC都会留下相应系统日志进行记录, 也就是说如果你用无界上网,即使是之后删除了同时生成的其他文件,别人还是能从系统注册表的变化中发现你用了无界。对,那群开发者又撒谎了![8]
嘿,还有呢:无界宣称自己能保护用户隐私,实际上却恰恰相反,他们不仅没有任何有效保护隐私的设置,很多时候还逼迫用户启用第三方cookie,而 且他们和google analytics(著名的用户追踪脚本以及cookie,google出品,被很多公司和网站所使用以追踪用户)有着紧密的合作,每次启动无界之后跳转 到的无界主页就是google analytics的用户之一。[8]这算什么狗屁?
想象一下这样一个场景:两个人同时访问一个曾经访问过并且被 cookie标记了的网站,一个这次用了TBB,一个用无界;TBB默认禁止所有cookie,所以网站没法认出现在这个TOR用户到底是谁,但无界没有 做到这点,结果就是网站通过cookie认出了无界用户的真实身份。对,匿名失效了!(关于cookie,有空我会进行具体说明,很有用也很恐怖的小曲奇 饼)
现在可以给无界做个总结了:安全性极差外加吹牛不上税,完全不值得信任,唯一可靠的地方就是法轮功开发者几乎没可能与共匪合作,不会主动把你给卖了,仅此而已。适合用户群:无价值目标,低价值目标(低价值目标最好都不要用,原因在下一篇会给出)
下一篇,让我们看看安全性全无的无界在突破封锁上表现如何吧。
参考资料:
1,无界中文WIKI
https://zh.wikipedia.org/wiki/%E6%97%A0%E7%95%8C%E6%B5%8F%E8%A7%88
2,无界官网的用户指南
http://www.wujieliulan.com/userguide.php
3,http://www.squid-cache.org/
4,http://ziproxy.sourceforge.net/
5,Squid security advisories.
http://www.squid-cache.org/Advisories/.
6,Apachehttpd2.2vulnerabilities. https://httpd.apache.org/security/vulnerabilities_22.html. ms08-076. https://technet.microsoft.com/en-us/security/bulletin/ms08-076
lighttpd version 1.4.29 – important changes. http://www.lighttpd.net/2011/7/3/1-4-29.
7,VPN翻墙,不安全的加密,不要相信墙内公司https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
8,Technical analysis of the Ultrasurf proxying software
https://media.torproject.org/misc/2012-04-16-ultrasurf-analysis.pdf
最后照例给出科普文链接集合https://plus.google.com/u/0/109790703964908675921/about
原文:https://plus.google.com/109790703964908675921/posts/cyonessuuMZ
===============================
翻墙软件的选择与安全系数(3)
——2,无界突破封锁的原理和对虚假宣传的打脸
开始之前先说明一件事:自由门我不会单独写科普分析了,因为自由门和无界的原理和表现都是很相似的,想要了解自由门的人把我这两篇科普里的无界换成自由门即可。
本来我只想接着写写无界是如何突破GFW封锁的(在突破封锁上面法轮功开发者还是花了不少心思的),但鉴于自由门和无界的虚假宣传实在是害死人不偿命,这次我决定对他们的虚假宣传一条条打脸打过去!
现在开始!
众所周知对于单IP或域名的代理或VPN,GFW很轻易就能封锁:当GFW发现很多墙内IP都短时间内同时连接到一个墙外IP或域名时,就会进行追踪,发现是中转流量的远程服务器之后就会将对应的IP或域名加入黑名单中,这样使用对应VPN或代理的翻墙党就无法翻墙了。
为了应对这一点,无界开发者使用了三种手段[1]:
1,第一次运行无界时,无界客户端会试图通过443端口与一系列服务器进行通信(这些服务器的IP是内置在客户端里的),此时建立的是不标准的 SSL/TLS连接(意思是自定义身份验证机制和加密算法的连接)。一旦成功连接,无界客户端就会在本地硬盘上缓存一些信息(位置在utmp文件夹),是 关于新的可用服务器节点的(有IP,也有DNS)。这些信息是加密的,但GFW很容易就能直接利用客户端本身进行解密,再进行封锁。如果无法成功连接,那 么无界客户端就无法翻墙了。
注意一下:无界客户端并不会与所有的服务器进行通信,而是随机选择一些节点连接,这样倒是不会被GFW马上一网打尽了。
2,如果所有缓存的IP地址都失效了而还有DNS缓存没有用过,那么接下来无界客户端就会试图与一系列DNS解析服务器建立连接,将本地缓存的 DNS发送到服务器上,反馈数据包传回的IP就是新的远程服务器IP。有一点很有趣:所有的实际对应无界服务器IP的域名的顶级域名都是.info,可能 无界开发者与.info域名注册商有什么交易。当然,GFW的工作人员也能猜到这一点,所以可以试图以同样的方式收集域名再解析出对应IP进行封锁。(顶 级域名解析服务器就那几台,不能封锁)
3,如果连缓存的DNS都失效了,那么无界客户端就会向一些没有被GFW封锁的HTTPS网站(例如amazon的网站,注意不是官方站点,而是开发者自己挂在amazon上的个人站点)发送请求,回来的数据包里就有无界服务器新节点。无界开发者宣称是PGP(具体看这里https://zh.wikipedia.org /wiki/PGP)加密过的信息,但这他妈又是假的!事实上数据包加密模式和任何一种已知的PGP加密模式都对不上,反倒更像是脆弱的base64编 码。另外,在连接建立的过程中是没有证书验证机制的(中间人攻击,again!)。
这三种机制都有极其严重的安全隐患,我在打脸时会具体说明。
现在开始打脸!
(以下吹牛均摘自无界官网http://www.wujieliulan.com/faq.php)
1,吹牛:“无界使用高度加密技术,网特无法探测你访问的什么网站。安全第一是我们的宗旨”
打脸:RC4他妈算个屁的强加密?GFW分分钟暴力破解好吧?[2]
2,吹牛:“无界浏览在正常关闭后会自动清除上网痕迹”
打脸:不仅网络层面会留下痕迹,系统层面也会留下痕迹[3]。
3,吹牛:“无界使用高度加密技术,浏览任何网站都会隐藏 IP”
打脸:flash插件和java插件很多时候都会绕过代理与网站服务器直连,如果你不禁用的话你就呵呵了,而IE默认是启用的,无界也不会帮你关闭这两个危险插件的。对了,IE还有独有的ActiveX呢,ActiveX控件也会泄露你的真实IP的。
4,吹牛:“用无界时,如果你使用网页QQ聊天(无需下载及安装的QQ),显示的IP是国外的,内容也是加密的。监督系统只能查到你在用QQ聊天室”
打脸:无界开发者是不是以为QQ是完全P2P的?开什么玩笑,不管挂不挂代理,你的明文聊天内容都会被存储在企鹅服务器上,这哪是一个代理能够左右的?
5,吹牛:“用无界时,你的IP和你访问了哪些网站都不会泄露”
打脸:flash插件和java插件,弱到爆的加密,不用我多说了。
6,吹牛:“其加密程度超过国际金融网络传输安全标准,而且速度快、体积小”
打脸:我第一次知道原来国际金融网络的传输标准这么低啊,老皇历RC4都敢用外加连个像样的身份验证机制都没有![3]
7,吹牛:“无界已设置安全选项。如果你发现还有你访问的网站显示你的真实ip,请将连接网址发送给我们,我们会及时测试与修复”
打脸:TOR开发者在论文正式发表之前就与无界开发者联系过,希望他们尽快采取措施提升安全性外加停止虚假宣传,到现在都没能做到![1]
8,吹牛:“许多用户用无界,是因为无界提供优质的保护个人隐私的功能”
打脸:无界不仅不保护隐私,还帮着其他公司追踪用户呢[3]
9,吹牛:“用户可以畅游世界上任意网站,得到真实开放的信息”
*打脸:你们可是有一个网站屏蔽清单噢(自由门这个清单更长),不要不承认[3]。
这种做法和GFW有什么本质区别?五十步笑一百步而已!*
10,吹牛:“启用了新发明的名为雄鹰之路的超级代理服务器连接技术,能够搜寻协调全球各种代理服务器资源供用户使用,速度快,容量无限大,并为全球网络自由技术平台奠定基础”
打脸:别吹了,也就三种手段罢了[1],而且每一种都有严重的安全问题:
第一种,没有身份验证机制,GFW搞中间人攻击获得节点信息并进行封锁轻而易举,也可以利用这些信息进行钓鱼或直接攻击那脆弱不堪的服务器。
第二种,GFW完全可以伪造相应的DNS反馈数据包将用户引导到事先设置的蜜罐服务器上,那么匿名就无从谈起了(这是DNS本身的缺陷,客户端并不会确认解析结果的来源);
第三种:依旧是能轻易被中间人攻击,不仅如此客户端在启用第三种手段时同时还会像一些不明站点发送请求以进行混淆,但鬼才知道不明站点发送回来的数据包里面有什么!
自由门的吹牛也是类似的,一样不要相信,都是假的!
接下来请大家想象几个场景吧:
1,某小白相信了“网页QQ的信息能被无界加密”这种说法,于是和别人交流了一些反共内容,结果被共匪网警查水表了;
2,某小白相信无界非常安全,去论坛上发表了反共信息,结果被flash插件泄露了真实IP,然后又被共匪网警查水表了;
3,某小白在海外网站“煽动颠覆国家政权”,结果数据包加密被破解,共匪轻易逆向追踪到他(或者索性被中间人攻击了),查水表又来了!
虚假宣传真是坑死人不偿命啊!
论坚挺程度,无界曾经三次被完全封锁,也算不上有多坚挺,再加上安全系数如此差劲,GFW选择性放过一码用以钓鱼也未可知(就像PPTP和L2TPVPN一样[2],具体说明在https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz)
理论上来说,无界和自由门那拙劣的自创通信协议是很容易被特征检测和流量分析的,GFW迄今为止也没有对这俩采取特征检测和流量分析,却对TOR严密封锁把手段用尽,你说谁更可信?谁更安全?
最后照例附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,Technical analysis of the Ultrasurf proxying software https://media.torproject.org/misc/2012-04-16-ultrasurf-analysis.pdf
(我是依据这篇论文分析的无界安全性的。)
2,VPN翻墙,不安全的加密,不要相信墙内公司https://plus.google.com/109790703964908675921/posts/cyonessuuMZ
3,翻墙软件的选择与安全系数(3)
——1,无界的安全性https://plus.google.com/109790703964908675921/posts/cyonessuuMZ
原文:https://plus.google.com/109790703964908675921/posts/QZhrtF5bxqZ
==================================
翻墙软件的选择与安全系数(4)
————赛风三突破封锁的原理以及为什么不能匿名
上次分析了赛风三的安全性,这次我就来聊聊赛风三是如何应对GFW封锁以及为什么不能当作匿名软件使用吧。
赛风三要能连接到服务器,必然要在程序中嵌入服务器列表,但这样就产生了一个问题:如果第一次运行时就试图与所有的服务器建立连接,那么GFW的奴才们可以很轻易的找到并封锁所有的远程服务器。
老读者们应该很轻易就能想到解决办法:只要采用算法在每次连接时随机选取一定数量的远程服务器不就可以了吗?
没错,但这还远远不够呢!
能够嵌入程序的远程服务器IP数总是有限的,你再怎么设计算法也挡不住GFW的穷举的,固定IP迟早被封完。
也就是说,要想要让赛风三长寿,就必须有一个服务器更新机制。
诸位如果有人是赛风三的用户,应该也早就注意到了这一点:
当赛风三成功连接之后,就会出现这样一行通知:Discovered new Psiphon servers:1 for SSH+,1 for SSH,1 for VPN 这就是在进行服务器列表的更新。当一个IP失效时,赛风三就会自动连接另一个IP,所以使用赛风三时IP地址也会经常发生变动。[1]
但问题又来了:如果每个赛风三客户端都能轻易发现大部分或所有赛风服务器,那么GFW又要笑了,“哈哈,太方便我封锁了啊!”
但如果客户端很难发现服务器,GFW还是会笑的:“哈哈,这么难连接的翻墙软件谁要用啊?”
那么该怎么平衡用户体验和抗封锁这两点呢?
TOR的网桥释放策略给了赛风三的设计者灵感:“time-release“,简单来说,在不同的时间启动赛风三客户端,发现的是不同的服务器,而且在一段时间之内其他客户端都无法发现已经被某个客户端发现了的服务器了,这样GFW就很难进行封锁。[2]
不同的客户端连接时IP地址也不同,赛风三的设计者也利用了这一点,设计算法使得不同IP地址对应的客户端每次更新时获得的服务器IP地址都不同 [2],而且他们是在TOR网桥中继获取算法上进行改进的:TOR算法是to/24-A.B.C,赛风三算法是x.x.C.D,GFW要付出更大代价才能 发现并封锁赛风三服务器(关于这一点我就不展开了,有兴趣的人自行看参考资料,我在以后讲IP地址时会说明为什么赛风三的算法比TOR的算法更好)
还有一个有意思的策略:众所周知一旦墙内使用某一远程服务器翻墙的人达到了一定数量,GFW就会开始注意并追踪封锁这一服务器(包括墙外的网站都是 如此,当来自墙内的访问数多到一定程度时就会被墙),为此赛风三的服务器采取了这样一种策略:当发现它的客户端达到一定数量时,服务器就会”躲起来“,不 再被其他客户端发现[2],从而躲开GFW的注意。
赛风三的开发者真是下了很大功夫,所以赛风三才能存活到现在。
但有一点是他们无能为力的:赛风三不是匿名软件,从来不是!(这一点他们自己也是一直在强调的[3])
为什么不是呢?
这要从互联网的工作过程说起:你想要上G+,于是就在浏览器地址栏中输入URL之后回车,然后看到了登录界面(如果事先登录过并保留了cookie,那就直接登录上去了),这其中发生了这些事情:
首先,域名系统去进行域名查询,把对应IP地址搞来了(GFW的最常用封锁手段就是DNS污染,利用域名系统本身的缺陷使得浏览器接受到错误的IP从而无法正常建立连接);
然后,在HTTP协议,TLS协议,TCP协议,IP协议和数据链路层的MAC与LLC的帮助之下数据帧最终封装好了,送出去了!(请自行参考OSI七层模型或TCP/IP四层协议栈[4])
首先经过交换机(俗称路由器,其实交换机和路由器完全两码事,我有空介绍一下),接着再经过N个路由器的中转,最终到达google服务 器,google服务器查看了用户请求之后再把数据送回来,还是要先经过N个路由器中转再到交换机最终到PC浏览器上(PS:我说得很简略,但这一过程其 实非常复杂,而且分好几种情况,有空我会具体说明的)
在这一过程中,交换机肯定会知道你的真实IP地址和MAC地址(就算不用交换机,ISP和N个路由器也知道你的真实IP地址),而google服务 器知道你的真实IP和你干了嘛(这是HTTPS,要是HTTP,交换机ISP以及中间的N个路由器都知道你的真实IP和你干了嘛。PS:现在的路由器工作 领域早就不局限于OSI模型的最底下三层了)。
那么有人就会说了:”这样的话,只要让交换机和ISP不知道我干了嘛,google服务器不知道我的真实IP,不就成功实现匿名了吗?那么不是只要随便找个一重加密代理不就行了?“
笨蛋!首先匿名根本就没有这么简单,除了真实IP,还有不少能泄露你身份的东西呢,例如浏览器指纹第三方cookie恶意软件病毒木马浏览器插件等 等,还有社会工程学(俗称人肉搜索)和流量分析以及关联分析(数据挖掘,最近最火热的一个相关概念就是大数据[5]了)要防范,真心不是一件容易的事情! [6]
还有,即使只考虑隐藏真实IP,一重代理都根本不足以胜任:挂了一重加密代理(前提是强加密,PPTP那种分分钟被暴力破解的还是别提了吧[7]) 之后ISP交换机路由器的确不知道你干嘛了,目标网站服务器也的确不知道你的真实IP了,但在非HTTPS的情况之下,代理服务器知道你的真实IP和你干 了嘛!只要有这样一个存在,就根本谈不上匿名!你永远都不知道那个把你看光了的远程服务器是否靠谱!
赛风三是一重代理啊,所以不管怎样都不能当成匿名工具,而且开发者在设计文档里还说了赛风三是无法对抗流量分析的[2]。
赛风三的开发者很诚实,真的很诚实,他们一直在强调自己开发的软件不能拿来匿名[3],这一点我希望其他翻墙软件开发者也能向他们学习[8]!只有TOR[9]和I2P[10]才是真正的匿名软件!
下一篇,分析N多翻墙党的最爱:goagent!
最后照例附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,https://s3.amazonaws.com/5nkt-sj7x-cc2h/zh.html#other_frequently_asked_questions
2,Psiphon Circumvention System Design Paper
https://bitbucket.org/psiphon/psiphon-circumvention-system/downloads/DESIGN.pdf
3,https://bitbucket.org/psiphon/psiphon-circumvention-system
4,SSL/TLS的原理以及互联网究竟是如何工作的(1)
————“每个协议生而平等”
https://plus.google.com/109790703964908675921/posts/jew5dx6V2Lt
5,”We Feel Safe in a Dangerous Place”(5)
————大数据,云计算,肮脏的技术
https://plus.google.com/109790703964908675921/posts/M7HphPe7t4M
6,最安全翻墙方法,没有之一:https://plus.google.com/109790703964908675921/posts/ZJ1P5wXLn5J
7,VPN翻墙,不安全的加密,不要相信墙内公司 https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
8,翻墙软件的选择与安全系数(3)
——2,无界突破封锁的原理和对虚假宣传的打脸https://plus.google.com/109790703964908675921/posts/QZhrtF5bxqZ
9,https://www.torproject.org/
10,https://geti2p.net/zh/
原文:https://plus.google.com/109790703964908675921/posts/SDkrzcK7ZdY
==================================
翻墙软件的选择与安全系数(5)
————为什么goagent要导入证书?
说起goagent[1],我敢打赌它绝对是知名度最高的翻墙软件之一,而且也是最早把很多翻墙党带到墙外自由世界的功臣。goagent一直以速 度快和坚挺著称,不过在今年5月共匪GFW全局封锁google之后goagent就变得不太好使了,很多时候都要通过gogotester[2]之类的 手段手动寻找可用IP,不过迄今为止goagent还是可用的。
很多人反映开源免费的goagent比不少收费VPN的表现都要好,这是怎么回事?还有就是goagent有一个与众不同之处,那就是要导入一个自签发的GoagentCA证书[3]才能在连接HTTPS网站时正常工作,这又是怎么回事呢?
这要从goagent的工作原理说起:简单来说goagent就是个一重代理,用户先将本地数据通过本地的proxy.py发送到google的appengine server上的gae.py 上,gae.py再将数据进行中转,最终把数据送到目标网站服务器上建立连接(我会附上流程图,其中proxy.py和gae.py都是用python写 的程序,运行之后就是一个个中转流量的代理。GAE服务器本身并不是代理服务器,所以用户需要事先运行upload.bat以执行程序upload.py 将gae.py上传到对应的GAE服务器上,从而将GAE服务器变为代理服务器)。
事实上不仅仅goagent,其他GAE类翻墙工具(例如wallproxy以及很多“一键翻墙包”)都是这样的工作原理。
goagent的特殊之处在于它所使用的代理服务器是google的云开发平台GAE(Google App Engine)[4]的服务器(不清楚什么是云平台的人看这里[5]),这些服务器的单位时间的流量处理能力很强,所以goagent很多时候甚至比那些 收费VPN都要快。换句话说,goagent优秀的速度表现是沾了google的光。(goagent相对比较坚挺也是沾了google的光,共匪很长时 间都不敢全面封锁google外加google在世界各地都有不少服务器,这些使得goagent一直能连接到有效的IP上)
不过正所谓“成也萧何,败也萧何”,也正是这些GAE服务器把goagent的安全性变得非常差的。究竟是怎么回事?
有一点诸位必须要意识到:GAE服务器可不是生来就是代理服务器的,GAE的用途是开发而不是翻墙,而且GAE平台是一个商业云平台,换句话说想要 得到相应的服务就得付出相应的价钱才行。对于GAE而言,goagent只是一个普通的免费APP而已,而免费APP有一个限制:不开放socket接 口!
“不开放socket接口又意味着什么呢?”
关于socket,我在这里[6]解释TLS的原理时已经提过了,简单来说如果客户端和服务器端想要建立TLS连接,那么对应的通信程序就必须要使用socket作为API(应用程序接口)从而在代码层面实现通信,此时通信单元也被称作socket(套接字)。
对 于代理服务器,他在代理TLS流量时是需要对相应的socket进行处理的,将数据包的源地址修改为本身的地址,如此才能装作客户端与目标网站服务器正确 建立连接(从而实现隐藏IP)。要实现这一过程,代理服务器上的程序自然也需要使用socket接口了,不然无法对于TLS数据包做任何改动,也就无法装 成客户端了。
那么,GAE对于免费APP不开放socket接口就意味着……goagent使用的服务器无法正常代理TLS流量,也就是无法与HTTPS网站建立连接!
不,其实还是有办法连接的:GAE服务器首先装作目标服务器与用户完成handshake,接受并解密用户数据包,然后再装作客户端与目标网站服务 器完成handshake再将用户数据发送出去,这一过程其实就是中间人攻击[7]。为了顺利完成这一过程,goagent要求用户导入自签发的数字证 书,而这个证书非常恐怖……
“等一下,你刚刚还说GAE服务器不开放socket接口,可是建立TLS连接又需要用到socket接口,那么根本就全程都没有办法建立TLS连接吧?”
首先,GAE服务器是对于免费APP不开放socket接口,又不是说对于目标网站不开放socket接口,所以后面一段路是可以建立TLS连接的(但此处有很大问题,我后面会说明的);
至于前面一段路,的确在很长一段时间内都是明文的,只是有着简单的压缩而已;后来google允许前面一段路实现HTTPS,算是部分开放了socket接口,但开放程度还不足以直接代理TLS流量[8],所以到现在为止还是只能通过中间人攻击的方式对付HTTPS网站。
“如果是这样……那么,这就意味着我在本地不信任一些天朝共匪证书的努力失效了?”
很不幸,是的。既然本来就是以中间人攻击的方式翻墙的,那么自然就无法对抗真正的中间人攻击了,要知道默认情况下本地的goagent程序不会对 GAE服务器上的那个自签发证书进行认证,而且GAE服务器装成客户端与目标网站建立TLS连接时默认也不会进行证书认证,那么GFW想要进行中间人攻击 就轻而易举了!在这种情况下,你访问什么网站都不可能出现证书错误了,因为严格的证书认证机制已经被破坏了!
更要命的是,即使你修改了默认设置也没有多大帮助:因为那个GoagentCA证书的私钥是公开的,这就意味着任何人都可以成功伪造证书来进行中间人攻击,而且因为证书是导入到你的操作系统中的,即使不用goagent了都没有用!必须要手动删除![9]
“最新版goagent似乎直接删除了自带的证书,而是改为随机生成了,这样应该就安全了吧?”
没有!因为goagent本身的证书认证过程就是很粗糙的,并没有严格匹配主机名[7,9],所以依旧可以被GFW钻空子;还有就是经过proxy.py处理过的数据包的头部会储存有用户的appid,而appid是每个用户自己绑定手机申请的,那么……这也实在是太方便查水表了吧?[8]
我们可以看到,goagent已经几乎没有安全性可言了,不过这也不能怪google,因为GAE本来就不是提供匿名服务的平台。至于作者,我相信 他也尽力了,毕竟个人能力有限,而且一直都是开源免费的,一路坚持下来也不容易。最重要的是作者也一直承认自己的程序是不够安全的,没有歪曲事实。
不过有一点是没办法了:GAE服务器没办法直接代理TLS流量,这就意味着GAE类的翻墙工具都不原生支持HTTPS(“原生”意味着代理服务器可以直接代理TLS流量而不需要看到明文),也就无法成为TOR的前置代理,因为TOR流量全程都是HTTPS的。
最终结论:goagent的适用人群为无价值目标,低价值目标[10]。适用情景:翻墙看视频或浏览网页;不适用情景:发表敏感言论。
下一篇咱就来聊聊翻墙软件中的新秀:shadowsocks吧。
最后照例附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,https://github.com/goagent/goagent
2,https://code.google.com/p/gogo-tester/
3,http://allinfa.com/goagent-v323-gae.html
4,https://cloud.google.com/appengine/docs
5,”We Feel Safe in a Dangerous Place”(5)
————大数据,云计算,肮脏的技术
https://plus.google.com/109790703964908675921/posts/M7HphPe7t4M
6,SSL/TLS的原理以及互联网究竟是如何工作的(3)
————TLS的专场!
https://plus.google.com/109790703964908675921/posts/NwWoGQ9mcDY
7,SSL/TLS的原理以及互联网究竟是如何工作的(4)
————中间人攻击,当心!
https://plus.google.com/109790703964908675921/posts/3U3iMGDNZiB
8,http://allinfa.com/gae-goagent-security-reminder.html
9,http://allinfa.com/goagent-security-risks.html
10,翻墙软件的选择与安全系数(1) https://plus.google.com/109790703964908675921/posts/VfXZuC5xJCN
原文:https://plus.google.com/109790703964908675921/posts/S97nfFoEPie
==================================
翻墙软件的选择与安全系数(6)
————shadowsocks,翻墙界的新秀!
在新的一年里,GFW越来越疯狂了,自由门的两个最新版和VPNgate彻底失效了[1],无界最新版 表现也很不好,DNS采用了新的污染模式又搞得一批防DNS污染的软件失效了:GFW以前是用固定几个不存在的IP地址来伪造查询结果,但最近改成用一大 堆非目标网站的IP地址来伪造查询结果了[2]。
不过有一个翻墙软件迄今为止还是非常坚挺的:shadowsocks![3]
shadowsocks在普通的socks代理上进行了自定义加密方式等改进,支持多个平台,迄今为止GFW还无法通过特征检测封杀shadowsocks,总的来说还是比较坚挺的,唯一的缺点就是需要自行租用VPS并部署服务器端,对小白不太友好,不过现在也有一些付费shadowsocks账号 提供商,价格比起VPN来要低上很多(这个就请有需要的人自行google吧,我不喜欢打广告);或者也可以google寻找公共免费账号,我在这里 [4]给出了一些提供免费账号的网站,可以去看看。
想知道为什么迄今为止GFW还没办法有效封杀shadowsocks吗?
这要从shadowsocks的原理说起了:简单来说,shadowsocks就是一个一重加密的socks代理,本机上的客户端先与远程服务器(配 置了shadowsocks服务端程序的VPS)端建立连接,远程服务器再与目标网站连接从而成功翻墙。(具体过程和goagent比较相似[5],(两 者都是用python编写的)不过shadowsocks是原生支持HTTPS的,没有“服务器不开放socks接口”这种问题,我会贴一张原理图上来)
“听起来和普通的一重代理也没什么两样吗!自由门,无界,VPN不都是一重代理吗?但他们都很容易被封杀啊!”
当然是有不一样的地方了:
首先,VPN无法进行远程DNS解析[6],所以很多时候在使用VPN的同时还要设定好一个国外的DNS服务器才能正常翻墙(很多人反映很多时候挂着VPN都无法正常打开FB,推特等网站,其实就是因为没有设定国外DNS服务器而遇到了DNS污染);
而 shadowsocks默认就支持远程DNS解析(因为socks5代理支持远程DNS解析),这样就省去了配置国外DNS服务器的麻烦,同时还防止了信 息泄露:DNS查询直接递给远程代理服务器,然后通过墙外DNS服务器查询得到结果再传回客户端,这样ISP就无法通过DNS查询知道你访问了哪个网站了 (而不支持远程DNS解析的VPN就留下了泄露访问信息的隐患),同时也避开了DNS污染。
自由门和无界还有很多公共代理的共同点就是都有很多人用,当有很多墙内客户端都在短时间内(或者说同时)长时间连接到一个或几个国外远程服务器上时,就会引起GFW的注意并被很快封杀;
而shadowsocks则是要求用户自行租用VPS并部署shadowsocks服务器端,相当于拥有了一个个人专用服务器,个人的流量非常小,GFW注意不到,自然也就不会去封杀了(PS:小范围共享的服务器也不太会被GFW注意到的)。
接着说说流量特征的问题。OPENVPN和VPNgate都是死在了特征检测上,通常来说基于证书的身份认证过程和密钥交换过程都会带来独特的协议 指纹(OPENVPN有着一套复杂完善的身份认证机制,估计GFW就是识别出了这一机制的协议指纹从而成功干掉OPENVPN的),从而使得他们在 handshake阶段就被GFW识别出来并阻断了;
shadowsocks的作者吸取了教训,直接放弃了服务器端身份认证[7],也抛弃了密钥 协商过程(TLS了连接就是在handshake阶段协商出随机密钥的),而是采取事先在服务器端设置好固定密钥的方式来应对加密连接的(设置 shadowsocks客户端和服务器端的时候要填写同一个密码,这就是事先设置好的用于加密和解密的密钥[8])。这样做就大大减少了协议特征,GFW 迄今为止也没能找到有效的识别方法。再加上自定义加密算法,GFW更是难以寻找到明显的协议指纹了。
shadowsocks的安全系数主要取决于你使用的加密算法,建议使用默认的AES算法,那是安全系数最高的;其他的就直接看这里[9]吧,我曾 经提过的不安全的RC4算法[10]作者也建议不要用了。shadowsocks没有身份认证机制,但事先放置密钥就可以防止GFW的中间人攻击了,问题 不大;如果是自己搭建服务端,那么也不存在信息被泄露的问题了(服务端在自己手里啊),但同时逆向追踪难度也变小了;如果是使用公共账号或者购买付费账 号,那么服务端的靠谱程度又成了问题。总的来说shadowsocks的安全系数和赛风三[11]相差不多。
总结:shadowsocks跨平台,抗封锁能力很强,适用人群为无价值目标与低价值目标还有中等价值目标[12],客户端部署容易无需安装,唯一 缺点就是服务端部署相对复杂对小白不友好(不过可以通过寻找或购买账号解决)。shadowsocks开源免费,作者为天朝无名英雄clowwindy, 在此本幽灵向其致敬!现在局势越来越险恶了,clowwindy,匿名工作一定要做好啊:)
本来打算下一篇推荐一下VPNgate的,结果没想到VPNgate彻底挂了,算了,还是分析一下原理作为缅怀吧,毕竟我早期就是靠VPNgate出来的。(顺便找一下挂掉的具体原因)
最后附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,http://program-think.blogspot.com/2015/01/gfw-news.html
2,https://plus.google.com/u/0/+gfwblog/posts/2bN9PTv2d52?cfem=1
3,https://github.com/shadowsocks
4,最新版TORBrowser,Poodle 攻击与前置代理推荐之shadowsocks https://plus.google.com/109790703964908675921/posts/YnvBLAd6SQ1
5,翻墙软件的选择与安全系数(5)
————为什么goagent要导入证书?
https://plus.google.com/109790703964908675921/posts/S97nfFoEPie
6,翻墙路由器的原理与实现
https://docs.google.com/document/d/1mmMiMYbviMxJ-DhTyIGdK7OOg581LSD1CZV4XY1OMG8/mobilebasic?pli=1
7,https://gist.github.com/clowwindy/5947691
8,http://www.hceasy.com/2013/12/shadowsocks-%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%83%A8%E7%BD%B2/
9,https://github.com/shadowsocks/shadowsocks/wiki/Encryption
10,VPN翻墙,不安全的加密,不要相信墙内公司https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
11,翻墙软件的选择与安全系数(4)
————赛风三的安全性
https://plus.google.com/109790703964908675921/posts/CK81jzWRsdx
12,翻墙软件的选择与安全系数(1) https://plus.google.com/109790703964908675921/posts/VfXZuC5xJCN
原文:https://plus.google.com/109790703964908675921/posts/TtWFAQmSMVE
不少翻墙软件都宣称自己安全系数很高(例如自由门和无界),很多人也直接把翻墙软件等同于匿名软件,但这是错误的:翻墙软件和匿名软件根本就是两回事!
但几乎所有的翻墙软件的确都有一定的匿名效果,这又是怎么回事呢?
这要从翻墙软件的原理说起:GFW的封锁手段主要有DNS污染,IP地址屏蔽以及HTTP关键词过滤等,其中我提到的这三种是最常用的。
那么为了对付封锁,最容易想到的一种方法就是:先将连接请求加密传输到墙外的远程服务器上,再由远程服务器进行后续处理并传回数据,这样GFW的三种手段都会失效。
将连接进行加密,就防止了共匪的截取监听(专业名称叫嗅探);远程服务器进行后续处理,就成功隐藏了真实IP。共匪想要查水表,嗅探和根据真实IP抓人是最主要的手段,翻墙软件同时对抗了这两种手段,也就在一定程度上实现了匿名。
但翻墙的目的是突破GFW封锁而非隐藏身份,所以使用的加密算法基本上不会很强(例如我曾提到过的PPTP和L2TPVPN,已经可以被GFW轻易 暴力破解了[1]),而且多数都不会验证远程服务器的身份,这就给GFW提供了中间人攻击的机会(简单来说就是GFW插进你与远程服务器的连接之中,知道 了你的所有数据包内容,具体我以后专门写一篇科普),一旦被中间人攻击了,你翻墙之后干的一切就都被共匪知道了(GFW除了封锁,还有个功能就是监控,而 不被察觉的监控才是最可怕的)。
更糟糕的是这几年来GFW越来越疯狂,对于无法判定的强加密流量一律进行阻断,还引入的DPI(深度包检测)以及在此基础上的特征检测和流量分析技 术,翻墙工具的开发重心不得不转到流量混淆(想办法伪装成“正常”加密流量)和减少协议特征上,至于匿名要求的强加密和身份验证机制以及远程服务器的可靠 性这些几乎不在翻墙软件开发者的考虑范围之内。这很正常,但也就意味着翻墙与匿名完全无法等同了。(尤其是hosts翻墙和其他只对付了DNS污染的翻墙 手段,毫无匿名性可言,墙内VPN更是直接会把你给卖了)
看到这里诸位应该就能明白该怎么考察翻墙软件的安全水平了:
1,加密算法是什么算法,程度强不强;
2,连接到远程服务器时,有没有身份验证机制,如果有是否完备;
3,远程服务器本身是否可靠,抵抗黑客攻击破解的能力怎样;
4,远程服务器究竟知道你多少信息,一旦泄露会带来怎样后果;
5,对抗流量分析或关联分析的能力有多强;
6,是不是所谓的“智能翻墙”(连接国内网站时是直接连接的);
7,被共匪逆向追踪到你的可能性有多大;
8,共匪知道你在翻墙的可能性有多大;
9,翻墙软件制作者背景怎样,是否可靠;
10,翻墙软件本身出现恶性BUG的可能性有多大
以后的系列里我会从这几点出发对主流翻墙手段进行相应的分析(技术性太强的手段我不会去分析,有些翻墙软件是闭源的,具体原理不是很明确,我只能尽力去进行推测,有几点可能会分析不出,请见谅)
补充说明:关于第6点,主要是社会工程学上的考虑:假如你在G+上发了个“如何煽动颠覆国家政权”的帖子,同时又直连了墙内网站,那么事后共匪在追踪你时就会比较容易(有个真实IP此时在翻墙,很可疑的)
所以我建议不要为了省事选择“智能翻墙”,如果翻墙的时候需要去墙内网站,请翻墙去,视频网站就找一个墙内的在线代理再去。
关于第7点,要想不被共匪逆向追踪要做很多工作,不过我这次重心就放在翻墙工具的安全性上,有兴趣的诸位可以看我的科普文中匿名与隐私保护分类下的文章[2]
PS:我昨天搞了个最常用翻墙工具调查[3],结果显示使用TOR的人寥寥无几,真是令人失望:(
我说,想要安全翻墙其实只要TOR+前置代理就可以了,TOR最近也复活了,墙内可以通过MEEK和obfs4直接连接了,怎么用的人还是那么少?
我知道相当多的翻墙党只在乎一个速度,不喜欢TOR,我就用TOR开发者Jacob Appelbaum的话来告诫你们吧:“在叙利亚,人们有时说Tor很慢。我对此的回应是:“你想死的有多快?”我没有不敬之意,这是一个严肃的问题:可 能人们意识到Tor匿名性的重要性时,为时已晚。
使用Tor可能会好一些,因为如果你使用其他快速的VPN,但可能后来才发现这个VPN的加密并 不好。同时,使用其他VPN也有一些弊端:比如,有人报告说Ultrasurf等系统把用户访问的网页地址显示给系统出资方。从某种意义上说,这成了一个 监控平台,只不过你避免了一批人的监控,却换了另一批人来监控你。同时这是一个法轮功组织研发的翻墙软件。如果一个翻墙软件与特定的意识形态有直接的关 联,在中国的国情下使用该软件是十分危险的
你必须考虑所有这些隐私:如果你只看速度一个因素,你可能会身陷麻烦。Tor的大多数替代品并非正真意义上的替代品:它们不是对等网络,不是免费软件,不是开源软件,或者不是被直接受益于该系统的人运营。我认为这些都是十分重要的。”
注意Jacob Appelbaum提到了无界,下一篇我就会分析一下无界的安全性(从我的调查来看无界也是很流行的,使用者很多)
参考资料:
1,VPN翻墙,不安全的加密,不要相信墙内公司https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
2,科普文链接集合https://plus.google.com/u/0/109790703964908675921/about
3,https://plus.google.com/u/0/109790703964908675921/posts/YUNHtWQaRvF
原文:https://plus.google.com/109790703964908675921/posts/3Gftt3JifTx
===============================
VPN翻墙,不安全的加密,不要相信墙内公司
翻墙手段中很重要的一种就是利用VPN翻墙,这种方法可以说技术门槛相当低,就是多数时候花钱才能享受到高质量的服务。
先介绍一下VPN:VPN是Virtual Private Network(虚拟专用网)的缩写,本来是用于企业的一种网络服务,原理是客户端使用相应的VPN协议先与VPN服务器进行通信,成功连接后就在操作系 统内建立一个虚拟网卡,一般来说默认PC上所有网络通信都从这虚拟网卡上进出,经过VPN服务器中转之后再到达目的地。通常VPN协议都会对数据流进行强 加密处理,从而使得第三方(例如GFW)无法知道数据内容,这样就实现了翻墙。翻墙时VPN服务器知道你干的所有事情(HTT[P,对于HTTPS,它知 道你去了哪)。(下面有流程图)
VPN协议主要有这几种:PPTP,L2TP,IPSEC,OPENVPN,SSL VPN,Ikev2 VPN,Cisco VPN,其中的PPTP和L2TP是明文传输协议。对,他们是明文传输协议,但为什么还是有不少人能用这两种方式翻墙呢?
当一名用户在使用PPTPVPN翻墙时,实际上他同时启用了128位的MPPE(微软点对点加密)算法来为数据进行加密[1],”那么GFW就不知 道数据传输内容了,所以就实现了翻墙“大家都会得出这样的结论吧?真的很不幸,GFW其实并不仅仅是封锁,它还有着监控的作用,而且现在GFW已经具备了 暴力破解MPPE加密的能力了(暴力破解的意思就是用枚举法直接枚举得到密钥从而解密):PPTP协议的加密实现-MPPE是基于RC4(可以在几分钟内 被破解),MS-CHAP2的实现是用用户密码的MD4作为密钥加密,这在十年前是安全的,在今天一个莱特币矿机分分钟搞定了。我说难怪有人说他用VPN 上推特会在联通查到记录呢[2],人家曙光几秒钟就穷举了那点MD4(有消息说GFW使用的是曙光超级计算机集群)
还有”MPPE的128位session key是基于mschapv2的hash生成的,套了几次md4和sha1而已,如果获得了初始认证的key,如果对整个pptp vpn抓包了的话,可以推出后续的session key从而解密整个pptp vpn流量。所以说PPTP vpn缺乏forward secrecy,一旦key被破解就可以解密全部之前的流量“[3],简单来说就是MPPE所采用的算法是很落后的,很容易被破解,而且MPPE算法诞生 于十几年前,现在GFW再差劲也拥有破解这一算法的能力了。
这里提一下:我看到有人反馈说当shadowsocks的加密连接算法设置为默认的RC4或略有改进的RC4-MD5时,用上一段时间就会被GFW 封锁,需要改密码或IP才能继续使用,一开始我推测是特征检测,但理论上来说特征检测是不受加密方式影响的,换句话说如果GFW成功识别了 shadowsocks与远程服务器建立连接时的特征,那么不管使用什么加密方式都会很快被GFW干扰,而不会只有RC4-MD5和RC4连接被干扰,那 么最大的可能就是GFW可以破解RC4-MD5,而这同时也是MPPE使用的加密算法,那么PPTPVPN就不再安全了
L2TP则不含任何认证和加密功能,都是由 IPSec 负责的,IKE是 IPSec 的一部分;L2TP 本身只完成数据传输之类的工作,不负责认证和加密,需要配合其它安全协议使用,例如 L2TP/IPSec 这样的,当然这是可选的可以不用,不用的话就没有安全性可言了。(有人发现GFW经常性把L2TP/IPSec干扰为明文的L2TP[4])
用了也不能保证安全,L2TP/IPSec并未被GFW严重封锁,搞不好就是故意的,为了更好的欺骗我们翻墙党同时进行监控。(主要是前面提到的容 易被GFW干扰成明文,至于加密是否牢固,要看VPN公司选择的加密算法,不过那些付费VPN公司没几个会介绍所使用的加密算法的。)
OPENVPN在12年18大之后就被特征检测搞得半残了,不过现在有些地方效果还不错。OPENVPN的身份验证机制很完善,隧道加密程度也非常强(OPENSSL加密算法)所以也被封锁的很严重[5]
很多人(包括以前的我)都认为GFW的唯一目的就是封锁。封锁一定是主要目的,原因我们翻墙党都很清楚,但请大家想一下为什么墙内还有那么多VPN服务提供商存在呢?和天朝相似的伊朗直接在法律中写上了使用VPN违法,但为什么到现在共匪都没有这么做呢?
共匪要用经济发展换取统治合法性,就不可能像朝鲜那样建立天朝局域网,否则人家外资怎么进得来呢?墙内还有一大堆企业依靠墙外的互联网服务呢(例如 云计算平台)。GFW越来越高的误伤率已经引起了不少人的不满,共匪又从来不肯公开承认GFW的存在,害怕翻墙者增多以及自己制造的”墙内互联网是自由的 “的谎言破灭。要说把翻墙的人都抓起来,也不现实:
一是翻墙的人太多(至少千万),而且不少人都不关心政治,抓了反倒起反效果,让更多人知道GFW的存在外加更关心政治;
二是GFW本身就没有任何法律依据,就算抓了,怎么判决呢?共匪官方说辞里面GFW是不存在的,要是因为翻墙抓人,不是直接自打脸了吗?
三是GFW误伤了太多科技类网站,搞得科研人员已经把翻墙作为必修技能之一了,要是谁翻墙就抓谁,科研人员怎么办?
四是不少翻墙软件都引入了流量混淆技术(例如TOR和赛风三),很多时候GFW都判断不出用户是不是在翻墙,怎么抓啊?
五是如果共匪真的什么都不顾,谁连接外网就抓谁,那么必然会激起众怒(去年封锁了github就引起不少程序员的抗议,最后GFW被迫解封),只会让自己快速倒台。
所以GFW采取了一个办法:故意让墙内活动着一批VPN服务提供商(这些公司都是随时会把用户流量日志送给共匪的),同时不断封锁那些无法控制的翻 墙软件和付费VPN,对于可以轻易破解的PPTP和易被干扰的L2TP则故意放开一码,不惹怒太多人的同时又进行欺骗,让一些人以为自己安全,其实自己的 一举一动都已经在共匪的监视当中了,如果进行了什么”煽动颠覆国家政权“的行动就会被查水表(我用流程图表示出这一过程)
还有一个证据:有人反映不少墙内VPN都没办法作为TOR的前置代理:”國內vpn貌似都是有問題的呀(都不支持Tor)
打開Tor瀏覽器顯示洋蔥頭是打x的,沒有變成綠色的洋蔥頭。
只有連接國外vpn,Tor的洋蔥頭才是綠色的“
”国内VPN不仅过滤域名,IP,甚至过滤协议,审查浏览记录,各种无节操“
”有可能如你所说——国内 VPN 对 IP 或域名进行了过滤,导致 TOR 无法用【国内】VPN 做前置代理。
另外,国内 VPN 的提供者,很容易受到朝廷的胁迫。
因此,朝廷很容易拿到这些 VPN 服务器上的访问日志。
所以,俺自己从来不用这类 VPN,也建议“高危人群”不要用“[6]
墙内VPN的客户端很可能就有后门,那么你的防线就会全面崩溃,所以不要使用墙内的VPN服务(除非你只打算浏览网页)
我在这[7]提了一下PPTP和L2TPVPN都不安全了,现在写出这篇科普具体说明一下。建议用VPN+TOR,共匪无法破解TOR流量,只能干瞪眼。
最后照例附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,PPTP中文维基https://zh.wikipedia.org/wiki/%E9%BB%9E%E5%B0%8D%E9%BB%9E%E9%9A%A7%E9%81%93%E5%8D%94%E8%AD%B0
2,https://twitter.com/Vela1680/status/532068496788574208
3,http://www.v2ex.com/t/116609
4,http://www.v2ex.com/t/79364
5,https://www.x-berry.com/vpn-tunneling-protocol/
6,http://program-think.blogspot.com/2014/11/https-ssl-tls-1.html?comment=1416217711675&q=tor&scope=comment-content#1416217711675
7,TOR网桥,主动探测攻击和烧钱的GFW
https://plus.google.com/109790703964908675921/posts/aLcyVfcH7mP
原文:https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
===============================
翻墙软件的选择与安全系数(3)
——1,无界的安全性
(在科普发布之后,有一些被共匪洗脑洗傻了的货色来说我是五毛,哈哈,哪个五毛会用共匪这词?看看我的补充说明吧:https://plus.google.com/109790703964908675921/posts/4cqs6rvsNJT)
系列的上一篇我预告过这一篇要分析的翻墙软件:无界。那么现在就开始吧!
TOR开发者一直都不信任无界,看完你就知道他们为什么不信任了。
无界和自由门是一样的背景,都是由法轮功学员开发的翻墙软件,历史也非常悠久了[1]。无界宣称自己全程对用户数据进行超高度加密传输,安全性极 强,而且能有效保护隐私,用无界上网后别人不会在PC上发现痕迹,没人能追踪到你,可以自由浏览任何网站,几乎无法被封锁,无需安装的纯绿色软件[2]。
听起来很厉害,甚至比TOR都厉害(TOR还要搭配上特制的TBB才能有效保护隐私呢,无界宣称不需要对浏览器进行额外设置就能保护隐私,不是比TOR还厉害吗?),但这些是真的吗?
真相是残酷的:无界的宣传全部都是假的!
听我慢慢道来:首先,不管无界开发者怎么吹,有一点他们是不得不承认的,那就是无界是个一重代理,远程服务器知道你的一切。
那么,问题来了:无界服务器可靠吗?安全性怎样?服务器拥有者会不会出卖你呢?
无界开发者对于服务器相关信息一直坚持保密,声称是为了用户安全,不过这也是谎言!
先来看看他们的服务器是怎样的吧:
他们的服务器由一个代理链条组成:用户连接到Squid proxy(一种可以提升网速的缓存代理[3]),再连接到ziproxy[4](没有缓存功能的HTTP代理),最终连接到目标网站。
有人看到这大概会有意见:既然是代理链条,为什么你还说无界是一重代理呢?
首先,注意一下其中的Squid proxy是无法单独翻墙的,只是起到一个辅助作用而已,真正起作用的是ziproxy;最重要的是,不管是哪个proxy,在HTTP的情况下,他们中 的任何一个都知道你的一切,不管其中哪个的数据泄露,你都会game over,那么从安全性上来说这就是一重代理。
接着说服务器的事吧。这两个proxy本身的安全性倒是还过得去,用户也很多,更新也算是及时,但问题是无界服务器上的这两个proxy更新是不及 时的!无界服务器使用的是落后的旧版本,而且很久都没有打过补丁了。具体来说就是无界服务器使用了这样的版本: squid/2.7.STABLE7,一个不安全的版本[5],还有与SSL/TLS相关的 lighttpd 1.4.26, Apache httpd 2.2.3 on CentOS, Apache httpd 2.0.63, Apache
httpd 1.3,这些版本都是被发现有严重安全漏洞的[5,6]
对于一重代理,远程服务器的安全就是一切啊,而且无界服务器会很仔细的记录流量并储存相应日志,一旦日志落到共匪御用黑客手里,后果不用我说了吧? 偏偏无界服务器如此脆弱,别说什么开发者自吹的“额外安全保护”,连基本的及时更新打补丁都做不到,最关键的是使用的都是已经明确有严重安全漏洞的版本, 鬼才会相信服务器的安全系数高呢!
那,安全系数不高,但“自由浏览任何网站”总做到了吧?
很不幸,没有!
无界服务器内置了ACL[8](连接控制清单),屏蔽了不少网站,啊,是那种有成人内容的网站,但大部分都是合法的。换句话说,美国政府都找不到理由屏蔽这些网站,但自吹“自由浏览”的无界开发者们却这么做了,他们又在撒谎!
服务器脆弱不堪,那所谓的“超高度加密连接”是真的吗?
对不起,也是假的!
用户到无界服务器的这段连接的加密方式是RC4[8],RC4都是二十多年前的老皇历了,GFW再废柴也能轻松暴力破解了[7],这算个屁的“超高度加密连接?”
还有更坏的消息:不仅加密是废柴,无界客户端与远程服务器通信时也根本就连个像样的身份验证机制都没有[8],对,中间人攻击,在没有身份验证的情况下,GFW搞个中间人攻击轻而易举,你就等着被查水表吧!
分析到这里,诸位应该大致能明白为什么TOR开发者不信任无界了:这种安全性渣到爆的狗屁居然一直自吹“安全系数很高”,骗了多少人?更重要的是又 他妈害了多少人!想一想,一个小白相信了无界的虚假宣传,挂着无界发表了一些“煽动颠覆国家政权”的言论,然后共匪很轻易就能来查他的水表,而他还以为可 能是自己误操作泄露真实身份的呢,却不知道是不安全的无界把他害了!
不过还没完呢:无界严格意义上来说可不是“绿色软件”,尽管不需要安装,但启动之后会在无界所在的文件路径上生成设置文件和一个名为utmp的文件 夹(储存临时文件),而且同时会修改系统注册表(为了自动设置IE代理)。特别注意:对于系统注册表的修改,不管哪台PC都会留下相应系统日志进行记录, 也就是说如果你用无界上网,即使是之后删除了同时生成的其他文件,别人还是能从系统注册表的变化中发现你用了无界。对,那群开发者又撒谎了![8]
嘿,还有呢:无界宣称自己能保护用户隐私,实际上却恰恰相反,他们不仅没有任何有效保护隐私的设置,很多时候还逼迫用户启用第三方cookie,而 且他们和google analytics(著名的用户追踪脚本以及cookie,google出品,被很多公司和网站所使用以追踪用户)有着紧密的合作,每次启动无界之后跳转 到的无界主页就是google analytics的用户之一。[8]这算什么狗屁?
想象一下这样一个场景:两个人同时访问一个曾经访问过并且被 cookie标记了的网站,一个这次用了TBB,一个用无界;TBB默认禁止所有cookie,所以网站没法认出现在这个TOR用户到底是谁,但无界没有 做到这点,结果就是网站通过cookie认出了无界用户的真实身份。对,匿名失效了!(关于cookie,有空我会进行具体说明,很有用也很恐怖的小曲奇 饼)
现在可以给无界做个总结了:安全性极差外加吹牛不上税,完全不值得信任,唯一可靠的地方就是法轮功开发者几乎没可能与共匪合作,不会主动把你给卖了,仅此而已。适合用户群:无价值目标,低价值目标(低价值目标最好都不要用,原因在下一篇会给出)
下一篇,让我们看看安全性全无的无界在突破封锁上表现如何吧。
参考资料:
1,无界中文WIKI
https://zh.wikipedia.org/wiki/%E6%97%A0%E7%95%8C%E6%B5%8F%E8%A7%88
2,无界官网的用户指南
http://www.wujieliulan.com/userguide.php
3,http://www.squid-cache.org/
4,http://ziproxy.sourceforge.net/
5,Squid security advisories.
http://www.squid-cache.org/Advisories/.
6,Apachehttpd2.2vulnerabilities. https://httpd.apache.org/security/vulnerabilities_22.html. ms08-076. https://technet.microsoft.com/en-us/security/bulletin/ms08-076
lighttpd version 1.4.29 – important changes. http://www.lighttpd.net/2011/7/3/1-4-29.
7,VPN翻墙,不安全的加密,不要相信墙内公司https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
8,Technical analysis of the Ultrasurf proxying software
https://media.torproject.org/misc/2012-04-16-ultrasurf-analysis.pdf
最后照例给出科普文链接集合https://plus.google.com/u/0/109790703964908675921/about
原文:https://plus.google.com/109790703964908675921/posts/cyonessuuMZ
===============================
翻墙软件的选择与安全系数(3)
——2,无界突破封锁的原理和对虚假宣传的打脸
开始之前先说明一件事:自由门我不会单独写科普分析了,因为自由门和无界的原理和表现都是很相似的,想要了解自由门的人把我这两篇科普里的无界换成自由门即可。
本来我只想接着写写无界是如何突破GFW封锁的(在突破封锁上面法轮功开发者还是花了不少心思的),但鉴于自由门和无界的虚假宣传实在是害死人不偿命,这次我决定对他们的虚假宣传一条条打脸打过去!
现在开始!
众所周知对于单IP或域名的代理或VPN,GFW很轻易就能封锁:当GFW发现很多墙内IP都短时间内同时连接到一个墙外IP或域名时,就会进行追踪,发现是中转流量的远程服务器之后就会将对应的IP或域名加入黑名单中,这样使用对应VPN或代理的翻墙党就无法翻墙了。
为了应对这一点,无界开发者使用了三种手段[1]:
1,第一次运行无界时,无界客户端会试图通过443端口与一系列服务器进行通信(这些服务器的IP是内置在客户端里的),此时建立的是不标准的 SSL/TLS连接(意思是自定义身份验证机制和加密算法的连接)。一旦成功连接,无界客户端就会在本地硬盘上缓存一些信息(位置在utmp文件夹),是 关于新的可用服务器节点的(有IP,也有DNS)。这些信息是加密的,但GFW很容易就能直接利用客户端本身进行解密,再进行封锁。如果无法成功连接,那 么无界客户端就无法翻墙了。
注意一下:无界客户端并不会与所有的服务器进行通信,而是随机选择一些节点连接,这样倒是不会被GFW马上一网打尽了。
2,如果所有缓存的IP地址都失效了而还有DNS缓存没有用过,那么接下来无界客户端就会试图与一系列DNS解析服务器建立连接,将本地缓存的 DNS发送到服务器上,反馈数据包传回的IP就是新的远程服务器IP。有一点很有趣:所有的实际对应无界服务器IP的域名的顶级域名都是.info,可能 无界开发者与.info域名注册商有什么交易。当然,GFW的工作人员也能猜到这一点,所以可以试图以同样的方式收集域名再解析出对应IP进行封锁。(顶 级域名解析服务器就那几台,不能封锁)
3,如果连缓存的DNS都失效了,那么无界客户端就会向一些没有被GFW封锁的HTTPS网站(例如amazon的网站,注意不是官方站点,而是开发者自己挂在amazon上的个人站点)发送请求,回来的数据包里就有无界服务器新节点。无界开发者宣称是PGP(具体看这里https://zh.wikipedia.org /wiki/PGP)加密过的信息,但这他妈又是假的!事实上数据包加密模式和任何一种已知的PGP加密模式都对不上,反倒更像是脆弱的base64编 码。另外,在连接建立的过程中是没有证书验证机制的(中间人攻击,again!)。
这三种机制都有极其严重的安全隐患,我在打脸时会具体说明。
现在开始打脸!
(以下吹牛均摘自无界官网http://www.wujieliulan.com/faq.php)
1,吹牛:“无界使用高度加密技术,网特无法探测你访问的什么网站。安全第一是我们的宗旨”
打脸:RC4他妈算个屁的强加密?GFW分分钟暴力破解好吧?[2]
2,吹牛:“无界浏览在正常关闭后会自动清除上网痕迹”
打脸:不仅网络层面会留下痕迹,系统层面也会留下痕迹[3]。
3,吹牛:“无界使用高度加密技术,浏览任何网站都会隐藏 IP”
打脸:flash插件和java插件很多时候都会绕过代理与网站服务器直连,如果你不禁用的话你就呵呵了,而IE默认是启用的,无界也不会帮你关闭这两个危险插件的。对了,IE还有独有的ActiveX呢,ActiveX控件也会泄露你的真实IP的。
4,吹牛:“用无界时,如果你使用网页QQ聊天(无需下载及安装的QQ),显示的IP是国外的,内容也是加密的。监督系统只能查到你在用QQ聊天室”
打脸:无界开发者是不是以为QQ是完全P2P的?开什么玩笑,不管挂不挂代理,你的明文聊天内容都会被存储在企鹅服务器上,这哪是一个代理能够左右的?
5,吹牛:“用无界时,你的IP和你访问了哪些网站都不会泄露”
打脸:flash插件和java插件,弱到爆的加密,不用我多说了。
6,吹牛:“其加密程度超过国际金融网络传输安全标准,而且速度快、体积小”
打脸:我第一次知道原来国际金融网络的传输标准这么低啊,老皇历RC4都敢用外加连个像样的身份验证机制都没有![3]
7,吹牛:“无界已设置安全选项。如果你发现还有你访问的网站显示你的真实ip,请将连接网址发送给我们,我们会及时测试与修复”
打脸:TOR开发者在论文正式发表之前就与无界开发者联系过,希望他们尽快采取措施提升安全性外加停止虚假宣传,到现在都没能做到![1]
8,吹牛:“许多用户用无界,是因为无界提供优质的保护个人隐私的功能”
打脸:无界不仅不保护隐私,还帮着其他公司追踪用户呢[3]
9,吹牛:“用户可以畅游世界上任意网站,得到真实开放的信息”
*打脸:你们可是有一个网站屏蔽清单噢(自由门这个清单更长),不要不承认[3]。
这种做法和GFW有什么本质区别?五十步笑一百步而已!*
10,吹牛:“启用了新发明的名为雄鹰之路的超级代理服务器连接技术,能够搜寻协调全球各种代理服务器资源供用户使用,速度快,容量无限大,并为全球网络自由技术平台奠定基础”
打脸:别吹了,也就三种手段罢了[1],而且每一种都有严重的安全问题:
第一种,没有身份验证机制,GFW搞中间人攻击获得节点信息并进行封锁轻而易举,也可以利用这些信息进行钓鱼或直接攻击那脆弱不堪的服务器。
第二种,GFW完全可以伪造相应的DNS反馈数据包将用户引导到事先设置的蜜罐服务器上,那么匿名就无从谈起了(这是DNS本身的缺陷,客户端并不会确认解析结果的来源);
第三种:依旧是能轻易被中间人攻击,不仅如此客户端在启用第三种手段时同时还会像一些不明站点发送请求以进行混淆,但鬼才知道不明站点发送回来的数据包里面有什么!
自由门的吹牛也是类似的,一样不要相信,都是假的!
接下来请大家想象几个场景吧:
1,某小白相信了“网页QQ的信息能被无界加密”这种说法,于是和别人交流了一些反共内容,结果被共匪网警查水表了;
2,某小白相信无界非常安全,去论坛上发表了反共信息,结果被flash插件泄露了真实IP,然后又被共匪网警查水表了;
3,某小白在海外网站“煽动颠覆国家政权”,结果数据包加密被破解,共匪轻易逆向追踪到他(或者索性被中间人攻击了),查水表又来了!
虚假宣传真是坑死人不偿命啊!
论坚挺程度,无界曾经三次被完全封锁,也算不上有多坚挺,再加上安全系数如此差劲,GFW选择性放过一码用以钓鱼也未可知(就像PPTP和L2TPVPN一样[2],具体说明在https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz)
理论上来说,无界和自由门那拙劣的自创通信协议是很容易被特征检测和流量分析的,GFW迄今为止也没有对这俩采取特征检测和流量分析,却对TOR严密封锁把手段用尽,你说谁更可信?谁更安全?
最后照例附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,Technical analysis of the Ultrasurf proxying software https://media.torproject.org/misc/2012-04-16-ultrasurf-analysis.pdf
(我是依据这篇论文分析的无界安全性的。)
2,VPN翻墙,不安全的加密,不要相信墙内公司https://plus.google.com/109790703964908675921/posts/cyonessuuMZ
3,翻墙软件的选择与安全系数(3)
——1,无界的安全性https://plus.google.com/109790703964908675921/posts/cyonessuuMZ
原文:https://plus.google.com/109790703964908675921/posts/QZhrtF5bxqZ
==================================
翻墙软件的选择与安全系数(4)
————赛风三突破封锁的原理以及为什么不能匿名
上次分析了赛风三的安全性,这次我就来聊聊赛风三是如何应对GFW封锁以及为什么不能当作匿名软件使用吧。
赛风三要能连接到服务器,必然要在程序中嵌入服务器列表,但这样就产生了一个问题:如果第一次运行时就试图与所有的服务器建立连接,那么GFW的奴才们可以很轻易的找到并封锁所有的远程服务器。
老读者们应该很轻易就能想到解决办法:只要采用算法在每次连接时随机选取一定数量的远程服务器不就可以了吗?
没错,但这还远远不够呢!
能够嵌入程序的远程服务器IP数总是有限的,你再怎么设计算法也挡不住GFW的穷举的,固定IP迟早被封完。
也就是说,要想要让赛风三长寿,就必须有一个服务器更新机制。
诸位如果有人是赛风三的用户,应该也早就注意到了这一点:
当赛风三成功连接之后,就会出现这样一行通知:Discovered new Psiphon servers:1 for SSH+,1 for SSH,1 for VPN 这就是在进行服务器列表的更新。当一个IP失效时,赛风三就会自动连接另一个IP,所以使用赛风三时IP地址也会经常发生变动。[1]
但问题又来了:如果每个赛风三客户端都能轻易发现大部分或所有赛风服务器,那么GFW又要笑了,“哈哈,太方便我封锁了啊!”
但如果客户端很难发现服务器,GFW还是会笑的:“哈哈,这么难连接的翻墙软件谁要用啊?”
那么该怎么平衡用户体验和抗封锁这两点呢?
TOR的网桥释放策略给了赛风三的设计者灵感:“time-release“,简单来说,在不同的时间启动赛风三客户端,发现的是不同的服务器,而且在一段时间之内其他客户端都无法发现已经被某个客户端发现了的服务器了,这样GFW就很难进行封锁。[2]
不同的客户端连接时IP地址也不同,赛风三的设计者也利用了这一点,设计算法使得不同IP地址对应的客户端每次更新时获得的服务器IP地址都不同 [2],而且他们是在TOR网桥中继获取算法上进行改进的:TOR算法是to/24-A.B.C,赛风三算法是x.x.C.D,GFW要付出更大代价才能 发现并封锁赛风三服务器(关于这一点我就不展开了,有兴趣的人自行看参考资料,我在以后讲IP地址时会说明为什么赛风三的算法比TOR的算法更好)
还有一个有意思的策略:众所周知一旦墙内使用某一远程服务器翻墙的人达到了一定数量,GFW就会开始注意并追踪封锁这一服务器(包括墙外的网站都是 如此,当来自墙内的访问数多到一定程度时就会被墙),为此赛风三的服务器采取了这样一种策略:当发现它的客户端达到一定数量时,服务器就会”躲起来“,不 再被其他客户端发现[2],从而躲开GFW的注意。
赛风三的开发者真是下了很大功夫,所以赛风三才能存活到现在。
但有一点是他们无能为力的:赛风三不是匿名软件,从来不是!(这一点他们自己也是一直在强调的[3])
为什么不是呢?
这要从互联网的工作过程说起:你想要上G+,于是就在浏览器地址栏中输入URL之后回车,然后看到了登录界面(如果事先登录过并保留了cookie,那就直接登录上去了),这其中发生了这些事情:
首先,域名系统去进行域名查询,把对应IP地址搞来了(GFW的最常用封锁手段就是DNS污染,利用域名系统本身的缺陷使得浏览器接受到错误的IP从而无法正常建立连接);
然后,在HTTP协议,TLS协议,TCP协议,IP协议和数据链路层的MAC与LLC的帮助之下数据帧最终封装好了,送出去了!(请自行参考OSI七层模型或TCP/IP四层协议栈[4])
首先经过交换机(俗称路由器,其实交换机和路由器完全两码事,我有空介绍一下),接着再经过N个路由器的中转,最终到达google服务 器,google服务器查看了用户请求之后再把数据送回来,还是要先经过N个路由器中转再到交换机最终到PC浏览器上(PS:我说得很简略,但这一过程其 实非常复杂,而且分好几种情况,有空我会具体说明的)
在这一过程中,交换机肯定会知道你的真实IP地址和MAC地址(就算不用交换机,ISP和N个路由器也知道你的真实IP地址),而google服务 器知道你的真实IP和你干了嘛(这是HTTPS,要是HTTP,交换机ISP以及中间的N个路由器都知道你的真实IP和你干了嘛。PS:现在的路由器工作 领域早就不局限于OSI模型的最底下三层了)。
那么有人就会说了:”这样的话,只要让交换机和ISP不知道我干了嘛,google服务器不知道我的真实IP,不就成功实现匿名了吗?那么不是只要随便找个一重加密代理不就行了?“
笨蛋!首先匿名根本就没有这么简单,除了真实IP,还有不少能泄露你身份的东西呢,例如浏览器指纹第三方cookie恶意软件病毒木马浏览器插件等 等,还有社会工程学(俗称人肉搜索)和流量分析以及关联分析(数据挖掘,最近最火热的一个相关概念就是大数据[5]了)要防范,真心不是一件容易的事情! [6]
还有,即使只考虑隐藏真实IP,一重代理都根本不足以胜任:挂了一重加密代理(前提是强加密,PPTP那种分分钟被暴力破解的还是别提了吧[7]) 之后ISP交换机路由器的确不知道你干嘛了,目标网站服务器也的确不知道你的真实IP了,但在非HTTPS的情况之下,代理服务器知道你的真实IP和你干 了嘛!只要有这样一个存在,就根本谈不上匿名!你永远都不知道那个把你看光了的远程服务器是否靠谱!
赛风三是一重代理啊,所以不管怎样都不能当成匿名工具,而且开发者在设计文档里还说了赛风三是无法对抗流量分析的[2]。
赛风三的开发者很诚实,真的很诚实,他们一直在强调自己开发的软件不能拿来匿名[3],这一点我希望其他翻墙软件开发者也能向他们学习[8]!只有TOR[9]和I2P[10]才是真正的匿名软件!
下一篇,分析N多翻墙党的最爱:goagent!
最后照例附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,https://s3.amazonaws.com/5nkt-sj7x-cc2h/zh.html#other_frequently_asked_questions
2,Psiphon Circumvention System Design Paper
https://bitbucket.org/psiphon/psiphon-circumvention-system/downloads/DESIGN.pdf
3,https://bitbucket.org/psiphon/psiphon-circumvention-system
4,SSL/TLS的原理以及互联网究竟是如何工作的(1)
————“每个协议生而平等”
https://plus.google.com/109790703964908675921/posts/jew5dx6V2Lt
5,”We Feel Safe in a Dangerous Place”(5)
————大数据,云计算,肮脏的技术
https://plus.google.com/109790703964908675921/posts/M7HphPe7t4M
6,最安全翻墙方法,没有之一:https://plus.google.com/109790703964908675921/posts/ZJ1P5wXLn5J
7,VPN翻墙,不安全的加密,不要相信墙内公司 https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
8,翻墙软件的选择与安全系数(3)
——2,无界突破封锁的原理和对虚假宣传的打脸https://plus.google.com/109790703964908675921/posts/QZhrtF5bxqZ
9,https://www.torproject.org/
10,https://geti2p.net/zh/
原文:https://plus.google.com/109790703964908675921/posts/SDkrzcK7ZdY
==================================
翻墙软件的选择与安全系数(5)
————为什么goagent要导入证书?
说起goagent[1],我敢打赌它绝对是知名度最高的翻墙软件之一,而且也是最早把很多翻墙党带到墙外自由世界的功臣。goagent一直以速 度快和坚挺著称,不过在今年5月共匪GFW全局封锁google之后goagent就变得不太好使了,很多时候都要通过gogotester[2]之类的 手段手动寻找可用IP,不过迄今为止goagent还是可用的。
很多人反映开源免费的goagent比不少收费VPN的表现都要好,这是怎么回事?还有就是goagent有一个与众不同之处,那就是要导入一个自签发的GoagentCA证书[3]才能在连接HTTPS网站时正常工作,这又是怎么回事呢?
这要从goagent的工作原理说起:简单来说goagent就是个一重代理,用户先将本地数据通过本地的proxy.py发送到google的appengine server上的gae.py 上,gae.py再将数据进行中转,最终把数据送到目标网站服务器上建立连接(我会附上流程图,其中proxy.py和gae.py都是用python写 的程序,运行之后就是一个个中转流量的代理。GAE服务器本身并不是代理服务器,所以用户需要事先运行upload.bat以执行程序upload.py 将gae.py上传到对应的GAE服务器上,从而将GAE服务器变为代理服务器)。
事实上不仅仅goagent,其他GAE类翻墙工具(例如wallproxy以及很多“一键翻墙包”)都是这样的工作原理。
goagent的特殊之处在于它所使用的代理服务器是google的云开发平台GAE(Google App Engine)[4]的服务器(不清楚什么是云平台的人看这里[5]),这些服务器的单位时间的流量处理能力很强,所以goagent很多时候甚至比那些 收费VPN都要快。换句话说,goagent优秀的速度表现是沾了google的光。(goagent相对比较坚挺也是沾了google的光,共匪很长时 间都不敢全面封锁google外加google在世界各地都有不少服务器,这些使得goagent一直能连接到有效的IP上)
不过正所谓“成也萧何,败也萧何”,也正是这些GAE服务器把goagent的安全性变得非常差的。究竟是怎么回事?
有一点诸位必须要意识到:GAE服务器可不是生来就是代理服务器的,GAE的用途是开发而不是翻墙,而且GAE平台是一个商业云平台,换句话说想要 得到相应的服务就得付出相应的价钱才行。对于GAE而言,goagent只是一个普通的免费APP而已,而免费APP有一个限制:不开放socket接 口!
“不开放socket接口又意味着什么呢?”
关于socket,我在这里[6]解释TLS的原理时已经提过了,简单来说如果客户端和服务器端想要建立TLS连接,那么对应的通信程序就必须要使用socket作为API(应用程序接口)从而在代码层面实现通信,此时通信单元也被称作socket(套接字)。
对 于代理服务器,他在代理TLS流量时是需要对相应的socket进行处理的,将数据包的源地址修改为本身的地址,如此才能装作客户端与目标网站服务器正确 建立连接(从而实现隐藏IP)。要实现这一过程,代理服务器上的程序自然也需要使用socket接口了,不然无法对于TLS数据包做任何改动,也就无法装 成客户端了。
那么,GAE对于免费APP不开放socket接口就意味着……goagent使用的服务器无法正常代理TLS流量,也就是无法与HTTPS网站建立连接!
不,其实还是有办法连接的:GAE服务器首先装作目标服务器与用户完成handshake,接受并解密用户数据包,然后再装作客户端与目标网站服务 器完成handshake再将用户数据发送出去,这一过程其实就是中间人攻击[7]。为了顺利完成这一过程,goagent要求用户导入自签发的数字证 书,而这个证书非常恐怖……
“等一下,你刚刚还说GAE服务器不开放socket接口,可是建立TLS连接又需要用到socket接口,那么根本就全程都没有办法建立TLS连接吧?”
首先,GAE服务器是对于免费APP不开放socket接口,又不是说对于目标网站不开放socket接口,所以后面一段路是可以建立TLS连接的(但此处有很大问题,我后面会说明的);
至于前面一段路,的确在很长一段时间内都是明文的,只是有着简单的压缩而已;后来google允许前面一段路实现HTTPS,算是部分开放了socket接口,但开放程度还不足以直接代理TLS流量[8],所以到现在为止还是只能通过中间人攻击的方式对付HTTPS网站。
“如果是这样……那么,这就意味着我在本地不信任一些天朝共匪证书的努力失效了?”
很不幸,是的。既然本来就是以中间人攻击的方式翻墙的,那么自然就无法对抗真正的中间人攻击了,要知道默认情况下本地的goagent程序不会对 GAE服务器上的那个自签发证书进行认证,而且GAE服务器装成客户端与目标网站建立TLS连接时默认也不会进行证书认证,那么GFW想要进行中间人攻击 就轻而易举了!在这种情况下,你访问什么网站都不可能出现证书错误了,因为严格的证书认证机制已经被破坏了!
更要命的是,即使你修改了默认设置也没有多大帮助:因为那个GoagentCA证书的私钥是公开的,这就意味着任何人都可以成功伪造证书来进行中间人攻击,而且因为证书是导入到你的操作系统中的,即使不用goagent了都没有用!必须要手动删除![9]
“最新版goagent似乎直接删除了自带的证书,而是改为随机生成了,这样应该就安全了吧?”
没有!因为goagent本身的证书认证过程就是很粗糙的,并没有严格匹配主机名[7,9],所以依旧可以被GFW钻空子;还有就是经过proxy.py处理过的数据包的头部会储存有用户的appid,而appid是每个用户自己绑定手机申请的,那么……这也实在是太方便查水表了吧?[8]
我们可以看到,goagent已经几乎没有安全性可言了,不过这也不能怪google,因为GAE本来就不是提供匿名服务的平台。至于作者,我相信 他也尽力了,毕竟个人能力有限,而且一直都是开源免费的,一路坚持下来也不容易。最重要的是作者也一直承认自己的程序是不够安全的,没有歪曲事实。
不过有一点是没办法了:GAE服务器没办法直接代理TLS流量,这就意味着GAE类的翻墙工具都不原生支持HTTPS(“原生”意味着代理服务器可以直接代理TLS流量而不需要看到明文),也就无法成为TOR的前置代理,因为TOR流量全程都是HTTPS的。
最终结论:goagent的适用人群为无价值目标,低价值目标[10]。适用情景:翻墙看视频或浏览网页;不适用情景:发表敏感言论。
下一篇咱就来聊聊翻墙软件中的新秀:shadowsocks吧。
最后照例附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,https://github.com/goagent/goagent
2,https://code.google.com/p/gogo-tester/
3,http://allinfa.com/goagent-v323-gae.html
4,https://cloud.google.com/appengine/docs
5,”We Feel Safe in a Dangerous Place”(5)
————大数据,云计算,肮脏的技术
https://plus.google.com/109790703964908675921/posts/M7HphPe7t4M
6,SSL/TLS的原理以及互联网究竟是如何工作的(3)
————TLS的专场!
https://plus.google.com/109790703964908675921/posts/NwWoGQ9mcDY
7,SSL/TLS的原理以及互联网究竟是如何工作的(4)
————中间人攻击,当心!
https://plus.google.com/109790703964908675921/posts/3U3iMGDNZiB
8,http://allinfa.com/gae-goagent-security-reminder.html
9,http://allinfa.com/goagent-security-risks.html
10,翻墙软件的选择与安全系数(1) https://plus.google.com/109790703964908675921/posts/VfXZuC5xJCN
原文:https://plus.google.com/109790703964908675921/posts/S97nfFoEPie
==================================
翻墙软件的选择与安全系数(6)
————shadowsocks,翻墙界的新秀!
在新的一年里,GFW越来越疯狂了,自由门的两个最新版和VPNgate彻底失效了[1],无界最新版 表现也很不好,DNS采用了新的污染模式又搞得一批防DNS污染的软件失效了:GFW以前是用固定几个不存在的IP地址来伪造查询结果,但最近改成用一大 堆非目标网站的IP地址来伪造查询结果了[2]。
不过有一个翻墙软件迄今为止还是非常坚挺的:shadowsocks![3]
shadowsocks在普通的socks代理上进行了自定义加密方式等改进,支持多个平台,迄今为止GFW还无法通过特征检测封杀shadowsocks,总的来说还是比较坚挺的,唯一的缺点就是需要自行租用VPS并部署服务器端,对小白不太友好,不过现在也有一些付费shadowsocks账号 提供商,价格比起VPN来要低上很多(这个就请有需要的人自行google吧,我不喜欢打广告);或者也可以google寻找公共免费账号,我在这里 [4]给出了一些提供免费账号的网站,可以去看看。
想知道为什么迄今为止GFW还没办法有效封杀shadowsocks吗?
这要从shadowsocks的原理说起了:简单来说,shadowsocks就是一个一重加密的socks代理,本机上的客户端先与远程服务器(配 置了shadowsocks服务端程序的VPS)端建立连接,远程服务器再与目标网站连接从而成功翻墙。(具体过程和goagent比较相似[5],(两 者都是用python编写的)不过shadowsocks是原生支持HTTPS的,没有“服务器不开放socks接口”这种问题,我会贴一张原理图上来)
“听起来和普通的一重代理也没什么两样吗!自由门,无界,VPN不都是一重代理吗?但他们都很容易被封杀啊!”
当然是有不一样的地方了:
首先,VPN无法进行远程DNS解析[6],所以很多时候在使用VPN的同时还要设定好一个国外的DNS服务器才能正常翻墙(很多人反映很多时候挂着VPN都无法正常打开FB,推特等网站,其实就是因为没有设定国外DNS服务器而遇到了DNS污染);
而 shadowsocks默认就支持远程DNS解析(因为socks5代理支持远程DNS解析),这样就省去了配置国外DNS服务器的麻烦,同时还防止了信 息泄露:DNS查询直接递给远程代理服务器,然后通过墙外DNS服务器查询得到结果再传回客户端,这样ISP就无法通过DNS查询知道你访问了哪个网站了 (而不支持远程DNS解析的VPN就留下了泄露访问信息的隐患),同时也避开了DNS污染。
自由门和无界还有很多公共代理的共同点就是都有很多人用,当有很多墙内客户端都在短时间内(或者说同时)长时间连接到一个或几个国外远程服务器上时,就会引起GFW的注意并被很快封杀;
而shadowsocks则是要求用户自行租用VPS并部署shadowsocks服务器端,相当于拥有了一个个人专用服务器,个人的流量非常小,GFW注意不到,自然也就不会去封杀了(PS:小范围共享的服务器也不太会被GFW注意到的)。
接着说说流量特征的问题。OPENVPN和VPNgate都是死在了特征检测上,通常来说基于证书的身份认证过程和密钥交换过程都会带来独特的协议 指纹(OPENVPN有着一套复杂完善的身份认证机制,估计GFW就是识别出了这一机制的协议指纹从而成功干掉OPENVPN的),从而使得他们在 handshake阶段就被GFW识别出来并阻断了;
shadowsocks的作者吸取了教训,直接放弃了服务器端身份认证[7],也抛弃了密钥 协商过程(TLS了连接就是在handshake阶段协商出随机密钥的),而是采取事先在服务器端设置好固定密钥的方式来应对加密连接的(设置 shadowsocks客户端和服务器端的时候要填写同一个密码,这就是事先设置好的用于加密和解密的密钥[8])。这样做就大大减少了协议特征,GFW 迄今为止也没能找到有效的识别方法。再加上自定义加密算法,GFW更是难以寻找到明显的协议指纹了。
shadowsocks的安全系数主要取决于你使用的加密算法,建议使用默认的AES算法,那是安全系数最高的;其他的就直接看这里[9]吧,我曾 经提过的不安全的RC4算法[10]作者也建议不要用了。shadowsocks没有身份认证机制,但事先放置密钥就可以防止GFW的中间人攻击了,问题 不大;如果是自己搭建服务端,那么也不存在信息被泄露的问题了(服务端在自己手里啊),但同时逆向追踪难度也变小了;如果是使用公共账号或者购买付费账 号,那么服务端的靠谱程度又成了问题。总的来说shadowsocks的安全系数和赛风三[11]相差不多。
总结:shadowsocks跨平台,抗封锁能力很强,适用人群为无价值目标与低价值目标还有中等价值目标[12],客户端部署容易无需安装,唯一 缺点就是服务端部署相对复杂对小白不友好(不过可以通过寻找或购买账号解决)。shadowsocks开源免费,作者为天朝无名英雄clowwindy, 在此本幽灵向其致敬!现在局势越来越险恶了,clowwindy,匿名工作一定要做好啊:)
本来打算下一篇推荐一下VPNgate的,结果没想到VPNgate彻底挂了,算了,还是分析一下原理作为缅怀吧,毕竟我早期就是靠VPNgate出来的。(顺便找一下挂掉的具体原因)
最后附上科普文链接集合:https://plus.google.com/u/0/109790703964908675921/about
参考资料:
1,http://program-think.blogspot.com/2015/01/gfw-news.html
2,https://plus.google.com/u/0/+gfwblog/posts/2bN9PTv2d52?cfem=1
3,https://github.com/shadowsocks
4,最新版TORBrowser,Poodle 攻击与前置代理推荐之shadowsocks https://plus.google.com/109790703964908675921/posts/YnvBLAd6SQ1
5,翻墙软件的选择与安全系数(5)
————为什么goagent要导入证书?
https://plus.google.com/109790703964908675921/posts/S97nfFoEPie
6,翻墙路由器的原理与实现
https://docs.google.com/document/d/1mmMiMYbviMxJ-DhTyIGdK7OOg581LSD1CZV4XY1OMG8/mobilebasic?pli=1
7,https://gist.github.com/clowwindy/5947691
8,http://www.hceasy.com/2013/12/shadowsocks-%E6%9C%8D%E5%8A%A1%E7%AB%AF%E9%83%A8%E7%BD%B2/
9,https://github.com/shadowsocks/shadowsocks/wiki/Encryption
10,VPN翻墙,不安全的加密,不要相信墙内公司https://plus.google.com/109790703964908675921/posts/AXgoJutf5sz
11,翻墙软件的选择与安全系数(4)
————赛风三的安全性
https://plus.google.com/109790703964908675921/posts/CK81jzWRsdx
12,翻墙软件的选择与安全系数(1) https://plus.google.com/109790703964908675921/posts/VfXZuC5xJCN
原文:https://plus.google.com/109790703964908675921/posts/TtWFAQmSMVE