Windows认证-LM Hash与NTLM Hash

最近整理、改正、补充了一些之前学习内网的笔记,后面陆续更新到博客。如有问题请大佬留言指正

LM Hash

LM是Windows的认证协议,加密算法为LM Hash,但因为较容易破解,从windows server 2008起,默认禁用了LM Hash。

加密方法

直接看我做的思维导图吧
image
将最后两组字符串拼接即为Ra'sAlGhul123的LM Hash:f0d91b29adb1715c6b174ce32971eba8
最后一步des加密那里我用在线版的总是不对。参考了这篇文章后通过python脚本完成了加密处理

NTLM Hash

由于LM Hash容易被破解,所以为了解决这个问题,NTLM Hash应运而生。且在Windows server 2008开始默认禁用LM Hash而使用NTLM Hash。如果发现抓取到的LM Hash值为ad3435b51404eead3b435b51404ee则代表被禁用(值为空)

加密方法

image-1674224194686
脚本如下

# coding=utf-8
import hashlib
import binascii

password = input("输入密码:")
print(password + "的NTLM Hash为:" + binascii.hexlify(hashlib.new("md4" , password.encode("utf-16le")).digest()).decode("utf-8"))

windows本地认证、网络认证及密码抓取

图片-1674228272444
在Windows Server 2012 R2及之后版本的操作系统中,默认不会在内存中保存明文密码,Mimikatz 就读不到密码明文,只能读取Hash。

NTLM 协议认证

NTLM 协议认证是基于质询/响应(也叫挑战-响应模型)验证机制,被广泛用于SMTP、POP3、IMAP、CIFS/SMB、Telnet、SIP、HTTP、等众多应用层协议的认证。他有有三种类型消息

  1. 协商,Negotiate
  2. 质询,Challenge
  3. 认证,Authentication

NTLM 协议的版本

NTLM 协议有V1,V2两个版本。使用最多的是V2。两版本的区别如下

NTLM V1 NTLM V2
Challenge值 8B(16位) 16B(32位)
Net-NTLM Hash的加密算法 DES HMAC-MD5

NTLM V1的Response消息生成过程

  1. 将16B的NTLM Hash填充至21B
  2. 分成三组每组7B,作为3DES加密算法的三组密钥
  3. 分别利用三组密码对服务端发来的Challenge值进行DES加密
  4. 将三个密文连接得到Response

Net-NTLM Hash V1 格式(username::hostname:LM response:NTLM response:challenge)
Net-NTLM Hash V2 格式(username::domain:challenge:HMAC-MD5:blob)

V2降级到V1

从Windows Vista/Server2008开始,微软默认使用NTLM V2进行身份认证,想降级到V1需要手动修改,条件是有目标机器的管理员权限
修改注册表

reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 2 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v NtlmMinClientSec /t REG_DWORD /d 536870912 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\ /v RestrictSendingNTLMTraffic /t REG_DWORD /d 0 /f

工作组环境下的NTLM认证

image-1674819368571

域环境下的NTLM认证

image-1674819786140

参考资料

谢公子的《域渗透攻防指南》,jd购买链接
永信至诚霄壤实验室 Nu1L Team主编的《内网渗透体系建设》
北京大学出版社出版的杨湘和等著的《Kerberos域网络安全从入门到精通》

Q.E.D.


正在加载今日诗词....