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
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.
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 |
- For each entry – name, attributes Options
|
0x14 |
|
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 |
The command uses a format string which hints at execution through cmd.exe If the output is empty, unique string "<NO RESULT!>\r\n" is uploaded instead |
0x1A |
|
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 |
|
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 |
|
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.
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. |