PTH 中 LM hash 和 NTLM hash 的区别
LM Hash (LAN Manager Hash)
- 全称:LAN Manager Hash
- 哈希算法:它是一种非常老旧且脆弱的哈希算法,主要用于 Windows NT 4.0 及更早的版本
- 加密方式:
- 将用户的明文密码转换为大写
- 如果密码长度超过 14 个字符,只取前 14 个。如果不足 14 个,用空字符填充到 14 个
- 将 14 个字符的密码分成两部分,每部分 7 个字符
- 分别使用 DES(Data Encryption Standard)算法进行加密
- 主要缺陷:
- 不区分大小写:LM 哈希会将所有字母都转换为大写,导致密码的复杂性大大降低,例如
password
和PASSWORD
会生成相同的 LM 哈希 - 分段加密:将密码分成两段,每段单独加密,这使得哈希破解变得非常容易,攻击者可以分别破解这两段,大大缩短破解时间
- 无盐值:它没有使用盐值(Salt),这使得攻击者可以使用彩虹表(Rainbow Table)进行快速破解
- 不区分大小写:LM 哈希会将所有字母都转换为大写,导致密码的复杂性大大降低,例如
结论:LM 哈希非常不安全,很容易在几秒钟内被破解。从 Windows Vista 和 Windows Server 2008 开始,LM 哈希默认是禁用的,除非为了向后兼容性而手动启用
NTLM Hash (NT LAN Manager Hash)
- 全称:NT LAN Manager Hash
- 哈希算法:它使用了 MD4 哈希算法,并且不对密码进行大小写转换或填充
- 加密方式:
- 将用户的明文密码转换为 UTF-16LE 编码
- 对 UTF-16LE 编码的密码进行 MD4 哈希运算
- 主要特点:
- 区分大小写:NTLM 哈希保留了密码的大小写,这增加了哈希破解的难度
- 没有分段:它对整个密码进行一次性哈希运算,而不是分段
- 依然没有盐值:尽管比 LM 哈希更安全,但 NTLM 哈希仍然没有使用盐值,因此,如果密码简单或在字典中,仍然可以通过彩虹表或字典攻击被破解