Cuidado con Vyveva, el nuevo backdoor del grupo Lazarus

Investigadores de ESET descubren un nuevo backdoor del grupo de APT Lazarus que fue desplegado contra una empresa de logística de carga en Sudáfrica.

Investigadores de ESET descubren un nuevo backdoor del grupo de APT Lazarus que fue desplegado contra una empresa de logística de carga en Sudáfrica.

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

IDDescription
0x03Reply to “ping” from server
0x10Get information about computer – username, computer name, IP, code page, OS version, OS architecture, tick count, time zone, current directory
0x11Get information about drives – type, size, name, serial number, filesystem type
0x12Write data to specified file, optionally timestomp.
0x13Upload 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
0x14Get listing of specified directory
 • name, attributes, write time
 • Directories – is nonempty
 • Files – size
0x15Set current directory to specified directory
0x16Create specified process
0x17Get information about running processes – PID, PPID, executable file path
0x18Terminate process(es) by PID or executable file path
0x19Create 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
0x1ADelete specified path. File deletion methods:
 • delete only
 • overwrite & move & delete
0x1BCopy 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.
0x1CGet 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)
0x1DSet current configuration blob, save to registry
0x1EGet current configuration blob
0x1FEnable/disable drive watchdog (configuration field enable_drive_watchdog)
0x20Enable/disable session watchdog (configuration field enable_session_watchdog)
0x21Set configuration value related to delay of backdoor execution (configuration field delay_until_time)
0x23Store data used by asynchronous command (related to commands 0x12, 0x13)
0x24Stop executing asynchronous command (related to commands 0x12, 0x13)
0x25Set configuration value related to delay between failed C&C connection attempts (configuration field wait_minutes)
0x26If <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-1FilenameESET detection nameDescription
DAD50AD3682A3F20B2F35BE2A94B89E2B1A73067powerctl.exeWin32/NukeSped.HXInstaller
69529EED679B0C7F1ACC1FD782A4B443CEC0CF83powerctl.dllWin32/NukeSped.HXLoader (x86)
043ADDFB93A10D187DDE4999D78096077F26E9FDwwanauth.dllWin64/NukeSped.EQLoader (x64)
1E3785FC4FE5AB8DAB31DDDD68257F9A7FC5BF59wwansec.dllWin32/NukeSped.HXLoader (x86)
4D7ADD8145CB096359EBC3E4D44E19C2735E0377msobjs.drx-Backdoor (encrypted)
92F5469DBEFDCEE1343934BE149AFC1241CC8497msobjs.drxWin32/NukeSped.HXBackdoor (decrypted with fixed MZ header)
A5CE1DF767C89BF29D40DC4FA6EAECC9C8979552JET76C5.tmp-Backdoor Tor library (encrypted)
66D17344A7CE55D05A324E1C6BE2ECD817E72680JET76C5.tmpWin32/NukeSped.HYBackdoor 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.002System Services: Service Execution Vyveva loader executes via a service.
T1106Native API Vyveva backdoor uses the CreateProcessA API to execute files.
Persistence T1543.003Create or Modify System Process: Windows Service Vyveva installer creates a new service to establish persistence for its loader.
Defense Evasion T1140Deobfuscate/Decode Files or Information Vyveva decrypts strings and components (backdoor, Tor library).
T1070.006Indicator Removal on Host: Timestomp Vyveva backdoor can timestomp files.
T1036.004Masquerading: Masquerade Task or Service Vyveva installer can create a service with attributes mimicking existing services.
T1112Modify Registry Vyveva stores its configuration in the registry. 
T1027Obfuscated Files or Information Vyveva has encrypted strings and components.
Discovery T1083File and Directory Discovery Vyveva backdoor can obtain file and directory listings.
T1057Process Discovery Vyveva backdoor can list running processes.
T1082System Information Discovery Vyveva backdoor can obtain system information, including computer name, ANSI code page, OS version and architecture.
T1016System Network Configuration Discovery Vyveva backdoor can obtain the local IP address of the victim computer.
T1033System Owner/User Discovery Vyveva backdoor can obtain victim's username.
T1124System Time Discovery Vyveva backdoor can obtain system time and time zone.
Collection T1560.002Archive Collected Data: Archive via Library Vyveva backdoor can compress files with zlib before sending to C&C.
T1005Data from Local System Vyveva backdoor can collect files from computer.
T1025Data from Removable Media Vyveva backdoor can notify C&C about newly inserted removable media and collect files from them.
Command and Control T1573.001Encrypted Channel: Symmetric Cryptography Vyveva backdoor encrypts C&C traffic using XOR.
T1573.002Encrypted Channel: Asymmetric Cryptography Vyveva backdoor communicates with C&C via Tor.
Exfiltration T1041Exfiltration Over C2 Channel Vyveva exfiltrates data to C&C server.

Newsletter

Discusión