哈希传递只针对相同密码进行攻击。
NTLM认证流程
NTLM加密:
- admin -> hex(16进制编码)= 61646d696e
- 61646d696e-> Unicode =610064006d0069006e00
- 610064006d0069006e00–>MD4=209c6174da490caeb422f3fa5a7ae634
认证过程:
注意:challenge每次认证都不一样,是一个随机生成的16字节随机数,response的形势与server生成的net-ntlm
hash一个格式
如上图,客户端client发送一个user用户名给服务器server,服务器从内存中检查它的用户名user是否存在,不存在,登录失败;存在,就生成一个challenge,然后服务器会查找内存中user对应的已经NTLM加密后的哈希密文(加密的是user的密码,假设是admin),并使用该哈希加密challenge(与challenge做逻辑运算),这个加密后的challenge就叫做net-ntlm hash,作为密码已经加密的标志保存到服务器内存中
然后服务器会将challenge发送给客户端,客户端将自己的密码转换成NTLM哈希,用生成的哈希加密challenge,这个加密后的challenge叫做response,然后客户端将response发送给服务器。
最后服务器对比自己内存中的net-ntlm hash与客户端发来的response是否一致,如果一致,就登录成功。
在这个过程中,即使response被攻击者捕获,也不能被伪造,保证了通信的安全。