windows认证之网络认证

NTLM协议

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

NTLM v1与v2

在NTLM v1中,使用LM Hash和NT Hash来进行验证,如今v1已被废弃。自从Windows 2000之后,NTLM v2是默认的认证协议。此认证方式可以用来 PtH(hash传递攻击)。

  • 共同点

    加密的原料都是NTLM Hash。

  • 区别:

    1.Challage:NTLM v1的Challenge有8位,NTLM v2的Challenge为16位。

    2.(加密方式不同):Net-NTLM Hash:NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是HMAC-MD5。

NTLM认证过程:

  1. 协商:主要用于确认双方协议版本
  2. 质询:就是挑战(Chalenge)/响应(Response)认证机制起作用的范畴。
  3. 验证:在质询完成后,验证结果。

以下详细的介绍下质询的过程:

质询的完整过程:

  1. 客户端向服务器端发送用户信息(用户名)请求
  2. 服务器接受到请求,生成一个16位的随机数,被称之为“Challenge”, 并且从本地查找该用户对应的NTLM Hash,并使用该NTLM Hash加密Challenge(16位随机字符), 生成一 个Net-NTLM Hash存在内存中。同时,将Challenge(16位随机字符)发送给客户端。
  3. 客户端接收到Challenge后,将自己提供的用户信息的密码转换为NTLM Hash,并使用NTLM Hash加密Challenge,生成Response,然后将Response发送至服务器端。其中,经过NTLM Hash加密Challenge的结果在网络协议中称之为Net NTLM Hash。

注意:Challenge是Server产生的一个16字节的随机数,每次认证都不同。

总结:就是用客户端的NT hash加密challenge的结果与服务端该用户的ht hash加密challenge的结果进行比对。

NET-NTLM HASH

用于网络身份认证,通常我们使用Responder等工具获取到的就是Net-NTLM hash,这类hash并不能直接用来PtH,但可以通过暴力破解来获取明文密码。

Hash传递攻击(PtH)

通过刚才的分析发现,其实在实际认证过程中并没有进行明文密码的传递,用户输入明文密码早已在本地加密过了。并且网络上只有被加密过的Challenge在传输,所以我们可以自己构造Response发送给服务器。整个过程我们并不需要明文密码,只需要知道NT Hash即可,这种攻击的方式被称之为 Hash传递攻击 (Pass The Hash)。

利用场景

  1. 域/工作组环境
  2. 可以获得hash,但是条对hash暴破暴破不出来
  3. 内网中存在通用密码

Pass The Hash 需要3个条件

  1. 被认证的主机能够访问到服务器。
  2. 被传递认证的用户名。
  3. 被传递认证用户的NTLM Hash。

注:在打了补丁(KB2871997、KB2928120)之后,常规的Pass The Hash已经无法成功,唯独默认的 Administrator (SID 500)账号例外,利用这个账号仍可以进行Pass The Hash远程连接。