2 NTLM Relay
2.1 几种 Hash
为了避免混淆,总结下相关 Hash 的名词:
NT Hash
和LM Hash
是用户密码的散列版本。LM Hash
已经完全过时,本文不再讨论。NT Hash
通常又被称为NTLM Hash
。此名称与协议名称 NTLM 存在混淆。因此,当谈论用户的密码哈希时,将其称为NT Hash
。- NTLM 是身份验证协议的名称。目前有两个版本的 NTLM 协议。
NTLMv1
响应和NTLMv2
响应将是用于指代客户端发送的 Challenge 响应的术语,适用于 NTLM 协议的版本 1 和 2。Net-NTLMv1
和Net-NTLMv2
是当NT Hash
称为NTLM
哈希时使用的伪新术语,用于将NTLM Hash
与协议区分开来。由于我们不使用NTLM Hash
术语,因此不会使用这两个术语。Net-NTLMv1 Hash
和Net-NTLMv2 Hash
也是避免混淆的术语,但也不会在本文中使用。
2.2 简介
顾名思义,NTLM Relay 攻击依赖于 NTLM 身份验证。攻击存在下面的场景中:攻击者设法在客户端和服务器之间处于中间人的位置,并简单地将信息从一端转发到另一端。
中间人的位置意味着:从客户端的角度来看,攻击者的机器是他想要认证的服务器,而从服务器的角度来看,攻击者是一个像其他想要认证访问资源的客户端。
当然,攻击者并不只是想对目标服务器进行认证,而是伪造成受害的用户身份来控制服务端。但是,由于攻击者不知道用户的密钥,即使他监听了对话,由于这个密钥从未在网络上传输,攻击者也无法提取任何信息。那么,它是如何工作的呢?
2.3 消息中继
在 NTLM 认证过程中,客户用其 NT Hash 加密服务器提供的 Challenge 来向服务器证明其身份。因此,攻击者唯一要做的就是让客户端做好加密,并把信息从客户端传给服务器,以及把服务器的回复传给客户端。
客户端向服务器发送的所有信息,攻击者都会收到,并把信息重放给真正的服务器。而服务器向客户发送的所有信息,攻击者也会收到,并将其原封不动的转发给客户端。
实际上,从客户的角度来看,在图的左侧,攻击者和它之间进行了 NTLM 身份验证。 客户端在其第一条消息中发送协商请求,攻击者以 Challenge 回复该请求。 收到此 Challenge 后,客户端使用其密钥构建 Response,并最终发送包含加密质询的最后一条身份验证消息。
但是,攻击者不能用这个交换做任何事情。因此,需要思路转向上图的右半边。实际上,从服务器的角度来看,攻击者是一个和其它用户一样的客户端。它发送了第一条消息要求认证,而服务器用挑战来回应。由于 攻击者向真正的客户发送了这个同样的 Challenge ,真正的客户端 用它的密钥对这个挑战进行了加密 ,并以一个 有效的响应 进行回复。因此,攻击者可以向服务器发送这个有效的响应。
这就是攻击的点所在。从服务器的角度来看,它不知道攻击者正在向客户重放其信息。
因此,从服务器的角度来看,这就是所发生的事情:
在这些交换结束时,攻击者在服务器上使用客户端的凭据进行身份验证。
2.4 Net-NTLMv1 and Net-NTLMv2
攻击者在 type 3 中转发的这个有效响应,通常称为 Net-NTLMv1 Hash 或 Net-NTLMv2 Hash。 但在本文中,它将被称为 NTLMv1 响应
或 NTLMv2 响应
,如前文所述。
确切地说,这并不是 Challenge 的加密版本,而是使用客户端密钥计算出的哈希值。 以 NTLMv2 为例, NTLMv2 Hash = HMAC-MD5(unicode(hex(upper(username+domain))), NT Hash)
,这种类型的哈希只能用暴力破解。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论