本文主要是介绍Windows安全认证机制-NTLM认证流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
NTLM定义
1、NTLM是NT LAN Manager的缩写,即问询/应答(Challenge/Response)身份验证协议,是 Windows NT早期版本的标准安全协议。
2、⽤于验证远程机器⽤户的⽹络协议,它也被称为Net-NTLM。
Net-NTLM Hash
简单来说,Net-ntlm hash就是ntlm hash再做了一层hash加密。
以下是通过smb共享连接获取的wireshark包,可以比较明确的看到ntlm认证的流程
如有写的不对的地方,请大家指正,我会立马修改!!!
1、NTLM认证流程图
2、认证步骤
1、首先在客户端中输入username,password和domain,然后客户端会把密码进行Hash后的值先缓存到本地。
2、在连接服务器的时候,客户端会默认向服务端发起一次请求type1,用来获取server向域控请求的挑战码。
3、DC会生成一个16字节的随机数,也就是挑战码(Challenge),然后再通过server传回给Client。
4、当Client收到挑战码以后,会先复制一份,然后和缓存中的密码Hash(ntlm hash)再一同混合Hash一次,混合后的值称为response(NET-ntlm hash),之后Client再将challenge,response以及username一并都传给server。
5、Server端在收到client传过来的这三个值以后会把它们都转发给DC。
6、当DC接到过来的这三个值的以后,会根据username到域控的账号数据库(ntds.dit)里面找到该username对应的Hash(ntlm hash),然后把这个Hash(ntlm hash)拿出来和传过来的challenge值再混合hash,生成一个值A。
7、将值A跟传来的response进行比较,相同则认证成功,反之,则失败,当然,如果是本地登录,所有验证肯定也全部都直接在本地进行了。
3、对应wireshark包
TYPE1对应上述步骤2
TYPE2 对应上述步骤3
TYPE3 对应上述步骤4
这篇关于Windows安全认证机制-NTLM认证流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!