破解 Ashley Madison 1100万个口令
作者:星期五, 九月 11, 20150

一组口令破解的爱好者在 Ashley Madison 被泄露出的网站源代码中发现,其处理口令的方式存在严重问题,他们利用这个编程失误,从泄露的3600万账户口中破解了1100万个口令。

640.webp

几周前,研究人员还以为这些账户是安全的,因为这些口令是以一种通用的哈希算法,用Bcrypt加密函数存储在数据库中。

这样保护口令是对的

哈希属于单向加密,把明文通过多次加密算法以生成一个唯一的字符串,该过程是不可逆的,除非算法被破解。但有时暴力破解可以猜出口令,这种方法利用大容量的口令字典以完全相同的哈希生成算法与字典逐一进行匹配。这种暴力破解方法需要依赖多种因素,如使用的哈希函数类型、实施因子、是否撒盐、口令本身的复杂程度,甚至包括攻击者的硬件资源。

Bcrypt的计算程度比MD5之类的其他函数更为复杂,而且,Ashley Madison 的开发人员还在加密中使用了12个实施因子,这意味着攻击者要想使用上面的暴力破解方法,需要进行4096次哈希。从而,即使使用字典+性能卓越的硬件组合,破解过程也会非常缓慢。字典的越大虽然会增加口令匹配正确的可能性,但随之带来的是破解速度的下降。

一位研究人员借助网上泄露出来的明文口令尝试对 Ashley Madison 的600万哈希过的账户进行破解,5天的时间里只破解出4000个,成功率仅为0.06%。防病毒厂商Avast也尝试了2个星期,破解出2.7万个口令,但只属于1064个用户。

口令破解爱好者意识到这种暴力破解的效率太低,于是他们试图从网站处理口令的过程中找到突破点。

这样保护口令是错误的

网站源代码中,一个名为$loginkey的变量引起了破解人员的注意。他们发现,代码中有两个地方生成这个变量,但处理方式却略有不同。其中一种方式是基于账户建立时生成,并被两个其他的MD5变量所定义。一个变量用于用户名,另一个用于用户口令的bcrypt哈希。

破解人员想知道是否这个持有口令的变量总是被定义为口令的哈希,他们在旧代码中翻来找去,结果发现在2012年6月之前,该变量实际上使用明文来保有用户口令。

继续研究下去,他们发现 Ashley Madison 的开发人员在之后实施bcrypt哈希的时候,并没有为以前的用户重新生成$loginkey。这也就意味着在2012年6月之前,可以用相对简单的加盐MD5算法进行破解。而且,老代码把口令中的字母全部转换成小写使用,从而令破解速度更快。

另一种$loginkey的生成方式使用用户名、口令和电子邮件变量的组合,加上一个常量,这种方式是在用户更改账户属性时使用的。然而,如同上述的第一种变量生成方式,它并没有一直使用bcrypt哈希,也就是说破解人员能够恢复2012年之前修改过的账户口令。

破解人员隔离出2012年之前的账户,然后进行破解。几小时之后,260万口令拿到。几天之后,这个数字变成1120万。

这次破解给予开发人员一个教训,当你实施一种新的安全功能或应用时,确保它适用于所有人,而不只是新用户。

此事还透露出一个严重的问题,大多数用户自2012年以来并没有更改过自己的口令,在网络空间、数字世界,人们长期使用同一个口令的习惯非常普遍。

Ashley Madison 官方目前并未对这些被破解出来的口令发表评论。

 

关键词:

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!