Esta no es la primera vez que los atacantes atacan la industria del juego, comprometen a los desarrolladores, agregan puertas traseras al entorno de construcción del juego y luego distribuyen malware bajo la apariencia de uno legítimo. En abril de 2013, Kaspersky Lab
informó un incidente similar. Este ataque se atribuye a un cybergroup llamado Winnti.
Recientemente, los expertos de ESET se han visto atraídos por nuevos ataques a las cadenas de suministro. Se comprometieron dos juegos y una plataforma de juego para introducir una puerta trasera. Estos ataques apuntan a Asia y la industria del juego, con Winnti nuevamente detrás de ellos.
Tres cajas, una puerta trasera
A pesar de las diferentes configuraciones de malware, los tres productos de software comprometidos incluyeron el mismo código de puerta trasera y comenzaron a usar el mismo mecanismo. Ahora no hay puertas traseras en dos productos, pero uno todavía se distribuye en una versión troyanizada; irónicamente, este juego se llama Infestation, que es lanzado por la compañía tailandesa Extreme Extreme. Hemos estado tratando de contactar al desarrollador desde principios de febrero, pero hasta ahora fue en vano.
Analizaremos cómo se introduce la carga útil maliciosa y luego consideraremos la puerta trasera en detalle.
Implementación de carga útil
El código de carga útil se ejecuta durante la ejecución del ejecutable trojanizado. Inmediatamente después del punto de entrada PE, se intercepta la llamada de inicialización estándar de C Runtime (
__scrt_common_main_seh
en la figura a continuación) para lanzar la carga maliciosa antes que cualquier otra cosa (Figura 2). Esto puede indicar que los atacantes cambiaron la configuración del ensamblado y no el código fuente en sí.
Figura 1. Punto de entrada neto al archivo ejecutable
Figura 2. Punto de entrada de un ejecutable comprometidoEl código agregado al ejecutable descifra y lanza la puerta trasera en la RAM antes de reanudar la ejecución normal del código de inicialización de C Runtime y el código de la aplicación host posterior. La carga útil incorporada tiene una estructura especial, que se muestra en la figura a continuación, que se interpreta mediante el código de descompresión agregado.
Figura 3. Estructura de carga útil integradaContiene la clave RC4 (XOR cifrada con 0x37), que se utiliza para descifrar el nombre del archivo y el archivo DLL incrustado.
Carga maliciosa
La carga útil maliciosa real contiene solo 17 KB de código y datos.
Configuracion
Los datos de configuración que se muestran en la figura siguiente son una lista de líneas separadas por espacios.
Figura 4. Datos de configuración de la carga útilLa configuración consta de cuatro campos:
- URL del servidor de gestión de C & C.
- La variable (t) utilizada para determinar el tiempo de espera en milisegundos antes de continuar. El tiempo de espera se selecciona en el rango de 2/3 a 5/3 t al azar.
- Línea que identifica la campaña.
- Una lista de nombres de archivos ejecutables, separados por punto y coma. Si alguno de ellos funciona, la puerta trasera detiene su ejecución.
Hemos identificado cinco versiones de la carga útil:

En las tres primeras opciones, el código no se volvió a compilar, pero los datos de configuración se editaron en el archivo DLL. El resto del contenido es una copia de bytes.
Infraestructura C&C
Los nombres de dominio se eligen de manera que se parezcan a los sitios de desarrolladores de aplicaciones comprometidas. El dominio de nivel superior está configurado para redirigir al sitio legítimo correspondiente utilizando el servicio Namecheap, mientras que el subdominio apunta a un servidor C&C malicioso.

Al momento de escribir esto, ninguno de los dominios está disponible, los servidores C y C no responden.
Informe de estudio
La ID del bot se genera a partir de la dirección MAC de la máquina. La puerta trasera transmite información de la máquina al servidor C&C, incluido el nombre de usuario, el nombre de la computadora, la versión de Windows y el idioma del sistema, y luego espera un comando. Los datos se cifran con XOR utilizando la clave "
*&b0i0rong2Y7un1
" y se codifican con base64. Los datos recibidos del servidor de C&C se cifran con la misma clave.
Equipos
Una puerta trasera simple solo admite cuatro equipos que pueden ser utilizados por los atacantes:
-
DownUrlFile
-
DownRunUrlFile
-
RunUrlBinInMem
-
UnInstall
Los nombres de los equipos hablan por sí mismos. Permiten a los atacantes ejecutar ejecutables adicionales desde una URL determinada.
Quizás el último comando es menos obvio.
UnInstall
no elimina el malware del sistema. Al final, está incrustado en un archivo ejecutable legítimo que aún se ejecutará. En lugar de eliminar algo, el comando deshabilita el código malicioso estableciendo el valor en 1 para la clave de registro:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ImageFlag
Después de iniciar la carga útil, se solicita el valor del registro y, si se especifica, se cancela la ejecución. Quizás los atacantes están tratando de reducir la carga en sus servidores de C&C evitando devoluciones de llamadas de víctimas sin interés.
Segunda etapa
Según la telemetría, una de las cargas útiles de la segunda etapa enviada a las víctimas es Win64 / Winnti.BN. Por lo que podemos decir, el cuentagotas de este malware se descarga a través de HTTPs desde
api.goallbandungtravel[.]com
. Vimos que se instaló como un servicio de Windows y como una DLL en
C:\Windows\System32
usando 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 lo suficientemente grandes, alrededor de 60 MB. Sin embargo, esto es solo visibilidad, ya que el tamaño real o el archivo PE es de 63 a 72 KB, dependiendo de la versión. Muchos de los limpios simplemente se agregan a los archivos maliciosos. Es probable que esto lo haga un componente que restablezca e instale un servicio malicioso.
Después de iniciar el servicio, agrega la extensión
.mui
a su
.mui
DLL y lo descifra usando RC5. El archivo MUI descifrado contiene código independiente de la posición con desplazamiento 0. La clave RC5 se obtiene del número de serie del disco duro y la línea "
f@Ukd!rCto R$.
" No pudimos obtener ni los archivos MUI ni el código que los instala primero. Por lo tanto, el propósito exacto del servicio malicioso es desconocido para nosotros.
Las versiones recientes de malware incluyen un mecanismo de actualización automática que utiliza el servidor C&C
http://checkin.travelsanignacio[.]com
. Este servidor sirvió la última versión de los archivos MUI encriptados con la clave estática RC5. En el curso de nuestra investigación, este servidor de C&C no respondió.
Objetivos
Comencemos con aquellos a quienes la campaña
no está dirigida específicamente. Al comienzo de la carga útil, el malware comprueba si el idioma del sistema es ruso o chino (consulte la figura a continuación). Si la respuesta es sí, el programa deja de funcionar. Es imposible evitar esta excepción: los atacantes no están interesados fundamentalmente en computadoras con esta configuración de idioma.
Figura 5. Comprobación del idioma antes de iniciar la carga útilEstadísticas de distribución
Según la telemetría, la mayoría de las infecciones ocurrieron en Asia, especialmente Tailandia. Dada la popularidad de la aplicación comprometida, que todavía está siendo distribuida por el desarrollador, no es sorprendente si el número de víctimas asciende a decenas y cientos de miles.

Conclusión
Los ataques a la cadena de suministro son difíciles de detectar en el lado del usuario. Es imposible analizar todo el software en ejecución, así como todas las actualizaciones recomendadas. Por defecto, el usuario confía en los desarrolladores y asume que sus archivos no contienen código malicioso. Esta es probablemente la razón por la que varios cibergrupos están dirigidos a ataques contra proveedores de software: comprometerlos permitirá crear una botnet, cuyo tamaño es comparable a la popularidad del software trojanizado. Esta táctica tiene un inconveniente: cuando se revela el esquema, los atacantes perderán el control de la botnet y los usuarios podrán limpiar el sistema instalando la próxima actualización.
Los motivos del cibergrupo Winnti son actualmente desconocidos. Quizás los atacantes buscan ganancias financieras o planean usar la botnet como parte de una operación más grande.
Los productos de ESET detectan la amenaza como Win32 / HackedApp.Winnti.A, Win32 / HackedApp.Winnti.B, la carga útil como Win32 / Winnti.AG, la segunda etapa como Win64 / Winnti.BN.
Los indicadores de compromiso están disponibles aquí .