利用MailSniper攻击Exchange
Beau Bullock //
我在MailSniper中添加了几个模块,以协助对托管面向外部Exchange服务器(OWA或EWS)的组织进行远程攻击。具体来说,这些模块是Get-GlobalAddressList、Invoke-PasswordSprayOWA和Invoke-PasswordSprayEWS。
Get-GlobalAddressList
在外部渗透测试中,我们经常执行侦察阶段,可能会获取到组织的某些电子邮件地址或用户名。如果我们能成功找到其中任何一个的有效凭证,并且组织有Outlook Web Access或Exchange Web Services门户,就可以从Exchange服务器下载整个全局地址列表(GAL)。因此,从一个有效凭证开始,我们现在可以访问组织中每个员工的所有电子邮件地址。
为了改进Carrie Roberts在其博客文章中关于手动从OWA收集全局地址列表的方法,我将此任务自动化到MailSniper中。Brian Fehrman在OWA中发现了一个非常有趣的功能:有一个名为FindPeople的函数,允许您通过单个请求拉取整个GAL。不幸的是,此功能仅在Exchange 2013版本中实现。在测试中,利用FindPeople函数的Get-GlobalAddressList能够在10秒内从远程OWA门户拉取4282个电子邮件地址。
OWA“FindPeople”方法要求您使用PowerShell版本3或更高版本。
对于Exchange版本低于2013的情况,Get-GlobalAddressList会回退到从Exchange Web Services枚举GAL。由于EWS每次只允许搜索100个结果,这种方法可能需要更长时间。为了绕过此限制,我基本上搜索AA到ZZ,然后对结果进行排序和去重。
要使用它,请将模块导入PowerShell版本3会话,然后运行类似以下命令:
|
|
如果Exchange版本是2013,它应该看起来像这样:
[图像描述:成功提取GAL的终端输出]
获取完整电子邮件列表后,您可以将其反馈到密码喷洒攻击中,很可能会获得更多有效凭证。
说到密码喷洒…
Invoke-PasswordSprayOWA & Invoke-PasswordSprayEWS
我为MailSniper编写了两个模块,用于对Outlook Web Access和Exchange Web Services进行密码喷洒。密码喷洒是一种攻击,其中我们不是尝试对单个用户帐户进行多次密码暴力破解,而是尝试一个密码 across 多个用户帐户。这有助于避免帐户锁定,并且仍然会导致我们获得有效凭证,因为用户仍然选择像“Fall2016”这样的密码。两个函数都是多线程的。只需传递-Threads选项并指定线程数(15似乎是一个很好的起点)。
两个函数具有类似的结构,但需要注意的是,Invoke-PasswordSprayOWA需要PowerShell版本3或更高版本。
要使用Invoke-PasswordSprayOWA,请将模块导入PowerShell版本3会话,然后运行类似以下命令:
|
|
要使用Invoke-PasswordSprayEWS,请将模块导入PowerShell会话,然后运行类似以下命令:
|
|
当MailSniper找到有效凭证时,您应该开始在终端中看到凭证填充:
[图像描述:密码喷洒成功的终端输出]
在测试中,我注意到EWS密码喷洒方法明显更快。Invoke-PasswordSprayOWA和使用Burp Intruder(15个线程)喷洒10,000个用户大约需要1小时45分钟。而对EWS喷洒相同的用户列表仅用了9分钟28秒。
有关MailSniper的更多信息,请查看此博客文章。