如何滥用 Exchange Web Service API?
诗诗 2018-03-14 来源 :网络 阅读 1659 评论 0

摘要:本文讲的是如何滥用 Exchange Web Service API?,一直以来,Outlook Web Access (OWA) 一直是一个为渗透测试人员产生攻击向量的源头。最常见的就是攻击者利用针对暴露在互联网的 OWA 网站进行爆破,以便能获取到有效的登录凭证。

摘要: 本文讲的是如何滥用 Exchange Web Service API?,一直以来,Outlook Web Access (OWA) 一直是一个为渗透测试人员产生攻击向量的源头。最常见的就是攻击者利用针对暴露在互联网的 OWA 网站进行爆破,以便能获取到有效的登录凭证。

 

0x00 前言

一直以来,Outlook Web Access (OWA) 一直是一个为渗透测试人员产生攻击向量的源头。最常见的就是攻击者利用针对暴露在互联网的 OWA 网站进行爆破,以便能获取到有效的登录凭证。一旦攻击者获得了有效的登录凭证,他就可以通过一些使用单因子进行身份验证的网站访问目标的网络,例如,(Citrix, VPN, RDP)等。
在使用多个爆破工具之后,我发现有很多不足的地方,因此我决定编写我自己的 OWA 爆破工具。我发现很多已安装的 Exchange 通过 Exchange Web Service (EWS) 提供了一个 API 并且编写了一系列高级的模块。


0x01 编写自己的 OWA 爆破工具

EWS 是一个暴露出来的非常方便的 API,其可以允许编程式的访问他人的邮箱以及一些 Exchange 的功能。在利用这些模块之前,你必须安装 Exchange Web Service 的 API 。安装之后,可以从这拷贝一份 OWA-Toolkit 。之后将这些模块导入,如下:

Import-module C:pathtoOWA-Toolkit.psm1

导入模块之后你可以看到它所包含的 PS cmdlets,如下:

 

获取 OWA 版本的方法说明:

此函数用于获取目标 Exchange 服务器上运行的 Exchange 版本,访问 http(s)://目标地址/owa/auth/logon.aspx,在响应头里的 X-OWA-VERSION 的值就是 Exchange 的版本号。常见的值有 OWA2007,OWA2010。
针对 OWA 2013 版此方法无效,不过可以在响应的 body 中查找 owa/auth/15. 或 owa/15. 关键字,这些关键字是 OWA 2013 版的标志。

在使用 OWA-Toolkit 时,如果出现如下错误提示,

"You need to install the Exchange Web Service API or check your Microsoft.Exchange.WebServices.dll path"

请修改 dll 文件路径进行尝试。

$dllPath = "C:Program Files (x86)MicrosoftExchangeWeb Services2.1Microsoft.Exchange.WebServices.dll"

如果你想使用用户的 ID 或者是完整的emial地址来进行爆破的话,需要准备一个目标的列表。这个列表是一个一行一条数据的 txt 文件。之后你就可以调用 Brute-EWS 进行爆破。可以使用 -Domain 参数指定要爆破的域名,如下:

Brute-EWS -TargetList .userids.txt -ExchangeVersion 2007_SP1 -ewsPath "https://webmail.yourdomain.com/EWS/Exchange.asmx" -Password "omg123" -Domain "yourdomain.com"

可以使用 UserAsPass 参数尝试使用用户名作为密码进行身份验证,一旦爆破出了有效的凭证,此凭证会加入到全局地址列表(GAL)以便进行其他一些爆破尝试或者是社工。当我使用 Burp 作为代理对所有邮箱地址进行爆破时,这个过程有点痛苦。因此,我决定利用 EWS 编写一个可以获取 GAL 的脚本。使用 Steal-GAL 这个cmdlet 就可以调用,如下:

Steal-GAL -Password "littlejohnny" -User "dbetty" -domain "yourdomain.com" -ExchangeVersion 2007_SP1

你也可以使用管道符将一个 Exchange Web Service对象传递给这个 cmdlet ,如下:

OTK-Init -Password "littlejohnny" -User "dbetty" -Domain "yourdomain.com" -ExchangeVersion 2007_SP1 | Steal-GAL

同样可以使用管道符将输出定向到一个输出方法中,最简单的方式是在命令中添加 "| export-csv -Path .gal.csv"。


0x02 Exchange Web Service API 介绍

EWS 的全称是 Microsoft Exchange Web service, 它是 Exchange 2007 以后推出的一个基于SOAP (Simple Object Access Protocol) 协议的 web service, 提供了访问 Exchange 资源的接口。微软的 Exchange 团队后续又推出了 Microsoft Exchange Web Service(EWS) Managed API。这个全新的接口提供了很多操作邮箱的功能。

在安装了 Microsoft Exchange Web Service(EWS) Managed API 之后,打开安装目录。如下图:

 

可以看到下面有一个 GettingStarted.doc, 此说明文档介绍了有关于 Exchange Web Service(EWS) Managed 的常用操作,并给出了代码示例,建议阅读英文版的说明文档,有更详细的说明。

编写工具注意事项

此 API 是基于 .NET Framework 开发的,所以除了可以使用 PowerShell 直接调用也可以使用 C# 编写自己的 OWA 利用工具。在需有使用这个 API 的项目中添加 Microsoft.Exchange.WebServices.dll 引用, 然后使用Microsoft.Exchange.WebServices.Data 这个命名空间。
在这个命名空间里提供了数十个操作邮箱的方法,如,邮箱登录,邮件获取,邮件收发等等。如下图:

 

具体每一个方法的使用实例代码可以参考微软官方的说明。
另外,Microsoft Exchange Web Service(EWS) Managed API 有 32 位和 64 位的版本,在安装时要注意安装的路径,如果你安装的是 EWS API 2.0,需要设置工程属性的 .NET Framework 版本为 .NET Framework 4。EWS API 的其他版本可能需要使用不同版本的.NET Framework。

希望这篇文章可以帮助到你。总之,同学们,你想要的职坐标IT频道都能找到!

 


本文由 @诗诗 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved