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

本文详细分析了如何通过Exchange Web Services(EWS)绕过Microsoft Outlook Web Access和Office365的双因素认证保护,展示了具体的技术实现方法和测试过程,并提供了防护建议。

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

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

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

完全披露: Black Hills Information Security 相信负责任的漏洞披露。该漏洞于2016年9月28日向微软报告。截至本文发布日期(2016年11月2日),微软除表示没有更新外,未提供任何更新。完整的披露时间线可在博客文章末尾部分找到。

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

更新(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,微软建议客户在开发需要与Exchange接口的客户端应用程序时使用此API。该API允许应用程序与用户邮箱中的电子邮件、联系人、日历等进行交互。

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

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

为了测试这个理论,我设置了一个面向互联网的Outlook Web Access门户,并在其上安装了一个流行的2FA软件(DUO for Outlook)。我在手机上设置了DUO移动应用程序,并使用名为‘[email protected]’的测试用户帐户登录到我们的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 protected] -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实例,并利用微软自己的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软件和微软自己的Azure多因素认证,但我想其他软件可能也有同样的问题。

披露时间线

  • 2016年9月28日东部时间下午1:51 – 通过[email protected]向微软报告
  • 2016年9月28日东部时间晚上10:01 – 收到微软的确认电子邮件,表示他们已将报告转发给分析师
  • 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 设计