内网学习-Windows认证-LM Hash与NTLM Hash
最近整理、改正、补充了一些之前学习内网的笔记,后面陆续更新到博客。如有问题请大佬留言指正
LM Hash
LM是Windows的认证协议,加密算法为LM Hash,但因为较容易破解,从windows server 2008起,默认禁用了LM Hash。
加密方法
直接看我做的思维导图吧
将最后两组字符串拼接即为Ra'sAlGhul123
的LM Hash:f0d91b29adb1715c6b174ce32971eba8
最后一步des加密那里我用在线版的总是不对。参考了这篇文章后通过python脚本完成了加密处理
NTLM Hash
由于LM Hash容易被破解,所以为了解决这个问题,NTLM Hash应运而生。且在Windows server 2008开始默认禁用LM Hash而使用NTLM Hash。如果发现抓取到的LM Hash值为ad3435b51404eead3b435b51404ee则代表被禁用(值为空)
加密方法
脚本如下
# 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本地认证、网络认证及密码抓取
在Windows Server 2012 R2及之后版本的操作系统中,默认不会在内存中保存明文密码,Mimikatz 就读不到密码明文,只能读取Hash。
NTLM 协议认证
NTLM 协议认证是基于质询/响应(也叫挑战-响应模型)验证机制,被广泛用于SMTP、POP3、IMAP、CIFS/SMB、Telnet、SIP、HTTP、等众多应用层协议的认证。他有有三种类型消息
- 协商,Negotiate
- 质询,Challenge
- 认证,Authentication
NTLM 协议的版本
NTLM 协议有V1,V2两个版本。使用最多的是V2。两版本的区别如下
NTLM V1 | NTLM V2 | |
---|---|---|
Challenge值 | 8B(16位) | 16B(32位) |
Net-NTLM Hash的加密算法 | DES | HMAC-MD5 |
NTLM V1的Response消息生成过程
- 将16B的NTLM Hash填充至21B
- 分成三组每组7B,作为3DES加密算法的三组密钥
- 分别利用三组密码对服务端发来的Challenge值进行DES加密
- 将三个密文连接得到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认证
域环境下的NTLM认证
参考资料
谢公子的《域渗透攻防指南》,jd购买链接。
永信至诚霄壤实验室 Nu1L Team主编的《内网渗透体系建设》
北京大学出版社出版的杨湘和等著的《Kerberos域网络安全从入门到精通》
Q.E.D.