![用 John the Ripper 来评估相对密码强度](https://linux22.com/image/626563/%E7%94%A8%20John%20the%20Ripper%20%E6%9D%A5%E8%AF%84%E4%BC%B0%E7%9B%B8%E5%AF%B9%E5%AF%86%E7%A0%81%E5%BC%BA%E5%BA%A6.png)
我想知道 JtR 是否是测试密码强度的好方法。我对找到密码并不感兴趣(事实上我宁愿不这样做),我希望以一种允许我说“用户 A,我认为你应该选择一个更好的密码,它确实相当弱;用户 B,你的密码不错,但可以稍微改进一下;用户 C,干得好,你的密码很强”的方式运行 JtR,以便对用户进行一些教育。有没有办法让 JtR 在找到匹配项时只显示它运行了多长时间,而不是将密码记录在 .pot 文件中?有没有更好的方法可以做到这一点?不,在您说之前,我知道如果我可以说密码应该遵守这样的标准,那就太完美了,但不幸的是,目前这不是一个选择。
谢谢
答案1
我一直都这样做...
让 John 为我的客户快速扫描密码文件有助于我强调更好的密码策略的重要性。它确实允许针对密码特别弱的用户进行一些定位。
如果几分钟后我能想出如下的输出,这是一个很好的号召性用语:
mqv:1adam:1198:1200::/home/mqv:/bin/bash
jxe:snake:1200:1202::/home/jxe:/bin/bash
mnc:angel:1202:1204::/home/mnc:/bin/bash
jrm:medina:1203:1205::/home/jrm:/bin/bash
dom:laser:1204:1206::/home/dom:/bin/bash
rrr:ready:1205:1207::/home/rrr:/bin/bash
ELV:PLUTO:1208:1210::/home/ELV:/bin/bash
elv:pluto:1209:1211::/home/elv:/bin/bash
cxc:luna:1212:1214::/home/cxc:/bin/bash
BXB:STARS:1214:1216::/home/BXB:/bin/bash
bxb:stars:1215:1217::/home/bxb:/bin/bash
IXG:VIDEO:1216:1218::/home/IXG:/bin/bash
答案2
我和其他人一样——如果你凭借着微薄的资源和有限的耐心,能够找到任何密码,那么攻击者(他的朋友们)只要有几台配备 8 块 Radeon R290X 的 PC,决定花一两个月的时间破解你的密码文件,而且他比你经验丰富得多,有更好的单词表和规则集,就一定能找到这些密码。
如果您确实坚持按弱点排序,那么请按顺序进行攻击,首先是最小的穷举密钥空间。例如(密钥空间是粗略估计,而不是精确计算):
- 基于规则的穷举字典攻击,使用包含 184389 个单词的小型 phpbb 字典,Best64 规则集为 1E7
- 马尔可夫/暴力穷举所有数字的 8 个字符密码均为 1E8
- 对包含 184389 个单词的 phpbb 小型词典进行掩码攻击,所有后缀均为 0 到 999 之间的数字,带或不带后缀 !,攻击结果为 3E8
- 使用小型 phpbb 字典和包含 35404 条规则的优秀 d3ead0ne 规则集进行基于规则的穷举字典攻击,结果为 6E9
- 马尔可夫/暴力穷举法穷举 8 个字符的密码,其中 5 个小写字母,但总是以 123 结尾,结果是 26^5,即 8E9
- 马尔可夫/暴力穷举法穷举 8 个低位/数字字符的 8 个字符密码的结果为 2E12
- 基于规则的穷举字典攻击,使用包含 154045162 个单词的 InsidePro 完整字典和包含 35404 条规则的优秀 d3ead0ne 规则集,结果是 5E12
- ....
- 马尔可夫/暴力穷举法穷举 8 个由 8 个低位/大位/数字字符组成的 8 个字符密码,结果是 2E14
- ....
- 基于规则的组合穷举攻击将 184389 个单词的小型 phpbb 词典与 InsidePro Full 进行交叉,然后应用 154045162 个单词的 InsidePro Full 词典和 35404 条规则的优秀 d3ead0ne 规则集,结果是 1E18
- 再说一遍,如果发现任何一个密码,那么该密码就很弱。
- 当然,这其中有几乎无限的变体,但我发现首先运行最快的攻击很有用,这样对于每个用户的加盐密码,就可以使用更昂贵的攻击来对抗尽可能少的哈希值
- 即首先运行 1E8 攻击,并从列表中删除它找到的所有哈希值。然后执行 3E8 攻击,删除这些哈希值,然后继续,这样您就不会尝试对密码进行 1E14 攻击,因为删除密码的工作量可以少几个数量级。
我想知道 JtR 是否是测试密码强度的好方法。我对找到密码不感兴趣(事实上我宁愿不这样做)
开膛手约翰是一个很好的工具,但它并不总是最好的工具。
目前,对于许多哈希来说,oclHashcat是我所知道的最好的免费工具,隐藏找到的密码的选项是
- --disable-potfile
- –输出文件格式=NUM
- 1 = 哈希[:盐]
即添加到您的命令行
--outfile-format=1 --disable-potfile
我通常会提取结果文件
在付费方面,艾康软件有各种各样的工具可用;举个例子,他们的主动密码审计员,至少,有一个隐藏找到的密码的选项。
无论哪种情况,预算至少一个最适合您所选软件的 GPU 类型。
无论如何,学习各种模式 - 纯马尔可夫模式/有限字符集的暴力破解(包括一些密钥行走集),然后很快升级到基于规则的字典攻击。制作包括公司常用词、电话号码、地址、电话列表等的字典,并将其添加到常用字典中,例如在线 Scrabble 单词列表、phpbb、insidepro、rockyou、crackstation、clearmoon247 或 myslowtech。
如果你需要一本有明确许可证的词典,虽然它不利于破解,但英语开放词汇表许可证是:
UK Advanced Cryptics Dictionary Licensing Information:
Copyright © J Ross Beresford 1993-1999. All Rights Reserved. The following restriction is placed on the use of this publication: if the UK Advanced Cryptics Dictionary is used in a software package or redistributed in any form, the copyright notice must be prominently displayed and the text of this document must be included verbatim.
There are no other restrictions: I would like to see the list distributed as widely as possible.
答案3
我认为使用暴力方法对用户列表/数据库进行迭代以破解每个密码会非常浪费并且会花费很长时间。
考虑到您对他们的密码了解不多,所以您不知道密码中是否有字母、大写字母、小写字母、密码长度或特殊字符。
因此,在 JTR 中,您必须指定一个巨大的字符集,这可能需要(即使在快速的服务器上)几天、几周甚至更长时间才能破解每个密码。
通过电子邮件告知用户你已经知道了他们的密码并且认为该密码很弱,也存在用户信任问题。
在他们创建密码时,最好只强制执行最低强度要求。