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.
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.
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.
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.
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.
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.
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.
Lo siguiente es una descripción general de lo que se muestra en el diagrama de secuencia anterior:
- 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.
- 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.
- Nox.exe proporciona los parámetros adecuados a NoxPlayer.exe para descargar la actualización.
- 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.
- 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.
- Se realiza alguna tarea de reconocimiento en el equipo de la víctima y se envía información a los operadores de malware.
- Los perpetradores confeccionan actualizaciones maliciosas para víctimas específicas según su interés basándose en algún esquema de filtrado desconocido.
- Nox.exe realizará solicitudes de actualización esporádicas.
- 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.
- 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
- Actualización maliciosa de la infraestructura controlada por el atacante::
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:
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)) |
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.
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.
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. |