什么是 NTLM?
NTLM 是一种身份验证协议,用于验证 IT 系统中的用户身份。它于 1993 年发布,后来于 1998 年通过 NTLMv2 进行了改进。NTLM 是较旧的 LM 协议的继承者,该协议曾在 20 世纪 80 年代用于 Microsoft 的 LAN Manager 产品。那个时候,计算机网络比较简单,没有连接到互联网。主要问题是通过窃听网络登录流量来窃取用户密码。为了减轻这种风险,NTLM 不会通过网络发送用户密码。相反,它使用密码哈希作为用户了解密码的证据。
NTLM 如何工作?
以下是 NTLM 身份验证工作原理的分步过程:
- 客户端请求:客户端发送请求以访问服务器上的网络资源(例如,文件共享、Web 服务器)。
- 服务器质询:服务器以质询进行响应,这是客户端在身份验证过程中需要使用的随机值。质询是每次身份验证尝试的唯一值。
- 客户端响应 (NTLMv1):客户端使用质询和以 NTLM 哈希格式哈希的用户凭据(用户名和密码)生成 NTLMv1 响应。NTLM 哈希是用户密码的单向哈希,这比以明文形式发送密码更安全。该响应被发送回服务器。
- 服务器验证 (NTLMv1):服务器接收客户端的响应,并使用存储的用户密码的 NTLM 哈希来验证响应。如果响应有效,服务器将授予对所请求资源的访问权限。
- 客户端响应 (NTLMv2):在 NTLM 的更安全变体中,客户端可以使用 NTLMv2。在这种情况下,客户端使用质询和附加数据(例如客户端和服务器的时间戳)生成 NTLMv2 响应。与 NTLMv1 相比,这使其更能抵抗某些类型的攻击。
- 服务器验证 (NTLMv2):如果客户端使用 NTLMv2,服务器将使用存储的用户密码 NTLM 哈希值和身份验证请求中的其他数据来验证响应。
- 授予访问权限:如果服务器验证客户端的响应(NTLMv1 或 NTLMv2),则会授予对所请求网络资源的访问权限。客户端现在可以安全地访问资源。
NTLM 和 Kerberos 之间的区别
Kerberos 是一种身份验证协议,它取代 NTLM 成为 Windows 2000 及更高版本上的标准身份验证工具。NTLM 和 Kerberos 之间的主要区别在于它们的身份验证过程。NTLM 使用三次握手,而 Kerberos 使用由票证授予服务或密钥分发中心组成的两部分流程。另一个区别是 NTLM 中使用密码散列,而 Kerberos 中使用加密。尽管 Kerberos 是默认身份验证方法,但 NTLM 可以在身份验证失败时充当备份。
NTLM 身份验证的问题
NTLM 身份验证是一种过时且薄弱的协议,按照当今的标准来看并不安全。它容易受到各种攻击,并且缺乏重要的安全功能,例如多因素身份验证。该协议使用已知的哈希算法,无需加盐,因此容易受到暴力攻击。此外,NTLM 不支持现代加密方法,并且依赖于受损的 MD4 哈希函数。总体而言,NTLM 很容易受到损害,应该用 Kerberos 等更安全的协议替代。
NTLM 的优点和挑战
如前所述,NTLM 是一种过时的协议,因此与 Kerberos 等现代解决方案相比,其优势有限。然而,其避免不受保护的密码传输的最初目的仍然是真实的。然而,依赖 NTLM 身份验证有明显的缺点,其中包括:
有限身份验证:NTLM 依赖质询-响应协议,不支持多重身份验证 (MFA),后者通过使用多条信息进行用户验证来增强安全性。
安全漏洞:NTLM 中简单的密码哈希使系统容易受到哈希传递和暴力攻击等攻击。
过时的加密技术:NTLM 未能利用最新的加密技术来增强密码安全性。
如何使用 NTLM 保护您的网络?
为了增强安全性,由于众所周知的安全漏洞,组织应尽量减少 NTLM 的使用。但是,对于那些出于兼容性原因仍依赖 NTLM 的组织,提供以下建议:
实施 NTLM 缓解措施:为了防止 NTLM 中继攻击,有必要在所有相关服务器上启用服务器签名和身份验证扩展保护 (EPA)。
应用补丁:使用 Microsoft 提供的最新安全更新使系统保持最新状态,以确保提供最大程度的保护。
利用先进技术:采用先进的 NTLM 中继检测和预防技术,例如通道绑定,通过将 NTLM 会话绑定到底层传输通道来确保 NTLM 会话的完整性。
识别弱 NTLM 变体:某些 NTLM 客户端利用不发送消息完整性代码 (MIC) 的弱变体,从而增加了网络遭受 NTLM 中继攻击的脆弱性。识别并解决这些微弱的变化。
监控 NTLM 流量:通过密切监控网络中不安全的 NTLM 流量的使用情况来限制其使用。
消除 LM 响应:消除发送 Lan Manager (LM) 响应的客户端,并将组策略对象 (GPO) 网络安全配置为拒绝 LM 响应。
总之,NTLM 身份验证协议已经过时,并且存在一些使其不安全的弱点。这些弱点包括容易破解密码哈希以及容易遭受哈希传递攻击。NTLM 还缺乏相互身份验证和会话安全等现代安全功能,使其不适合当前的网络环境。它与其他身份验证协议的互操作性有限,并且在处理大规模身份验证请求时效率不高。组织应考虑迁移到更安全、更现代的身份验证协议(例如 Kerberos 或 OAuth),以提高安全性、互操作性和可扩展性。这将有助于保护敏感数据、降低风险并与现代技术集成。
了解虹科网络安全更多技术干货/应用案例,欢迎前往【虹科网络安全】官方网站:https://haocst.com/
联系我们
扫码加入虹科网络安全技术交流群或微信公众号,及时获取更多技术咨询/应用案例。