【内网学习】4.LMHash和NTLM Hash

本文详细介绍了Windows操作系统中LMHash和NTLMHash的生成过程,包括它们的加密算法和步骤。LMHash基于DES,NTLMHash则使用MD4。随着系统的安全性提升,LMHash逐渐被禁用,而NTLMHash成为关注重点。同时,文中还提供了生成这两种散列值的在线工具和相关网站。
摘要由CSDN通过智能技术生成

 

目录

1 LM Hash及其生成过程

2 NTLM Hash及其生成过程

3 生成lm hash和ntlm hash的网站

参考文章


windows 操作系统通常使用两种方法对用户的明文密码进行加密处理。在域环境中,用户信息存储在ntds.dit中,加密后为散列值。

在windows下通过SAMInside提取到的密码Hash时,可以看到有两条,分别是LM-Hash和NT-Hash,这是对同一个密码的两种不同的加密方式。在windows操作系统中,hash的结构通常如下:

username:RID:LM-HASH:NT-HASH

windows hash是不加盐的

1 LM Hash及其生成过程

LM Hash简介:

LM Hash全名为“LAN Manager Hash”,是微软为了提高Windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。尽管LM Hash较容易被破解,但是为了保证系统的兼容性,Windows只是将LM Hash禁用了(从Windows Vista和Windows Server 2008版本开始,Windows操作系统默认禁用LM Hash),LM Hash明文密码被限制在14位以内,也就是说,如果要停止使用LM Hash,将用户的密码设置为14位以上就好了。如果LM Hash被禁用了,攻击者提高工具抓取的LM Hash通常为"aad3b435b51404eeaad3b435b51404ee"。

生成原理及过程

step 1. 将明文口令转换为其大写形式,假设这里以明文ht123为例,转换为大写格式为:HT123

step 2. 将字符串大写后转换为16进制字符串, 16进制转换:16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具

得到的16进制字符串为:48 54 31 32 33

step 3.密码不足14字节要求用0补全

1Byte=8bit,上面的16进制字符串共5个字节,共40bits(5*8), 为了满足14字节(112bits)的要求,所以需要补全72bit(9*8)的二进制0 ,补全之后的16进制字符串的长度为:4854313233000000000000000000

step 4.将上述编码分成2组7字节(56bits=7*8)的数据

分别为:

48543132330000

00000000000000

step 5.将每一组7字节的十六进制转换为二进制,每7bit一组末尾加0,再转换成十六进制组成得到2组8字节的编码

首先我们看前半部分48543132330000,将其转化为二进制,转化地址,如下

自己整理拆分一下,将最前面缺失的0补齐:

接下来将每7bit写为一组,并在每组后面加一个0,再转换成16进制:

得到的16进制字符串为:482A0C2622880000

同理得到00000000000000转化后的结果为:0000000000000000

故得到的两组8字节编码为:

482a0c2622980000

0000000000000000

step 6.将以上步骤得到的两组8字节编码,分别作为DES加密key为魔术字符串“KGS!@#$% ”进行加密

KGS!@#$%转为16进制为:4B47532140232425,

使用482a0c2622980000和0000000000000000分别作为密钥key去加密明文4B47532140232425,得到密文如下:

step 7.将两组DES加密后的编码拼接得到结果

得到最终LM-Hash值为:
31EF2DCE7361AAB1AAD3B435B51404EE

2 NTLM Hash及其生成过程

NTLMHash是微软为了在提高安全性的同时保证兼容性而设计的散列加者算法,NTLMHash是基于MD4加密算法进行加密的。个人版从Windows Vista以后,服务器版从Wndows Sever2003以后,Windows 操作系统的认证方式均为NTLM Hash.

这里以明文密码“Windows2000”作为研究对象。首先在UltraEdit中输入Windows2000,然后点击>>编辑>>十六进制函数>>十六进制编辑,

再点击>>文件>>转换>>ASCII转Unicode,如下图所示获得Unicode字符串为570069006E0064006F00770073003200300030003000,

开头的FF FE用于标识此文本文件为Unicode编码,参考链接:

字符串和数字之间的转换(Unicode) - zhangyujsj的个人空间 - OSCHINA - 中文开源技术交流社区

[转载]用UltraEdit将中文转换为 Unicode码(转载)_lost_新浪博客

对所获取的Unicode字符串进行标准MD4单向哈希加密,无论数据源有多少字节,MD4固定产生128-bit的哈希值,产生的哈希值就是最后的NTLM Hash。

从网上下载HashCalc工具,打开后将570069006E0064006F00770073003200300030003000输入数值框中,选择左侧数据格式为十六进制串,去掉HMAC前的对号。选中MD4加密,再点击计算,如下图所示。

hashcalc下载地址SlavaSoft Downloads

 

发现与pwdump得到的hash值是一样的。

其实从下面这个图中也可以发现,已经不存在 lm hash,那到了现在我们抓取windows hash ,其实更应该注重的是ntlm hash。

 

3 生成lm hash和ntlm hash的网站


http://www.tobtu.com/lmntlm.php
http://www.nitrxgen.net/hashgen/

参考文章

Windows下LM-Hash与NTLM-Hash生成原理

浅谈NTLM Hash 

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值