并非每次密码泄露都是一样的。应用程序使用的散列函数和应用程序的密码策略应该规定您使用什么工具来破解散列。关于这个主题的一个很好的资源是
回顾 2012 年著名的密码散列泄漏——词表、分析和新的破解技术。简而言之,他们能够使用混合方法破解大多数密码哈希。
如果应用程序不加盐密码,或者盐非常小,那么彩虹表是首选工具。Rainbow Tables 是预先计算的并且免费提供。这是耗尽键空间的最快方法(特别是如果您有一个 raid 0 数组!)。由于这些原因,如果可以使用彩虹表,通常是第一种破解方法。
John the Ripper 能够使用单词列表并在单词上生成“leet speak”突变。如果密码只是一个字典词或一个词,那么开膛手约翰可以破解这个哈希值。与彩虹表不同,开膛手约翰可以接受盐作为论据,这不会妨碍破解。
如果应用程序使用 bcrypt 或 pbkdf2 的密钥拉伸,那么FPGA 和 GPU 几乎毫无价值。在 2012 年泄露的哈希分析中,GPU 能够破解大约 48% 的密码,这主要是因为 bcrypt 和 pbkdf2 不常用。
...但实际上数量并不是一切。 我完全不同意 Jeff Atwood 对这种“低挂果”的做法。最有价值的帐户是管理帐户,通常只有一个密码哈希是攻击者想要破解的,他们会尽其所能破解这个哈希。作为一名渗透测试人员,破解管理密码哈希是报告中的一个重要发现,也是链式攻击中的一个极好的链接。