Esta no es la primera vez que la industria del juego es apuntada por los atacantes, que buscan comprometer a los desarrolladores de juegos para insertar backdoors en sus entornos de desarrollo y de esta manera tener la posibilidad de distribuir su malware como parte de un software legítimo. En abril de 2013, Kaspersky Lab reportó que un popular videojuego había sido alterado en 2011 para incluir un backdoor. Dicho ataque fue atribuido a cibercriminales que Kaspersky denominó Grupo Winnti.

Recientemente, nuevos ataques de cadena de suministro despertaron la atención de los investigadores de ESET. En esta oportunidad, dos juegos y una aplicación de plataforma de videojuegos para incluir un backdoor. Una vez logrado esto, los ataques fueron mayormente dirigidos al continente asiático y a la industria de los juegos; por lo que no debería sorprender que se trate de una obra realizada por el mismo grupo que Kaspersky describió como “Winnti – Más que un simple juego”.

Tres casos: el mismo backdoor

Aunque el malware utiliza diferentes configuraciones para cada caso, los tres productos de software afectados incluyen el mismo código de backdoor y fueron lanzados utilizando la misma máquina. Mientras que dos de los productos comprometidos ya no incluyen el backdoor, uno de los desarrolladores afectados aún sigue distribuyendo la versión troyanizada que, irónicamente, se aprovecha de un juego llamado “infestation”, que en español quiere decir “infección, y que es producido por los desarrolladores tailandeses de “Electronics Extreme”. Desde el mes de febrero hemos intentado informarles varias veces y a través de distintos canales, pero sin éxito aparente.

Observemos primero cómo está embebido el payload malicioso y luego analicemos los detalles del propio backdoor.

Embebiendo el payload

El código del payload es iniciado en una etapa muy temprana durante la ejecución del archivo ejecutable backdoreado.  Justo después del punto de entrada PE, el estándar de llamada a la inicialización C Runtime (__scrt_common_main_seh en la Figura 1) está hookeada para ejecutar el payload malicioso antes que todo lo demás (Figura 2). Esto podría sugerir que los actores maliciosos cambiaron una configuración de construcción en lugar del código fuente en sí.

Figura 1: Archivo ejecutable de punto de entrada limpio

Figura 2: Archivo ejecutable de punto de entrada comprometido

El código añadido al ejecutable descifra y ejecuta el backdoor en la memoria, antes de reanudar la ejecución normal del código de inicialización de C Runtime y todo el subsecuente código de la aplicación host. Los datos embebidos del payload presentan una estructura específica, que se puede apreciar en la Figura 3, la cual está parseada por el código de desempaquetado añadido.

Figura 3.Estructrura del payload embebido

Incluye una llave RC4 (la cual es XOReada con 0x37) que es utilizada para descifrar el nombre de un archivo y el archivo DLL embebido.

El payload malicioso

El payload malicioso actual es bastante pequeño y contiene aproximadamente 17 KB de datos y código.

Configuración

Ilustrado en la Figura 4, los datos de configuración son simplemente una lista de strings separados por espacios en blanco.

Figura 4 - Datos de configuración del payload

La configuración consiste en cuatro campos:

  1. URL del servidor C&C.
  2. Variable (t) utilizada para determinar el tiempo de apagado en milisegundos antes de continuar la ejecución. El tiempo de espera es elegido de manera aleatoria en el rango de 2/3 t a 5/3 t.
  3. Una cadena de caracteres que identifica una campaña.
  4. Una lista separada por punto y coma de nombres de archivos ejecutables. Si cualquiera de estos está corriendo, el backdoor detiene su ejecución.

Los investigadores de ESET han identificado cinco versiones del payload:

Truncated SHA-1 PE Compile time (UTC) C&C server URL
a045939f 2018-07-11 15:45:57 https://bugcheck.xigncodeservice[.]com/Common/Lib/Common_bsod.php
a260dcf1 2018-07-11 15:45:57 https://bugcheck.xigncodeservice[.]com/Common/Lib/Common_Include.php
dde82093 2018-07-11 15:45:57 https://bugcheck.xigncodeservice[.]com/Common/Lib/common.php
44260a1d 2018-08-15 10:59:09 https://dump.gxxservice[.]com/common/up/up_base.php
8272c1f4 2018-11-01 13:16:24 https://nw.infestexe[.]com/version/last.php

En las primeras tres variantes, el código no fue recompilado, pero los datos de configuración fueron editados en el propio archivo DLL. El resto del contenido es una copia byte a byte.

Infraestructura C&C

Los nombres de dominio fueron cuidadosamente elegidos para que aparenten tener relación con el juego o con el autor de la aplicación. El dominio apex fue configurado para redirigir hacia un sitio legítimo importante utilizando el servicio de redirección Namecheap, mientras que el subdominio apunta al servidor malicioso C&C.

Domain name Registration date Redirection target
xigncodeservice.com 2018-07-10 09:18:17 https://namu.wiki/[w]/XIGNCODE
gxxservice.com 2018-08-14 13:53:41 None or unknown
infestexe.com 2018-11-07 08:46:44 https://www.facebook.com/infest.[in].[th]

Subdomain name IP addresses Provider
bugcheck.xigncodeservice.com 167.99.106[.]49, 178.128.180[.]206 DigitalOcean
dump.gxxservice.com 142.93.204[.]230 DigitalOcean
nw.infestexe.com 138.68.14[.]195 DigitalOcean

Al momento de escribir este artículo, ninguno de estos dominios resuelve y los servidores C&C no están respondiendo.

Reporte de reconocimiento

Un identificador de bot es generado desde la dirección MAC de las máquinas. El backdoor reporta información sobre la máquina, como por ejemplo, el nombre de usuario, nombre de la computadora, versión de Windows e idioma del sistema con el servidor C&C y espera para recibir instrucciones. Los datos están en cifrado XOR con la llave “*&b0i0rong2Y7un1” y codificados en base64.

Comandos

Este simple backdoor tiene cuatro comandos que pueden ser utilizados por el atacante:

  • DownUrlFile
  • DownRunUrlFile
  • RunUrlBinInMem
  • UnInstall

Los comandos son bastante autoexplicativos. Permiten al atacante correr ejecutables adicionales desde una URL dada.

El ultimo es quizás menos obvio. El comando UnInstall no remueve el malware del sistema. Después de todo, está embebido dentro de un ejecutable legítimo que aún necesita correr. Más que remover algo, lo que hace es deshabilitar el código malicioso estableciendo el siguiente valor de registro a 1:

  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ImageFlag

Cuando el payload inicia, el valor de registro es consultado y la ejecución es cancelada si se establece el valor correspondiente. Quizás los atacantes están intentando reducir la carga de sus servidores C&C al evitar la devolución de llamadas de víctimas que no resulten interesantes.

Segunda fase

Basados en la telemetría de ESET, uno de los payload de segunda fase enviados a la víctima es Win64/Winnti.BN. Hasta donde podemos decir, su dropper fue descargado sobre HTTPS desde api.goallbandungtravel[.]com. Lo hemos visto instalado como un servicio de Windows y como una DLL en C:\Windows\System32 utilizando los siguientes nombres de archivo:

  • cscsrv.dll
  • dwmsvc.dll
  • iassrv.dll
  • mprsvc.dll
  • nlasrv.dll
  • powfsvc.dll
  • racsvc.dll
  • slcsvc.dll
  • snmpsvc.dll
  • sspisvc.dll

Las muestras que analizamos eran bastante grandes, con aproximadamente 60MB cada una de ellas. Sin embargo, esto es solo para aparentar, porque el tamaño real del archivo PE es de entre 63KB y 72KB, dependiendo de la versión. Los archivos del malware tienen varios archivos limpios adjuntados. Esto es hecho probablemente por el componente que droppea e instala este servicio malicioso.

Una vez que el servicio corre, adjunta la extensión .mui a su ruta DLL, lee ese archivo y lo descifra utilizando RC5. El archivo MUI descifrado contiene código de posición independiente con desplazamiento 0. La llave RC5 es derivada desde el número de serie del disco rígido y el string f@Ukd!rCto R$. — no fuimos capaces de obtener ningún archivo MUI ni el código que los instala en primer lugar. Por lo tanto, no sabemos exactamente el propósito de este servicio malicioso.

Recientes versiones del malware incluyen un mecanismo de actualización automática mediante la utilización del servidor C&C http://checkin.travelsanignacio[.]com. Este servidor C&C entregó la última versión de los archivos MUI cifrados con una llave estática RC5. Durante nuestro análisis, el servidor C&C no estaba respondiendo.

Blancos de ataque

Comencemos por señalar aquellos que no están apuntados. Una etapa temprana en el payload, el malware revisa si el idioma del sistema es ruso o chino (Figura 5). En cualquiera de estos casos, el malware deja de correr, lo que deja bastante claro que los atacantes no están interesados en computadoras configuradas con estos idiomas.

Figura 5 Revisión del idioma antes de ejecutar el payload

Estadísticas de distribución

La telemetría de ESET muestra que la mayoría de las víctimas está ubicada en Asia, siendo Tailandia el país más afectado, Dada la popularidad de las aplicaciones comprometidas, que continúan siendo distribuidas por sus desarrolladores, no sería llamativo que el número de víctimas alcance cifras en el entorno de decenas o cientos de miles.

Conclusión

Los ataques de cadena de suministro son difíciles de detectar desde la perspectiva del consumidor. Es imposible comenzar analizando cada pieza de software que corremos, especialmente con todas las actualizaciones regulares que instan y/o requieren instalar. Por lo tanto, depositamos nuestra confianza en los proveedores de software y que los archivos que distribuyen no incluyen malware. Quizás esa es la razón por la que múltiples grupos apuntan a desarrolladores de software: comprometiendo los resultados del proveedor en una botnet tan popular como el software que es vulnerado. Sin embargo, existe una desventaja de utilizar esta técnica: una vez que el esquema es revelado, el atacante pierde control y las computadoras pueden limpiarse mediante actualizaciones regulares.

No sabemos los motivos de los atacantes en este punto. ¿Se trata simplemente de una ganancia económica? ¿Hay alguna razón que explique por qué los tres productos afectados son de desarrolladores de Asia y del mercado asiático? ¿Estos ataques utilizan una botnet como parte de una operación de espionaje más amplia?

Los productos de ESET detectan esta amenaza como, Win32/HackedApp.Winnti.A, Win32/HackedApp.Winnti.B; el payload como Win32/Winnti.AG, y el de segunda fase como Win64/Winnti.BN.

Indicadores de Compromiso (IoCs)

Muestra de archivos comprometidos (Win32/HackedApp.Winnti.A and B)

SHA-1 Compile Time (UTC) RC4 key Payload SHA-1
474b1c81de1eafe93602c297d701418658cf6feb Mon Jul 16 07:37:14 2018 207792894 a045939f
47dd117fb07cd06c8c6faa2a085e0d484703f5fd Wed Jul 25 06:44:09 2018 207792894 a045939f
54b161d446789c6096362ab1649edbddaf7145be Tue Sep 4 08:02:38 2018 165122939 a260dcf1
67111518fe2982726064ada5b23fd91d1eb3d48e Wed Sep 19 09:51:44 2018 17858542 dde82093
0f31ed081ccc18816ca1e3c87fe488c9b360d02f Fri Sep 28 05:32:30 2018 17858542 dde82093
5e2b7b929471ac3ba22a1dfa851fac1044a698dc Tue Oct 16 05:09:15 2018 17858542 dde82093
132e699e837698ef090e3f5ad12400df1b1e98fa Thu Oct 18 02:53:03 2018 17858542 dde82093
d4eaf47253fe59f11a06517bb9e2d5e8b785abf8 Thu Nov 1 07:00:55 2018 17858542 dde82093
7cf41b1acfb05064518a2ad9e4c16fde9185cd4b Tue Nov 13 10:12:58 2018 1729131071 8272c1f4
7f73def251fcc34cbd6f5ac61822913479124a2a Wed Nov 14 03:50:18 2018 19317120 44260a1d
dac0bd8972f23c9b5f7f8f06c5d629eac7926269 Tue Nov 27 03:05:16 2018 1729131071 8272c1f4

Algunos hashes fueron redactados por solicitud de uno de los proveedores. Si por motivos particulares usted los necesita, puede contactarnos a través de: threatintel@eset.com.

Muestras del payload (Win32/Winnti.AG)

SHA-1 C&C server URL
a045939f53c5ad2c0f7368b082aa7b0bd7b116da https://bugcheck.xigncodeservice[.]com/Common/Lib/Common_bsod.php
a260dcf193e747cee49ae83568eea6c04bf93cb3 https://bugcheck.xigncodeservice[.]com/Common/Lib/Common_Include.php
dde82093decde6371eb852a5e9a1aa4acf3b56ba https://bugcheck.xigncodeservice[.]com/Common/Lib/common.php
8272c1f41f7c223316c0d78bd3bd5744e25c2e9f https://nw.infestexe[.]com/version/last.php
44260a1dfd92922a621124640015160e621f32d5 https://dump.gxxservice[.]com/common/up/up_base.php

Muestras de segunda fase (Win64/Winnti.BN)

Dropper enviado por api.goallbandungtravel[.]com.

SHA-1 Compile Time (UTC) C&C server URL prefix
4256fa6f6a39add6a1fa10ef1497a74088f12be0 2018-07-25 10:13:41 None
bb4ab0d8d05a3404f1f53f152ebd79f4ba4d4d81 2018-10-10 09:57:31 http://checkin.travelsanignacio[.]com

Matríz de MITRE ATT&CK

ID Description
T1195 Supply Chain Compromise
T1050 New Service
T1022 Data Encrypted
T1079 Multilayer Encryption
T1032 Standard Cryptographic Protocol (RC4, RC5)
T1043 Commonly Used Port (80,443)
T1009 Binary Padding