Los investigadores de ESET han descubierto un backdoor previamente indocumentado utilizado en un ataque a una empresa de logística de carga en Sudáfrica. El mismo ha sido apodado Vyveva. Este backdoor consta de varios componentes y se comunica con su servidor de C&C a través de la red Tor. Hasta el momento hemos logrado encontrar su instalador, loader y payload principal: un backdoor con una DLL de TorSocket. El ataque previamente desconocido fue descubierto en junio de 2020.

Aunque Vyveva se ha estado utilizando desde al menos diciembre de 2018, aún se desconoce su vector de compromiso inicial. Nuestros datos de telemetría sugieren que ha sido desplegado en ataques dirigidos, 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. El backdoor presenta capacidades para exfiltrar archivos, modificar la fecha de estos (timestomping), recopilar información sobre la computadora de la víctima y sus unidades, y otras funciones comunes de backdoor, como ejecutar código arbitrario especificado por los operadores del malware. Esto indica que lo más probable es que el objetivo de esta operación haya sido realizar tareas de espionaje.

Esta publicación ofrece el primer análisis técnico que se ha publicado sobre los componentes de Vyveva.

Atribución a Lazarus

Vyveva comparte múltiples similitudes de código con muestras más antiguas de Lazarus que son detectadas por los productos ESET como pertenecientes a la familia del malware NukeSped. Sin embargo, las similitudes no terminan ahí: el uso de un falso TLS 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 en el código puede apreciarse en la Figura 1: resolución con nombres únicos de la exportación de bibliotecas de Tor.

  • 92F5469DBEFDCEE1343934BE149AFC1241CC8497 msobjs.drx Vyveva backdoor
  • BF98EA1326E5F8C351E68C79B5D1E0164C7BE728 taskhosts.exe Win32/NukeSped.HV trojan

Figura 1. Descompilación con Hex-Rays muestra similitudes 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, loader y backdoor. El instalador es cronológicamente la etapa 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 dropper. El loader sirve para descifrar el backdoor utilizando un algoritmo de descifrado XOR simple.

La Figura 2 permite ver más claramente las funcionalidades del instalador, el backdoor y la biblioteca Tor.

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

Instalador

Los propósitos principales del instalador son dos: crear un servicio que garantiza la persistencia del loader del backdoor, y almacenar la configuración predeterminada del backoor embebida en el registro.

Para crear un servicio de apariencia legítima, sus atributos, como el nombre del servicio y el nombre que se muestra, se forman utilizando una combinación de palabras tomadas de los atributos de los servicios existentes, las cuales son seleccionadas aleatoriamente. También es posible especificar estos atributos al instalador a través de los parámetros de línea de comando -‍dll, -svc, -disp, -desc, y -group Observamos en actividad los siguientes y con estos parámetros:

<SYSDIR>\powerctl.exe -svc powerctl -dll powerctl.dll

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

[HKLM\SOFTWARE\Microsoft\DirectX]
    UsageMask = <CONFIG_DATA>

Figura 3. Valor de configuración del registro

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

  • 4bjt2rceijktwedi[.]onion:80
  • cwwpxpxuswo7b6tr[.]onion:80

Funcionalidad de backdoor

El backdoor, principal componente de Vyveva, se conecta a los servidores de C&C y ejecuta los comandos emitidos por los atacantes. 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 archivos y procesos o recopilación de información, pero también hay un comando menos común para modificar los atributos de tiempo en los archivos (timestomping). Puede copiar los metadatos de creación/escritura/tiempo de acceso desde un archivo "donante" a un archivo de destino o usar una fecha aleatoria entre los años 2000 y 2004.

Otros comandos que vale la pena mencionar son el comando de carga de archivos de Vyveva y el comando 0x26. El comando de carga de archivos es capaz de exfiltrar directorios de forma recursiva y admite el filtrado de extensiones de archivo, por ejemplo, solo documentos de Office. En cuanto al comando 0x26, el mismo indica la existencia de otro componente desconocido que aún no hemos observado al momento de escribir esta publicación.

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

Tabla 1. Comandos del backdoor Vyveva

ID Description
0x03 Reply to “ping” from server
0x10 Get information about computer – username, computer name, IP, code page, OS version, OS architecture, tick count, time zone, current directory
0x11 Get information about drives – type, size, name, serial number, filesystem type
0x12 Write data to specified file, optionally timestomp.
0x13
    Upload specified file or directory

  • File – size, last write time, content
  • Directory stats – total files size, file count, directory count
  •   - For each entry – name, attributes
      - Directories – recurse into directories
      - Files – size, last write time, content

    Options

  • Use compression for file content (zlib 1.2.5)
  • File extension filter (whitelist/blacklist)
  • Recursion flag
0x14
    Get listing of specified directory

  • name, attributes, write time
  • Directories – is nonempty
  • Files – size
0x15 Set current directory to specified directory
0x16 Create specified process
0x17 Get information about running processes – PID, PPID, executable file path
0x18 Terminate process(es) by PID or executable file path
0x19
    Create process with redirected output and upload the output
    The command uses a format string which hints at execution through cmd.exe

  • "%param0% /c "%param1% > %tmp_fpath%" 2>&1"
  • If the output is empty, unique string "<NO RESULT!>\r\n" is uploaded instead

0x1A
    Delete specified path. File deletion methods:

  • delete only
  • overwrite & move & delete
0x1B Copy creation/write/access time metadata from source file or directory to destination file or directory.
If the source doesn’t exist, random time in year 2000-2004 is used for creation & last write time, access time is unchanged.
0x1C
    Get info about specified path:

  • File – attributes, creation/write/access time, type, size
  • Directory / Drive – total files size, file count, directory count (with optional extension filtering and recursion)
0x1D Set current configuration blob, save to registry
0x1E Get current configuration blob
0x1F Enable/disable drive watchdog (configuration field enable_drive_watchdog)
0x20 Enable/disable session watchdog (configuration field enable_session_watchdog)
0x21 Set configuration value related to delay of backdoor execution (configuration field delay_until_time)
0x23 Store data used by asynchronous command (related to commands 0x12, 0x13)
0x24 Stop executing asynchronous command (related to commands 0x12, 0x13)
0x25 Set configuration value related to delay between failed C&C connection attempts (configuration field wait_minutes)
0x26
    If <SYSDIR>\wsdchngr.drx exists

  • Delete configuration registry value
  • Delete backdoor file (self delete)
  • Delete loader file
  • Read, decrypt, PE-load wsdchngr.drx and call SamIPromote export in a new thread
  • Exit current thread

De particular interés son los mecanismos de vigilancia del backdoor, que se pueden habilitar o deshabilitar opcionalmente. Hay un mecanismo de vigilancia de la unidad que se utiliza para monitorear las unidades recientemente conectadas y desconectadas, y otro 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/o unidades nuevas.

Configuración

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

Figura 4. Estructura de configuración y ejemplo anotado

El campo wait_minutes especifica el tiempo de espera antes de la próxima conexión al C&C después de un intento de conexión fallido. Si es necesario retrasar la ejecución del backdoor hasta una fecha y hora determinada, se puede especificar en el campo delay_until_time. El campo encrypted_cncs es una string cifrada que contiene C&C 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 de C&C seleccionado al azar de la configuración. Se pone en contacto con el C&C en intervalos de tres minutos, enviando información sobre la computadora de la víctima y sus unidades antes de recibir comandos. El directorio de exportación del backdoor contiene el TorSocket.dll con exportaciones que se explican solas close_ch, connect_ch, open_ch, read_ch, write_ch.

Conclusión

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

Por cualquier consulta o para hacer envíos de muestras relacionadas con el tema, escríbanos a threatintel@eset.com.

Indicadores de Compromiso (IoCs)

Muestras

SHA-1 Filename ESET detection name Description
DAD50AD3682A3F20B2F35BE2A94B89E2B1A73067 powerctl.exe Win32/NukeSped.HX Installer
69529EED679B0C7F1ACC1FD782A4B443CEC0CF83 powerctl.dll Win32/NukeSped.HX Loader (x86)
043ADDFB93A10D187DDE4999D78096077F26E9FD wwanauth.dll Win64/NukeSped.EQ Loader (x64)
1E3785FC4FE5AB8DAB31DDDD68257F9A7FC5BF59 wwansec.dll Win32/NukeSped.HX Loader (x86)
4D7ADD8145CB096359EBC3E4D44E19C2735E0377 msobjs.drx - Backdoor (encrypted)
92F5469DBEFDCEE1343934BE149AFC1241CC8497 msobjs.drx Win32/NukeSped.HX Backdoor (decrypted with fixed MZ header)
A5CE1DF767C89BF29D40DC4FA6EAECC9C8979552 JET76C5.tmp - Backdoor Tor library (encrypted)
66D17344A7CE55D05A324E1C6BE2ECD817E72680 JET76C5.tmp Win32/NukeSped.HY Backdoor Tor library (decrypted with fixed MZ header) 

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 de MITRE ATT&CK

Esta table fue creada utilizando la versión 8 del framewok de MITRE ATT&CK.

Tactic   ID   Name   Description  
Execution  T1569.002 System Services: Service Execution  Vyveva loader executes via a service.
T1106 Native API  Vyveva backdoor uses the CreateProcessA API to execute files.
Persistence  T1543.003 Create or Modify System Process: Windows Service  Vyveva installer creates a new service to establish persistence for its loader.
Defense Evasion  T1140 Deobfuscate/Decode Files or Information  Vyveva decrypts strings and components (backdoor, Tor library).
T1070.006 Indicator Removal on Host: Timestomp  Vyveva backdoor can timestomp files.
T1036.004 Masquerading: Masquerade Task or Service  Vyveva installer can create a service with attributes mimicking existing services.
T1112 Modify Registry  Vyveva stores its configuration in the registry. 
T1027 Obfuscated Files or Information  Vyveva has encrypted strings and components.
Discovery  T1083 File and Directory Discovery  Vyveva backdoor can obtain file and directory listings.
T1057 Process Discovery  Vyveva backdoor can list running processes.
T1082 System Information Discovery  Vyveva backdoor can obtain system information, including computer name, ANSI code page, OS version and architecture.
T1016 System Network Configuration Discovery  Vyveva backdoor can obtain the local IP address of the victim computer.
T1033 System Owner/User Discovery  Vyveva backdoor can obtain victim's username.
T1124 System Time Discovery  Vyveva backdoor can obtain system time and time zone.
Collection  T1560.002 Archive Collected Data: Archive via Library  Vyveva backdoor can compress files with zlib before sending to C&C.
T1005 Data from Local System  Vyveva backdoor can collect files from computer.
T1025 Data from Removable Media  Vyveva backdoor can notify C&C about newly inserted removable media and collect files from them.
Command and Control  T1573.001 Encrypted Channel: Symmetric Cryptography  Vyveva backdoor encrypts C&C traffic using XOR.
T1573.002 Encrypted Channel: Asymmetric Cryptography  Vyveva backdoor communicates with C&C via Tor.
Exfiltration  T1041 Exfiltration Over C2 Channel  Vyveva exfiltrates data to C&C server.