
Una herramienta de retransmisión NTLM hacia el endpoint EWS para servidores Exchange locales. Proporciona un OWA para hackers.
Versión 1.0.0. Esta herramienta es una PoC para demostrar la capacidad de un atacante de realizar un ataque de relay NTLM basado en SMB o HTTP al endpoint EWS en un servidor Microsoft Exchange local para comprometer el buzón de la víctima. Esta herramienta proporciona al atacante una interfaz similar a OWA, con acceso al buzón y contactos del usuario.
Publicado en Defcon26. Vea los antecedentes de la herramienta, los problemas centrales que se explotan y una demo grabada aquí: https://blog.quickbreach.io/one-click-to-owa/
pip install -r requirements.txt
./exchangeRelayx.py -t https://mail.quickbreach.com
La aplicación se divide en owaServer, los servidores relay y el cliente HTTPAttack (exchangePlugin) que se crea para cada nueva conexión retransmitida.
owaServer es un servidor web basado en Flask que escucha en http://127.0.0.1:8000 por defecto. Este servidor web sirve archivos HTML estáticos de index.html, OWA.html y ComposeEmail.html, y todo lo demás se carga a partir de solicitudes JSON (desde EWS.js) a los endpoints de owaServer. Cuando se realiza una solicitud a owaServer, este genera la llamada EWS correspondiente y la introduce en el diccionario de memoria compartida que utilizan tanto owaServer como exchangePlugin. Una vez que exchangePlugin recibe la solicitud, la envía a Exchange y luego carga la respuesta en el mismo diccionario de memoria compartida. Finalmente, cuando owaServer obtiene la respuesta del diccionario, analiza los datos y devuelve los resultados. Notará que la funcionalidad de descarga de archivos no es la de un sitio web estándar, debido a la naturaleza asíncrona de la aplicación.
Los servidores relay son servidores relay NTLM estándar de impacket basados en HTTP y SMB, y crearán una nueva instancia de exchangePlugin por cada conexión retransmitida.
exchangePlugin es, en resumen, el HTTPClient real que realiza y recibe las solicitudes del servidor EWS. Todos los exchangePlugin reciben el mismo diccionario de memoria compartida al inicializarse, y lo utilizan para la comunicación entre procesos. Esto permite que las solicitudes de owaServer se devuelvan a la conexión retransmitida del usuario correspondiente, lo que brinda más flexibilidad para la gestión de múltiples víctimas.
Esta herramienta se creó y probó contra Exchange 2013 en un sistema Server 2012 R2, por lo que apostaría a que será necesario realizar ajustes para otros entornos. Algunos objetivos para las próximas iteraciones de la herramienta son:
Las solicitudes de extracción son muy apreciadas