ntlm hash加密方式学习

一、ntlm hash

什么是ntlm hash,当windows进行本地用户密码认证时不是以用户输入的明文密码与系统密码直接比较,而是经过某种方式加密之后进行比较。所以windows中的用户密码凭证不是以明文的方式存储在系统中的SAM数据库,而是经过加密之后再存储到SAM数据库,这个明文加密的结果我们称之为ntlm hash。本文学习ntlm hash的加密方式原理,以更好的了解windows的认证机制。

二、LM hash加密

LM Hash 是一种windows系统身份认证协议,在windows 7 或windows 2008 之前的系统使用,之后的系统默认禁用了LM Hash协议认证,使用ntlm hash的方式。
LM Hash 的明文密码被限定在14位之内。
如有明文:QAZ!q123
加密流程:

1、将明文密码中的小写字母全部转为大写,再转为16进制字符串

明文密码-->转为大写字母-->转为16进制		
QAZ!q123-->QAZ!Q123-->51415A2151313233

2、转换后的字符串长度不足14字节(一个字节两个bits,14字节共28长度)的,后面使用0补全

51 41 5A 21 51 31 32 33-->51 41 5A 21 51 31 32 33 00 00 00 00 00 00

3、补0之后进行分组,把14个字节分为两组,7个字节一组,每组的字节分别转为二进制依次拼接起来

51 41 5A 21 51 31 32 -->转为二进制=01010001010000010101101000100001010100010011000100110010   每组56个比特位
33 00 00 00 00 00 00 -->转为二进制=00110011000000000000000000000000000000000000000000000000

4、把每组的二进制按7位一组拿出来末尾补0,得到8组二进制之后转为16进制,

第一组:0101000 1010000 0101011 0100010 0001010 1000100 1100010 0110010  
补0之后二进制为:
01010000 10100000 01010110 01000100 00010100 10001000 11000100 01100100 -->转16进制得到=50a056441488c400
同样第二组:0011001 1000000 0000000 0000000 0000000 0000000 0000000 0000000
补0之后二进制为:
00110010 10000000 00000000 00000000 00000000 00000000 00000000 00000000 -->转16进制得到=3280000000000000

5、将两组16进制字符串作为DES的加密密钥对"KGS!@# %"进行加密,"KGS!@# %"需要转为16进制,把加密得到的密文进行拼接最终得到LM Hash值(DES对称密钥加密算法)

KGS!@#$% 16进制为:4B47532140232425
最后加密得:862BE47A8F14E093 1AA818381E4E281B 拼接起来就是LM hash

最后一步注意:在进行DES加密时,使用在线的DES加密工具无法加密出正确的LM hash结果。需要使用DES计算器进行加密。

des计算器
对 50a056441488c400 进行加密
在这里插入图片描述

对 3280000000000000 进行加密

在这里插入图片描述

LM hash加密方式存在的缺点:

1、密码长度最大只能为14个字符
2、密码不区分大小写
3、如果明文密码长度小于7个,第二个分组的加密结果一定是:aad3b435b51404ee

三 、NTLM Hash 加密

还是以 QAZ!q123 为明文进行加密
加密流程:

1、将密码明文转为16进制

QAZ!q123-->转16进制=51415A2171313233

2、将16进制的字符串转为unicode编码

51415A2171313233  -->进行unicode编码=510041005A0021007100310032003300  (unicode 编码在每个16进制字节后面添加一个字节00)

3、对unicode编码的16进制字符进行标准MD4单向哈希加密(MD4是一种不可逆的加密算法)

510041005A0021007100310032003300 -->标准MD4 加密=08a1d3438d7dfe8a2ddc9bbbcb05a0d0

这里使用HashCalc 计算器进行加密最后得到:08a1d3438d7dfe8a2ddc9bbbcb05a0d0
在这里插入图片描述

到此ntlm hash的加密原理过程有了基本的了解

<think>嗯,用户想了解LM HashNTLM Hash是什么。我需要先回忆一下这两个概念,然后组织语言用中文解释清楚。首先,LM Hash是较早的Windows系统使用的密码哈希方式,可能和安全性有关。记得它有一些缺陷,比如区分大小写或者容易被破解。而NTLM Hash是后来替代LM的,更安全一些。不过具体细节可能需要进一步确认。 LM Hash的全称是Lan Manager Hash,是微软在早期的操作系统如Windows 95、98和NT中使用的。它的工作方式可能涉及将密码转换为大写,分割成两部分,然后分别加密,这样可能会降低安全性。因为如果密码较短,两部分可能更容易被破解。另外,LM使用DES加密,这可能现在不够安全了。 NTLM Hash,全称是NT LAN Manager,应该是微软为了改进LM的不足而开发的。它支持更多字符,保留大小写,使用MD4哈希算法。这样生成的哈希更安全,不容易被破解。NTLM可能用在后续的Windows版本,比如2000、XP之后的系统。另外,NTLM可能用于挑战-响应认证机制,比如NTLMv1和v2,其中v2更安全,防止中间人攻击。 需要区分NTLM HashNTLM认证协议的不同。用户可能想知道哈希本身的结构和生成方式,以及它们的安全性问题。LM因为安全性问题,后来被微软弃用,但在旧系统可能还存在,导致安全隐患。例如,如果系统启用LM,即使密码复杂,攻击者也能较容易破解。 另外,现在的Windows系统默认可能禁用LM,使用NTLM,甚至更推荐Kerberos协议。但NTLM仍然在某些环境下使用,所以了解其哈希机制对安全分析和渗透测试有帮助。 需要确认这些信息是否准确,比如LM是否真的将密码转为大写,分割成7字符块,使用DES加密。还有NTLM是否使用MD4。可能还要提到实际存储时的格式,比如LM Hash是16字节,NTLM也是16字节,但生成方式不同。 还要举例说明,比如密码“Password123”经过LM和NTLM处理后的不同哈希结果,以及为什么LM不安全,比如没有盐值,容易受到彩虹表攻击。而NTLM虽然比LM好,但相对于更现代的哈希算法也有不足。 最后,总结两者的区别,应用场景,以及微软的推荐做法。可能用户是在学习网络安全,准备相关考试,或者进行系统安全配置,所以需要明确两者的安全演变和现状。</think>LM HashNTLM Hash 是 Windows 系统中用于存储用户密码的两种哈希算法,它们在安全性和实现方式上有显著差异。以下是详细介绍: --- ### **1. LM Hash(Lan Manager Hash)** - **背景**:微软在 1987 年随 LAN Manager 操作系统引入,用于早期 Windows 系统(如 Windows 95/98/NT)。 - **工作原理**: 1. **密码限制**:将密码转换为全大写,并截断为最多 14 字符。 2. **分块处理**:分成两个 7 字符的块(如 `PASSWOR` 和 `D123` → 不足补零)。 3. **DES 加密**:每块用固定密钥(`KGS!@#$%`)进行 DES 加密,生成两个 8 字节哈希值,合并为 16 字节的 LM Hash。 - **安全问题**: - **弱加密**:固定密钥和分块机制导致易受暴力破解。 - **忽略大小写**:密码转为大写后降低复杂度。 - **彩虹表攻击**:哈希无盐值(Salt),易被预计算表破解。 - **现状**:Windows Vista 后默认禁用,但旧系统兼容模式可能保留。 **示例**: 密码 `Password123` → 转为大写 `PASSWORD123` → 分块 `PASSWOR` 和 `D123` → 最终 LM Hash 为 `E52CAC67419A9A224A3B108F3FA6CB6D`。 --- ### **2. NTLM Hash(NT LAN Manager Hash)** - **背景**:随 Windows NT 推出,替代 LM Hash,现为现代 Windows 系统(如 Win10/11)的默认密码存储方式。 - **工作原理**: 1. **支持完整字符集**:保留密码原始大小写和长度(支持 Unicode)。 2. **MD4 哈希**:密码经 UTF-16LE 编码后,计算 MD4 哈希,生成 16 字节的 NTLM Hash。 - **改进点**: - 无需分块,支持长密码(最长 256 字符)。 - 保留大小写,哈希复杂度显著提高。 - 但仍未加盐,存在彩虹表攻击风险。 - **应用场景**: - 本地存储:保存在 SAM 数据库或域控的 NTDS.dit 中。 - 网络认证:用于 NTLM 协议(挑战-响应机制,如 NTLMv1/NTLMv2)。 **示例**: 密码 `Password123` → UTF-16LE 编码 → MD4 哈希 → NTLM Hash 为 `57F18B7E55F0E216AE980C28B432C3FE`。 --- ### **3. LM vs. NTLM 对比** | **特性** | LM Hash | NTLM Hash | |----------------|-----------------------------|-----------------------------| | **密码处理** | 转大写、分块 | 保留原始大小写 | | **算法** | DES | MD4 | | **安全性** | 极低(易被破解) | 较高(但仍有改进空间) | | **最大长度** | 14 字符 | 256 字符 | | **应用系统** | Win95/98/NT 等旧系统 | Win2000 及后续系统 | | **现状** | 已淘汰(默认禁用) | 仍广泛使用(逐步转向 Kerberos) | --- ### **4. 安全建议** 1. **禁用 LM Hash**:通过组策略(`网络安全: 不要存储 LAN Manager 哈希`)关闭。 2. **使用强密码**:长密码、大小写混合,避免被离线破解。 3. **升级认证协议**:优先使用 Kerberos 或 NTLMv2,避免 NTLMv1。 4. **监控哈希泄露**:防范 Mimikatz 等工具提取内存中的哈希。 --- ### **总结** LM Hash 因设计缺陷已被淘汰,而 NTLM Hash 是当前 Windows 系统的标准,但仍需结合更安全的协议(如 Kerberos)和强密码策略来提升整体安全性。在渗透测试或系统加固时,排查 LM Hash 残留是重要步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值