http://p9.qhimg.com/t0159c292313b979545.jpg


前言


全面公布:BLACK HILLS信息安全非常赞成负责任地公布漏洞。2016年9月28日我向微软报告了这个漏洞,可一直到这篇文章发布(2016.11.2)期间,微软对于此漏洞始终没有任何的反应,除了这句"目前还未有进展"。漏洞发布整个过程的时间表,可以在文章末看到。


漏洞分析


美国时间下午3点更新:这篇文章讲述了如何绕过微软网页版Outlook的双因子认证(它由第三方DUO Security公司提供)。首先说明一点:这次的漏洞不是DUO Security公司的产品引起的。而是由于双因子认证没有起到对微软的Exchange服务器的保护作用,进而导致Exchange服务器的Web接口暴露。

在第六届的DerbyCon会议上,我公开了一个叫做MailSniper的工具,它可以用来爬取微软的Exchange服务器上有关邮箱的敏感信息。MailSniper的工作原理是当连接到Exchange Web serveices(EWS)服务器上的时候,会尝试获取用户的收件箱。EWS是一个Web接口,当用户在部署客户端的时候,微软建议使用EWS来和Exchange服务器交互。当使用EWS之后,应用就可以从用户的收件箱获取的邮箱信息,联系人,日历等。

在DerbyCon的会议上,我听了Nick Landers的对于Hacker,Outlook和Exchange可以做什么的演讲。这是一个超级棒的演讲,并且我推荐你去听一下。在他的演讲中,Nick收到一个观众的提问:双因子验证(2FA)是否就可以防止黑客攻击?Nick由此讲述了一个非常有趣的观点,他说:“我曾经看到过某些公司在OWA(Outlook网页版)上关闭了双因子验证,所以在OWA上面登录的时候,你必须提供一个令牌。但是这样就有被攻击的危险:因为双因子验证实际并没有起到应有的作用。

所以我猜想如果EWS没有使用双因子验证,那么利用它,使用MailSniper就有可能读取到用户的邮件,完全绕过双因子安全验证。

我来验证这个想法,我设置了网页登录OWA,并且安装了DUO security公司的双因子验证软件--Duo for Outlook。我在手机上设置了DUO的移动应用,并且登录OWA使用测试用户账户"vladi@eldershogun.com"。

http://p4.qhimg.com/t018c47c0e5e1762d11.png

在使用我的手机同步了DUO之后,如果我登录账户认证,我的手机就可以收到的确认通知。这一步完成之后,如果我是黑客,同时没有手机同步DUO软件的双因子验证,在登录OWA之后我就不可能有其他进展了。

http://p0.qhimg.com/t01a6ec45d76bd3fad4.png

在此之前,MailSniper只有在设置了主机域名之后才可以工作。我修改了部分代码,添加了"-Remote"选项,这样Invoke-Selfsearch函数就可以远程工作。另外还需要修改才可以获取收件箱。首先,需要确定公司使用的外部邮箱服务器。一般情况来说,可以使用Autodiscover搜索,或者爆破子域名比如:mail.domain.com,owa.domain.com,webmail.domain.com等。邮箱服务器需要使用'-ExechHostname'参数来指定。如果这个参数没有指定,Invoke-selfSearch就会自动尝试获取邮箱服务器。其次,用户的密码凭证需要先收集起来。更多需要注意的地方可以看这篇博客。

一旦Exchange服务器和用户的密码凭证收集之后,下面的命令可以用来在网络上寻找邮箱。

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

http://p4.qhimg.com/t0174bf4e04670d2929.png

上面的命令运行之后,授权凭证窗口就会出现,要求输入目标用户的登陆凭证。这里是输入内部邮箱地址还是输入域帐号取决于该组织的设定。

在用户凭证输入之后,MailSniper会尝试连接EWS的这个URL:https://mail.domain.com/EWS/Exchange.asmx。并且在用户的收件箱搜索相关关键词内容(默认是密码,凭证,证书)。

我使用这种方法在设置了DUO双因子验证的账户上尝试攻击。MailSniper可以成功绕过双因子验证并且搜索到相关邮件。

http://p6.qhimg.com/t01a15c17867c59af6c.png

为了更深入证明这个不是DUO双因子验证的问题,BHIS公司设置了Office365并且利用微软自己的工具Azure Multi-Factor Autoentication(MFA)来保护用户从Office365登录到Outlook邮箱。

演示如下:我首先在网页端登录到测试用户的Office 365账户。

http://p9.qhimg.com/t01e7969ed00899f93c.png

在输入了正确的账户密码之后,微软的MFA验证是必须的。在这种情况下,我让他给我的手机发送一条短信验证码。

http://p8.qhimg.com/t01d4d021116eb0b15b.png

在MFA确认了验证码之后,测试用户账户可以查看Outlook.Office.com上面的收件箱。

http://p3.qhimg.com/t01fc3636b69441415d.png

使用先前描述的方法使用EWS绕过双因子验证仍然有效。在MailSniper验证了outlook.office365.com密码之后,攻击者仍然可以绕过双因子验证来读取用户的收件箱。

http://p3.qhimg.com/t0144f8601130249a9a.png


演示视频



建议


我想最简单的解决方法就是废掉Exchange Web Services, 但这也会毁掉很多东西。比如,Mac上的Outlook只能通过Exchange Web Service连接到Exchange,这种情况废掉EWS可能不是一个好办法。任何客户端APP利用EWS也是这样的情况。所以,短期来讲,限定OWA只能从内网访问,同时允许用户VPN访问。对于某个用户帐户或整个团体手动限定EWS是可能的。但是,要记得任何使用app的用户,通过EWS连接到Exchange的可能会连接失败。


结论


总之,Outlook网页登录的双因子认证对于微软的Exchange来说,完全覆盖使用到其他认证协议是有点困难。在这篇文章中,已经证明了EWS服务并没有被双因子验证所保护。并且只需要知道用户的登录凭证就可以读取到用户的收件箱。Exchange的其他服务,比如使用HTTP传输的MAPI,或者自动扫描发现。我再次测试了第三方的双因子登录验证软件和微软的AWS,并且我猜想其他也会存在相同的问题。

漏洞发布时间表


2016.9.28 东部时间下午1:51 –通过secure@microsoft.com,向微软报告了此漏洞。

2016.9.28 东部时间下午10:01 – 收到微软回复,他们已将此问题反馈给相关人员分析。

“ 你好,

非常感谢您及时通知MSRC,我已将您的报告反馈给相关人员分析,会及时向您回复分析结果。

谢谢!

MSRC   

2016.10.3 东部时间上午11:15 – 发邮件询问进展

2016.10.3 东部时间下午7:41 – 收到回复,他们已经开始审理此问题。

“非常感谢您的报告。

我已建立了案例35494,REDACTED是负责人,如有问题,您可以联系他。

同时,我们希望您能遵守我们的漏洞公布指引,不要将此漏洞向公众公布,直到用户可以保护他们的信息为止。

您可以在http://www.microsoft.com/technet/security/bulletin/policy.mspx浏览我们的公告确认政策,在http://www.microsoft.com/security/msrc/default.mspx查看我们的一般法律法规。

如果您在任何时间有任何问题或进一步的信息,请回复邮件。

谢谢

MSRC

2016.10.11 东部时间上午8:55 --发邮件询问进展

2016.10.11 东部时间下午 4:07 – 收到回复,正在等待产品团队审核。

“您好:
      我们还在等待产品团队审核,如果有进一步的信息,我会及时通知您。

谢谢

MSRC

2016.10.21 东部时间下午3:37 --发邮件询问进展

2016.10.24 东部时间下午4:46 – 收到回复无进展

“您好:
      现在还没有任何进展,如果有进一步的信息,我会及时通知您。 

谢谢

MSRC

2016.11.2 – 在Black Hills 信息安全处,公开此漏洞。



本文由 安全客 翻译,作者sinensis
原文链接:http://www.blackhillsinfosec.com/?p=5396