🛡️
WindowsDomainAbout
  • README
  • Kerberos
    • Kerberos认证流程
    • Kerberos扩展及应用
    • Kerberos安全
  • NTLM
    • NTLM认证流程
  • Windows访问控制
    • Windows访问控制
Powered by GitBook
On this page
  • 主要流程
  • 版本和等级
  1. NTLM

NTLM认证流程

PreviousNTLMNextWindows访问控制

Last updated 3 years ago

NTLM认证通常被用于Windows本地身份认证和网络身份认证,与之密切相关的就是哈希。本地用户的哈希存储在C:/Windows/system32/config/sam中,而域用户的哈希存储在NTDS.dit之中。

常说的hash一般指NTLM hash,还有LM hash、Net-NTLM hash等。LM hash因为强度不高、长度有限制等原因,目前已经基本被弃用,微软使用了强度更高的NTLM hash,Windows Server 2003之后的系统不再支持LM hash。

Net-NTLM hash是基于NTLM hash,再使用一定算法生成的,用于网络认证。

主要流程

NTLM认证流程主要分为三大步:

  1. 协商:确认双方协议版本

  2. 质询:挑战(Challenge)/响应(Response)认证机制

  3. 验证:验证结果

将其放到域内,流程如下图:

  1. User登录Client Computer

  2. Client Computer向Server发送协商消息,确认支持的功能、版本等

  3. Server发送质询消息进行响应,其中包含功能以及Server生成的challenge,challenge是16位的随机字符

  4. Client发送验证消息响应质询,验证消息包含使用challenge加密的用户hash,即response

  5. Server需要将challenge和用户hash加密生成的response2与得到的response进行比较。如果在域内环境,Server就需要使用netlogon协议请求Domain Controller,发送username、challenge和response

  6. Domain Controller使用challenge和用户hash加密得到response2

  7. Domain Controller比较response和response2,如果一致,代表验证成功

版本和等级

在验证消息中,包含了使用challenge和用户hash加密的response,response常见的类型有两种,即NTLM v1响应和NTLM v2响应.

前面提到了Net-NTLM hash,与之相对应的就是Net-NTLM hash v1和Net-NTLM hash v2,前者更容易被破解。

LMCompatibilityLevel即LAN身份验证级别,它决定了客户端所使用的身份验证协议等级以及服务端接收的身份验证协议等级等,配置项及含义如下:

  • 发送 LM和NTLM 响应(&):客户端使用 LM 和 NTLM 身份验证,而决不会使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 和 NTLMv2 身份验证

  • 发送 LM & NTLM响应 - 如果协商一致,则使用 NTLMv2 会话安全(&):客户端使用 LM 和 NTLM 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 和 NTLMv2 身份验证

  • 仅发送 NTLM 响应:客户端仅使用 NTLM 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 和 NTLMv2 身份验证

  • 仅发送 NTLMv2 响应:客户端仅使用 NTLMv2 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 和 NTLMv2 身份验证

  • 仅发送 NTLMv2 响应。拒绝 LM:客户端仅使用 NTLMv2 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器拒绝 LM (仅接受 NTLM 和 NTLMv2 身份验证)

  • 仅发送 NTLMv2 响应。拒绝 LM & NTLM:客户端仅使用 NTLMv2 身份验证,并且在服务器支持时使用 NTLMv2 会话安全;域控制器拒绝 LM 和 NTLM (仅接受 NTLMv2 身份验证)

默认情况下,此配置项为:

  • Windows 2000、Windows XP:发送 LM & NTLM响应 - 如果协商一致,则使用 NTLMv2 会话安全(&)

  • Windows Server 2003:仅发送 NTLM 响应

  • Windows Vista、Windows Server 2008、Windows 7 以及 Windows Server 2008 R2及以上:仅发送 NTLMv2 响应