域控制器上的 NTLM/LM 哈希

信息安全 密码 视窗 哈希 密码破解
2021-09-03 18:44:39

我注意到,当从域控制器(使用 Elcomsoft 主动密码审计器)提取密码哈希时,有时我会得到 LM 和 NTLM 哈希,而其他时候我只会得到 NTLM 哈希。

我注意到 NTLM + LM 哈希(包含两个集合的帐户)的恢复速度比仅 NTLM 的哈希快几个数量级。

我很好奇为什么会这样?

我知道 LM 是两者中较旧且较弱的,但我不明白为什么 LM 和 NTLM 都存储在这些场景中?

更重要的是,鉴于仅 NTLM 哈希似乎是更安全的选择,我如何仅强制执行 NTLM 并为用户删除现有的 LM 哈希?

2个回答

关于这个确切的主题,有一篇相当不错的Microsoft 知识库文章。

基本上,LM 用于与旧客户端兼容。具体来说,Windows 98 及更低版本。如果网络上没有任何较旧的客户端,那么这两个哈希的原因很可能是由于密码长度小于 15 个字符。

当您将用户帐户的密码设置或更改为包含少于 15 个字符的密码时,Windows 会生成密码的 LAN 管理器散列(LM 散列)和 Windows NT 散列(NT 散列)。

原因似乎是由于 LM 的散列限制,而不是安全相关。

如果用户密码超过 15 个字符,主机或域控制器将不会为用户存储 LM 哈希;在这种情况下,LM 响应不能用于对用户进行身份验证。仍然会生成响应并将其放置在 LM 响应字段中,使用 16 字节的空值 (0x000000000000000000000000000000000) 作为计算中的 LM 哈希。该值被目标忽略。

建议禁用 LM 哈希,因为协议已按照您的建议严重破坏。对于那些可能不知道的人,LM 的一些问题包括:

  • 密码不区分大小写。
  • 密码被分成 7 个字符并单独散列,使得蛮力变得微不足道。
  • 密码长度限制为最多 14 个字符。

我提到的知识库文章中列出了几种删除 LM 哈希的方法,我将引用 GPO 方法以防链接出错。

方法一:使用组策略实现NoLMHash策略

使用本地组策略(Windows XP 或 Windows Server 2003)或在 Windows Server 2003 Active Directory 环境中使用 Active Directory 中的组策略(Windows Server 2003)禁用用户密码的 LM 哈希存储在本地计算机的 SAM 数据库中), 跟着这些步骤:

  1. 在组策略中,依次展开计算机配置、Windows 设置、安全设置、本地策略,然后单击安全选项。
  2. 在可用策略列表中,双击网络安全:下次密码更改时不要存储 LAN Manager 哈希值。
  3. 单击启用,然后单击确定。

作为大卫回答的后续行动,我想指出这篇文章(我无法添加评论):

保护特权域帐户:LM 哈希:好的、坏的和丑陋的

它表明,即使客户端被告知不要将 LM 哈希存储在 SAM 数据库中,它们仍将保存在内存中并可以转储到文件中。