一、NTLMv2哈希提取全流程
- 捕获SMB2认证流量
- 工具:Wireshark
过滤条件:
tcp.port == 445 && smb2.cmd == 0x0001
过滤SMB2 Session Setup请求,快速筛选出包含
NTLMSSP_AUTH
标志的包(通常为三包中的第三个)。
提取关键字段
在目标数据包的SMB2层 → Security Blob
字段中,按以下顺序提取:字段 位置 提取方法 用户名 Security Blob → User Name
直接复制字符串值 域名 Security Blob → Domain
直接复制字符串值(若为空则填 .
)服务器挑战 Security Blob → NTLMv2 Challenge
作为16字节十六进制字符串复制(例如 df723e959c430a53
)NTProofStr Security Blob → NTProofStr
作为32字节十六进制字符串复制(例如 f2958e36eb0d00d5...
)响应Blob Security Blob → Response Blob
复制完整二进制流(后续需截取后半段)
二、哈希组合格式详解
NTLMv2哈希的标准格式为:
username::domain:ServerChallenge:NTProofStr:ModifiedResponseBlob
字段说明
ServerChallenge
- 来源:服务器返回的16字节随机值(见上表)。
- 格式:直接使用提取的十六进制字符串(8字节,无需转换)。
NTProofStr
- 来源:客户端用密码NTLM哈希加密挑战值后的结果。
- 格式:直接使用提取的32字节十六进制字符串(16字节)。
ModifiedResponseBlob
- 来源:响应Blob的后半部分(需去除NTProofStr前缀)。
操作:
- 将响应Blob转换为十六进制流(如
0101000000000000...
)。 - 从第40字节(NTProofStr结束位置)开始截取剩余部分。
- 将响应Blob转换为十六进制流(如
最终哈希示例
Administrator::DOMAIN:df723e959c430a53:f2958e36eb0d00d5...:010100000000000071b6ef1e1d30d7010600040002000000...
三、破解工具配置
Hashcat命令
hashcat -m 5600 -a 0 ntlmv2_hash.txt /path/to/password_dict.txt --force
参数说明:
ntlmv2_hash.txt
:构造后的hash保存文件。
-/path/to/password_dict.txt
:爆破字典文件。-m 5600
:指定NTLMv2模式。-a 0
:字典攻击。--force
:忽略警告(GPU加速时常用)。