Win本地hash概念

转载https://www.secpulse.com/archives/65256.html

Windows系统使用两种方法对用户的密码进行哈希处理

它们分别是LAN Manager(LM)哈希和NT LAN Manager(NTLM)哈希。
所谓哈希(hash),就是使用一种加密函数进行计算后的结果。这个加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。现在已经有了更新的NTLMv2以及Kerberos验证体系。
Windows加密过的密码口令,我们称之为hash。
Windows的系统密码hash默认情况下一般由两部分组成:第一部分是LM-hash,第二部分是NTLM-hash。

LM型哈希

LAN Manager(LM)哈希是Windows系统所用的第一种密码哈希算法。它只有唯一一个版本且一直用到了NT LAN Manager(NTLM)哈希的出现,NTLM哈希用于Windows 2000、XP、Vista和Windows 7系统中。新版操作系统因兼容缘故仍然支持LM哈希算法。
但是在Windows Vista和Windows 7系统中,这种哈希算法是默认关闭的。

对一个密码进行LM哈希处理分以下六步:

1.用户的密码字符串被全部转换成大写字母形式;
2.给密码字符串增加空字符,直到使其包含有14个字符为止;
3.“新”得到的密码字符串被分成两半,每一半分别包含7个字符;
4.每一半字符串都各自添加一个校验位,分别用于创建两个64位的DES加密密钥;
5.所生成的每一个DES密钥都被用于加密一个固定的ASCII字符串KGS!@#$%,得到两个长度为8字节的密文;
6.两个8字节的密文合并起来,形成1个16字节的字符串。至此,LM哈希结束。

举例

根据上面的步骤,密码“PassWord123”的LM哈希处理过程如下:
全部转换为大写字母形式:PASSWORD123;
补充空字符使其包含有14个字符:PASSWORD123000;
从中间一分为二,分别得到PASSWOR和D123000;
分别添加校验位,得到PASSWOR1和D1230001,用于生成DES密钥;
用生成的DES密钥加密一个给定的字符串,得到E52CAC67419A9A22和155195140A852F61;
合并得到E52CAC67419A9A22155195140A852F61

NTLM型哈希

NT LAN Manager(NTLM)哈希算法是微软认可的另一种算法。NTLM哈希创建起来实际上更为简单。它以MD4哈希算法为基础、通过一系列数学运算来创建哈希值。在密码字符串转换成Unicode编码后,MD4算法开始生成NT哈希。
假设明文口令是“123456”,首先转换成Unicode字符串,与LM Hash算法不同,这次不需要添加0x00补足14字节"123456" -> 310032003300340035003600
从ASCII串转换成Unicode串时,使用little-endian序,微软在设计整个SMB协议时就没考虑过big-endian序,ntoh*()、hton*()函数不宜用在SMB报文解码中。0x80之前的标准ASCII码转换成Unicode码,就是简单地从0x??变成0x00??。此类标准ASCII串按little-endian序转换成Unicode串,就是简单地在原有每个字节之后添加0x00。对所获取的Unicode串进行标准MD4单向哈希,无论数据源有多少字节,MD4固定产生128-bit的哈希值16字节310032003300340035003600 -进行标准MD4单向哈希->32ED87BDB5FDC5E9CBA88547376818D4就得到了最后的NTLM Hash
NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4
与LM Hash算法相比,明文口令大小写敏感,无法根据NTLM Hash判断原始明文口令是否小于8字节,摆脱了魔术字符串"KGS!@#$%"。

MD4是真正的单向哈希函数,穷举作为数据源出现的明文,难度较大
相较于DES加密,MD4哈希算法被认为要强壮得多。因为它允许使用更长的密码,允许有大小写的不同,而且也无须把密码分割成更小、更易于被破解的块。Windows系统下hash密码格式用户名称:RID:LM-HASH值:NT-HASH值,

例如:

Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::表示:
用户名称为:Administrator
RID为:500
LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EE
NT-HASH值为:683020925C5D8569C23AA724774CE6CC

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值