Sfruttamento di CVE-2024-21413 (Outlook)
Stato del progetto: In pausa (esercitazione incompleta; non è riuscita la cattura di hash NTLM)
Obiettivi
Tentare di sfruttare la vulnerabilità CVE-2024-21413, che consente la fuga di hash NTLM in Outlook interagendo con collegamenti dannosi.
L'obiettivo dell'esercitazione non era costruire da zero tutti gli strumenti utilizzati nell'attacco, ma comprendere a fondo il loro funzionamento centrale e sperimentare gli errori reali durante l'allestimento di un'infrastruttura propria.
Ho utilizzato codici di exploit e server SMTP/POP3 sviluppati da terze parti e pubblicati dalla comunità, che ringrazio profondamente.
Contenuto
- Requisiti
- Macchine virtuali
- Installazione
- Flusso dello sfruttamento
- Test e risultati
- Lezioni apprese
Requisiti
- Python 3.10+
- Outlook 2016
- Kali linux
- Server SMTP/POP3 propri
- Exploit
- Macchine virtuali
Macchine virtuali
Macchina vittima (Windows)
- SO: Windows 10 Home (x32)
- Outlook: Microsoft Outlook 2016 (versione 16.0.4266.1001)
- Rete: Adattatore 1: NAT, Adattatore 2: Rete interna
Macchina attaccante (Kali)
- SO: Kali Linux 2025.1
- Strumenti e librerie installate:
- Python 3.10+
- smtplib
- email
- socket
- threading
- os
- aiosmtpd
- servidor-smtp.py
- servidor-pop3.py
- exploit.py
- Rete: Adattatore 1: NAT, Adattatore 2: Rete interna
Infrastruttura
- I server SMTP e POP3 sono stati allestiti manualmente sulla macchina attaccante (Kali) utilizzando script Python.
Le macchine sono state eseguite in VirtualBox.
Installazione
Installazione (Kali)
Installazione server SMTP
- Venv: Ambiente virtuale con Python 3
- Passo 1: Creare una directory per il server e l'ambiente virtuale (mkdir smtp-lab) e accedervi (cd smtp-lab)
- Passo 2: Creare un ambiente virtuale all'interno della directory (python3 -m venv venv)
- Passo 3: Attivare l'ambiente virtuale (source venv/bin/activate)
- Passo 4: Installare aiosmtpd all'interno dell'ambiente virtuale (pip install aiosmtpd)
- Passo 5: Creare il codice del server (nano servidor-smtp.py)
- Passo 6: Eseguire il server (python3 servidor-smtp.py)
Codice del server SMTP
Il codice del server SMTP si trova nel file src/servidor-smtp.py.
Installazione server POP3:
- Passo 1: Creare una directory per il server (mkdir pop3-server) e accedervi (cd pop3-server)
- Passo 2: Creare il codice del server (nano server-pop3.py)
- Passo 3: Eseguire il server (python3 server-pop3.py)
Codice del server POP3
Il codice del server POP3 si trova nel file src/servidor-pop3.py.
Installazione exploit
- Passo 1: Creare il codice; questo codice l'ho estratto da CMNatic, ma è stato adattato alla mia infrastruttura (nano exploit.py)
Codice dell'exploit
Il codice dell'exploit si trova nel file src/exploit.py.
Installazione (Windows 10)
- Passo 1: Installare l'ISO di Microsoft Office 2016; ho usato il sito archive.org e ho installato la versione Microsoft Office 2016 Professional Plus x86
- Passo 2: Una volta installata l'ISO, scaricare Microsoft Office e accedere a Outlook 2016
- Passo 3: Configurare correttamente Outlook
Configurazione di Outlook 2016
Qui si mostra come configurare Outlook per farlo funzionare con il server SMTP e POP3 di test.
- Sia nel campo "Incoming mail server" che in "Outgoing mail server(SMTP)" va inserito l'IP dell'interfaccia di rete interna della macchina attaccante (Kali).
- La password è irrilevante per l'attacco, se ne può scegliere una qualsiasi.

Flusso dello sfruttamento
L'obiettivo dell'exploit per CVE-2024-21413 è fare in modo che Outlook effettui una richiesta automatica di tipo SMB verso una risorsa controllata dall'attaccante, con conseguente invio dell'hash NTLM della vittima, che può essere catturato offline per il crack.
Preparazione dell'ambiente
- La macchina attaccante (Kali) avvia un server SMTP e POP3 personalizzato.
- Outlook sulla macchina vittima (Windows 10) è configurato per ricevere email da quel server.
- La macchina attaccante (Kali) alza un server SMB falso (Nel mio caso ho usato responder)
Invio dell'email dannosa
- Un'email viene inviata alla vittima dal server SMTP dell'attaccante.
- Il corpo del messaggio contiene un collegamento UNC dannoso.
- Il percorso è progettato per attivare una connessione SMB automatica se l'utente interagisce con il collegamento.
Interazione dell'utente
- La vittima apre Outlook e vede il messaggio.
- Ci si aspetta che faccia clic sul collegamento.
- Se Outlook tenta di risolvere il percorso UNC, viene generata una richiesta SMB al server dell'attaccante.
- Di seguito viene mostrato come apparirebbe l'email dannosa in Outlook dal punto di vista della vittima:

Cattura dell'hash
- Il server SMB dell'attaccante riceve la connessione.
- Outlook, tentando di autenticarsi, invia automaticamente l'hash NTLM dell'utente.
- L'attaccante può salvare tale hash per un attacco con hashcat.
Note
- Nel mio caso, l'email arrivava correttamente in Outlook.
- Tuttavia, facendo clic sul collegamento UNC, non veniva generata la connessione SMB prevista.
- Non conosco ancora la causa del problema, anche se sospetto che possa essere correlata alla configurazione di rete, alla versione di Outlook o a un problema di accessibilità o risposta del server SMB.
Test e risultati
Funzionalità che hanno funzionato
- SMTP e POP3 configurati correttamente, Outlook ha sincronizzato senza errori.
- L'email dannosa è stata ricevuta da Outlook.
- Il messaggio mostrava il collegamento UNC senza essere bloccato.
- L'ambiente SMB dell'attaccante era attivo e in ascolto.
Cosa non ha funzionato
- Facendo clic sul collegamento UNC da Outlook, non si è verificato traffico SMB visibile in Wireshark.
- Non è stato generato alcun tentativo di autenticazione NTLM dalla macchina vittima
- Nessuna connessione è stata registrata sul server SMB.
Analisi con Wireshark
- Catture effettuate sull'interfaccia di Kali (eth1).
- È stato osservato il traffico SMTP e POP3, ma nessun pacchetto TCP 445 o UDP 137/138 al clic sul collegamento.
- Si è provato anche con Outlook eseguito come amministratore: nessun cambiamento.
Lezioni apprese
Conoscenze acquisite
- Come funzionano SMTP e POP3 a basso livello.
- Cosa si aspetta esattamente Outlook durante la sincronizzazione degli account.
- Come Outlook interpreta i collegamenti UNC e quali condizioni devono essere soddisfatte perché li apra automaticamente.
- Il valore di Wireshark e dei log come strumenti di debug in laboratori complessi.
Perché ho deciso di chiudere qui
- Dopo molteplici tentativi, l'exploit non è arrivato alla fase di cattura dell'hash, che era l'obiettivo finale.
- Ho documentato tutta l'infrastruttura, i test e i risultati, il che rimane comunque prezioso come laboratorio didattico.
- Anche se l'obiettivo finale non è stato raggiunto, il processo mi ha permesso di acquisire una conoscenza approfondita di ogni componente tecnico coinvolto. Si può riprendere in futuro.
Crediti
Il codice di questo exploit è basato sul lavoro di CMNatic di https://github.com/CMNatic/CVE-2024-21413. Ho apportato modifiche per adattarlo al mio ambiente.