我有一个关于 NTLMv2 对密码暴力破解的抵抗力的问题。
我知道一些现代图形处理器(如 Radeon 6990)能够每秒计算数十亿个哈希值,并在几分钟和几小时内破解 NTLM 哈希值。
我想评估 NTLMv2 哈希与 NTLM 相比如何更能抵抗密码暴力破解。
鉴于大致:
NTLM 哈希 = MD4(密码)
和
NTLMv2 哈希 = MD5(MD5(MD4(密码) + X) + Y)
说通过密码暴力破解攻击 NTLMv2 哈希值仅比攻击 NTLM 哈希值长 3 倍是否正确?
我有一个关于 NTLMv2 对密码暴力破解的抵抗力的问题。
我知道一些现代图形处理器(如 Radeon 6990)能够每秒计算数十亿个哈希值,并在几分钟和几小时内破解 NTLM 哈希值。
我想评估 NTLMv2 哈希与 NTLM 相比如何更能抵抗密码暴力破解。
鉴于大致:
NTLM 哈希 = MD4(密码)
和
NTLMv2 哈希 = MD5(MD5(MD4(密码) + X) + Y)
说通过密码暴力破解攻击 NTLMv2 哈希值仅比攻击 NTLM 哈希值长 3 倍是否正确?
实际上它接近 4 或 5 倍,因为 MD5 比 MD4 贵一些。但是,它不会使它变得强大。从 NTLM 切换到 NTLMv2 的“好处”通过等待一年然后购买更大的 GPU 被取消。
由于向后兼容性,Windows 系统坚持使用 NTLM 变体,但它们是相当差的密码散列方法。请参阅有关如何对密码进行哈希处理的答案。
是的,这是一个非常好的近似值。两者之间的差异不大;在这两种情况下,如果用户的密码哈希被泄露,攻击者很可能能够恢复他们的许多密码。
今天,对密码进行散列的公认方法是使用慢速散列(例如,加密散列函数的数千次迭代),以减慢暴力破解的速度。NTLM 和 NTLMv2 都没有包含这种防御,因此它们都容易受到密码暴力破解(NTLM 稍微多一些,但差别不大)。
请注意,您假设攻击者具有 RAW 哈希(Unicode 密码的 MD4)。这不考虑实际身份验证中使用的挑战,并且无法通过嗅探身份验证的网络流量获得原始哈希。这些“散列”是使用原始散列、挑战和所涉及的客户端和服务器的“目标信息”计算的。根据网络通信的 NTLMv2 哈希破解某人的密码比您在此处描述的要困难得多。您描述的妥协需要首先闯入域控制器并恢复密钥库。请注意,这对使用 NTLMv2 的安全性几乎没有说明,因为即使是不使用 NTLMv2 的 DC,其密钥库中仍会包含 NTLMv2 哈希值。