Windows内网协议NTLM和LM哈希加密过程

哈希介绍

Windows操作系统通常使用两种方法对用户的明文密码进行加密处理,在域环境中,用户信息存储在ntds.dit中,加密后为散列值,Windows操作系统中的密码一般由两部分组成,一部分为LM Hash,另外一部分为NTLM Hash,在Windows操作系统中,Hash的结构通常如下

sername:RID:LMHASH:NTHASH

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通常为"ad3435b51404eead3b435b51404ee"(表示LM Hash为空值或被禁用)

LM Hash加密原理

将明文口令转换为其大写形式假设这里以明文Admin@123为例,转换为大写格式为:ADMIN@123

将字符串大写后转换为16进制字符串转换后41 44 4D 49 4E 40 31 32 33

密码不足14字节要求用0补全,1Byte=8bit,上面的16进制字符串共9个字符,还差5个字符 那么我们使用 00 00 00 00 00补全为41 44 4D 49 4E 40 31 32 33 00 00 00 00 00

        将上述编码分成2组7字节

                41 44 4D 49 4E 40 31 第一组

                32 33 00 00 00 00 00 第二组

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

        第一组

        十六进制: 41 44 4D 49 4E 40 31

        转换为二进制01000001010001000100110101001001010011100100000000110001

        七个为一组末尾补0

01000000
10100010
00010010
10101000
10010100
01110010
00000000
01100010

合并后为0100000010100010000100101010100010010100011100100000000001100010

在转换成十六进制

         40A212A894720062

        第二组步骤和第一组一样这里不讲赘述

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

KGS!@#$%的16进制为4B47532140232425

最后使用DES算计器加密即可(此LM是可逆的,可破解) 

NTLM Hash原理

        将明文口令转换成十六进制的格式:如Admin@123

        转换成Unicode格式,即在每个字节之后添加0x00

Admin@123转16进制:41646D696E40313233
添加00:410064006D0069006E004000310032003300

对Unicode字符串作为MD4加密,生成32位的十六进制数字串即是NTLM加密,该加密不可逆只能哈希破解

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值