NTLM协议与Pass the Hash的爱情

NTLM使用在Windows NT和Windows 2000 Server或者之后的工作组环境中(Kerberos用在域模式下)。在AD域环境中,如果需要认证Windows NT系统,也必须采用NTLM。较之Kerberos,基于NTLM的认证过程要简单很多。NTLM采用一种质询/应答(Challenge/Response)消息交换模式

0x02、LM hash & NTLM hash

假设我的密码是admin,那么操作系统会将admin转换为十六进制,经过Unicode转换后,再调用MD4加密算法加密,这个加密结果的十六进制就是NTLM Hash

admin -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

LM HASH加密:  假设明文口令是“Welcome”,首先全部转换成大写“WELCOME”,再做将口令字符串大写转后后的字符串变换成二进制串: “WELCOME” -> 57454C434F4D4500000000000000 如果明文口令经过大写变换后的二进制字符串不足14字节,则需要在其后添加0x00补足14字节。然后切割成两组7字节的数据,分别经str_to_key()函数处理得到两组8字节数据: 57454C434F4D45 -str_to_key()-> 56A25288347A348A 00000000000000 -str_to_key()-> 0000000000000000 这两组8字节数据将做为DESKEY对魔术字符串“KGS!@#$%”进行标准DES加密 "KGS!@#$%" -> 4B47532140232425 56A25288347A348A -对4B47532140232425进行标准DES加密-> C23413A8A1E7665F 0000000000000000 -对4B47532140232425进行标准DES加密-> AAD3B435B51404EE 将加密后的这两组数据简单拼接,就得到了最后的LM Hash LM Hash: C23413A8A1E7665FAAD3B435B51404EE NTLM HASH加密: 假设明文口令是“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: 32ED87BDB5FDC5E9CBA88547376818D4 0x03、本地认证

​ 本地登录windows的情况下操作系统会使用用户输入的密码作为凭据,去跟系统中的sam文件中的密码去做比较;就类似web网站登录一样原理。

​ 当用户选择登录时,会弹出winlogon.exe接收输入的密码,这时候会将密码交给lsass.exe,这个进程重会存储一份明文密码;将明文密码加密成NTLM HASH,对SAM数据库再进行认证比较

NTLM协议与Pass the Hash的爱情

0x04、网络认证

网络认证是什么呢?其实就是NTLM 协议。那NTLM和NTLM hash有什么关系?

NTLM是一种网络认证协议,它是基于挑战(Chalenge)/响应(Response)认证机制的一种认证模式

关于NTLM Hash与NTLM

在Windows中,密码Hash目前称之为NTLM Hash,其中NTLM全称是:“NT LAN Manager”。

这个NTLM是一种网络认证协议,与NTLM Hash的关系就是:NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议。

1、NTLM v2协议认证过程

NTLM协议的认证过程分为三步:

协商

质询

验证

协商:主要用于确认双方协议版本

质询:就是挑战(Chalenge)/响应(Response)认证机制起作用的范畴,本小节主要讨论这个机制的运作流程。

验证:验证主要是在质询完成后,验证结果,是认证的最后一步。

服务器端收到客户端的Response后,比对Chanllenge1与Response是否相等,若相等,则认证通过。 2、质询的完整过程

1、客户端向服务器端发送用户信息(用户名)请求

2、 服务器接受到请求,生成一个16位的随机数,被称之为“Challenge”, 使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1。同时,生成Challenge1后,将Challenge(16位随机 字符)发送给客户端。

3、客户端接受到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。

其中,经过NTLM Hash加密Challenge的结果在网络协议中称之为Net NTLM Hash

NTLM协议与Pass the Hash的爱情

更为细节的流程图如下

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzwxp.html