Windows认证--NTLM

admin 2022年9月27日11:12:03评论31 views字数 2048阅读6分49秒阅读模式

Windows 身份验证机制主要有NTLMKerberos两种,前者主要用于本地以及工作组环境,而后者主要用于域环境.还有一种LM认证,但现在基本淘汰了,在这就不再做过多的解释.

Windows中不会保存明文密码,只会保存密码的hash,本机用户的密码hash是存放在SAM文件里而域内用户的密码hash是存在DC的ntds.dit文件里

什么是SAM

安全账号管理器(Security Accounts Manager),是Windows管理用户账户安全的一种机制,用来存储密码的数据库文件.此文件存储密码的Hash也就是LM HashNTLM Hash. SAM位于%SystemRoot%system32configsam,在注册表中保存在HKEY_ LOCAL_MACHINESAMSAMHKEY_ LOCAL _MACHINESECURITYSAM.正常情况下SAM文件是不允许直接访问等操作的.

HTLM Hash

NTLM认证就是通过NTLM Hash进行的认证,可分为本地认证和网络认证

加密算法

  1. 将明文密码转换成16进制格式
  2. 对16进制进行unicode编码,即在每个字节之后添加0x00
  3. 对unicode字符串做md4加密

例如:

明文密码:12345转换成16进制:313233343536转换成unicode:310032003300340035003600md4加密:32ed87bdb5fdc5e9cba88547376818d4

加密结果和mimikatz抓到的NTLM Hash一致

Windows认证--NTLM

Windows认证--NTLM


本地认证

当用户进行开启、注销等需要认证的时候,windows会调用winlogon.exe接受我们输入的密码,然后会将密码交给lsass.exelsass.exe进程会先在内存中存储一份明文密码,然后将明文密码进行加密为NTLM Hash后,与SAM文件中的NTLM Hash进行对比,如果一致则通过.

Windows认证--NTLM


网络认证

NTLM在网络环境中采用的是一种Challenge/Response验证机制,由三个消息组成:Type1(协商),Type2(质询),Type3(身份验证)

  1. 首先客户端向服务端发送Type1消息去协商需要认证的主体,用户,机器以及需要使用安全服务等信息.
  2. 服务端接收到客户端发送的Type1消息后,会生成一个随机的16位Type 2 Challenge消息,本地存储后将Type 2消息发送给客户端.
  3. 客户端接收到Type2消息后,使用用户的NTLM Hash对Challenge进行加密得到Net-NTLM Hash(不能直接用来进行PTH,但可以通过暴力破解来获取明文密码),封装到Type3 消息中,发给服务端.
  4. 服务端接收到Type3消息后,用自己的密码对NTLM-Hash对Challenge进行加密,并比较自己计算出的Net NTLM Hash与客户端发送的是否匹配,如果匹配则认证成功,否则认证失败.

Windows认证--NTLM


在整个NTLM验证过程中,虽然没有明文密码在客户端和服务端之间传输,但是如果得到了NTLM Hash后,无需爆破明文密码,可以冒充该用户通过身份验证,也就是PTH攻击.

Wireshark对获取Net-NTLM Hash

访问目标机器的共享,来模拟客户端访问服务端

net use \192.168.3.114 /u:administrator 123456

Windows认证--NTLM


可在目标机器上进行抓包,访问共享是基于SMB协议的,前四个包(Negotiate Protocol Response)则是进行协商

Windows认证--NTLM

第六个包则是服务端向客户端返回的Challenge

Windows认证--NTLM

紧接着下一个包则是服务端通过NTLM HashChallenge加密得到的ResponseNTLMv2 Response的值

Windows认证--NTLM


Net-NTLM Hash是不能进行PTH的,在得到上面的数据后可通过拼接,然后通过hashcat进行爆破 NTLMv2格式为:

username::domain:challenge:HMAC-MD5:blob

username是数据包中User name的值 domain是数据包中Host name的值 HMAC-MD5是数据包中NTProofstr的值 blob则是NTLMv2 Response去掉NTProofstr后的值

Windows认证--NTLM


组合得到后可通过hashcat指定5600类型进行爆破,在真实环境中,不可能在服务端使用wireshark进行抓包,可通过中间人攻击来获得Net-NTLM Hash,在无法爆破出明文密码的时候可尝试NTLM Relay攻击.

参考

https://y4er.com/posts/ntlm-hash-and-lm-hash/#lm-hash https://juejin.cn/post/6952793401460949029#heading-1 https://xz.aliyun.com/t/6600 https://blog.csdn.net/qq_44159028/article/details/123274876

原文始发于微信公众号(鸿鹄实验室):Windows认证--NTLM

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月27日11:12:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows认证--NTLMhttps://cn-sec.com/archives/1318631.html

发表评论

匿名网友 填写信息