Answers:
AD域的缓存凭据实际上是密码的双哈希值,并存储在HKLM \ Security配置单元中。蜂巢的文件位置为:
%systemroot%\System32\config\SECURITY
只有“系统”用户有权访问注册表项:
HKLM\Security\Cache\NL$n
其中n
,最大缓存凭据数的索引为1。
从WinNT到WinXP,本地帐户使用了“ Lan Manager”哈希,这些哈希在现代硬件上很容易被破坏。仅使用一台“普通”台式计算机,破解通常需要几分钟(最近我在00:08:06做了3个密码)。Lan Manager哈希没有加盐,因此也有公开可用的彩虹表。
Vista和更高版本将NT哈希用于本地帐户。Windows 2000和更高版本也将NT哈希用于域帐户。NT哈希是加盐的双MD4哈希。每次输入的盐会阻止使用Rainbow表,但是MD4可以在现代硬件上非常快速地执行:60位密码大约需要6个计算年。靠运气和6个GPU集群,破解者可以在大约6个月内破解这种密码。将其带到云中,在Amazon EC2 GPU上大约需要35,000美元-根据可用性,可能要花几个小时。
凭据实际上并未缓存在本地计算机上。请参阅MS的以下摘录:
缓存域凭据的安全性
术语“缓存的凭据”不能准确地描述Windows如何缓存域登录的登录信息。在Windows 2000和更高版本的Windows中,不缓存用户名和密码。而是,系统存储密码的加密验证者。该验证程序是计算两次的盐化MD4哈希。双重计算有效地使验证者成为用户密码的哈希值的哈希值。此行为不同于Microsoft Windows NT 4.0和Windows NT的早期版本的行为。
它们由Credential Manager处理,为此提供了Credential Manager API。盐腌的哈希以某种安全的方式存储在磁盘上,并可以通过HKLM \ Security访问。(默认情况下,只能由LocalSystem访问,但是很容易被忽略,例如,通过psexec -i -s regedit.exe。)
但是,在运行中的Windows系统上,情况更加严峻,因为可以通过将DLL挂接到Lsass来获得最近使用的凭据,并轻松地将其转换为纯文本。(请参见Mimikatz。)
是的,您会在客户端的HKLM \ Security \ Cache上找到某种哈希(或哈希的哈希,或“验证程序”或您想要调用的任何名称)。但是我认为没有任何可行的方法可以攻击磁盘上的哈希。它与可攻击的旧版NTLM哈希不同。