Hemos identificado una campaña en curso de spear-phishing dirigida a varias de entidades con documentos RTF maliciosos que explotan tres vulnerabilidades diferentes: CVE-2017-8570, CVE-2017-11882 y CVE-2018-0802 y se aprovechan de un binario de confianza fuera de lugar, MSXSL de Microsoft, para ejecutar un backdoor JScript. Toda la cadena de ataque se aprovecha de componentes firmados para permanecer bajo el radar tanto como sea posible y comparte grandes similitudes con campañas previas del Cobalt Group.
Vector de Ataque
La campaña de spear-phishing hace uso de un documento RTF malicioso:
que a su vez abre un documento señuelo si la explotación de uno de las vulnerabilidades atacadas tiene éxito:
Una rápida mirada a los objetos OLE encontrados en el documento muestra algunas propiedades interesantes que hemos analizado en la siguiente sección.
Lo que ocurre tras abrir el documento es un poco complicado y puede resumirse en:
- El RTF malicioso explota una de las tres vulnerabilidades (CVE-2017-8570, CVE-2017-11882 o CVE-2018-0802)
- eqnedt32.exe (Microsoft Equation Editor) es ejecutado y se ejecutan dos instancias de cmd.exe en cadena
- La última instancia de cmd.exe ejecuta regsrv32.exe con una DLL (dll.txt) y entonces se genera un documento señuelo
- La DLL cargada realiza las siguientes acciones:
- Crea un archivo XML
- Crea un archivo XSL
- Se borra a sí misma del disco
- Crea un archivo JScript (para persistencia)
- Deposita una copia legítima de MSXSL.exe
- MSXSL ejecuta el backdoor final backdoor obtenido de los recién creados archivos XML y XSL
Primera Fase
Una vez que la vulnerabilidad ha sido explotada, cmd.exe ejecuta Task.bat:
ECHO OFF set tp="%temp%\block.txt" IF EXIST %tp% (exit) ELSE (set tp="%temp%\block.txt" & copy NUL %tp% & start /b %temp%\2nd.bat) del "%~f0" exit
Cuando la variable de entorno ha sido establecida, se ejecuta un segundo script batch cuya tarea es lanzar regsrv32.exe para cargar dll.txt, para limpiar el directorio temporal y reiniciar winword mostrando el documento señuelo.
La principal tarea de establecer el entorno correcto para el backdoor para ejecutarse y obtener persistencia recae en dll.txt que ejecuta las siguientes operaciones:
- Crea c:\users\user\appdata\roaming\microsoft\f4b3a452b6ea052d286.txt
- Creación de c:\users\user\appdata\roaming\microsoft\7009b05a8c4dc1b.txt
- Crea c:\users\user\appdata\roaming\microsoft\12a0c3af5a631493445f1d42.js
- Deposita el ejecutable c:\users\user\appdata\roaming\microsoft\msxsl.exe, un ejecutable legítimo de Microsoft
- Crea un valor de clave de registro en HKCU\Environment con valor ’UserInitMprLogonScript’ y contenido ‘Cmd.Exe /C “%Appdata%Microsoft12A0C3AF5A631493445F1D42.Js”’ (script de persitencia en logon . ATT&CK TID: T1037)
Inmediatamente después, se genera una instancia cmd.exe para borrar dll.txt y se ejecuta msxsl.exe, tomando como argumentos los archivos XML y XSL depositados (que contienen el código del backdoor).
Es destacable el uso de msxsl.exe que es la utilidad de línea de comandos real empleada para realizar transformaciones Extensible Stylesheet Language (XSL) usando el procesador XSL de Microsoft. Se puede abusar de este ejecutable para iniciar el código JScript:
C:\Users\User\AppData\Roaming\Microsoft\msxsl.exe "C:\Users\User\AppData\Roaming\Microsoft\F4B3A452B6EA052D286.txt" "C:\Users\User\AppData\Roaming\Microsoft\7009B05A8C4DC1B.txt"
Backdoor
El backdoor está escrito en JScript y es capaz de realizar las siguientes operaciones:
- reconocimiento mediante wmi y otras herramientas de Windows
- iniciar ejecutables usando cmd.exe
- cargar archivos DLL usando regsvr32.exe
- descargar y ejecutar nuevos scripts
- borrarse a sí mismo
- comprobar si hay software AntiVirus
- comunicarse con su C2 communication mediante una implementación de RC4 en js
El backdoor puede ejecutar cualquier tipo de script, por lo que sus capacidades son potencialmente ilimitadas. Aunque comprueba diferentes software antivirus, parece que esto no lo hace para prevenir la ejecución del backdoor, sino para notificar la información al C2, posiblemente para surtir a los operadores de información sobre sus víctimas antes de desplegar scripts más sofisticados que puedan disparar alarmas.
La dirección del C2 que encontramos en esta campaña es: https://mail[.]hotmail[.]org[.]kz/owalanding/ajax[.]php que parece corresponder a un servidor alojado en Kazakhstan en 1994, por lo que deducimos que probablmente se trate de un servidor comprometido por los atacantes y empleado como C2.
La segunda fase de la cadena de ataque parece corresponderse con una campaña identificada en Noviembre y probablemente atribuible a Cobalt Group. Sin embargo, la primera fase del ataque es completamente diferente, indicando lo que podría ser un nuevo kit de explotación (Threadkit?). El código del backdoor parece ser el mismo (salvo por unos pocos cambios) que el que analizó TrendMicro en Agosto de 2017. Los comandos compartidos entre esta versión de MArzo de 2018 y la de Agosto de 2017 son los siguientes:
- more_eggs: usado para descargar nuevos scripts
- d&exec: usado para iniciar archivos ejecutables
- gtfo: usado para terminar una instancia y realizar limpieza de evidencias
- more_onion: usado para ejecutar un nuevo script
Los clientes de ReaQta-Hive está protegidos frente a esta amenaza sin necesidad de cambios o actualizaciones. Los sistemas completamente actualizados tampoco son vulnerables ya que las vulnerabilidades han sido reportadas y solventadas. En los sistemas heredados deberían buscarse los IOCs indicados a continuación, además de comportamientos anómalos como, por ejemplo, msxsl ejecutándose desde directorios temporales o regsvr32.exe cargando módulos desconocidos.
IOC
- RTF malicioso (DOC00201875891.doc): db5a46b9d8419079ea8431c9d6f6f55e4f7d36f22eee409bd62d72ea79fb8e72
- msxsl.exe (legítimo, dropped): 35ba7624f586086f32a01459fcc0ab755b01b49d571618af456aa49e593734c7
- Persistencia JS: 710eb7d7d94aa5e0932fab1805d5b74add158999e5d90a7b09e8bd7187bf4957
- XSL JS backdoor: 6a3f5bc5885fea8b63b80cd6ca5a7990a49818eda5de59eeebc0a9b228b5d277
- XML: dbe0081d0c56e0b0d7dbf7318a4e296776bdd76ca7955db93e1a188ab78de66c
- task.bat: 731abba49e150da730d1b94879ce42b7f89f2a16c2b3d6f1e8d4c7d31546d35d
- 2nd.bat: 33c362351554193afd6267c067b8aa78b12b7a8a8c72c4c47f2c62c5073afdce
- Documento señuelo: 1ab201c1e95fc205f5445acfae6016679387bffa79903b07194270e9191837d8
- regsvr32 DLL: 0adc165e274540c69985ea2f8ba41908d9e69c14ba7a795c9f548f90f79b7574
- inteldriverupd1.sct: 002394c515bc0df787f99f565b6c032bef239a5e40a33ac710395bf264520df7
- C2: mail[.]hotmail[.]org[.]kz/owalanding/ajax.php\
- IP (al momento de escribir este artículo): 185.45.192.167