ACTUALIZACIÓN (3 de febrero de 2021):
Tras la publicación de nuestra investigación, BigNox se ha puesto en contacto con nosotros para decirnos que su negación inicial del compromiso fue un malentendido de su parte y que desde entonces han estado tomado los siguientes pasos para mejorar la seguridad de sus usuarios:

  • Usar solo HTTPS para el envío de actualizaciones de software a fin de minimizar los riesgos de secuestro de dominio y de ataques de Man in the Middle (MitM)
  • Implementar la verificación de la integridad de los archivos mediante hash MD5 y la comprobación de firmas de archivos
  • Adoptar medidas adicionales, para evitar exponer la información personal de los usuarios, especialmente el cifrado de datos sensibles.

BigNox también ha declarado que han enviado los archivos más recientes al servidor de actualización de NoxPlayer y que, al iniciarse, NoxPlayer ahora ejecutará una verificación de los archivos de la aplicación previamente instalados en las máquinas de los usuarios.
ESET no asume ningún tipo de responsabilidad por la precisión de la información proporcionada por BigNox.

Durante 2020, el equipo de investigación de ESET informó acerca de varios ataques de cadena de suministro, como el caso de WIZVERA VeraPort, utilizado por sitios web gubernamentales y bancarios en Corea del Sur, Operación StealthyTrident en el que se comprometió el software de chat Able Desktop utilizado por varias agencias gubernamentales de Mongolia, y Operación SignSight, en el que se comprometió la distribución de un software de firma que es distribuido por el gobierno vietnamita.

En enero de 2021 descubrimos un nuevo ataque de cadena de suministro en el que se comprometía el mecanismo de actualización de NoxPlayer, un emulador de Android para PC y Mac que forma parte de la gama de productos de BigNox, que cuentan con más de 150 millones de usuarios en todo el mundo.

Este software es generalmente utilizado por gamers con el fin de jugar videojuegos para móviles en sus computadoras, lo que hace que este incidente sea algo inusual.

Se identificaron tres familias de malware diferentes que se distribuían a partir de actualizaciones maliciosas personalizadas a víctimas seleccionadas, sin señales de que se persiga una ganancia financiera, sino más bien capacidades relacionadas con el monitoreo o vigilancia.

Detectamos similitudes entre algunos de los loaders utilizados en esta operación con otros que hemos estado monitoreando en el pasado, como instancias que descubrimos como parte del compromiso de un sitio web de la oficina presidencial de Myanmar en 2018, y a principios de 2020 en una intrusión que afectó a una Universidad de Hong Kong.

Sobre BigNox

BigNox es una empresa con sede en Hong Kong que ofrece varios productos, principalmente un emulador de Android para PC y Mac llamado NoxPlayer. El sitio web oficial de la compañía afirma que tiene más de 150 millones de usuarios en más de 150 países que hablan 20 idiomas diferentes. Sin embargo, es importante tener en cuenta que la base más importante de seguidores de BigNox se encuentra principalmente en países asiáticos.

BigNox también escribió un extenso artículo en el año 2019 sobre el uso de una VPN en conjunción con NoxPlayer, mostrando la preocupación de la empresa por la privacidad de sus usuarios.

Hemos contactado a BigNox por la intrusión y negaron haber sido afectados. Hemos también ofrecido nuestro apoyo para ayudarlos a realizar la divulgación en caso de que decidan llevar adelante una investigación interna.

¿Estoy comprometido?

  • A quién afecta: usuarios de NoxPlayer.
  • Cómo determinar si recibí una actualización maliciosa o no: verifique si algún proceso en curso tiene una conexión de red activa con servidores de C&C conocidos activos, o revise si alguno de los malware basados en los nombres de archivo que proporcionamos en el reporte está instalado en:
    • C:\ProgramData\Sandboxie\SbieIni.dat
    • C:\ProgramData\Sandboxie\SbieDll.dll
    • C:\ProgramData\LoGiTech\LBTServ.dll
    • C:\Program Files\Internet Explorer\ieproxysocket64.dll
    • C:\Program Files\Internet Explorer\ieproxysocket.dll
    • un archivo nombrado %LOCALAPPDATA%\Nox\update\UpdatePackageSilence.exe sin la firma digital por parte de BigNox.
  • Cómo estar protegido:
    • En caso de intrusión – realizar reinstalación estándar desde un medio limpio.
    • Para usuarios que no han sido comprometidos: no descargue ninguna actualización hasta que BigNox notifique que ha mitigado la amenaza.

Cronología

De acuerdo con la telemetría de ESET, vimos los primeros indicadores de compromiso en septiembre de 2020, y la actividad continuó hasta que descubrimos la actividad maliciosa de forma explícita el día 25 de enero de 2021, momento en el que se informó del incidente a BigNox.

Victimología

En comparación con el número total de usuarios activos de NoxPlayer, hay un número muy pequeño de víctimas. Según la telemetría de ESET, más de 100.000 de nuestros usuarios tienen Noxplayer instalado en sus máquinas. Entre ellos, solo 5 usuarios recibieron una actualización maliciosa, lo que demuestra que Operación NightScout es una operación altamente dirigida. Las víctimas están ubicadas en Taiwán, Hong Kong y Sri Lanka.

Figura 1. Mapa de Asia y los países en los que se encuentran las víctimas detectadas

No pudimos encontrar correlaciones que sugirieran algún tipo de vínculo entre las víctimas. Sin embargo, según el software comprometido en cuestión y el malware entregado que exhibe capacidades de vigilancia, creemos que esto puede indicar la intención de recopilar información sobre objetivos que de alguna manera están involucrados en la comunidad gamer.

Es importante destacar que, a diferencia de otras operaciones similares en el pasado, como la actividad del Grupo Winnti dirigida a la industria de videojuegos en 2019, no hemos encontrado indicadores que sugieran una proliferación indiscriminada de actualizaciones maliciosas entre un gran número de usuarios de NoxPlayer, lo que refuerza nuestra creencia de que estamos ante una operación altamente dirigida.

Mecanismo de actualización

Para comprender la dinámica de este ataque de cadena de suministro es importante saber qué vector se utilizó para entregar malware a los usuarios de NoxPlayer. Este vector fue el mecanismo de actualización de NoxPlayer.

Al iniciarse, si NoxPlayer detecta una versión más reciente del software, le mostrará al usuario un cuadro de mensaje (Figura 2) para ofrecerle la opción de instalarlo.

Figura 2. Solicitud de actualización de NoxPlayer

Esto se hace consultando al servidor de actualización a través de la API REST de BigNox (api.bignox.com) para recuperar información de actualización específica, como se ve en la Figura 3.

Figura 3. Solicitud de la API del cliente de actualización de NoxPlayer

La respuesta a esta consulta contiene información específica de la actualización, como la URL del binario de la actualización, su tamaño, hash MD5 y otra información adicional relacionada, como se muestra en la Figura 4.

Figura 4. Respuesta de la API del servidor de NoxPlayer

Al presionar el botón “Update now” de la Figura 1, el binario principal de la aplicación de NoxPlayer (Nox.exe) suministrará los parámetros de actualización recibidos a otro binario en su caja de herramientas NoxPack.exe, que se encarga de descargar la propia actualización, como se puede ver en la Figura 5.

Figura 5. Cadena de ejecución de NoxPlayer en la actualización

Una vez hecho esto, la barra de progreso en el cuadro de mensaje reflejará el estado de la descarga (Figura 6) y, cuando se haya completado, se habrá realizado la actualización.

Figura 6. Actualización de NoxPlayer en curso a través de NoxPack.exe

Indicadores de compromiso de la cadena de suministro

Tenemos evidencia suficiente para afirmar que la infraestructura de BigNox (res06.bignox.com) fue comprometida para alojar malware, y también para sugerir que su infraestructura de API HTTP (api.bignox.com) podría haber sido comprometida. En algunos casos, el actualizador de BigNox descargó payloads adicionales desde servidores controlados por los atacantes. Esto sugiere que el campo URL, proporcionado en la respuesta de la API de BigNox, fue manipulado por los atacantes. El flujo de intrusión observado se muestra en la Figura 7.

Figura 7. Diagrama de secuencia del flujo de intrusión

Lo siguiente es una descripción general de lo que se muestra en el diagrama de secuencia anterior:

  1. En la ejecución, el ejecutable principal de NoxPlayer, Nox.exe, enviará una solicitud a través de la API para consultar información de actualización.
  2. El servidor de la API de BigNox responde a la solicitud del cliente con información de actualización específica, incluida la URL para descargar la actualización de la infraestructura legítima de BigNox.
  3. Nox.exe proporciona los parámetros adecuados a NoxPlayer.exe para descargar la actualización.
  4. La actualización legítima almacenada en la infraestructura de BigNox podría haber sido reemplazada por malware, o puede ser un nuevo nombre de archivo/URL no utilizado por actualizaciones legítimas.
  5. El malware es instalado en la máquina de la víctima. Contrariamente a las actualizaciones legítimas de BigNox, los archivos maliciosos no están firmados digitalmente, lo que sugiere que el sistema de compilación de BigNox no se vio comprometido, sino solo los sistemas que distribuyen las actualizaciones.
  6. Se realiza alguna tarea de reconocimiento en el equipo de la víctima y se envía información a los operadores de malware.
  7. Los perpetradores confeccionan actualizaciones maliciosas para víctimas específicas según su interés basándose en algún esquema de filtrado desconocido.
  8. Nox.exe realizará solicitudes de actualización esporádicas.
  9. El servidor de la API de BigNox responde al cliente con información de actualización, que establece que la actualización se almacena en la infraestructura controlada por el atacante.
  10. Malware adicional es enviado a víctimas seleccionadas.

Con esta información podemos destacar varias cosas:

  • Infraestructura legítima de BigNox distribuía malware para actualizaciones específicas. Observamos que estas actualizaciones maliciosas solo se llevaron a cabo en septiembre de 2020.
  • Además, observamos que, para víctimas específicas, las actualizaciones maliciosas se descargaron de la infraestructura controlada por el atacante posteriormente y durante el final de 2020 y principios de 2021.
  • Estamos muy seguros de que estas actualizaciones adicionales fueron realizadas por Nox.exe proporcionando parámetros específicos a NoxPack.exe, lo que sugiere que el mecanismo de la API de BigNox también puede haber sido comprometido para entregar actualizaciones maliciosas personalizadas.
  • También podría sugerir la posibilidad de que las víctimas fueran sometidas a un ataque de MitM, aunque creemos que esta hipótesis es poco probable ya que las víctimas que descubrimos están en diferentes países y los atacantes ya tenían un pie dentro de la infraestructura de BigNox.
  • Además, pudimos reproducir la descarga de las muestras de malware alojadas en res06.bignox.com desde una máquina de prueba y usando https. Esto descarta la posibilidad de que se haya utilizado un ataque MitM para alterar el binario de la actualización.

También es importante mencionar que las actualizaciones maliciosas descargadas de la infraestructura controlada por el atacante imitaron la ruta de las actualizaciones legítimas:

    • Actualización maliciosa de la infraestructura controlada por el atacante::
      http://cdn.cloudfronte[.]com/player/upgrade/ext/20201030/1/35e3797508c555d5f5e19f721cf94700.exe
    • Actualización legítima de NoxPlayer:
      http://res06.bignox[.]com/player/upgrade/202012/1b31bced0a564bed9f60264f061dcdae.exe

Además, los nombres de dominio registrados y controlados por atacantes imitaban el nombre de dominio de la red BigNox CDN, que es cloudfront.net.

Estos indicadores sugieren que los atacantes intentaban evitar la detección para poder permanecer fuera del radar y lograr la persistencia a largo plazo.

Malware

Se observaron un total de tres variantes diferentes de actualizaciones maliciosas, cada una de las cuales droppeo un malware diferente. Estas variantes son las siguientes:

Actualización maliciosa - Variante 1

Esta variante es una de las actualizaciones preliminares que apunta a una infraestructura de BigNox comprometida. Nuestro análisis se basa en la muestra con SHA-1 CA4276033A7CBDCCDE26105DEC911B215A1CE5CF.

El malware entregado no parece haber sido documentado previamente. No es extremadamente complejo, pero tiene suficientes capacidades para monitorear a sus víctimas. El archivo RAR SFX inicial coloca dos DLL en C:\Program Files\Internet Explorer\ y ejecuta una de ellas, según la arquitectura, a través de rundll32.exe. Los nombres de estas DLL son los siguientes:

  • ieproxysocket64.dll
  • ieproxysocket.dll

También colocará en el disco un archivo de texto llamado KB911911.LOG, en el cual se escribirá el nombre original del instalador SFX. La DLL intenta abrir y leer este archivo de registro, y si no lo encuentra, detendrá la ejecución.

La DLL luego verificará si ha sido cargada por alguno de los siguientes procesos; si lo ha hecho, detendrá su propia ejecución:

  • smss.exe
  • winlogon.exe
  • csrss.exe
  • wininit.exe
  • services.exe
  • explorer.exe

La dirección IP de la máquina será verificada para comprobar que no sea 127.0.0.1 ni 0.0.0.0. Si es así, se volverá a verificar en un loop infinito hasta que cambie. De lo contrario, procederá a extraer el UUID de la máquina actual mediante una consulta de objeto WMI. Este UUID devuelto es hasheado utilizando MD5 para serializar la víctima actual. La información del nombre de la cuenta también se recuperará y guardará.

Se recuperará una configuración cifrada de los recursos de las DLL. Esta configuración es cifrada utilizando un XOR de dos bytes con 0x5000. La configuración cifrada es parcialmente visible dada la debilidad de la clave utilizada:

Figura 8. Configuración cifrada en recursos

El formato de esta configuración es el siguiente (aproximadamente):

Offset Size Comment
0x00 0x08 Fake JPG header magic
0x08 0x12C Buffer holding tokenized C&C information
0x134 0x14 Buffer holding port for C&C communication
0x148 0x14 Sleep time
0x15C 0x14 Operate flag; don’t operate with network monitoring tools deployed or if this flag is set
0x170 0x14 N/A
0x184 0x14 DNS flag; append a token at the end of a hostname buffer with either |UDP or |DNS, depending on the value of this field
0x198 0x38 Variable holding offset start of decoded configuration buffer

Una vez parseada la configuración, el backdoor comprobará varias veces los procesos de monitoreo de la red antes de transferir la ejecución al loop del C&C. La operación se detiene si se establece el indicador Operate o si se está ejecutando alguno de los siguientes procesos:

  • netman.exe
  • wireshark.exe

El backdoor puede usar una dirección IP sin formato o un nombre de dominio para comunicarse con el servidor de C&C. Después de una conexión exitosa con el C&C, el malware podrá ejecutar los siguientes comandos:

Command ID Specification
getfilelist-delete Delete specified files from the disk
getfilelist-run Run a command via the WinExec API
getfilelist-upload Upload a file via ScreenRDP.dll::ConnectRDServer
getfilelist-downfile1 Download a specific file
getfilelist-downfile2 Download a specific directory
getfilelist-downfile3 Same as getfilelist-downfile2
<default> \\tsclient drive redirection of certain directories (starting with A: for range(0x1A))

 

Figura 9. Anatomía de la variante 1 de la actualización maliciosa

Actualización maliciosa - Variante 2

Esta variante del malware también descubrimos que se descargaba de la infraestructura legítima de BigNox. Nuestro análisis se basa en la muestra con SHA-1 E45A5D9B03CFBE7EB2E90181756FDF0DD690C00C.

Contiene varios archivos que comprenden lo que se conoce como “trident bundle” o paquete tridente, en el que se utiliza un ejecutable firmado para cargar una DLL maliciosa, que descifrará y cargará una shellcode, implementando un loader reflectivo para el payload final.

El tema de este paquete de tridente fue disfrazar el malware como componentes de Sandboxie. Los nombres de los componentes incluidos en el paquete son los siguientes:

Filename Description
C:\ProgramData\Sandboxie\SandboxieBITS.exe Signed Sandboxie COM Services (BITS)
C:\ProgramData\Sandboxie\SbieDll.dll Malicious hijacked DLL
C:\ProgramData\Sandboxie\SbieIni.dat Malicious encrypted payload; decrypts a reflectively loaded instance of Gh0st RAT
C:\Users\Administrator\AppData\Local\Temp\delself.bat Script to self-delete the initial executable
C:\Windows\System32\wmkawe_3636071.data Text file containing the sentence Stupid Japanese

Hemos encontrado otras instancias de este mismo archivo de texto, droppeado por un loader muy similar en un compromiso de cadena de suministro que involucró al sitio web de la oficina presidencial de Myanmar en 2018, y en una intrusión en una universidad de Hong Kong en 2020.

El payload final desplegado fue una variante de Gh0st RAT con capacidades de keylogger.

Figura 10. Anatomía de la variante 2 de la actualización maliciosa

Actualización maliciosa – Variante 3

Esta variante de la actualización solo se detectó en actividad después a las actualizaciones maliciosas iniciales descargadas de la infraestructura controlada por el atacante. Nuestro análisis se basa en la muestra con SHA-1 AA3D31A1A6FE6888E4B455DADDA4755A6D42BEEB.

Del mismo modo, al igual que con la variante anterior, esta actualización maliciosa viene incluida en un archivo MFC y extrae dos componentes: un archivo benigno firmado y una dependencia del mismo. Los componentes son:

Filename Description
C:\ProgramData\LoGiTech\LoGitech.exe Signed Logitech binary
C:\ProgramData\LoGiTech\LBTServ.dll Malicious DLL decrypts and reflectively loads an instance of PoisonIvy

En las víctimas descubiertas más recientemente, el binario inicial descargado se escribió en Delphi, mientras que para las víctimas anteriores, la misma URL controlada por el atacante droppeo un binario escrito en C/C++. Estos binarios son los loaders preliminares iniciales. Aunque los loaders se escribieron en diferentes lenguajes de programación, ambas versiones desplegaron el mismo payload final, que es una instancia de PoisonIvy RAT.

Figura 11. Anatomía de la variante 3 de la actualización maliciosa

Conclusión

Hemos detectado varios ataques de cadena de suministro en el último año, como Operación SignSight o el compromiso de Able Desktop, entre otros. Sin embargo, en el caso de Operación NightScout el compromiso de la cadena de suministro es particularmente interesante debido a los blancos de ataque, ya que rara vez encontramos muchas operaciones de ciberespionaje dirigidas a jugadores de videojuegos en línea.

Los ataques de cadena de suministro seguirán siendo un vector de compromiso aprovechado por los grupos de ciberespionaje, y su complejidad puede afectar el descubrimiento y la mitigación de este tipo de incidentes.

Para cualquier consulta o para enviar muestras relacionadas con el tema, escríbanos a: threatintel@eset.com.

Reconocimiento

El autor quisiera reconocer el apoyo de Matthieu Faou y agradecer por su respaldo y su devolución durante la investigación.

Indicadores de Compromiso (IoCs)

Archivos

SHA-1 ESET detection name Decription
CA4276033A7CBDCCDE26105DEC911B215A1CE5CF Win32/Agent.UOJ Malicious Update variant 1
E45A5D9B03CFBE7EB2E90181756FDF0DD690C00C Win32/GenKryptik.ENAT Malicious Update variant 2
AA3D31A1A6FE6888E4B455DADDA4755A6D42BEEB Win32/Kryptik.HHBQ Malicious Update variant 3
5732126743640525680C1F9460E52D361ACF6BB0 Win32/Delf.UOD Malicious Update variant 3

Servidores de C&C

210.209.72[.]180
103.255.177[.]138
185.239.226[.]172
45.158.32[.]65
cdn.cloudistcdn[.]com
q.cloudistcdn[.]com
update.boshiamys[.]com

URL de las actualizaciones maliciosas

hxxp://cdn.cloudfronter[.]com/player/upgrade/ext/20201030/1/35e3797508c555d5f5e19f721cf94700.exe
hxxp://cdn.cloudfronter[.]com/player/upgrade/ext/20201101/1/bf571cb46afc144cab53bf940da88fe2.exe
hxxp://cdn.cloudfronter[.]com/player/upgrade/ext/20201123/1/2ca0a5f57ada25657552b384cf33c5ec.exe
hxxp://cdn.cloudfronter[.]com/player/upgrade/ext/20201225/7c21bb4e5c767da80ab1271d84cc026d.exe
hxxp://cdn.cloudfronter[.]com/player/upgrade/ext/20210119/842497c20072fc9b92f2b18e1d690103.exe
hxxps://cdn.cloudfronte[.]com/player/upgrade/ext/20201020/1/c697ad8c21ce7aca0a98e6bbd1b81dff.exe
hxxp://cdn.cloudfronte[.]com/player/upgrade/ext/20201030/1/35e3797508c555d5f5e19f721cf94700.exe
hxxp://res06.bignox[.]com/player/upgrade/202009/6c99c19d6da741af943a35016bb05b35.exe
hxxp://res06.bignox[.]com/player/upgrade/202009/42af40f99512443cbee03d090658da64.exe

Técnicas de MITRE ATT&CK

Nota: La siguiente tabla fue creada utilizando la versión 8 del framework de MITRE ATT&CK.

Tactic ID Name Description
Initial Access T1195.002 Supply Chain Compromise: Compromise Software Supply Chain Malware gets delivered via NoxPlayer updates.
Execution T1053.005 Scheduled Task/Job: Scheduled Task Malicious update variant 3 instances will be executed via Scheduled task.
Execution T1569.002 System Services: Service Execution Malicious update variant 2 instances will be executed via service execution.
Persistence T1053.005 Scheduled Task/Job: Scheduled Task Malicious update variant 2 instances will create a scheduled task to establish persistence.
Defense Evasion T1140 Deobfuscate/Decode Files or Information Malicious update variant 2 and 3 will be contained in "trident" bundles for evasion purposes.
T1574.002 Hijack Execution Flow: DLL Side-Loading Malicious updates shipped as "trident" bundles will perform DLL side loading.
Collection T1056.001 Input Capture:Keylogging Some of the final payloads such as PoisonIvy and Gh0st RAT have keylogging capabilities.
Command and Control T1090.001 Proxy: Internal Proxy The PoisonIvy final payload variant has capabilities to authenticate with proxies.
T1095 Non-Application Layer Protocol All malicious update instances communicate over raw TCP or UDP.
T1573 Encrypted Channel Both PosionIvy and Gh0st RAT use encrypted TCP communication to avoid detection.
Exfiltration T1041 Exfiltration Over C2 Channel Exfiltration in all malicious updates instances is done over a Command and Control channel.