SSL: 鲜为人知的安全大漏勺

一月份我曾经写过一篇名为 SSL: Really broken this time的文章,其中提到了如果证书签发机构使用了MD5算法进行数字签名,那么证书是可以被伪造的。当然,这个漏洞很容易被纠正,只要证书颁发机构都采用SHA-1 而不是MD5算法就可以了。尽管如此,很多人还是认为,不久之后 SHA-1也会步MD5的后尘。

SSL: 鲜为人知的安全大漏勺

SSLsniff

其实破解 SHA-1 只是时间问题了。也许你还记得Moxie Marlinspike,他曾经开发了一个非常先进的黑客工具SSLsniff。 这个工具可以发现Internet Explorer中的漏洞,即使在使用SSL也可以发动 中间人攻击 (MitM)。 微软最终修补了这个漏洞。

但是即使修补了漏洞, SSLsniff仍然是一款功能强大的工具。比如SSLsniff 可以用来在密码破解者组织(如我上面说的MD5破解组织)中进行MitM攻击演示。

SSLstrip

Moxie Marlinspike最新开发的升级版黑客工具叫做SSLstrip。这款工具的目的很简单,就是让恶意攻击者在任何加密情况下获取用户的敏感信息。Moxie Marlinspike注意到大部分用户在上网时都不会要求进行连接加密(HTTPS),甚至一些对信息敏感的网站也没有全程使用加密页面,比如下图中的网站,因此他决定要绕过加密过程。

  SSL: 鲜为人知的安全大漏勺

最初的网站首页都是没有加密的,在用户输入了某些信息后,HTTPS才会启用,如下图所示:

  SSL: 鲜为人知的安全大漏勺

SSLstrip是一个MitM协议,在这个例子中,它抓住了用户和银行网站服务器之间的一个漏洞。接下来,让我们看看这个漏洞是怎么被SSLstrip利用的:

1. 首先,我在浏览器中输入http://www.usbank.com进入银行网站首页

2. 输入我的用户名并点击回车

3. SSLstrip 抓取了银行网站URL和我的用户名

4. SSLstrip 连接到银行网站服务器,并提交了我的用户名

5. SSLstrip 接着向浏览器返回银行Web服务器所返回的新页面

6. 我在新页面中输入自己的密码。

7. SSLstrip再次获取我的密码,并将密码提交给银行网站服务器。此时银行网站服务器就认为我已经登录了。

8. SSLstrip再次将银行网站返回的新页面提交到浏览器上,在我看来,我已经正常登录并可以进行下一步操作了。

也许你会问,为什么HTTP后面没有加“s”,银行网站的链接不都是HTTPS形式的吗?在这个例子里是没有“s”的,因为SSL连接是建立在被攻击的电脑和银行网站服务器间的。我只是将所有正确的页面通过SSLstrip返回给了浏览器,但是这个过程并没有安全隧道。那么谁获得了我的密码也就可想而知了吧?

我注意到,有一些警惕性很强同时观察力很好的用户,会发现这种花招,但是对于大部分用户来说,很可能会毫无察觉。要了解更多有关这个漏洞的细节,可以参考Moxie Marlinspike在Black Hat上的演讲幻灯片New Tricks for Defeating SSL in Practice (PDF格式)。整个过程都解释的很详细。

附加功能

在Moxie Marlinspike的演讲幻灯片中,他还指出了SSLstrip的其他几个功能,可以让不安全的网站看上去更安全,从而达到欺骗用户的目的。因为大部分网站都会在自己的网站域名前加上一个网站图标,而SSLstrip利用了这个特点,可以让攻击者自己制定一个图标显示在非安全的网址前面,比如下面这个图标。

  SSL: 鲜为人知的安全大漏勺

锁是代表安全的物体,如果在网址前加上了一个锁形的图标,那么大部分用户都会以为自己所访问的网站是安全的。

  SSL: 鲜为人知的安全大漏勺

如果有人要求,攻击者甚至会提供一个真正的SSL连接,而URL与用户应该访问的只有些许不同。不同之处在于网址的最后多了几个字符。Moxie Marlinspike在幻灯片中是这样解释的:

  SSL: 鲜为人知的安全大漏勺

升级浏览器

我们人类都有有些与生俱来的习性,这是任何人都不能反驳的。因此我也只能老实说,我并不是每次都能敏锐的发现黑客设下的陷阱。幸运的是,这个问题已经有人讨论过了。之前 TechRepublic的总编Jason Hiner就给我发了一篇George Ou的文章HTTPS 网页劫持从理论走进现实。

文章中建议开发人员应该赋予网页浏览器更多的智能性,让浏览器知道在什么情况下应该使用SSL加密协议,如果该使用SSL的时候却没有使用,就断开与Web服务器的连接。 George还表示, Google在它的Chrome 2.o浏览器中就针对这个问题进行了研发。希望其他浏览器开发人员也能考虑到这一点。

总 结

首先我要感谢 Black Hat 允许我使用他们的Logo ,并感谢Moxie Marlinspike允许我使用他的演示幻灯片作为文章的部分内容。另外,他希望广大网民都对SSL攻击有所认识的努力也让我感到敬佩。

意到URL上的细微差别,从而有可能避免落入黑客的陷阱。如果你觉得自己足够警惕,那么回忆一下上次你访问使用SSL的网站时,有没有留意过URL前面的HTTPS标记呢?起码我是没有。