文章前言
本篇文章我们主要介绍MailSniper的几个模块(Get-GlobalAddressList、Invoke-PasswordSprayOWA、Invoke-PasswordSprayEWS)在渗透中的应用
项目介绍
https://github.com/dafthack/MailSniper
项目使用
在外网渗透测试中我们经常会优先执行一个侦察踩点,在这个阶段我们可能会获得某一个组织的一些电子邮件或用户名,如果我们可以成功找到其中的任何一个有效的凭证并且该组织有Outlook Web Access或Exchange Web服务门户,那么此时的我们可以从Exchange服务器上下载整个全球通讯薄
Get-GlobalAddressList
Brian Fehrman在OWA发现了一些非常有趣的东西,其中一个名为FindPeople的函数允许你通过一个请求就可以取回整个GAL,遗憾的是该功能仅在Exchange 2013版中实现,在测试中利用FindPeople函数的Get-GlobalAddressList能够在10秒钟内从远程OWA门户获取4282个电子邮件地址,且OWA的"FindPeople"方法要求您使用PowerShell Version 3或更高版本,对于Exchange版本低于2013的情况,Get-GlobalAddressList会回退到从Exchange Web服务枚举GAL,由于EWS一次只允许你搜索100个结果,这种方法可能会花费更长的时间,为了绕过这个限制,我基本上通过ZZ搜索AA,然后对结果进行sort/uniq,如果要使用它,只需要将模块导入到PowerShell Version3会话中,然后运行如下内容:
代码语言:javascript复制Get-GlobalAddressList -ExchHostname mail.domain.com -UserName domainusername -Password Fall2016 -OutFile global-address-list.txt
在Exchange版本2013中运行以上命令会看到以下结果,在获得完整的电子邮件列表后您可以再进行给密码喷洒攻击从而获得更多有效的凭据
Invoke-PasswordSprayOWA
密码喷射是一种攻击,它不是对单个用户帐户进行多次密码尝试,而是对多个用户帐户尝试一个密码,这有助于避免帐户锁定并且仍然会导致我们获得有效的凭据,因为用户仍然会选择像"Fall2016"这样的密码,在使用脚本时我们只需传递-Threads选项并指定线程数量(15似乎是一个不错的起点)即可
代码语言:javascript复制Invoke-PasswordSprayOWA -ExchHostname mail.domain.com -UserList .userlist.txt -Password Fall2016 -Threads 15 -OutFile owa-sprayed-creds.txt
Invoke-PasswordSprayEWS
Invoke-PasswordSprayEWS与上面类似:
代码语言:javascript复制Invoke-PasswordSprayEWS -ExchHostname mail.domain.com -UserList .userlist.txt -Password Fall2016 -Threads 15 -OutFile ews-sprayed-creds.txt
在上面的测试中,我注意到EWS密码喷涂方法明显更快,Invoke-PasswordSprayOWA和使用15个线程的Burp Intruder都用了大约1小时45分钟来完成对10,000个用户的喷涂,而向EWS喷洒同样的用户名单只用了9分28秒