首先,所有认证协议中,用户都不会以自己的明文密码进行加密或认证,都用的是密码哈希或与用户绑定的AES key,所以只要我们能拿到某个用户的NTLM hash,就能以这个用户的身份在域中进行认证,执行任意操作(这种行为也被称为PTH/PTK,Pass The Hash/Key)。

后文提到密钥可以直接认为是对应账户的NTLM Hash或AES Key。

域内主要的认证协议有两种:NTLM和Kerberos

参考:NTLM vs KERBEROS - Microsoft Community

NTLM

image.png

image.png

第三步客户端会用用户的密码hash去加密

存在的攻击有:

  1. NTLM-Relay:重放Net-NTLM
  2. Net-NTLM爆破:通过其他漏洞强制域控向受控机器发起NTLM认证,可获得域控用户的Net-NTLM用于爆破,得到域控NTLM Hash

Kerberos

image.png

image.png

image.png

TGT是拿域控的krbtgt密钥加密的

image.png

ST服务票据是拿服务账号密钥加密的

存在的攻击有:

  1. AS-REP Roasting:对于高版本Windows,默认会开启预验证,要求用户在请求TGT时,要求使用用户密钥对时间戳进行加密,若开启则用户无法在无凭据时获得TGT。若管理员手动关闭了预验证或使用了老版本Windows,就可以以用户的身份请求TGT,并离线爆破用户密码Hash,尝试解密AS-REP中的Logon Session Key,解密成功则表示爆破出了用户密码。