Skip to main content

NTLM 认证机制


2.1 NTLM协议 NTLM是一种网络认证协议,它是基于挑战(Chalenge)/响应(Response)认证机制的一种认证模式。这个协议只支持Windows。

栗子:假设A主机与B主机属于同一个工作组环境,A想访问B主机上的资料,需要将一个存在于B主机上的账户凭证发送至B主机,经过认证才能够访问B主机上的资源。远程桌面RDP就是默认采用NTLM协议进行网络认证。

2.1.1 Chalenge/Response NTLM协议的认证过程分为三步:

协商:双方确定使用的协议版本,NTLM存在V1和V2两个版本,具体区别就是加密方式不同。 质询:挑战(Chalenge)/响应(Response)认证机制的核心。 验证:在质询完成后,验证结果,是认证的最后一步。 1、质询的完整过程

客户端向服务器端发送用户信息(用户名)请求 服务器接受到请求,生成一个16位的随机数,被称之为“Challenge”, 使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1。同时,生成Challenge1后,将Challenge(16位随机 字符)发送给客户端。 客户端接受到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。 其中,经过NTLM Hash加密Challenge的结果在网络协议中称之为Net NTLM Hash。

2、验证

服务器端收到客户端的Response后,比对Chanllenge1与Response是否相等,若相等,则认证通过。

注意: 1.Chanllenge是Server产生的一个16字节的随机数,每次认证都不同; 2.Response的表现形式是Net-NTLM Hash,它是由客户端提供的密码Hash加密Server返回的Chanllenge产生的结果。

2.1.2 总结

整个NTLM协议的流程图如下(工作组环境):

image-20241008151233648

域环境下的NTLM认证又有所不同:

image-20241008151612611 域环境下,使用域用户登录远程主机,因为域用户的用户名密码保存在域控上,所有验证阶段是由域控进行response的对比。