简介
本文档介绍数据包级别的NT LAN Manager (NTLM)身份验证。
在数据包级别上,NTLM身份验证应是什么样的?
点击此处可下载遵循本文的数据包捕获:https://supportforums.cisco.com/sites/default/files/attachments/document/ntlm_auth.zip
客户端IP:10.122.142.190
WSA IP:10.122.144.182
数据包编号和详细信息
#4客户端向代理发送GET请求。
#7代理发回407。这意味着代理因缺少正确的身份验证而不允许流量。如果您查看此响应中的HTTP报头,将会看到“Proxy-authenticate: NTLM”。这将告知客户端可接受的身份验证方法是NTLM。同样,如果报头存在“Proxy-authenticate: Basic”,则代理会告知客户端基本凭证可接受。如果两个报头都存在(通用),客户端将决定使用哪种身份验证方法。
需要注意的是,身份验证报头是“Proxy-authenticate:”。这是因为捕获中的连接使用显式转发代理。如果是透明代理部署,响应代码为401而不是407,报头将是“www-authenticate:”而不是“proxy-authenticate:”。
#8代理FIN此TCP套接字。这是正确和正常的。
#15在新的TCP套接字上,客户端将执行另一个GET请求。这次请注意,GET包含HTTP标头“proxy-authorization:”。它包含一个编码字符串,该字符串包含有关用户/域的详细信息。
如果展开Proxy-authorization > NTLMSSP,您会看到NTLM数据中发送的解码信息。在“NTLM消息类型”中,您将看到它是“NTLMSSP_NEGOTIATE”。这是三次NTLM握手的第一步。
#17代理以另一个407进行响应。存在另一个“proxy-authenticate”报头。这次它包含一个NTLM质询字符串。如果进一步展开,您将看到NTLM消息类型为“NTLMSSP_CHALLENGE”。这是三次NTLM握手过程中的第二步。
在NTLM身份验证中,Windows域控制器将质询字符串发送到客户端。然后,客户端将算法应用于NTLM质询,该质询会在过程中影响用户的密码。这样,域控制器就可以验证客户端是否知道正确的密码,而无需通过线路发送密码。这比基本凭证安全得多,基本凭证是以纯文本格式发送口令,供所有嗅探设备查看。
#18客户端发送最终GET。请注意,此GET与NTLM协商和NTLM质询所在的同一TCP套接字上。这对NTLM流程至关重要。整个握手必须发生在同一个TCP套接字上,否则身份验证将无效。
在此请求中,客户端将修改的NTLM质询(NTLM响应)发送到代理。这是三次NTLM握手的最后一步。
#21代理发回HTTP响应。这意味着代理已接受凭证并决定提供内容。