如何在Windows客户端上存储caching的Active Directory域凭据? 它们是否存储在本地SAM数据库中,从而使它们容易受到本地用户帐户易受影响的彩虹表攻击,或者它们的存储方式不同? 请注意,我知道它们是被腌制和散列的,所以不会以纯文本forms存储,而是像本地帐户一样进行散列,并存储在同一位置?
我意识到,至less他们是容易受到暴力攻击,但是这是一个更好的情况下,被困机器的情况下容易受到彩虹桌。
AD域的caching凭据实际上是密码的双重哈希,并存储在HKLM \ Securityconfiguration单元中。 configuration单元的文件位置是: %systemroot%\System32\config\SECURITY
只有“系统”用户才能访问registry项:
HKLM\Security\Cache\NL$n
其中n
是caching凭据的最大数量的索引1。
WinNT的WinXP使用“局域网pipe理器”哈希本地帐户,这是很容易打破现代硬件。 破解通常需要几分钟(我最近在00:08:06做了3个密码)只有一个“普通”的台式电脑。 蓝pipe理器哈希不是盐,所以也有公共可用的彩虹表。
Vista和更高版本为本地帐户使用NT散列。 Windows 2000和更高版本也为域帐户使用NT散列。 NT哈希是双MD4哈希腌制。 按入口盐分可防止使用彩虹表格,但MD4可以在现代硬件上执行得非常快:对于60位密码,大约需要6个计算年。 幸运的是,一个6 GPU的集群,破解者可以在6个月内打破这种密码。 考虑到云计算,Amazon EC2 GPU上的价值约为3.5万美元,视可用性而定,可能是数小时。
它们由Credential Manager进行处理,其中有一个Credential Manager API。 腌制的哈希以安全的方式存储在磁盘上,并通过HKLM \ Security进行访问。 (默认情况下只能由LocalSystem访问,但很容易绕过,例如,通过psexec -i -s regedit.exe。)
然而,在运行的Windows系统上,情况更加糟糕,因为最近使用的证书可以通过将DLL挂钩到Lsass中而轻松地转换为纯文本。 (见Mimikatz。)
所以是的,你会在客户端的HKLM \ Security \ Cache上find某种散列(或散列的散列,或“validation者”或任何你想调用它的东西)。 但我不认为有任何可行的方法来攻击磁盘上的散列。 这不是旧式的NTLM哈希,是可攻击的。
凭据实际上并没有在本地机器上caching。 看到这个从MS摘录:
caching的域凭证的安全性
术语高速caching凭据并不准确地描述Windows如何caching域login的login信息。 在Windows 2000和更高版本的Windows中,用户名和密码不会被caching。 相反,系统存储密码的encryptionvalidation者。 这个validation器是一个腌制的MD4哈希,计算两次。 双重计算有效地使validation者散列用户密码的散列。 此行为不同于Microsoft Windows NT 4.0和Windows NT的早期版本的行为。