
Uno strumento di relay NTLM verso l'endpoint EWS per server Exchange on-premise. Fornisce un OWA per gli hacker.
Versione 1.0.0. Questo strumento è un PoC per dimostrare la capacità di un attaccante di effettuare un attacco di relay NTLM basato su SMB o HTTP verso l'endpoint EWS su un server Microsoft Exchange on-premise per compromettere la cassetta postale della vittima. Questo strumento fornisce all'attaccante un'interfaccia simile a OWA, con accesso alla cassetta postale e ai contatti dell'utente.
Pubblicato al Defcon26. Visualizza il contesto dello strumento, i problemi principali sfruttati e una demo registrata qui: https://blog.quickbreach.io/one-click-to-owa/
pip install -r requirements.txt
./exchangeRelayx.py -t https://mail.quickbreach.com
L'applicazione si suddivide in owaServer, i server relay e il client HTTPAttack (exchangePlugin) che viene creato per ogni nuova connessione inoltrata.
owaServer è un server web basato su Flask che ascolta su http://127.0.0.1:8000 di default. Questo server web serve file HTML statici di index.html, OWA.html e ComposeEmail.html - e tutto il resto viene caricato da richieste JSON (da EWS.js) agli endpoint di owaServer. Quando viene effettuata una richiesta a owaServer, owaServer genera la chiamata EWS appropriata e la inserisce nel dizionario di memoria condivisa utilizzato sia da owaServer che da exchangePlugin. Una volta che exchangePlugin riceve la richiesta, la invia a Exchange e quindi carica la risposta nello stesso dizionario di memoria condivisa. Infine, quando owaServer riceve la risposta dal dizionario, analizza i dati e restituisce i risultati. Noterai che la funzionalità di download dei file non è quella di un sito web standard, a causa della natura asincrona dell'app.
I server relay sono server relay NTLM standard basati su HTTP e SMB di impacket e creeranno una nuova istanza exchangePlugin per ogni connessione inoltrata.
exchangePlugin è, in sostanza, il vero HTTPClient che effettua e riceve le richieste dal server EWS. A tutti gli exchangePlugin viene passato lo stesso dizionario di memoria condivisa all'inizializzazione, e lo utilizzano per la comunicazione tra processi. Ciò consente di passare le richieste da owaServer alla connessione inoltrata dell'utente appropriato - offrendo maggiore flessibilità per la gestione di più vittime.
Questo strumento è stato costruito e testato su Exchange 2013 su un sistema Server 2012 R2, quindi scommetto che saranno necessari aggiustamenti per altri ambienti. Alcuni obiettivi per le prossime iterazioni dello strumento sono:
Le pull request sono molto apprezzate