在企业组织中的常见的一种安全风险是凭证重用,当攻击者攻击 NT LAN Manager 身份验证协议(以下简称 NTLM 身份验证)时就会出现这样的风险,而这个协议通常会在 微软的 活动目录 中默认启用。
NTLM 认证中的不安全性已经被安全研究人员发现超过15年了。该协议可以被滥用,通过一个称为“中继”的过程劫持受害者的会话,该过程通过将受害者的凭证转发到与预期不同的服务来滥用受害者的凭证。在许多情况下,NTLM身份验证仍然受到默认的支持和启用,尽管它已经被更安全的Kerberos取代,成为默认的身份验证方法。
在本博文中,我们将演示如何使用NTLMrelayx将凭证中继到LDAP、IMAP和MSSQL,NTLMrelayx是著名的smbrelayx工具。 为了抵御这种攻击,你可以执行以下措施:
·如果可能,在组织中完全禁用 NTLM 并切换到 Kerberos。
·如果无法禁用 NTLM ,请参考本博客文章中讨论的设置和指导原则章节,奇热以降低凭证重用的风险。
NTLM 中继攻击解释
NTLM 认证是一种基于挑战-响应的协议。 挑战-响应协议使用一个共享的秘密(在本例中是用户密码)来验证客户端。 服务器发送一个挑战,客户端回复这个挑战的响应如果挑战与服务器计算的挑战相匹配,则身份验证将被接受。NTLM身份验证是一个复杂的协议,这里对它的解释比较简单。可以在http://davenport.sourceforge.net/ntlm.html 中找到非常详细的描述。
NTLM 身份验证流程
NTLM身份验证协议有三个步骤:
1.协商身份验证:NTLM身份验证的第一步是协议的协商,以及客户端支持哪些特性。在此阶段,客户端向服务器发送身份验证请求,包括客户端接受的NTLM版本。
2.服务器挑战:服务器用自己的消息进行响应,表明它接受哪个NTLM版本,以及它想使用哪个特性。此消息还包含一个“挑战”值,这在身份验证中非常重要。
3.身份验证响应:客户端根据挑战发送回响应,并包含密码所属的用户名和域。
在交换了这3条消息之后,服务器将返回一条消息,表明身份验证成功,或者身份验证失败。根据使用的协议,客户端与服务器之间的会话现在经过了身份验证。这个过程如下图所示:
滥用 NTLM
作为攻击者,如果能够说服