Artículo original de ReaQta Ltd, traducido con autorización del autor.
Durante un análisis de distintos troyanos de escritorio remoto nos hemos topado con una cadena de ataque que se aprovecha de un RTF que explota la vulnerabilidad CVE-2017-8759 para desplegar DarkVNC, una versión maliciosa del conocido VNC, diseñado para controlar remotamente y en secreto el equipo de una víctima.
Cadena de Ataque DarkVNC
A continuación podemos ver la cadena DarkVNC tal y como ha sido reconstruida por ReaQta-Hive:DarkVNC attack chain with an operator connected to the victim’s endpoint
Tras abrir el documento RTF, uno de los primeros procesos en iniciarse es csc.exe which Es una herramienta de compilación de línea de comandos utilizada para invocar el compilador de C#, aunque csc.exe es una herramienta perfectamente legítima, puede emplearse para propósitos maliciosos. El primer paso es inspeccionar la línea de comandos de csc.exe para descubrir qué es lo que se va a compilar sobre la marcha:
cam0snfh.cmdline debería levantar alguna sospecha: a parte del extraño nombre, se ejecuta desde el directorio de usuario:
/t:library /utf8output /R:"System.dll" /R:"System.Runtime.Remoting.dll"
/R:"System.Data.dll" /R:"System.Xml.dll" /R:"System.Web.Services.dll"
/out:"[EDITADO].dll" /D:DEBUG /debug+ /optimize-
"C:\Users\User\AppData\Local\Temp\xyzlw5gj.0.cs"
La compilación producirá [EDITADO].dll (hemos reescrito el nombre de la DLL por razones de seguridad dado que tiene el formato: www.maliciousdomain.com). Para entender qué hace esta DLL, debemos inspeccionar el código fuente localizado en el archivo xyzlw5gj.0.cs:
Este bloque de código es que que se aprovecha de la vulnerabilidad CVE-2017-8759 (WSDL Parser Code Injection) que permite al atacante inyectar y ejecutar código arbitrario. En concreto, la DLL generada por csc.exe será ejecutada por Office. La misma técnica ya había sido utilizada en entornos reales para distribuir FinSpy.
En nuestro caso winword.exe acabará por ejecutar mshta.exe que lanza un script hta que invoca un powershell. El principal propósito de powershell es soltar y ejecutar result.exe cuya meta es desplegar DarkVNC que es lo que podemos considerar como el payload(la carga útil) final. El complejo proceso que hemos descrito puede resumirse en una sencilla imagen que, de un vistazo, nos muestra qué está ocurriendo en la computadora (endpoint) de la víctima.:
El Inyector
Tal y como establecimos anteriormente, result.exe actúa como un loader, su objetivo es descifrar e inyectar la DLL maliciosa que contiene DarkVNC. Desde el punto de vista de un análisis estático tenemos las siguientes características:
SHA256 | 1D6F4CAC33FFF1B744DCE13BDF003B15D8EABCE53B0578E3B4BDBC5CBF001D78 |
SHA1 | 2BB1BE823ED569EF3DAC008B2FEC4A8D04E46922 |
MD5 | 22E2B492108F9D5517EE52C37912F24D |
File size | 551.50 KB (564736 bytes) |
File name | result.exe |
File type | Win32 EXE |
El ejecutable no tiene Información de Versión y, por lo visto en una inspección inicial, está cifrado con una herramienta privada tipo PE (Portable Executable). Nos saltaremos el análisis detallado del empaquetador y los consiguientes desempaquetados porque estamos más interesados en el comportamiento global. result.exe utiliza varias capas de cifrado pero no implementa contramedidas complejas contra ingeniería inversa, de modo que la forma más rápida de seguir el comportamiento principal es establecer un breakpoint en VirtualAlloc() y seguir las distintas capas.
La ejecución saltará de capa en capa hasta que llegar a la última, donde es posible descubrir los aspectos más importantes del inyector.
El proceso svchost.exe se crea como proceso suspendido de modo que el código malicioso se ejecutará cuando finalmente se reanude el proceso. En este punto podemos extraer DarkVNC de la memoria.
El módulo DarkVNC
La inspección estática del PE del módulo muestra lo siguiente:
Hay dos exportaciones cuyo significado es autoexplicativo, se usan para gestionar el servidor VNC.
El primer paso es convertir la dirección del atacante de cadena de texto a dirección, que en este caso tiene la forma IP:443.
Obtiene el Nombre del equipo (ComputerName) y un identificador adicional para contruír una cadena de texto (string) que identificará a la computadora de la víctima. El string final será: (COMPUTER_NAME)_ADDITIONAL_ID-DARKVNC. Inmediatamente después, se inicia el servidor VNC. No profundizaremos en el análisis completo del módulo por abreviar, pero mediante la inspección de strings podemos acelerar la valoración inicial.
El string #hvnc es muy indicativo, este núcleo comparte muchas similitudes con HVNC (HiddenVNC), un conocido Módulo de Control Remoto cuyo código fuente está disponible en carberp leak. Este módulo comparte muchas similitudes, como por ejemplo:
- Capacidades VNC ocultas: Este módulo creará un nuevo Escritorio para mantener oculta la instancia maliciosa de VNC. Esta técnica es común para evitar motores anti-fraude en páginas web de banca personal mediante la suplantación de la computadora víctima y registrándose con las credenciales robadas sin despertar alertas en el lado del banco. Aquí tenemos una representación gráfica sencilla del comportamiento anterior tomada del análisis de árbol de procesos generado por ReaQta-Hive:

Tenemos una nueva instancia de explorer.exe y uno de los procesos hijo es ¡Chrome!
Aunque hay algunas diferencias básicas entre DarkVNC y HVNC, una de las más interesantes está representada por la siguiente línea de código:
SetEnvironmentVariableW("MOZ_DISABLE_CONTENT_SANDBOX", "1")
De acuerdo con la documentación, MOZ_DISABLE_CONTENT_SANDBOX deshabilita el proceso de sandboxing del contenido.
La amenaza desde una perspectiva superior
Hasta ahora hemos identificado las siguientes muestras de DarkVNC:
- deb02b28605a2b9c80b25c5fa1fa43ac8c71b10961f7517c1a0394531d3b0b40
- 9a57cefbfcdf1b18cc31a2784a2ed3e0e11dd4a3c4608b1243b4141a475b182f
- a67e96b01520183babfae285b5d692b5b3dda7edff7378b281ace7fd381d3c93
- e0a73dd11f0f2c41859bf01cf8a5b7a2a9946303d6e7898f696037323d038f56
- Distribuida por Terror EK: http://www.malware-traffic-analysis.net/2017/10/17/index.html
Hashes de las muestras analizadas en este post:
- RTF: 7a641c8fa1b7a428bfb66d235064407ab56d119411fbaca6268c8e69696e6729
- result.exe: 1d6f4cac33fff1b744dce13bdf003b15d8eabce53b0578e3b4bdbc5cbf001d78
Detección y Protección
La visibilidad de los terminales es esencial para detectar las amenazas tan pronto como sean desplegadas por los atacantes. El análisis de comportamiento en tiempo real nos abre una ventana de oportunidad para detectar comportamientos inusuales. VNC o Teamviewer no son maliciosos per se, pero se puede abusar de ellos para tomar control de la computadora. Ser capaz de detectar dichas anomalías permite realizar los análisis oportunos e iniciar las respuestas adecuadas antes de que la severidad del incidente aumente.
Echale un vistazo a ReaQta-Hive para saber cómo una plataforma de Respuesta a Amenazas en Terminales (ETR: Endpoint Threat Response) puede ayudar a tu organización a proteger su infraestructura frente a amenazas como la que acabamos de analizar, dando seguimiento a incidentes y respondiendo en tiempo real. Es complicado detectar y entender comportamientos anómalos mediante análisis manual. Nuestras posibilidades de éxito aumentan significativamente si nos ayudamos de los algoritmos de procesado de esta plataforma. Lo cual nos permite minimizar el tiempo de detección y, en consecuencia, el de reacción.
Artículo original de ReaQta Ltd, traducido con autorización del autor.