介绍

NTLM(NT LAN Manager)协议是Windows操作系统中使用的一种身份验证协议。它用于在网络通信中验证用户的身份,提供对网络资源的访问控制,并确保通信的安全性(为用户提供认证,完整性和机密性的一种网络协议)。

由于它的安全性相对较低。因此在较新的Windows版本中,Microsoft引入了更强大和安全性更高的协议,如NTLMv2和Kerberos,以取代NTLM协议。

NTLM是一种挑战/响应(Challenge/Response)形式的消息,主要包括三类消息类型:

Type1 message (negotiation 协商) :客户端向服务器发送一个包含明文登录用户名的请求,说明自己是谁

cr1

Type2 message (challenge 挑战) :如果当前用户存在,服务端生成一个16位的随机数(即Challenge),明文发送回客户端,服务端使用客户端所声明的用户的密码hash加密Challenge,获得Challenge1

cr2

Type3 message (authentication 验证):客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,生成response (也可称为 Net-NTLM hash),将response发送给服务器

cr3

服务器比较Challenge1和response,如果相同,验证成功。

工作组和域环境的区别

上述过程是在工作组环境中的,如果是域环境,会稍多一点点域控验证的步骤。

  1. 由于域机器SAM文件中不存在域用户的NTLM hash,所以服务器将客户端的用户名Challengeresponse通过 Netlogon协议交到域控手中,让域控对其进行身份验证。
  2. 域控通过客户端用户名在自己的ntds.dit中找到对应的NTLM-Hash,用Challenge对其进行加密,再与NET-NTLM-Hash进行对比。如果相同则表示用户拥有的密码是正确的,否则则验证失败,DC将结果返回给服务器。
  3. 服务器根据DC的结果成功与否返回给客户端。
Copyright © d4m1ts 2023 all right reserved,powered by Gitbook该文章修订时间: 2023-07-06 12:29:25

results matching ""

    No results matching ""