Este nuevo malware que hemos descubierto y denominado CDRThief está diseñado para apuntar a una plataforma VoIP muy específica, utilizada por dos softswitches (conmutadores de software) producidos en China: Linknat VOS2009 y VOS3000. Un softswitch es un elemento central de una red VoIP que proporciona control, facturación y administración de llamadas. Estos softswitches son soluciones basadas en software que se ejecutan en servidores Linux estándar.

El objetivo principal del malware es exfiltrar varios datos privados de un conmutador de software comprometido, incluidos los registros de detalles de llamadas (CDR). Los CDR contienen metadatos sobre llamadas VoIP, como direcciones IP de quien llama y de quien recibe la llamada, hora de inicio de la llamada, duración de la llamada, tarifa de llamada, etc.

Para robar estos metadatos, el malware consulta las bases de datos internas de MySQL que utiliza el softswitch. Por lo tanto, los atacantes demuestran un buen conocimiento de la arquitectura interna de la plataforma a la que apuntan.

Análisis de Linux/CDRThief

Notamos este malware en uno de nuestros feeds de intercambio de muestras, y llamó nuestra atención dado que es una rareza encontrar un malware para Linux completamente nuevo. Lo que fue aún más interesante fue que rápidamente se hizo evidente que este malware apuntaba a una plataforma VoIP de Linux específica. Su binario ELF fue producido por el compilador Go y contiene los símbolos de depuración sin modificar, lo que siempre es útil para el análisis.

Para ocultar la funcionalidad maliciosa del análisis estático básico, los autores cifraron todas las strings de aspecto sospechoso con XXTEA y la clave fhu84ygf8643, y luego las codificaron en base64. La Figura 1 muestra parte del código que usa el malware para descifrar estas strings en tiempo de ejecución.

Figura 1. La rutina utilizada para descifrar las strings del binario.

Para acceder a los datos internos almacenados en la base de datos MySQL, el malware lee las credenciales de los archivos de configuración Linknat VOS2009 y VOS3000 que intenta ubicar en las siguientes rutas:

  • /usr/kunshi/vos2009/server/etc/server_db_config.xml
  • /usr/kunshi/vos3000/server/etc/server_db_config.xml
  • /home/kunshi/vos2009/server/etc/server_db_config.xml
  • /home/kunshi/vos3000/server/etc/server_db_config.xml
  • /home/kunshi/vos2009/etc/server_db_config.xml
  • /home/kunshi/vos3000/etc/server_db_config.xml
  • /usr/kunshi/vos2009/server/etc/serverdbconfig.xml
  • /usr/kunshi/vos3000/server/etc/serverdbconfig.xml

Curiosamente, la contraseña del archivo de configuración se almacena cifrada. Sin embargo, el malware Linux/CDRThief todavía es capaz de leerlo y descifrarlo. Por lo tanto, los atacantes demuestran un conocimiento profundo de la plataforma a la que apuntan, ya que hasta donde sabemos el algoritmo y las claves de cifrado utilizadas no han sido documentadas. Significa que los atacantes tuvieron que aplicar ingeniería inversa a los binarios de la plataforma u obtener información en el código de Linknat sobre el algoritmo de cifrado AES y la clave utilizada.

Como se observa en la Figura 2, CDRThief se comunica con servidores C&C usando JSON sobre HTTP.

Figura 2. Comunicación de red capturada del malware Linux/CDRThief

Hay múltiples funciones en el código de Linux/CDRThief que se utilizan para la comunicación con los servidores C&C. La Tabla 1 contiene los nombres originales de estas funciones utilizadas por los autores del malware.

Tabla 1. Funciones utilizadas para la comunicación con el C&C

Function name C&C path Purpose
main.pingNet /dataswop/a Checks if C&C is alive
main.getToken /dataswop/API/b Obtains token
main.heartbeat /dataswop/API/gojvxs Main C&C loop, called every three minutes
main.baseInfo /dataswop/API/gojvxs Exfiltrates basic information about compromised Linknat system:
#rowspan#

  •        MAC address
#rowspan#

  •        cat /proc/version
#rowspan#

  •        whoami
#rowspan#

  •        cat /etc/redhat-release
#rowspan#
  •        UUID from /bin/ibus_10.mo (or / home/kunshi/base/ibus_10.mo )
main.upVersion /dataswop/Download/updateGoGoGoGoGo Updates itself to the latest version
main.pushLog /dataswop/API/gojvxs Uploads malware error log
main.load /dataswop/API/gojvxs Exfiltrates various information about the platform:
#rowspan#

  •        SELECT SUM(TABLE_ROWS) FROM information_schema.TABLES WHERE table_name LIKE 'e_cdr_%'
#rowspan#

  •        cat /etc/motd
#rowspan#
  •        username, encrypted password, IP address of the database
#rowspan#
  •        ACCESS_UUID from server.conf
#rowspan#

  •        VOS software version
main.syslogCall /dataswop/API/gojvxs Exfiltrates data from e_syslog tables
main.gatewaymapping /dataswop/API/gojvxs Exfiltrates data from e_gatewaymapping tables
main.cdr /dataswop/API/gojvxs Exfiltrates data from e_cdr tables

Para exfiltrar datos de la plataforma, Linux/CDRThief ejecuta consultas SQL directamente a la base de datos MySQL. Principalmente, el malware está interesado en tres tablas:

  • e_syslog – contiene el registro de eventos del sistema
  • e_gatewaymapping – contiene información sobre las puertas de enlace VoIP (consulte la Figura 3)
  • e_cdr – contiene registros de datos de llamadas (metadatos de llamadas)

Figura 3. Código desensamblado de la función que inicializa una consulta SQL

Los datos que serán exfiltrados de las tablas e_syslog, _gatewaymapping y e_cdr son comprimidos y luego cifrados con una clave pública RSA-1024 hardcodeada antes de la exfiltración. Por lo tanto, solo los autores u operadores de malware pueden descifrar los datos extraídos.

Sobre la base de la funcionalidad descrita, podemos decir que el foco principal del malware es recopilar datos de la base de datos. A diferencia de otros backdoors, Linux/CDRThief no admite la ejecución de comandos de shell ni la exfiltración de archivos específicos del disco del softswitch comprometido. Sin embargo, estas funciones podrían introducirse en una nueva versión.

El malware puede ser distribuido en cualquier ubicación del disco con cualquier nombre de archivo. Se desconoce qué tipo de persistencia se utiliza para iniciar el binario malicioso en cada inicio. Sin embargo, debe tenerse en cuenta que una vez que se inicia el malware, intenta lanzar un binario legítimo presente en la plataforma Linknat VOS2009/VOS3000 usando el siguiente comando:

exec -a '/home/kunshi/callservice/bin/callservice -r /home/kunshi/.run/callservice.pid'

Esto sugiere que el binario malicioso podría insertarse de alguna manera en una cadena de inicio regular de la plataforma para lograr la persistencia y posiblemente enmascararse como un componente del softswitch de Linknat.

Al momento de escribir este artículo, no sabemos cómo se distribuye el malware en los dispositivos comprometidos. Especulamos que los atacantes podrían obtener acceso al dispositivo mediante un ataque de fuerza bruta o explotando una vulnerabilidad. Tales vulnerabilidades en VOS2009/VOS3000 han sido reportadas públicamente en el pasado.

Conclusión

Analizamos el malware Linux/CDRThief, que tiene como único propósito atacar softswitches VoIP específicos. Rara vez vemos softswitches VoIP ser apuntados por actores de amenazas; esto hace que el malware Linux/CDRThief sea interesante.

Es difícil saber cuál es el objetivo final de los atacantes detrás de este malware. Sin embargo, dado que este malware exfiltra información sensible, incluidos los metadatos de llamadas, parece razonable suponer que el malware se utiliza para el ciberespionaje. Otro posible objetivo de los atacantes que utilizan este malware es el fraude de VoIP. Dado que los atacantes obtienen información sobre la actividad de los softswitches de VoIP y sus puertas de enlace, esta información podría usarse para realizar Fraude Internacional de Revenue Share (IRSF).

Para cualquier consulta, o para enviar una muestra relacionadas con el tema, contáctenos a través de threatintel@eset.com.

Indicadores de Compromiso

Nombre de detección de ESET

Linux/CDRThief.A

Mutex basados en archivos

/dev/shm/.bin
/dev/shm/.linux

Archivos creados durante actualización del malware

/dev/shm/callservice
/dev/shm/sys.png

Hashes

CC373D633A16817F7D21372C56955923C9DDA825
8E2624DA4D209ABD3364D90F7BC08230F84510DB (UPX packed)
FC7CCABB239AD6FD22472E5B7BB6A5773B7A3DAC
8532E858EB24AE38632091D2D790A1299B7BBC87 (Corrupted)

C&C

http://119.29.173[.]65
http://129.211.157[.]244
http://129.226.134[.]180
http://150.109.79[.]136
http://34.94.199[.]142
http://35.236.173[.]187

Llave de cifrado (RSA) de exfiltración

-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCQ3k3GgS3FX4pI7s9x0krBYqbMcSaw4BPY91Ln
tt5/X8s9l0BC6PUTbQcUzs6PPXhKKTx8ph5CYQqdWynxOLJah0FMMRYxS8d0HX+Qx9eWUeKRHm2E
AtZQjdHxqTJ9EBpHYWV4RrWmeoOsWAOisvedlb23O0E55e8rrGGrZLhPbwIDAQAB
-----END PUBLIC KEY-----

Técnicas de MITRE ATT&CK

Nota: esta tabla fue creada utilizando la versión 7 del framework de MITRE ATT&CK.

Tactic ID Name Description
Defense Evasion T1027 Obfuscated Files or Information Linux/CDRThief contains obfuscates strings in the payload.
T1027.002 Obfuscated Files or Information: Software Packing Some Linux/CDRThief samples are packed with UPX.
Credential Access T1552.001 Unsecured Credentials: Credentials In Files Linux/CDRThief reads credentials for MySQL database from a configuration file.
Discovery T1082 System Information Discovery Linux/CDRThief obtains detailed information about the compromised computer.
Collection T1560.003 Archive Collected Data: Archive via Custom Method Linux/CDRThief compresses stolen data with gzip before exfiltration.
Command and Control T1071.001 Application Layer Protocol: Web Protocols Linux/CDRThief uses HTTP for communication with C&C server.
Exfiltration T1041 Exfiltration Over C2 Channel Linux/CDRThief exfiltrates data to the C&C server.