NTLM 身份验证

    NTLM是NT LAN Manager的缩写,NTLM是基于挑战/应答的身份验证协议,是 Windows NT 早期版本中的标准安全协议。

基本流程
NTLM验证是一种Challenge/Response 验证机制,由三种消息组成:通常称为type 1(协商),类型type 2(质询)和type 3(身份验证)。
在这里插入图片描述NTLM 身份验证_第1张图片type1 协商
这一步没有发送用户名!!!
这一步没有发送用户名!!!
这一步没有发送用户名!!!
大部分文章都写了 第一步会发送用户名,实际抓一次包就明白了.
客户端向服务器发送type1(协商)消息主要包含客户端支持和服务器请求的功能列表:
NTLM 身份验证_第2张图片实际抓包:
NTLM 身份验证_第3张图片type2质询
这个过程是服务器用type 2消息(质询)进行响应,这包含服务器支持和同意的功能列表。但是,最重要的是,它包含服务器产生的Challenge:

NTLM 身份验证_第4张图片实际抓包:
NTLM 身份验证_第5张图片主要信息是challenge:challenge随机字符串,用于加密验证。
type 3 身份验证
这个过程客户端接收到challenge之后,使用用户hash与challenge进行加密运算得到response,将response,username,challenge发给服务器。消息中的response是最关键的部分,因为它向服务器证明客户端用户已经知道帐户密码。
NTLM 身份验证_第6张图片实际抓包:
NTLM 身份验证_第7张图片此challenge和type2的不一样;

Net-NTLMv1
Net-NTLMv1协议的基本流程如下:

客户端向服务器发送一个请求

服务器接收到请求后,生成一个8位的Challenge,发送回客户端

客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器

服务器校验response

username::hostname:LM response:NTLM response:challenge

Net-NTLMv1 response的计算方法为:

将用户的NTLM hash补零至21字节分成三组7字节数据

三组数据作为3DES加密算法的三组密钥,加密Server发来的Challenge

这种方式相对脆弱,可以基于抓包工具和彩虹表爆破工具进行破解。

Net-NTLMv2

自Windows Vista起,微软默认使用Net-NTLMv2协议,其基本流程如下:

客户端向服务器发送一个请求

服务器接收到请求后,生成一个16位的Challenge,发送回客户端

客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器

服务器校验response

username::domain:challenge:HMAC-MD5:blob

v2是的加密算法:

1.将Unicode后的大写用户名与Unicode后的身份验证目标(在Type 3消息的"TargetName"字段中指定的域或服务器名称)拼在一起。请注意,用户名将转换为大写,而身份验证目标区分大小写,并且必须与“TargetName”字段中显示的大小写匹配。使用16字节NTLM哈希作为密钥,得到一个值。

2.构建一个blob信息:

NTLM 身份验证_第8张图片

1.使用16字节NTLMv2哈希作为密钥,将HMAC-MD5消息认证代码算法加密一个值(来自type 2的Challenge与Blob拼接在一起)。得到一个16字节的NTProofStr。

2.将NTProofStr与Blob拼接起来形成得到response。

至于选择哪个版本的响应由LmCompatibilityLevel决定。

通过组合username,domain,challenge,NTProofStr,NTMLv2 response得到最终的Net-NTML-Hash

challenge为第二步响应中:ntlmssp.ntlmserverchallenge
NTProofStr为:ntlmssp.ntlmv2_response
NTMLv2 response为:这里并非全部的NTMLv2 response,需要去掉NTProofStr部分。

username::domain:challenge:HMAC-MD5:blob

code::DESKTOP-VCBQ663::72f67c1da05d0c77::28f4b5babc7926013180873ccb257f62:01010000000000006d6e916e9698d70191af7bd88a2706b1000000000200040053005400010004005300540004000400530054000300040053005400070008006d6e916e9698d70106000400020000000800300030000000000000000100000000200000e360aa9baa60ce73af7699d4ca493ff52b0e20aefe01ef49706a0623825827180a001000000000000000000000000000000000000900280063006900660073002f003100390032002e003100360038002e003100300033002e003200320030000000000000000000

你可能感兴趣的:(内网渗透,笔记,http,windows)