Outlook Exploiting – CVE-2023-23397

A cura di: Manuel Roccon (Team Hackerhood)

Dal mese di aprile 2022, una vulnerabilità di sicurezza presente in #Outlook è stata sfruttata da gruppi criminali per lanciare attacchi nei confronti di aziende ed enti pubblici europei (agenzie governative, militari, energetiche e dei trasporti).

La falla di sicurezza in questione è abbastanza importante considerando la imponente presenza di #Microsoft nei sistemi aziendali, è contraddistinta dall’identificativo #CVE-2023-23397, è stata finalmente corretta da #Microsoft con il rilascio delle patch di marzo.

#Hackerhood con questo articolo descrive come sfruttare la vulnerabilità CVE-2023-23397 trovata che permette ad un attaccante di risalire alle credenziali cifrate (NTLMv2 o NTLM) di una vittima, ricevendo un appuntamento in #Outlook e invita tutte le aziende a provvedere in tempi brevi alla patch risolutiva.

Preparazione dell’attacco

Innanzi tutto, utilizziamo questa repo per crearci un appuntamento malevolo.

https://github.com/Sicos1977/MsgKit

Faremo leva su 2 parametri che secondo la documentazione Microsoft, possono essere usati da Outlook per impostare la traccia audio dell’avviso, quando in Outlook verrà visualizzata la notifica, impostando un percorso UNC.

https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/pidlidreminderoverride-canonical-property

Questa proprietà controlla quale nome file deve necessariamente essere riprodotto dal client Outlook quando viene attivato il promemoria per l’elemento di posta.

Quello che andremmo a forzare è appunto questa funzionalità, richiedendo ad Outlook di cercare l’audio della notifica in un percorso diverso, in questo caso un percorso SMB di un nostro attaccante.

Per l’occasione andremo a modificare appointment.cs

Adesso Modifichiamo appointmentTest.cs

In questo caso inseriamo un ip locale di una macchina nel nostro laboratorio, in uno scenario reale un attaccante esterno potrebbe inserire un IP di una condivisione SMB pubblica.

A questo punto modifichiamo Program.cs per indurre outlook a generare un msg una volta avviato il progetto.

Ora che abbiamo creato l’appuntamento malevolo, possiamo inviarlo alla vittima oppure per questo esempio lo copierà nel mio outlook.

Importandolo ho la necessità di settare la data odierna e 0 minuti, cosi da invocare un avviso

A questo punto copio la riunione.

Immagine che contiene testo

Descrizione generata automaticamente

Prima di dare conferma avvio il tool responder.

Un responder è un un’applicazione nella mia macchina attaccante che intercetta credenziali in hash che vengono gestite dal sistema operativo e rimarrà in attesa di un eventuale autenticazione su alcune porte prestabilite inclusa quella SMB.

Immagine che contiene diagramma

Descrizione generata automaticamente

A questo punto salvo imprevisti, si aprirà il classico promemoria di avviso (lo stesso che riceveremmo se avessi inviato la mail ad un destinatario).

L’Exploit a questo punto è già stato attivato. Vediamolo in esecuzione…

Intercettazione e Cracking

Verificando il nostro reponder vediamo subito che abbiamo ricevuto una richiesta di autenticazione, conosciamo il nome macchina, il nome utente e la password cifrata NTLMv2.

Immagine che contiene testo

Descrizione generata automaticamente

A questo punto utilizziamo un tool per provare a forzare hash appena ricevuto tramite l’ utilizzo di un dizionario.

Salviamo tutto hash in un file di test.

Immagine che contiene testo

Descrizione generata automaticamente

Avviamo con hashcat il craking della password tramite questo comando:

Immediatamente ci viene restituito un messaggio che la password è stata craccata

Immagine che contiene testo

Descrizione generata automaticamente

In questo caso la password che abbiamo usato è estremamente semplice ma in uno scenario reale potrebbe esserci una password più strong.

Immagine che contiene testo

Descrizione generata automaticamente

Ora l’attaccante potrebbe individuare la mail di Exchange (on prem o in cloud) e provare ad autenticarsi, a patto di non avere attivo MFA (alcune organizzazioni hanno la password in locale sincronizzata con Office 365.)

APPROFONDIMENTO

Precisiamo che hash ricavato è un NTLMv2 è una versione migliorata del precedente NTLM. NTLMv2 include una risposta basata sul tempo, che rende impossibile il semplice attacco pass-the-hash (attacco che ci permette di autenticarsi usando il semplice hash ricevuto).

Situazione ben diversa se avessimo eseguito l’exploit in un’organizzazione, probabilmente per ragioni di compatibilità, sia attivo per default il NTLMv1 o/e LM. In questo caso avremmo ricevuto hash NTLMv1 e potuto utilizzare l’exploit psexec per svolgere il pass-the-hash nell’autenticazione.

Un ulteriore metodo per sfruttare questo hash è l’utilizzare un LDAP Relay. Per entrambi i casi sopra un approfondimento si trova a questo link:

https://www.trustedsec.com/blog/practical-attacks-against-ntlmv1/

https://www.ictsecuritymagazine.com/articoli/attacco-alle-credenziali-degli-utenti-della-lan-llmnr-e-nbt-ns-poisoning-con-responder-e-multirelay/

CONCLUSIONI

Questo esempio ci fa capire che spesso le vulnerabilità ci mettono senza saperlo in situazioni critiche adottando solamente le minime best practice come password complesse, MFA . Il mio consiglio è di evitare configurazioni insicure (impostare per esempio un oggetto Criteri di gruppo a livello di dominio per inviare solo risposte NTLMv2).

Inoltre, gli amministratori di sistema devono sempre rimanere aggiornati e monitorare le ultime minacce come questa appunto, per poter aggiornare velocemente i sistemi.

Per questa CVE Microsoft ha messo a disposizione un tool di mitigazione al seguente link

https://github.com/microsoft/CSSExchange/blob/a4c096e8b6e6eddeba2f42910f165681ed64adf7/docs/Security/CVE-2023-23397.md

che permette di verificare se si è mai stati attaccati e porre rimedio qualora nell’organizzazione sia stato ricevuto un appuntamento di questo tipo.

Tags:

Comments are closed