
Uma ferramenta de relay NTLM para o endpoint EWS para servidores Exchange on-premise. Fornece uma OWA para hackers.
Versão 1.0.0. Esta ferramenta é uma PoC para demonstrar a capacidade de um atacante realizar um ataque de retransmissão NTLM baseado em SMB ou HTTP ao endpoint EWS em um servidor Microsoft Exchange local para comprometer a caixa de correio da vítima. Esta ferramenta fornece ao atacante uma interface com aparência de OWA, com acesso à caixa de correio e contatos do usuário.
Lançado no Defcon26. Veja o contexto sobre a ferramenta, os principais problemas explorados e uma demonstração gravada aqui: https://blog.quickbreach.io/one-click-to-owa/
pip install -r requirements.txt
./exchangeRelayx.py -t https://mail.quickbreach.com
A aplicação se divide no owaServer, nos servidores de retransmissão e no cliente HTTPAttack (exchangePlugin) que é criado para cada nova conexão retransmitida.
O owaServer é um servidor web baseado em Flask que escuta em http://127.0.0.1:8000 por padrão. Este servidor web serve arquivos HTML estáticos de index.html, OWA.html e ComposeEmail.html – e todo o restante é carregado a partir de requisições JSON (de EWS.js) para os endpoints do owaServer. Quando uma requisição é feita ao owaServer, o owaServer gera a chamada EWS apropriada e a insere no dicionário de memória compartilhada que é usado tanto pelo owaServer quanto pelo exchangePlugin. Assim que o exchangePlugin recebe a requisição, ele a envia para o Exchange e então carrega a resposta no mesmo dicionário de memória compartilhada. Finalmente, quando o owaServer obtém a resposta do dicionário, ele analisa os dados e retorna os resultados. Você notará que a funcionalidade de download de arquivos não é a de um site padrão, e isso se deve à natureza assíncrona do aplicativo.
Os servidores de retransmissão são servidores de retransmissão NTLM padrão baseados em HTTP e SMB do impacket, e eles criarão uma nova instância do exchangePlugin para cada conexão retransmitida recém-estabelecida.
O exchangePlugin é, em resumo, o HTTPClient real que faz e recebe as requisições do servidor EWS. Todos os exchangePlugins recebem o mesmo dicionário de memória compartilhada na inicialização e o utilizam para comunicação entre processos. Isso permite que as requisições do owaServer sejam passadas de volta para a conexão retransmitida do usuário apropriado – o que oferece mais flexibilidade para o gerenciamento de múltiplas vítimas.
Esta ferramenta foi construída e testada contra Exchange 2013 em um sistema Server 2012 R2, então eu apostaria que ajustes precisarão ser feitos para outros ambientes. Alguns objetivos para as próximas iterações da ferramenta são:
Pull requests são muito apreciados