Windows 用户密码的加密方法与破解(一)Hash 简介及分类

艺帆风顺 发布于 2025-04-03 19 次阅读


在研究 Hastcat 的时候涉及到了 Windows 的 Hash 破解,感觉这个地方还是有一些姿势点和细节的,特此写文章记录之。

Hash 简介

Hash 一般翻译为 “散列”,也可直接音译为 “哈希” 的。这个加密函数对一个任意长度的字符串数据进行一次加密函数运算,然后返回一个固定长度的字符串。Hash 主要用于信息安全领域中加密算法,渗透测试中获取目标系统的明文或 Hash 往往是整个渗透测试过程中重要的一环。在 Windows 系统中本机用户的密码 Hash 是放在本地的 SAM 文件里面,域内用户的密码 Hash 是存在域控的 NTDS.DIT 文件里面。

Windows Hash 分类

LM

LM Hash 简介

LAN Manager(LM)哈希是 Windows 系统所用的第一种密码哈希算法,是一种较古老的 Hash,在 LAN Manager 协议中使用,非常容易通过暴力破解获取明文凭据。它只有唯一一个版本且一直用到了 NT LAN Manager(NTLM)哈希的出现,在 Windows Vista/Windows 7/Windows Server 2008 以及后面的系统中,LM 哈希算法是默认关闭的,LM 算法是在 DES 基础上实现的,不区分字母大小写。

LM Hash 生成原理

  1. 用户的密码转换为大写,密码转换为 16 进制字符串,不足 14 字节将会用 0 来再后面补全。

  2. 密码的 16 进制字符串被分成两个 7byte 部分。每部分转换成比特流,并且长度位 56bit,长度不足使用 0 在左边补齐长度

  3. 再分 7bit 为一组,每组末尾加 0,再组成一组

  4. 上步骤得到的二组,分别作为 key 为 KGS!@#$% 进行 DES 加密。

  5. 将加密后的两组拼接在一起,得到最终 LM HASH 值。

LM Hash 缺点

  1. 密码长度最大只能为 14 个字符

  2. 密码不区分大小写

  3. 如果密码强度是小于 7 位,那么第二个分组加密后的结果肯定是 aad3b435b51404ee

  4. Des 密码强度不高

NTLM

NTLM Hash 简介

NT LAN Manager(NTLM)哈希是 Windows 系统认可的另一种算法,用于替代古老的 LM-Hash,一般指 Windows 系统下 Security Account Manager(SAM)中保存的用户密码 Hash,在 Windows Vista/Windows 7/Windows Server 2008 以及后面的系统中,NTLM 哈希算法是默认启用的。

NTLM Hash 生成原理

  1. 先将用户密码转换为十六进制格式。

  2. 将十六进制格式的密码进行 Unicode 编码。

  3. 使用 MD4 摘要算法对 Unicode 编码数据进行 Hash 计算

python2 -c 'import hashlib,binascii; print binascii.hexlify(hashlib.new("md4", "P@ssw0rd".encode("utf-16le")).digest())'

e19ccf75ee54e06b06a5907af13cef42
版权声明:本文内容始发于个人博客>作者 : 国光,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。始发链接:https://www.sqlsec.com/2019/11/winhash.html#Windows-Hash-%E5%88%86%E7%B1%BB在此特别鸣谢:个人博主>国光的创作。本文已获原作者国光授权发布在本公众号;原作者已在本公众号关联运营账号(安全小姿势),故在此声明本文原创为国光(安全小姿势)。此篇文章的所有版权归原作者所有,商业转载建议请联系原作者,非商业转载请注明出处。