(¿Estás) a la luz de la oscuridad? Cuidado con Vyveva, la nueva puerta trasera de Lázaro


Investigadores de ESET descubren una nueva puerta trasera de Lazarus desplegada contra una empresa de logística de carga en Sudáfrica

Los investigadores de ESET han descubierto una puerta trasera Lazarus previamente indocumentada utilizada para atacar a una empresa de logística de carga en Sudáfrica, a la que han apodado Vyveva. La puerta trasera consta de varios componentes y se comunica con su servidor C&C a través de la red Tor. Hasta ahora, pudimos encontrar su instalador, cargador y carga útil principal: una puerta trasera con una DLL de TorSocket. El ataque previamente desconocido fue descubierto en junio de 2020.

Aunque Vyveva se ha utilizado desde al menos diciembre de 2018, aún se desconoce su vector de compromiso inicial. Nuestros datos de telemetría sugieren una implementación dirigida, ya que solo encontramos dos máquinas víctimas, ambas son servidores propiedad de una empresa de logística de carga ubicada en Sudáfrica. La puerta trasera presenta capacidades para la exfiltración de archivos, el tiempo de espera, la recopilación de información sobre la computadora de la víctima y sus unidades, y otras funciones comunes de la puerta trasera, como ejecutar código arbitrario especificado por los operadores del malware. Esto indica que lo más probable es que la intención de la operación sea espionaje.

Esta entrada de blog proporciona el primer análisis técnico público de los componentes de Vyveva.

Atribución a Lázaro

Vyveva comparte múltiples similitudes de código con muestras más antiguas de Lazarus que son detectadas por los productos ESET como la familia de malware NukeSped. Sin embargo, las similitudes no terminan ahí: el uso de TLS falso en la comunicación de red, las cadenas de ejecución de la línea de comandos y la forma de usar el cifrado y los servicios Tor apuntan hacia Lazarus; por lo tanto, podemos atribuir Vyveva a este grupo APT con gran confianza.

Un ejemplo de las numerosas similitudes de código se puede ver en la Figura 1: resolución de exportaciones de bibliotecas Tor con nombres únicos.

  • 92F5469DBEFDCEE1343934BE149AFC1241CC8497 msobjs.drx Puerta trasera de Vyveva
  • BF98EA1326E5F8C351E68C79B5D1E0164C7BE728 taskhosts.exe Troyano Win32 / NukeSped.HV

Figura 1. Descompilación de Hex-Rays que muestra similitud entre la muestra de Vyveva (izquierda) y NukeSped (derecha)

Análisis técnico

Hasta ahora, hemos logrado encontrar tres de los múltiples componentes que componen Vyveva: su instalador, cargador y puerta trasera. El instalador es la etapa cronológica más temprana encontrada y, dado que espera que otros componentes ya estén presentes en la máquina, sugiere la existencia de una etapa anterior desconocida: un cuentagotas. El cargador sirve para descifrar la puerta trasera utilizando un algoritmo de descifrado XOR simple.

La Figura 2 proporciona una mirada más cercana a la funcionalidad del instalador, la puerta trasera y la biblioteca Tor.

Figura 2. Descripción general de los componentes de Vyveva

Instalador

Los propósitos principales del instalador son dos: crea un servicio que garantiza la persistencia del cargador de puerta trasera y almacena la configuración de puerta trasera incorporada y predeterminada en el registro.

Para crear un servicio de apariencia legítima, sus atributos, como el nombre del servicio y el nombre para mostrar, se forman utilizando una combinación de palabras de los atributos de los servicios existentes, que se seleccionan al azar. También es posible especificar estos atributos al instalador a través de los parámetros de la línea de comandos. -‍Dll, -svc, -disp, -desc, y -grupo. Observamos lo siguiente en la naturaleza, con estos parámetros:

powerctl.exe -svc powerctl -dll powerctl.dll

En cuanto a la última tarea, el instalador primero establece el ID de infección de configuración, que identifica de forma única a cada víctima, en un valor generado aleatoriamente y luego lo almacena en el registro, como se muestra en la Figura 3.

(HKLM SOFTWARE Microsoft DirectX)
UsageMask =

Figura 3. Valor del registro de configuración

Una de las entradas en la configuración es una lista de servidores C&C encriptados: por ejemplo, la muestra del instalador que analizamos está configurada con los siguientes C&C:

  • 4bjt2rceijktwedi (.) Cebolla: 80
  • cwwpxpxuswo7b6tr (.) cebolla: 80

Funcionalidad de puerta trasera

La puerta trasera, el componente principal de Vyveva, se conecta a los servidores C&C y ejecuta los comandos emitidos por los actores de la amenaza. Cuenta con 23 comandos, algunos de los cuales son asincrónicos y se ejecutan en sus propios hilos. La mayoría de ellos son comandos ordinarios para operaciones de archivo y proceso o recopilación de información, pero también hay un comando menos común para archivo tiempo de espera. Puede copiar metadatos de creación / escritura / tiempo de acceso desde un archivo "donante" a un archivo de destino o usar una fecha aleatoria en los años 2000-2004.

Otros comandos dignos de mención son el comando de carga de archivos de Vyveva y el comando 0x26. El comando de carga de archivos es capaz de filtrar directorios de forma recursiva y admite el filtrado de extensiones de archivo, por ejemplo, solo documentos de Office. En cuanto al mando 0x26, indica la existencia de otro componente desconocido que aún no hemos observado al momento de escribir este artículo.

La lista completa de comandos se muestra en la Tabla 1.

Tabla 1. Comandos de puerta trasera de Vyveva

IDENTIFICACIÓN Descripción
0x03 Responder al "ping" del servidor
0x10 Obtenga información sobre la computadora: nombre de usuario, nombre de la computadora, IP, página de códigos, versión del sistema operativo, arquitectura del sistema operativo, recuento de ticks, zona horaria, directorio actual
0x11 Obtenga información sobre las unidades: tipo, tamaño, nombre, número de serie, tipo de sistema de archivos
0x12 Escribe datos en el archivo especificado, opcionalmente timestomp.
0x13 Cargar el archivo o directorio especificado
• Archivo: tamaño, hora de la última escritura, contenido
• Estadísticas de directorio: tamaño total de archivos, recuento de archivos, recuento de directorios
– Para cada entrada: nombre, atributos
– Directorios: recurse a directorios
– Archivos: tamaño, hora de la última escritura, contenido

Opciones
• Usar compresión para el contenido del archivo (zlib 1.2.5)
• Filtro de extensión de archivo (lista blanca / lista negra)
• Bandera de recursividad

0x14 Obtener la lista del directorio especificado
• nombre, atributos, tiempo de escritura
• Directorios: no está vacío
• Archivos: tamaño
0x15 Establecer el directorio actual en el directorio especificado
0x16 Crear proceso especificado
0x17 Obtenga información sobre los procesos en ejecución: PID, PPID, ruta de archivo ejecutable
0x18 Terminar proceso (s) por PID o ruta de archivo ejecutable
0x19 Cree un proceso con salida redirigida y cargue la salida
El comando usa una cadena de formato que sugiere la ejecución a través de cmd.exe
"% param0% / c"% param1%>% tmp_fpath% "2> & 1"
Si la salida está vacía, cadena única " x0D x0A "se carga en su lugar
0x1A Eliminar la ruta especificada. Métodos de eliminación de archivos:
• eliminar solo
• sobrescribir, mover y eliminar
0x1B Copie los metadatos de creación / escritura / tiempo de acceso desde el archivo o directorio de origen al archivo o directorio de destino.
Si la fuente no existe, el tiempo aleatorio en el año 2000-2004 se usa para la creación y el tiempo de última escritura, el tiempo de acceso no cambia.
0x1C Obtenga información sobre la ruta especificada:
• Archivo: atributos, tiempo de creación / escritura / acceso, tipo, tamaño
• Directorio / Unidad: tamaño total de archivos, recuento de archivos, recuento de directorios (con filtrado de extensión y recursividad opcionales)
0x1D Establecer blob de configuración actual, guardar en el registro
0x1E Obtener blob de configuración actual
0x1F Activar / desactivar el perro guardián de la unidad (campo de configuración enable_drive_watchdog)
0x20 Habilitar / deshabilitar el perro guardián de la sesión (campo de configuración enable_session_watchdog)
0x21 Establecer el valor de configuración relacionado con el retraso de la ejecución de la puerta trasera (campo de configuración delay_until_time)
0x23 Almacene los datos utilizados por el comando asincrónico (relacionado con los comandos 0x12, 0x13)
0x24 Deje de ejecutar el comando asincrónico (relacionado con los comandos 0x12, 0x13)
0x25 Establecer el valor de configuración relacionado con el retraso entre intentos fallidos de conexión C&C (campo de configuración esperar_minutos)
0x26 Si wsdchngr.drx existe
• Eliminar valor de registro de configuración
• Eliminar archivo de puerta trasera (auto eliminación)
• Eliminar el archivo del cargador
• Leer, descifrar, cargar PE wsdchngr.drx y llama SamIPromote exportar en un nuevo hilo
• Salir del hilo actual

De particular interés son los perros guardianes de la puerta trasera, que se pueden habilitar o deshabilitar opcionalmente. Hay un mecanismo de vigilancia de la unidad que se utiliza para monitorear las unidades recién conectadas y desconectadas, y un mecanismo de vigilancia de la sesión que monitorea el número de sesiones activas (es decir, usuarios registrados). Estos componentes pueden desencadenar una conexión con el servidor C&C fuera del intervalo regular preconfigurado de tres minutos y en eventos de sesiones y unidades nuevas.

Configuración

La configuración de la puerta trasera, que inicialmente establece el instalador, se lee del valor del registro (que se muestra en la Figura 3). Cuando la configuración es modificada por un comando C&C, se actualiza el valor almacenado en el registro. En la Figura 4 se muestra un ejemplo de configuración y su estructura.

Figura 4. Estructura de configuración y ejemplo anotado

El esperar_minutos El campo especifica el tiempo de espera antes de la próxima conexión al C&C después de un intento fallido de conexión. Si es necesario retrasar la ejecución de la puerta trasera hasta una fecha y hora determinadas, se puede especificar en el delay_until_time campo. El cncs_cifrados field es una cadena encriptada, que contiene C & Cs separados por punto y coma.

Biblioteca Tor

Vyveva usa la biblioteca Tor, que se basa en el código fuente oficial de Tor, para comunicarse con un servidor C&C seleccionado al azar de la configuración. Se pone en contacto con el C&C a intervalos de tres minutos, enviando información sobre la computadora de la víctima y sus unidades antes de recibir los comandos. El directorio de exportación de la puerta trasera contiene el TorSocket.dll con exportaciones autoexplicativas close_ch, connect_ch, open_ch, read_ch, write_ch.

Conclusión

Vyveva constituye una adición más al extenso arsenal de malware de Lazarus. Atacar a una empresa en Sudáfrica también ilustra la amplia orientación geográfica de este grupo de APT.

Para cualquier consulta, o para hacer presentaciones de muestra relacionadas con el tema, contáctenos en amenazaintel@eset.com.

Indicadores de compromiso (IoC)

Muestras

SHA-1 Nombre del archivo Nombre de detección de ESET Descripción
DAD50AD3682A3F20B2F35BE2A94B89E2B1A73067 powerctl.exe Win32 / NukeSped.HX Instalador
69529EED679B0C7F1ACC1FD782A4B443CEC0CF83 powerctl.dll Win32 / NukeSped.HX Cargador (x86)
043ADDFB93A10D187DDE4999D78096077F26E9FD wwanauth.dll Win64 / NukeSped.EQ Cargador (x64)
1E3785FC4FE5AB8DAB31DDDD68257F9A7FC5BF59 wwansec.dll Win32 / NukeSped.HX Cargador (x86)
4D7ADD8145CB096359EBC3E4D44E19C2735E0377 msobjs.drx Puerta trasera (cifrada)
92F5469DBEFDCEE1343934BE149AFC1241CC8497 msobjs.drx Win32 / NukeSped.HX Puerta trasera (descifrado con encabezado MZ fijo)
A5CE1DF767C89BF29D40DC4FA6EAECC9C8979552 JET76C5.tmp Biblioteca Backdoor Tor (encriptada)
66D17344A7CE55D05A324E1C6BE2ECD817E72680 JET76C5.tmp Win32 / NukeSped.HY Biblioteca Backdoor Tor (descifrada con encabezado MZ fijo)

Nombres de archivo

% WINDIR% System32 powerctl.exe
% WINDIR% SysWOW64 powerctl.exe
% WINDIR% System32 power.dat
% WINDIR% SysWOW64 power.dat

% WINDIR% System32 wwanauth.dll
% WINDIR% SysWOW64 wwanauth.dll
% WINDIR% System32 wwansec.dll
% WINDIR% SysWOW64 wwansec.dll
% WINDIR% System32 powerctl.dll
% WINDIR% SysWOW64 powerctl.dll

% WINDIR% System32 JET76C5.tmp
% WINDIR% SysWOW64 JET76C5.tmp
% WINDIR% System32 msobjs.drx
% WINDIR% SysWOW64 msobjs.drx

Técnicas MITRE ATT & CK

Esta mesa fue construida usando versión 8 del marco MITRE ATT & CK.

Táctica IDENTIFICACIÓN Nombre Descripción
Ejecución T1569.002 Servicios del sistema: ejecución de servicios El cargador Vyveva se ejecuta a través de un servicio.
T1106 API nativa La puerta trasera de Vyveva utiliza CreateProcessA API para ejecutar archivos.
Persistencia T1543.003 Crear o modificar el proceso del sistema: servicio de Windows El instalador de Vyveva crea un nuevo servicio para establecer la persistencia de su cargador.
Evasión de defensa T1140 Desofuscar / decodificar archivos o información Vyveva descifra cadenas y componentes (puerta trasera, biblioteca Tor).
T1070.006 Eliminación del indicador en el host: Timestomp La puerta trasera de Vyveva puede timestomp archivos.
T1036.004 Enmascaramiento: Tarea o servicio de enmascaramiento El instalador de Vyveva puede crear un servicio con atributos que imiten los servicios existentes.
T1112 Modificar registro Vyveva almacena su configuración en el registro.
T1027 Archivos o información ofuscados Vyveva tiene cadenas y componentes cifrados.
Descubrimiento T1083 Descubrimiento de archivos y directorios La puerta trasera de Vyveva puede obtener listados de archivos y directorios.
T1057 Descubrimiento de procesos La puerta trasera de Vyveva puede enumerar los procesos en ejecución.
T1082 Descubrimiento de información del sistema La puerta trasera de Vyveva puede obtener información del sistema, incluido el nombre de la computadora, la página de códigos ANSI, la versión del sistema operativo y la arquitectura.
T1016 Descubrimiento de la configuración de la red del sistema La puerta trasera de Vyveva puede obtener la dirección IP local de la computadora de la víctima.
T1033 Descubrimiento de propietario / usuario del sistema La puerta trasera de Vyveva puede obtener el nombre de usuario de la víctima.
T1124 Descubrimiento de la hora del sistema La puerta trasera de Vyveva puede obtener la hora y la zona horaria del sistema.
Colección T1560.002 Archivar datos recopilados: archivar a través de la biblioteca La puerta trasera de Vyveva puede comprimir archivos con zlib antes de enviarlos a C&C.
T1005 Datos del sistema local La puerta trasera de Vyveva puede recopilar archivos de la computadora.
T1025 Datos de medios extraíbles La puerta trasera de Vyveva puede notificar a C&C sobre los medios extraíbles recién insertados y recopilar archivos de ellos.
Comando y control T1573.001 Canal cifrado: criptografía simétrica La puerta trasera de Vyveva cifra el tráfico de C&C mediante XOR.
T1573.002 Canal cifrado: criptografía asimétrica La puerta trasera de Vyveva se comunica con C&C a través de Tor.
Exfiltración T1041 Exfiltración sobre canal C2 Vyveva extrae los datos al servidor de C&C.





Enlace a la noticia original