https://static.jiayezz.com/e7/00e649f9872273fc517a490a52d2ed

Ashley Madison是一家专门为已婚人士提供交友、约会服务的社交网站。人们如果对自己的婚姻不满意,就可以在这个网站上匿名注册,寻找自己的“第二春”,与此同时,它也是一个促成很多已婚人士出轨行为的重要因素。

不久之前,Ashley Madison网站遭到了黑客的攻击,直接导致了这个在线约会服务网站泄漏了大约一百G左右的敏感文件。在该网站中,用户的密码是使用BCrypt进行了加密保护的,这是一种跨平台的数据加密算法。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。这种算法的运算速度非常的慢,而且计算量非常大,但是如果黑客想要尝试去破解它的话,可能需要花上几个世纪的时间

现在,一群业余的密码破解爱好者已经在程序中发现了设计缺陷,并且可以在很短的时间内将一千五百左右的Ashley Madison用户密码破解出来。这个漏洞是致命的,研究人员已经在过去的十天之内成功地将一千一百万左右的用户密码破解了。尽管他们表示不一定能够这么快地完成,但是他们还是希望可以在下周结束前,将剩下的四百万账户密码破解完成。一招不慎,满盘皆输,一个小小的设计缺陷就能够引发非常严重的安全问题。这些数据原本就被设计为需要十几年或者至少几年的时间去破解,但现在破解这些数据却只需要一两周的时间。

“CynoSure Prime”是一个密码破解团队,该团队的研究人员在审查完所有泄漏出来的上千行代码(包括哈希密码,可执行的电子邮件,以及其他的Ashley Madison数据)之后,成功定位了漏洞所在的位置。研究人员在对源代码进行审查的过程中得到了一个惊人的发现:在这个使用了bcrypt哈希加密的数据库中,有一千五百二十六万的密码使用了MD5进行处理,而MD5是一种哈希算法,它所追求的是速度以及有效性,而不是为了拖慢密码破解者的速度。

Ashley Madison所使用的bcrypt的“cost”值被设置为了12,这也就意味着会使用哈希函数来对每一个密码进行2的12次方处理,即4096次。加密程序中的问题涉及到一个MD5算法生成的变量,这个参数名为“$loginkey”。在这篇文章准备发表的时候,这个致命的错误使得CynoSure Prime组织的成员能噢股灾很短的时间内成功地破解了一千一百多万的敏感密码。

显著的速度提升

安全研究人员在周四的上午发表了一篇文章,并在文章中写到:“虽然我们在两个不同的函数中发现了两种不同的$loginkey生成算法(均为不安全的),但我们仍然能够极大地提高破解bcrypt哈希密码的速度。目前,破解bcrypt哈希密码正是信息安全领域的一个热门话题,但我们选择采取另一种更加有效和简单的方式,即破解MD5令牌。”

目前,研究人员并不清楚这些令牌的真正作用到底是什么。CynoSure Prime组织的研究人员怀疑,用户在每次登录网站的时候可以使用这些令牌,而不需要去输入密码。无论在何种情况下,这一千五百多万不安全的令牌都会包含一个问题,这个问题将会涉及到传递经过MD5哈希处理的明文用户密码。第一个不安全的方法将会使攻击者能够恢复出用户名以及密码的小写字母,并且可以将这些数据结合为一个字符串,然后每个数据域之间用冒号隔开。

在破解每一个令牌的过程中,只需要向破解软件提供在密码数据库中所获取到的相应的用户名,然后向字符串中添加两个冒号,破解软件就可以开始破解密码了。因为MD5的运算速度非常快,攻击者可以在一秒钟之内进行上亿次的密码猜测。当程序根据输入数据生成了与令牌中相同的MD5哈希值,那么攻击者就知道他们已经成功地恢复出了用户的密码了。

除此之外,CynoSure Prime的研究人员还需要对恢复出来的密码字符进行适当的修改。比如说,假设研究人员恢复出来的密码为“tworocks1”,但这个密码并不符合相应的brypt哈希值,那么攻击者就需要尝试“Tworocks1”,“tWorocks1”,“TWorocks1”等等,直到猜测出来的密码所生成出来的bcrypt哈希值与Ashley Madison数据库缩泄漏出来的bcrypt哈希值为止。即便加密所采用的算法为bcrypt,但字符修改的过程也是十分快速的。就八个字符的密码(加上一个数字,而这个数字很明显是不需要修改的)而言,程序对多只用进行2的8次方次(即256次)迭代处理。

下面的图表中显示的是为虚拟帐号生成令牌的过程,这个账号的用户名为“CynoSure”,密码为“Prime”。CynoSure Prime组织的研究人员将会在下图中给大家演示如何破解这个密码,以及Ashley Madison的程序应该如何避免这样的问题发生。

http://p1.qhimg.com/t01846e086176c0da73.png

第二个用于生成令牌的不安全方法与之前的有些联系。它会将小写字母的用户名,电子邮件地址,明文密码,以及所谓的密钥串(“73@^bhhs&#@&^@8@*$”)进行连接。然后,它会在每一个数据域之间加入两个冒号,然后对合并的字符串进行MD5哈希处理。我们在演示过程中使用的是同一个虚拟的Ashley Madison账号,具体过程如下:

http://p3.qhimg.com/t01998149d707c2521c.png

速度比之前快了一百万倍

即便是加入了字符修改的步骤,相较于相应bcrypt哈希值的破解过程而言,破解这个MD5哈希值的过程也是非常快速的。虽然我们很难准确地量化速度提升的程度,但该组织的一名研究人员估计整个过程的速度提升了大约一百万倍。从8月31日起,CynoSure Prime组织的研究人员就开始积极地破解那11,279,199个用户密码,这也就意味着他们已经成功地找到了与bcrypt哈希值相符合的密码了。目前,他们还剩下3,997,325个用户令牌没有破解完成。攻击者还有可能会使用传统的GPU破解,尽管这样的方法并不能够有效地破解出程序所生成的密码哈希值。

为了保护终端用户,该组织的安全研究人员并没有将破解出来的明文密码公布出来。但是,该组织的成员已经将破解用户密码所需的步骤以及详细信息披露了出来。

由于篇幅有限,需要了解具体信息的读者请阅读原文。

文章原文链接:https://www.anquanke.com/post/id/82377