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

来源:岁月联盟 编辑:zhuzhu 时间:2009-06-02
SSL:鲜为人知的安全大漏勺(图)

最近,各种安全会议都提到了SSL的问题。而不久前召开的Black Hat DC 09也不例外,独立安全专家Moxie Marlinspike 用相当令人信服的证据解释了他是如何绕过SSL安全机制的。
--------------------------------------------------------------------------------------------

  

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

  SSLsniff

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

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

  SSLstrip

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

  

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

  

  

  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连接,而URL与用户应该访问的只有些许不同。不同之处在于网址的最后多了几个字符。Moxie Marlinspike在幻灯片中是这样解释的:

  

  升级浏览器

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

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

  总 结

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

  另外,我注意到,本文所说的安全,是在用户不经意的情况下才会发生的。幸运的是,经过我的提醒,很多人已经能够注意到URL上的细微差别,从而有可能避免落入安全的陷阱。如果你觉得自己足够警惕,那么回忆一下上次你访问使用SSL的网站时,有没有留意过URL前面的HTTPS标记呢?起码我是没有。