原文:http://igfw.net/archives/9194

近日在网络传得比较离谱的一条消息是对TLS/SSL应用层的窃听。随着瓷翁生日的临近,长城似乎有越蹦越高的趋势,导致不少人对SSL v3的安全性也产生了怀疑,这里客栈尝试用简短的图文解释一下所谓的窃听如何完成,以及通过什么方式避免。

首先要强调的是,目前没有对SSL v3这个安全协议的可行攻击;所有窃听均需利用客户端(浏览器及用户)的弱点执行,而非对协议本身的直接攻击。

So, in before the fear spreads…

SSL会话破解有三种主要方式一是通过嵌入系统获取密匙,二是通过巧妙的方式进行Cryptanalysis(密码分析),三是设立中间人执行MITM攻击。

假如攻击者能入侵用户主机或服务器,那用户资料就直接沦为刀俎了,再绕道SSL属于白费力气。因此保持个人系统安全对防止第一类“破解”尤为重要。攻击者并不是在破解SSL协议,而是在直接想办法和你的系统挂钩,盗取加密前和解析后的信息。

本地分析加密会话很简单,类似Http Analyzer的软件支持IE,Firefox,Chrome和Safari几款浏览器的请求记录,它们是站在用户与浏览器之间的看客,而非本地与远程主机之间的黑客(对于不支持的软件,例如Opera或Putty,它是无法记录HTTPS请求的)。

第二种方式因缺乏有效的密码分析,并没有实际应用;SSL v3本身没有已知漏洞,解开会话需要利用客户端和服务器端的漏洞完成(获取密匙);等同第一类攻击了。

相比之下,最可行的SSL窃听方式是第三类:通过MITM。无需获得密匙,无需本地木马,远程窃听者通过建立两条链接:一条从窃听对象到窃听服务器,另一条从窃听服务器到目的服务器,尝试偷换身份并做到会话窃听。

之前我们也说了,协议本身并没有漏洞,因此浏览器的安全设计和用户的安全意识就成了最受考验的部分。第三类攻击要生成不合法的证书,当今的浏览器在遇到该类证书时都会提示错误,但信息的表达方式各不相同,误导用户接受非法证书也时常发生。

Chrome 3-beta的警告是最显眼的。

Firefox 3.5的警告需要阅读,也算显眼的。

Opera 10的警告包含有用信息,但未必能帮助分析。

Safari 4 on Windows的警告和普通提示没什么区别,一点就过了……

IE7的警告够简洁,但解释不足。不知道IE8如何(安装不能,无法测试)。

IE6的警告有够误导,以多数票计算,这是可以接受的对吧?

为了更好地测试各浏览器在MITM攻击下的反应,这里使用Stanford教学用的简单SSL MITM Proxy来测试。具体设置如下:

先准备好浏览器与Java。下载工具并解压压缩包后,使用命令行工具,转到该目录,并输入以下命令(Linux用户请看Readme)。

java -cp iaik_jce.jar; mitm/MITMProxyServer -localHost localhost -localPort 8001 -outputFile output.txt -keyStore FakeCAStore -keyStorePassword passphrase -v

这样就会在本地设立一个窃听用的Proxy,它会尝试修改所有加密链接发送的证书,将自己寄生在加密连接上。(注意该Proxy并不需要安装在本地,它可以安装在信息途经的任意服务器上,包括任何Tor节点。)

配置浏览器使用这个代理(localhost:8001),模拟请求通过远程的窃听服务器。和目的服务器配上之后,Proxy就会接收原证书,并制造假证书发送给浏览器,这时浏览器应该提示错误。

假如用户选择接受该证书,则余下的通信可被监听,这些通行将被记录在本地的output.txt,各位可自行瞻仰其详尽程度。

如果你看到的传输内容是一大串数字,请看Encoding是否启用了gzip,那是gzip后的网页数据;Amazon不启用gzip,直接返回HTML代码。

一个简单的SSL窃听就是这样完成的。但如何防止呢

I.

所在分类:,

标签:,