不为人知的安保大漏勺 SSL
一月份我曾经写过一篇名为 SSL: Really broken this time的文章,其中提到了假设证书签发机构经常使用了MD5算法启动数字签名,那么证书是可以被伪造的。当然,这个破绽很容易被纠正,只需证书颁发机构都驳回SHA-1 而不是MD5算法就可以了。虽然如此,很多人还是以为,不久之后 SHA-1也会步MD5的后尘。
其实破解 SHA-1 只是期间疑问了。兴许你还记得Moxie Marlinspike,他曾经开发了一个十分先进的黑客工具SSLsniff。 这个工具可以发现Internet Explorer中的破绽,即使在经常使用SSL也可以发起 两边人攻打 (MitM)。 微软最终修补了这个破绽。
但是即使修补了破绽, SSLsniff依然是一款配置弱小的工具。比如SSLsniff 可以用来在明码破解者组织(如我上方说的MD5破解组织)中启动MitM攻打演示。
Moxie Marlinspike最新开发的更新版黑客工具叫做SSLstrip。这款工具的目标很繁难,就是让恶意攻打者在任何加密状况下失掉用户的敏感消息。Moxie Marlinspike留意到大局部用户在上网时都不会要求启动衔接加密(HTTPS),甚至一些对消息敏感的网站也没有全程经常使用加密页面,比如下图中的网站,因此他选择要绕过加密环节。
最后的网站都是没有加密的,在用户输入了某些消息后,HTTPS才会启用,如下图所示:
SSLstrip是一个MitM协定,在这个例子中,它抓住了用户和银行网站主机之间的一个破绽。接上去,让咱们看看这个破绽是怎样被SSLstrip应用的:
1. 首先,我在阅读器中输入进入银行网站
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标志呢?最少我是没有。