Ramsay: el malware que hace ciberespionaje

Tony Castillo

Ramsay, descubierto por los investigadores de ESET, es un malware utilizado para extraer y recolectar documentos con información confidencial y es capaz de operar aprovechándose de las redes aisladas.

Los investigadores señalan que el conjunto de herramientas que supone este malware se encuentra en fase de desarrollo, y que sus vectores de distribución están siendo aun perfeccionados. La hipótesis se ve reforzada por el hecho de que son todavía pocas las víctimas de este malware, aunque esto último bien podría deberse a que los objetivos de Ramsay son muy específicos, encontrándose, como se ha señalado previamente, en redes aisladas.

Ramsay ha sido asociado al grupo Darkhotel. Dicho grupo es conocido por haber realizado operaciones de ciberespionaje (se presume que desde 2004 aproximadamente) contra entidades gubernamentales de China y Japón.

Redes aisladas

Antes de comenzar con el análisis en profundidad del malware y su funcionamiento, cabe realizar un breve apunte sobre qué son las redes aisladas.

Dichos espacios, también conocidos como «pared de aire» son una medida de seguridad en la red empleadas en las computadoras para garantizar que la red informática sobre la que se aplica esté físicamente aislada de redes que no sean seguras, como podría ser la Internet pública o una red local no segura.

Los ordenadores que se encuentran dentro de estos espacios se encuentran aislados de las redes que no son seguras, es decir, no están directamente conectados a Internet ni a ningún otro sistema que lo esté. Como se ha mencionado en el párrafo anterior, un ordenador que verdaderamente pertenece a un espacio de aire está aislado también físicamente, no solo evitando las conexiones a la Internet pública, lo cual implica que solo se le pueden transferir datos si se tiene acceso físico al equipo (vía USB, por ejemplo).

Vectores de ataque

Los vectores de ataque de Ramsay se pueden dividir en tres grupos diferentes, los cuales se pueden observar en la siguiente imagen:

Archivos maliciosos en la versión 1 de Ramsay

Los vectores de ataque de esta versión son documentos que se aprovechan de la vulnerabilidad identificada con el código CVE-2017-0199, utilizada para descargar una versión más antigua de Ramsay.

Este documento proporciona un Script Visual Basic (VBS, por sus siglas en inglés) inicial, mostrado en la captura de pantalla que se observa a continuación. VBS es identificado con el nombre OfficeTemporary.sct, el cual extraerá la instancia de Ramsay del cuerpo del documento, enmascarándola dándole formato JPG tras lo que se esconde un ejecutable codificado en base64 después de la cabecera JPG.

 

Tabla 1. Capa del objeto OLE que se encuentra dentro del archivo RTF de la versión 1 de Ramsay

 

La instancia de Ramsay proporcionada por este documento es implementada de manera mucho menos compleja que las versiones posteriores del malware, así como también carece de la mayoría de las funcionalidades más avanzadas que se encuentran en las versiones actualizadas.

Los investigadores también encontraron varias instancias de dichos documentos en sandboxes públicas. Los documentos contenían la palabra «test» en sus nombres («access_test.docx» o «Test.docx»), demostrando así un esfuerzo continuo de los desarrolladores del malware para probar y mejorar este vector de ataque.

La poca complejidad de esta versión de Ramsay hace pensar que los atacantes la están utilizando para funciones de evaluación.

Instalador como señuelo para ejecutar la versión 2.a de Ramsay

Los investigadores encontraron una muestra en VirusTotal de esta versión de Ramsay en forma de instalador de 7zip.

Esta versión muestra técnicas de evasión y persistencias mucho más mejoradas, así como también introduce nuevas características como un distribuidor («Spreader», detallado en una de las secciones posteriores) y un rootkit.

Archivos maliciosos en la versión 2.b de Ramsay

Este vector de ataque proporciona un documento malicioso diferente, el cual se aprovecha de la vulnerabilidad CVE-2017-11882. Dicho documento incluye un instalador de Ramsay nombrado «lmsch.exe«.

 

 

Tabla 2. Capa del objeto OLE que se encuentra dentro del archivo RTF de la versión 2.b de Ramsay

Esta versión de Ramsay se trata de una ligera modificación de la versión 2.a. La diferencia principal es que no hace uso del distribuidor. El resto de componentes tienen la misma funcionalidad que la versión 2.a.

Ejecución de los archivos infectados en el cliente

Tal y como se ha mencionado anteriormente, la versión 2.a de Ramsay contiene un distribuidor utilizado como método de infección, cambiando la estructura de archivos ejecutables no maliciosos que es encuentran en los directorios de red y extraíbles compartidos para así incluir los componentes maliciosos de Ramsay que posteriormente serán ejecutados.

El distribuidor es un componente muy agresivo en cuanto a su mecanismo de propagación, y cualquier archivo ejecutable que se encuentre entre los objetivos del distribuidor serán objeto de infección.

Basándose en los indicadores de tiempo de los componentes de las diferentes versiones de Ramsay analizadas, los investigadores de ESET han construido una línea temporal del malware:

 

 

Estimación de la línea de tiempo de las diferentes versiones de Ramsay

Se cree que Ramsay está en desarrollo desde 2019, con la posibilidad de que actualmente existan dos versiones a medida basadas en la configuración de diferentes objetivos.

Mecanismos de persistencia

Según qué versión, Ramsay implementa diferentes mecanismos de persistencia de complejidad variada. Algunos de dichos mecanismos se describen a continuación:

  • Clave de registro AppInit DLL: el sistema operativo de Windows permite cargar DLLs personalizadas en el espacio de dirección de los procesos de casi todas las aplicaciones mediante la clave de registro AppInit DLL. Esta técnica que no resulta muy compleja se implementa en las versiones más antiguas de Ramsay y también es común en otras familias de malware.
  • Tarea programada vía COM API: las tareas programadas permiten a los administradores ejecutar tareas o «trabajos» en momentos determinados en lugar de hacerlo cada vez que se inicia el sistema o el usuario inicia sesión. Esta característica puede ser implementada mediante Windows COM API, algo que ha sido personalizado en la primera versión de Ramsay. Basándose en la alta similitud, es muy probable que Ramsay se adaptase a partir del código fuente disponible de Carberp.

 

  • Hijacking de Phantom DLL: las versiones más recientes de Ramsay muestran un aumento de complejidad en sus técnicas de persistencia, las cuales a veces incluyen una funcionalidad que permite el secuestro de la DLL Phantom. El secuestro de esta DLL se aprovecha del hecho de que muchas aplicaciones de Windows usan dependencias obsoletas que no son estrictamente necesarias para su funcionamiento, permitiendo así la posibilidad de ejecutar versiones maliciosas de dicha dependencias. En el caso de Ramsay, existen dos objetivos al ejecutar esta técnica: secuestro de la DLL msfte.dll de WSearch (Windows Search) y secuestro de una dependencia de Oracle (oci.dll) en el servicio MSDTC (Microsoft Distributed Transaction Coordinator):

 

 

Secuestro de la DLL msfte.dll de Microsoft Search Service

 

Secuestro de la dependencia oci.dll del servicio MSDTC

Esta técnica de persistencia es muy versátil y permite a las instancias de Ramsay distribuidas como DLL fragmentarse en diferentes secciones, implementando diferentes funcionalidades personalizadas según el proceso donde serán cargadas. Además, el uso de esta técnica hace que la detección sea más difícil ya que la carga de estas DLLs en sus respectivos procesos/servicios no siempre generan una alerta.

Funciones

La arquitectura de Ramsay proporciona una serie de funciones que son monitorizadas mediante un mecanismo de inicio de sesión, el cual se pretende que ayude a los operadores a proveer un feed de inteligencia práctica para llevar a cabo procesos de exfiltración, control, y acciones de movimiento lateral, así como a proveer estadísticas generales sobre el comportamiento y el sistema de cada uno de los objetivos comprometidos. La puesta en marcha de estas acciones es posible gracias a las siguientes funcionalidades:

  1. Recolección de archivos y almacenamiento encubierto

La intención principal de Ramsay es recolectar todos los documentos de Microsoft Word que se encuentran dentro del sistema comprometido. En la siguiente imagen se muestra un resumen de las etapas de recolección:

 

Mecanismo de recolección de documentos

Los documentos de Word serán, en primer lugar, recolectados y almacenados en un directorio de colección preliminar. La localización de este directorio variará según la versión de Ramsay. Dos de los directorios observados por los investigadores de ESET son:

  • %APPDATA%\Microsoft\UserSetting
  • -%APPDATA%\Microsoft\UserSetting\MediaCache

Dependiendo de la versión de Ramsay, la recolección de archivos se restringirá o no al disco local o también se buscarán documentos adicionales en otras localizaciones como en directorios de red o dispositivos extraíbles.

 

 

Procedimiento para escanear dispositivos extraíbles para la recolección de archivos

 

 

Procedimiento para escanear dispositivos extraíbles para la recolección de archivos

Los documentos encontrados son cifrados usando el algoritmo RC4. La clave RC4 usada para cifrar cada archivo será un hash MD5 de una secuencia de 16 bytes generada de manera aleatoria, y 16 bytes incluidos en la muestra del malware. Los primeros 16 bytes del buffer donde se encontrará el archivo cifrado se corresponderá con la clave RC4 utilizada:

 

 

 

Resultado de la generación de la clave RC4 y almacenamiento

Los archivos obtenidos y almacenados en el directorio de colección preliminar se comprimen utilizando la instancia de WinRAR proporcionada por el instalador de Ramsay. El archivo comprimido se almacena en el mismo directorio y luego genera un contenedor:

 

 

 

Resultado de la generación del contenedor

El valor al principio del archivo observado en la imagen anterior, junto a un identificador único global del perfil del hardware (Hardware Profile GUID) muestran un identificador del dispositivo de la víctima; una capa de cifrado XOR adicional será aplicada para generar el archivo comprimido

 

 

 

Estructura del contenedor de Ramsay

Ramsay implementa un método descentralizado para almacenar estos objetos en el sistema de archivos de la víctima utilizando ‘hooks’ en dos funciones de la API de Windows: WriteFile y CloseHandle.

El propósito principal de WriteFile es guardar el archivo obtenido para escribir e instalar el siguiente ‘hook’ en CloseHandle. El procedimiento de CloseHandle comprobará si el nombre del archivo tiene una extensión .doc; siendo ese el caso, se añadirá al documento el objeto contenedor de Ramsay seguido de un stream de 1024 bytes que denotan el footer del documento Word.

Esto se hace como medida de evasión para esconder el objeto incluido en el nombre del documento a la vista del ojo humano:

 

 

 

Resultado del código usado para añadir el footer del documento Word al final del documento objetivo

Los contenedores añadidos a los documentos Word se marcarán para evitar que el mismo objeto se añada dos veces a un mismo documento, y todo lo existente en el directorio de almacenamiento preliminar se eliminará para generar un nuevo objeto en intervalos.

A pesar de que los documentos afectados serán modificados, esto no afectará a su integridad; cada documento de Word afectado permanece totalmente operativo después de que se le añada el objeto correspondiente.

La exfiltración se hace mediante un componente externo que los investigadores de ESET no han sido capaces de recuperar. Sin embargo, indican que, basándose en la metodología descentralizada de Ramsay a la hora de almacenar los documentos obtenidos, se cree que dicho componente podría escanear el sistema de archivos de la víctima para buscar los valores correspondientes del contenedor de Ramsay, y así identificar dónde se encuentran los documentos que hay exfiltrar.

  • Ejecución de comandos

A diferencia de los malwares más convencionales, Ramsay no basa sus comunicaciones en un protocolo de red de C&C, así como tampoco hace ningún intento para conectarse a un host remoto para establecer comunicación. El protocolo de control de Ramsay hace uso de una filosofía de descentralización.

Ramsay escanea los directorios de red y los dispositivos extraíbles (excluyendo A: y B:, normalmente reservados para disquetes) para encontrar archivos de control. Primero, Ramsay busca documentos de Word y, en versiones más recientes, archivos PDF y ZIP:

 

Resultado del proceso de escaneo para encontrar archivos de control

Ramsay busca cualquiera de los dos Hardware Profile GUID codificados. Uno de estos GUID es incluido mientras que el otro se genera dinámicamente basándose en el equipo comprometido. Si alguno de los identificadores es encontrado, se intentará parsear la firma de un comando.

 

 

Proceso para parsear el archivo de control

La búsqueda de estos dos GUID implica que los documentos de control de Ramsay pueden ser personalizados para conseguir ser indiferente a la víctima, siendo así capaz de ejecutar el mismo documento de control en diferentes equipos haciendo uso de un GUID «global» dentro de los documentos de control. Por otro lado, los documentos de control pueden ser personalizados incluyendo un GUID específico para ser distribuido exclusivamente en un equipo particular. Este indicador de la implementación del protocolo de control de Ramsay indica que su contraparte en el backend podría estar automatizada.

El protocolo de control de Ramsay soporta tres tipos de comandos:

 

Comando de control de Ramsay
  • Distribución

El ejecutable de distribución intentará escanear directorios de red y dispositivos extraíbles, excepto A: y B:, como se indicó anteriormente.

 

 

Resultado de la rutina de escaneo del distribuidor

Es importante mencionar que hay una correlación entre los dispositivos escaneados para el proceso de propagación y la recolección de documentos de control. Esto determina la relación entre las capacidades de distribución y control, mostrando cómo los operadores de Ramsay hacen uso del framework para llevar a cabo movimientos laterales, lo que indica la probabilidad de que este framework haya sido desarrollado para operar en las redes aisladas.

La técnica de propagación consiste principalmente en la infección de un archivo para generar ejecutables cuya estructura sea similar a los instaladores señuelo de Ramsay para cada ejecutable que sea accesible dentro de los dispositivos objetivo. El siguiente diagrama ilustra los cambios realizados a los ejecutables objetivo después de que la infección haya tenido lugar, y cómo estos componentes interactúan durante la ejecución:

 

Cambios en la estructura de los archivos durante la infección y la ejecución

Todos los objetos involucrados en la etapa de infección se encuentran, bien dentro del contexto del distribuidor, o son recuperados previamente por otro componente de Ramsay. Algunos de los objetos se parsean por los siguientes tokens:

 

Resultado de los tokens usados para buscar diferentes objetos dentro del contexto del distribuidor

Después de que un archivo haya sido infectado, será marcado con un token al final del documento para proporcionar al distribuidor un identificador que evite situaciones de redundancia.

Además, algunos de los componentes de Ramsay han implementado un escaner de red para descubrir equipos dentro de la subnet del host comprometido, por si alguno de ellos está afectado por la vulnerabilidad EternalBlue SMBv1. Esta información se encontrará en los logs recolectados por Ramsay y puede ser utilizada por los operadores para, más adelante, llevar a cabo movimientos laterales en la red mediante diferentes canales.

Aspectos adicionales

El distribuidor de la versión 2.a de Ramsay reutilizaba una serie de tokens vistos anteriormente en la backdoor Retro de Darkhotel. Dichos tokens se pueden observar en la siguiente imagen.

 

 

Resultado de la reutilización de tokens con Retro

 

Reutilización de los tokens en la personalización de la URL de Retro

Ramsay serializa a las víctimas utilizando la API «GetCurrentHwProfile» para recuperar el GUID del equipo comprometido. Esta funcionalidad también está incluida en Retro. Ambos utilizan el mismo GUID por defecto por si la API falla:

 

Generación de GUID por Ramsay y Retro

Tanto Ramsay como Retro comparten el mismo algoritmo de codificación para los GUID obtenidos:

 

Esquema de codificación de GUIDs de Retro y Ramsay

El GUID obtenido mediante GetCurrentHwProfile es específico para el hardware del sistema pero no para el usuario y el equipo en sí. Por lo tanto, es probable que solo con el uso del GUID los operadores se encuentren con duplicados cuya función es serializar a las diferentes víctimas. El propósito de este esquema es generar un GUID con menor probabilidad de ser duplicado, añadiéndole para ello la dirección del adaptador de ethernet de la máquina. Esto significa que Retro y Ramsay comparten el mismo esquema para generar identificadores únicos.

También se encontraron similaridades en la forma en la que Ramsay y Retro almacenan algunos de los archivos de log, compartiendo una estructura de nombramiento parecida de los archivos:

 

 

Nombrado de los archivos por Ramsay y Retro

Es importante destacar que entre las técnicas documentadas de Retro, esta backdoor hace uso de msfte.dll, oci.dll y lame_enc.dll, así como del secuestro de la DLL Phantom. Como ya se ha indicado, Ramsay también utiliza esta técnica en algunas de sus versiones, usando asimismo msfte.dll y oci.dll.

Además, los investigadores también observaron similaridades en cuanto a las herramientas de código abierto utilizadas por Ramsay y Retro, como UACMe para la escalada de privilegios e ImprovedReflectiveDLLInjection para ejecutar algunos de los componentes.

Finalmente, se observaron metadatos del lenguaje coreano dentro de los documentos maliciosos usados por Ramsay, lo cual señala un posible uso de plantillas en coreano.

Conclusiones

Basándose en las diferentes instancias del framework, se puede decir que Ramsay ha pasado por diferentes etapas de desarrollo, indicando un incremento progresivo en el número y la complejidad de sus funcionalidades. Los desarrolladores a cargo de los vectores de ataque parecen estar probando nuevas técnicas de aproximación como lo son exploits antiguos para vulnerabilidades de Word datadas de 2017, así como la ejecución de aplicaciones afectadas por troyanos.

Esto podría significar que los desarrolladores poseen un conocimiento previo del entorno de las víctimas y están personalizando los vectores de ataque que serían exitosos en los equipos objetivo sin conllevar un uso innecesario de recursos adicionales.

Algunas de las etapas del framework de Ramsay todavía están siendo evaluadas, lo cual podría explicar la escasa visibilidad de las víctimas, teniendo en cuenta que los objetivos de Ramsay se pueden encontrar en redes aisladas, lo que también podría impactar a dicha visibilidad.

IoCs

 

Fuente:

 

 

 

Next Post

Pasos para eliminar kernel antiguos en RHEL / CentOS

Hoy en día no tendría por qué suponer un problema el espacio disponible en la partición de arranque /boot, aunque nunca sabes lo que te puedes llegar a encontrar. En caso de necesitar liberar espacio, la solución pasa por eliminar kernel antiguos, como mínimo deberíamos dejar el kernel anterior al […]