文章目录
- 一、ntlm hash
- 二、LM hash加密
- 三 、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的加密原理过程有了基本的了解