[翻译]使用有序马尔可夫链和用户信息加快密码破解速度
发表于:
2017-3-1 10:05
13392
[翻译]使用有序马尔可夫链和用户信息加快密码破解速度
我一直在寻找加快密码破解的速度的方法。有很多关于这个话题的研究,但是有一个团队在这方面已经做了一些了不起的工作。这里有一篇论文 OMEN: Faster Password Guessing Using an Ordered Markov Enumerator ,就是我写这篇文章的灵感来源。虽然这篇文章的想法来自上面的论文,但是所有的工作都是我手动完成的,没有复制代码和其它任何东西。让我们开始吧!
使用有序马尔可夫链和用户信息加快密码破解速度
比John the ripper 的马尔可夫和增强模式提高22.5%的准确性
阅读完上面提到的论文后,我想要一个类似的工具,但是这些家伙制作的工具已经不可用了。因此,我花了几天时间编写代码来实现这个工具,它足够灵活,使用一个破解的密码列表来实现基于n-gram和马尔可夫链的密码生成。我想修改并编写我自己的工具给了我这样做的自由。这个工具仍处于开发阶段,一旦完成,我将会把它分享出来。
编写脚本后,我想看看我们是否可以利用用户信息来加快密码破解速度。这里有一个Fling泄漏的数据,Fling是一个成人交友网站。他们泄漏的数据库可以公开获取到,我下载了这个数据并进行了一些分析。让我们来看看吧。
用户在其密码中使用个人信息
通过一个简单的查询,我们可以看到用户密码与他们邮箱/用户名/用户代码/昵称有相同的前三个字母的用户占多大比例。在Fling泄漏的数据库中共有4993276个密码。让我们看看有相同起始三元组的占多大比例。
总密码的8% 意味着大约有386894个密码。这是一个很大的数字。
让我们看看1-grams。
17%的用户的密码与其邮箱、用户名、昵称有相同的首字母。
让我们玩玩生日和加入网站日期。我想看看有多少用户在他们密码结尾使用他们的生日。查询显示2%的用户这样做。下面是一些结果。
在做了一些非常基础的分析之后,我们已经知道大约有20%的用户在他们密码中使用其非常基本的信息。
如果这还不够,我还有另一个泄漏的数据(ClixSense),包含更多的用户信息,例如用户名、名字、姓氏、电子邮件、国家、城市、生日、加入日期、安全问题等。我精心编写了一个查询,来看看有多少密码的前`n-grams`同样出现在他们的社交信息中。结果令人惊讶,让我们看看它们。
使用2-grams和更多的社交信息例如生日,我们发现32.5%的用户在密码中使用他们的社交信息。下面是这个查询:
结果是在200万密码中有65万密码使用社交信息。
我们可以使用这个来加速密码破解吗?是的,我们可以。让我们深入了解马尔可夫链(Markov Chain)。
马尔可夫链(Markov Chains)
简单来说,马尔可夫链所做的是,告诉我们一个字母在一个n-gram之后出现的概率。假设,我们有一个4-gram 的 'ilov',马尔可夫链只会告诉我们下个字母出现的概率。在这个例子中,大部分时间,出现最高概率的字母是'e',使它成为'ilove'。这就是你需要知道的关于马尔可夫链的所有知识。如果我们对这些概率进行排序,我们按照从最高到最低概率的顺序排列密码,故名有序马尔可夫链(ordered markov chains)。
John the ripper 使用未排序的马尔可夫链,从某种意义上来说,它完全遍历一个'n-grams'之后才到下一个'n-grams'。我的脚本的做法是,使用线程同时遍历所有高概率的'n-grams'。我希望已经解释清楚,如果没有的话,请在评论中提出任何问题。你也可以阅读文章开头给出的OMEN论文。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课