从此页面中,我看到 MS-Cache v2 的描述为密码的“NTLM 哈希”和用户名(转换为小写,然后以“Unicode”编码,意思是“小- Microsoft 术语中的字节序 UTF-16")。“NTLM 哈希”是通过密码计算的 MD4(同样在 little-endian UTF-16 中)。因此哈希涉及两个嵌套的 MD4 调用,并被用户名“加盐”。
彩虹表是“只是”预先计算的表(有一个节省大量空间的技巧);他们可以破解在建表阶段遇到的哈希,但不能破解。因此,您可以为 MS-Cache v2 构建彩虹表,但仅限于特定的用户名;该表不适用于其他用户的哈希。因此,这样的表对于经常在许多域中找到的用户名是有意义的,即“管理员”,但这仍然是有限的适用性。Cain & Abel假装包括(从版本 4.9.43 开始)支持在 MS-Cache v2 哈希上生成和使用彩虹表,但当然,一次只支持一个用户名。
如果您只有一个哈希要破解,那么构建表将比暴力破解花费更多时间(构建一个涵盖N个可能密码的彩虹表需要大约1.7*N的时间,而暴力破解的平均成本约为N/2,因此只有在尝试破解至少 4 个散列密码时才值得构建该表,在 MS-Cache v2 的情况下,所有密码都具有相同的用户名)。
我没有找到免费的、已经计算好的 MS-Cache v2 和用户名“Administrator”的彩虹表。
MD4是 MD5 的祖先,并且可以很好地映射到 GPU(甚至比 MD5 更好),因此您的四个 GPU 应该能够以每秒十亿的速度尝试潜在的密码。John the Ripper的“巨型”版本被记录为支持带有 GPU 的 MS-Cache v2(名称为“MSCash2”),尽管在密码生成方面效率低下(每秒散列十亿个密码,您必须生成每秒 10 亿个潜在密码,这可能会使最善意的 CPU 饿死)。至少,这将为您提供一些可以使用的源代码,以及一个便于测试的“参考实现”。
一个四核 Core2 2.4 GHz CPU,完全没有任何 GPU,应该能够每秒计算 8000 万个 MD4 哈希,使用 SSE2 增强代码(根据我的一个实现估计,每个执行 4800 万个 SHA-1 哈希)秒),转换为每秒 4000 万个密码。按照密码破解标准,这已经相当不错了,尽管 GPU 的效率当然要高得多。这将是一个很好的编程练习。