绕过OWA和Office365门户的双因素认证技术分析

本文详细分析了通过Exchange Web Services(EWS)协议绕过Microsoft Outlook Web Access和Office365双因素认证的技术细节,包括攻击原理、测试方法和防护建议,揭示了认证协议覆盖不全的安全风险。

绕过OWA和Office365门户的双因素认证

作者:Beau Bullock
外部/内部红队

公告:本文中提到的技术和工具可能已过时,不适用于当前情况。然而,这篇博客仍可作为学习机会,并可能更新或集成到现代工具和技术中。

完全披露:Black Hills Information Security 支持负责任的漏洞披露。此漏洞已于2016年9月28日报告给Microsoft。截至本文发布日(2016年11月2日),Microsoft除表示无更新外未作出任何回应。完整的披露时间线可在博客文章末尾部分找到。

更新(2016年11月2日MST下午3点):本文演示了针对Microsoft Outlook Web Access的双因素认证绕过技术,其中第三方2FA供应商为DUO Security。需要说明的是,这不是DUO Security产品的漏洞,而是Microsoft Exchange服务器在暴露Exchange Web Services接口时未受2FA保护的问题,与OWA并列。

更新(2016年11月4日EST上午11:15):BHIS重新测试了本文中针对Office365多因素认证的绕过部分,发现确实无法工作。一些人指出,当用户完全启用MFA时,通过EWS连接会收到401未授权错误消息。在针对初始测试用户测试O365上的EWS时,现在使用密码认证会产生相同的401错误结果。BHIS认为先前的结果是由于Office365 MFA在最近为用户启用后拒绝访问Exchange Web Services的延迟所致。演示视频已在此处发布:https://youtu.be/Bb_T3ILfllU

此外,关于Exchange各种协议的详细文章已在此处汇总:http://exchangeserverpro.com/exchange-web-services-bypass-multi-factor-authentication/


原文发布:在DerbyCon 6.0上,我发布了一个名为MailSniper的工具,用于在Microsoft Exchange环境中搜索邮箱中的敏感数据。MailSniper在连接到Exchange服务器时利用Exchange Web Services(EWS)从用户收件箱中检索消息。EWS是Exchange服务器上启用的基于Web的API,Microsoft建议客户在开发需要与Exchange交互的客户端应用程序时使用此API。该API允许应用程序与用户邮箱中的电子邮件、联系人、日历等进行交互。

在DerbyCon期间,我参加了Nick Landers的演讲“坏人的Outlook和Exchange”。这是一个很棒的演讲,我强烈推荐大家观看。在演讲中,Nick收到了观众关于双因素认证(2FA)是否会阻止他提到的攻击的问题。Nick的回答让我觉得非常有趣。他说:“我看到一些组织在OWA上锁定了2FA。所以当你访问Outlook Web Access时,你必须提供令牌才能完成登录。这不会阻止很多这些攻击,因为双因素认证不适用于EWS或Autodiscover页面上的NTLM认证。”

我心想,如果OWA上的2FA不适用于EWS,那么应该可以使用MailSniper通过EWS读取电子邮件,完全绕过2FA安全控制。

为了测试这个理论,我设置了一个面向互联网的Outlook Web Access门户,并在其上安装了一个流行的2FA软件(DUO for Outlook)。我在手机上设置了DUO移动应用程序,并使用名为“vladi@eldershogun.com”的测试用户帐户登录了我们的OWA门户。

标准OWA登录页面

将DUO与手机同步后,我现在可以在登录时接收推送通知,以在认证过程中确认我的第二因素。在此步骤中,如果我是远程攻击者并且没有将手机与DUO 2FA软件同步,我将无法进一步登录OWA门户。

DUO 2FA屏幕

之前,MailSniper仅设置为在内部域中工作。我稍微修改了代码,添加了一个“-Remote”开关,允许Invoke-SelfSearch函数在互联网上远程工作。要远程访问邮箱,需要几件事。首先,需要找到目标组织的外部电子邮件服务器。在许多情况下,可以通过Autodiscover或暴力破解子域(如mail.domain.com、owa.domain.com、webmail.domain.com等)来发现这些服务器。邮件服务器需要使用“-ExchHostname”选项指定。如果未指定“-ExchHostname”选项,Invoke-SelfSearch将尝试自动发现邮件服务器。其次,必须收集有效的用户凭据。有关远程执行此操作的一些想法,请参阅此博客文章。

一旦获得Exchange服务器主机名和目标用户的凭据,可以使用以下命令通过互联网远程搜索Exchange邮箱:

1
Invoke-SelfSearch -Mailbox email@domain.com -ExchHostname mail.domain.com -Remote

运行此命令后,将弹出一个凭据框,要求输入目标用户的凭据。根据组织设置内部用户主体名称(UPN)的方式,可以在用户名框中输入目标用户的电子邮件地址或域\用户名。

输入凭据后,MailSniper将尝试连接到EWS URL(https://mail.domain.com/EWS/Exchange.asmx)并搜索用户收件箱中的关键词(默认为“pass”、“creds”和“credentials”)。

我针对设置了DUO 2FA保护的帐户测试了此功能。MailSniper能够成功读取和搜索此帐户的电子邮件,完全绕过了双因素保护。

为了进一步验证这不仅仅是DUO 2FA软件的问题,BHIS设置了一个Office365实例,并利用Microsoft自己的Azure多因素认证(MFA)来保护用户帐户免受访问Office365的“Outlook邮件”部分。

为了演示这一点,我首先在标准Office365登录门户登录了我的测试用户帐户。

输入正确密码后,需要额外的Microsoft Azure多因素认证部分。在这种情况下,我让它发送短信给我以传递验证码。

输入MFA验证码后,测试用户现在可以访问Outlook.Office.com的收件箱。

使用先前描述的绕过2FA的方法,仍然可以通过Exchange Web Services读取 allegedly受保护帐户的电子邮件。通过将MailSniper定向到outlook.office365.com作为ExchHostname,仍然可以访问目标用户的邮箱,绕过双因素保护。

演示视频

建议

我希望修复此问题的简单答案是禁用Exchange Web Services,但这可能会破坏许多东西。例如,据我所知,Outlook for Mac专门使用Exchange Web Services连接到Exchange。因此,如果您的环境中有Mac,禁用EWS可能不是选项。同样适用于任何使用它的自定义应用程序。因此,短期内应将OWA锁定为仅从内部网络访问,并要求用户通过VPN访问。似乎可以手动为特定用户帐户甚至整个组织锁定Exchange Web Services。但请记住,任何使用利用Exchange Web Services连接到Exchange的应用程序的用户可能会遇到问题。

结论

总之,似乎受双因素认证保护的Outlook门户可能未覆盖Microsoft Exchange的所有认证协议。在本文中,演示了Exchange Web Services未受流行双因素认证软件的保护,并且在仅获取用户登录凭据后仍然可以读取其电子邮件。Exchange还有其他可能具有类似问题的服务,例如MAPI over HTTP和Autodiscover。我测试了一个第三方2FA软件和Microsoft自己的Azure多因素认证,但我想其他软件可能也有同样的问题。

披露时间线

  • 2016年9月28日东部时间下午1:51 – 通过secure@microsoft.com向Microsoft报告
  • 2016年9月28日东部时间下午10:01 – 收到Microsoft的确认电子邮件,表示他们已将报告转发给分析师
  • 2016年10月3日东部时间上午11:15 – 发送跟进电子邮件请求状态
  • 2016年10月3日东部时间下午7:41 – 收到电子邮件表示已开案
  • 2016年10月11日东部时间上午8:55 – 发送跟进电子邮件请求状态
  • 2016年10月11日东部时间下午4:07 – 收到电子邮件表示仍在等待产品团队审查问题
  • 2016年10月21日东部时间下午3:37 – 发送跟进电子邮件请求状态
  • 2016年10月24日东部时间下午4:46 – 收到电子邮件表示仍无更新
  • 2016年11月2日 – 在Black Hills Information Security博客上公开披露
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计