Los investigadores de ESET proporcionan un análisis de un ataque llevado a cabo por un actor de amenazas alineado con China, no revelado previamente, al que hemos llamado Blackwood, y que creemos que ha estado operando desde al menos 2018.

Los atacantes entregan un sofisticado implante, que llamamos NSPX30, a través de ataques adversary-in-the-middle (AitM) secuestrando solicitudes de actualización de software legítimo.

Puntos clave de este blogpost:
  • Descubrimos que el implante NSPX30 se despliega a través de los mecanismos de actualización de software legítimo como Tencent QQ, WPS Office y Sogou Pinyin.
  • Detectamos el implante en ataques dirigidos contra empresas chinas y japonesas, así como contra particulares ubicados en China, Japón y el Reino Unido.
  • Nuestra investigación rastreó la evolución de NSPX30 hasta un pequeño backdoor de 2005 que hemos denominado Project Wood, diseñado para recopilar datos de sus víctimas.
  • NSPX30 es un implante multietapa que incluye varios componentes, como un dropper, un instalador, loaders, un orquestador y un backdoor. Estos dos últimos tienen sus propios conjuntos de complementos.
  • El implante se diseñó en torno a la capacidad de los atacantes para llevar a cabo la interceptación de paquetes, lo que permite a los operadores de NSPX30 ocultar su infraestructura.
  • NSPX30 también es capaz de autoincluirse en la lista de servicios permitidos de varias soluciones antimalware chinas.
  • Atribuimos esta actividad a un nuevo grupo APT al que hemos denominado Blackwood.

Perfil de Blackwood

Blackwood es un grupo APT alineado con China activo desde al menos 2018, que se dedica a operaciones de ciberespionaje contra individuos y empresas chinas y japonesas. Blackwood tiene capacidades para llevar a cabo ataques adversary-in-the-middle para entregar el implante que hemos denominado NSPX30 a través de actualizaciones de software legítimo, y para ocultar la ubicación de sus servidores de comando y control interceptando el tráfico generado por el implante.

Resumen de la campaña

En 2020, se detectó una oleada de actividad maliciosa en un sistema objetivo ubicado en China. La máquina se había convertido en lo que comúnmente denominamos un "imán de amenazas", ya que detectamos intentos de los atacantes de utilizar kits de herramientas de malware asociados a diferentes grupos APT: Evasive Panda, LuoYu y un tercer actor de amenazas al que rastreamos como LittleBear.

En ese sistema también detectamos archivos sospechosos que no pertenecían a los toolkits de esos tres grupos. Esto nos llevó a iniciar una investigación sobre un implante que denominamos NSPX30; pudimos rastrear su evolución hasta 2005.

Según la telemetría de ESET, el implante se detectó en un pequeño número de sistemas. Entre las víctimas se encuentran:

  • individuos no identificados ubicados en China y Japón,
  • un individuo no identificado de habla china conectado a la red de una universidad pública de investigación de alto perfil en el Reino Unido,
  • una gran empresa de fabricación y comercio en China, y
  • la oficina en China de una empresa japonesa del sector de la ingeniería y la fabricación.

También hemos observado que los atacantes intentan volver a comprometer los sistemas si se pierde el acceso.

La Figura 1 muestra la distribución geográfica de los objetivos de Blackwood, según la telemetría de ESET.

Figure 1. Geographical distribution of Blackwood victims
Figura 1. Distribución geográfica de las víctimas de Blackwood

Evolución de NSPX30

Durante nuestra investigación sobre el implante NSPX30, trazamos su evolución hasta un antepasado primitivo, un simple backdoor al que hemos denominado Project Wood. La muestra más antigua de Project Wood que hemos podido encontrar se compiló en 2005, y parece que se utilizó como código base para crear varios implantes. Uno de estos implantes, a partir del cual evolucionó NSPX30, fue denominado DCM por sus autores en 2008.

La Figura 2 ilustra una cronología de estos desarrollos, basada en nuestro análisis de muestras de nuestra colección y en la telemetría de ESET, así como en documentación pública. Sin embargo, los eventos y datos aquí documentados siguen siendo una imagen incompleta de casi dos décadas de desarrollo y actividad maliciosa por parte de un número desconocido de actores de amenazas.

Figure 2. Timeline of major variants of Project Wood, DCM, and NSPX30
Figura 2. Cronología de las principales variantes de Project Wood, DCM y NSPX30

En las siguientes secciones describimos algunos de nuestros hallazgos en relación con Project Wood, DCM y NSPX30.

Project Wood

El punto de partida en la evolución de estos implantes es un pequeño backdoor compilado el 9 de enero de 2005, según las marcas de tiempo presentes en la cabecera PE de sus dos componentes: el loader y el backdoor. Este último tiene capacidad para recopilar información del sistema y de la red, así como para registrar pulsaciones de teclas y realizar capturas de pantalla.

Hemos llamado al backdoor Project Wood, basándonos en un nombre recurrente de mutex, como se muestra en la Figura 3.

Figure 3. Project Wood code with a recurring theme in most samples
Figura 3. Código del roject Wood con un tema recurrente en la mayoría de las muestras

Las marcas de tiempo de compilación son indicadores poco fiables, ya que pueden ser manipuladas por los atacantes; por lo tanto, en este caso concreto, consideramos puntos de datos adicionales. En primer lugar, las marcas de tiempo de la cabecera PE de las muestras de loader y backdoor; véase la Tabla 1. Sólo hay una diferencia de 17 segundos en el tiempo de compilación de ambos componentes.

Tabla 1. Marcas de tiempo de compilación PE en componentes de la muestra de 2005

SHA-1

Filename

PE compilation timestamp

Description

9A1B575BCA0DC969B134
4651F16514660D1B78A6

MainFuncOften.dll

2005-01-09 08:21:22

Project Wood backdoor.

The timestamp from the Export Table matches the PE compilation timestamp.

834EAB42383E171DD6A4
2F29A9BA1AD8A44731F0

N/A

2005-01-09 08:21:39

The Project Wood loader contains the backdoor embedded as a resource.

 

El segundo punto de datos procede de la muestra dropper que se comprimió utilizando UPX. Esta herramienta inserta su versión (Figura 4) en el archivo comprimido resultante - en este caso, la versión 1.24 de UPX, que se publicó en 2003, antes de la fecha de compilación de la muestra.

Figure 4. UPX string with tool version in the dropper sample
Figura 4. Cadena UPX con la versión de la herramienta en la muestra dropper

El tercer punto de datos son los metadatos válidos de las PE Rich Headers (Figura 5), que indican que la muestra se compiló utilizando Visual Studio 6.0, publicado en 1998, antes de la fecha de compilación de la muestra.

Figure 5. PE Rich Headers from the dropper sample
Figura 5. Encabezados enriquecidos PR de la muestra del dropper

Consideramos que es poco probable que las marcas de tiempo, los metadatos Rich Headers y la versión UPX hayan sido manipulados por los atacantes.

Documentación pública

Según un documento técnico publicado por el SANS Institute en septiembre de 2011, se utilizó un backdoor sin nombre ni atribución (Project Wood) para atacar a una figura política de Hong Kong a través de correos electrónicos de spearphishing.

En octubre de 2014, G DATA publicó un informe sobre una campaña que denominó Operación TooHash, que desde entonces se ha atribuido al grupo Gelsemium APT. El rootkit que G DATA bautizó como DirectsX carga una variante del backdoor Project Wood (ver Figura 6) con algunas características vistas en DCM y posteriormente en NSPX30, como permitir su inclusión en listas de productos de ciberseguridad (detalladas más adelante, en la Tabla 4).

Figure 6. The recurring theme
Figura 6. El tema recurrente también está presente en las muestras de la Operación TooHash

DCM alias Dark Specter

El primitivo project Wood sirvió de base de código para varios projects; uno de ellos es un implante llamado DCM (ver Figura 7) por sus autores.

Figure 7. Code using a new mutex name in the DCM implant
Figura 7. Código que utiliza un nuevo nombre de mutex en el implante DCM

El informe de Tencent de 2016 describe una variante de DCM más desarrollada que se basa en las capacidades AitM de los atacantes para comprometer a sus víctimas mediante la entrega del instalador de DCM como una actualización de software, y para exfiltrar datos a través de solicitudes DNS a servidores legítimos. La última vez que observamos DCM utilizado en un ataque fue en 2018.

Documentación pública

DCM fue documentado por primera vez por la empresa china Jiangmin en 2012, aunque se dejó sin nombre en ese momento, y más tarde fue nombrado Dark Specter por Tencent en 2016.

NSPX30

La muestra más antigua de NSPX30 que hemos encontrado fue recopilada el 6 de junio de 2018. NSPX30 tiene una configuración de componentes diferente a DCM porque su funcionamiento se ha dividido en dos etapas, confiando plenamente en la capacidad AitM del atacante. El código de DCM se dividió en componentes más pequeños.

Le pusimos los nombres de las rutas PDB encontradas en las muestras de plugins:

  • Z:\Workspace\mm\32\NSPX30\Plugins\plugin\b001.pdb
  • Z:\Workspace\Code\MM\X30Pro\trunk\MM\Plugins\hookdll\Release\hookdll.pdb

Creemos que NSP se refiere a su técnica de persistencia: la DLL del loader persistente, que en disco se llama msnsp.dll, internamente se llama mynsp.dll (según los datos de la tabla de exportación), probablemente porque está instalada como proveedor de espacio de nombres Winsock (NSP).

Por último, hasta donde sabemos, NSPX30 no ha sido documentado públicamente antes de esta publicación.

Análisis técnico

Utilizando la telemetría de ESET, determinamos que las máquinas se ven comprometidas cuando el software legítimo intenta descargar actualizaciones de servidores legítimos utilizando el protocolo HTTP (no cifrado). Las actualizaciones de software secuestradas incluyen las de software chino popular como Tencent QQ, Sogou Pinyin y WPS Office.

En la Figura 8 se muestra una ilustración de la cadena de ejecución vista en la telemetría de ESET.

Figure 8. Illustration of the observed chain of execution
Figura 8. Cadena de ejecución observada

En la Tabla 2, proporcionamos un ejemplo de URL y la dirección IP a la que se resolvió el dominio en el sistema del usuario en el momento en que se produjo la descarga.

Tabla 2. URL observada, dirección IP del servidor y nombre de proceso de un componente de descarga legítimo

URL

First seen

IP address

ASN

Downloader

http://dl_dir.qq[.]com/
invc/qq/minibrowser.zip

2021‑10‑17

183.134.93[.]171

AS58461 (CHINANET)

Tencentdl.exe

Según la telemetría de ESET y la información DNS pasiva, las direcciones IP observadas en otros casos están asociadas a dominios de empresas de software legítimas; hemos registrado hasta millones de conexiones en algunas de ellas, y hemos visto cómo se descargaban componentes de software legítimos desde esas direcciones IP.

Hipótesis de implantación de la red

Seguimos sin saber cómo exactamente los atacantes son capaces de distribuir NSPX30 como actualizaciones maliciosas, ya que aún no hemos descubierto la herramienta que permite a los atacantes comprometer inicialmente a sus objetivos.

Basándonos en nuestra propia experiencia con actores de amenazas alineados con China que muestran estas capacidades( Evasive Panda y TheWizards), así como en investigaciones recientes sobre implantes de routers atribuidos a BlackTech y Camaro Dragon (también conocido como Mustang Panda), especulamos que los atacantes están desplegando un implante de red en las redes de las víctimas, posiblemente en dispositivos de red vulnerables como routers o puertas de enlace.

El hecho de que no hayamos encontrado indicios de redirección de tráfico a través de DNS podría indicar que cuando el hipotético implante de red intercepta tráfico HTTP no cifrado relacionado con actualizaciones, responde con el dropper del implante NSPX30 en forma de DLL, un archivo ejecutable o un archivo ZIP que contiene la DLL.

Anteriormente, mencionamos que el implante NSPX30 utiliza la capacidad de interceptación de paquetes de los atacantes para anonimizar su infraestructura de C&C. En las siguientes subsecciones describiremos cómo lo hacen.

Interceptación HTTP

Para descargar el backdoor, el orquestador realiza una petición HTTP (Figura 9) al sitio web de Baidu -un motor de búsqueda y proveedor de software chino legítimo- con un User-Agent peculiar que se hace pasar por Internet Explorer en Windows 98. La respuesta del servidor se guarda en el disco duro del atacante. La respuesta del servidor se guarda en un archivo del que se extrae el componente backdoor y se carga en memoria.

Figure 9. HTTP request sent by the orchestrator
Figura 9. Petición HTTP enviada por el orquestador

El Request-URI es personalizado e incluye información del orquestador y del sistema comprometido. En las peticiones no interceptadas, la emisión de una petición de este tipo al servidor legítimo devuelve un código de error 404. El backdoor utiliza un procedimiento similar para descargar plugins, utilizando un Request-URI ligeramente diferente.

El implante de red simplemente tendría que buscar peticiones HTTP GET a www.baidu.com con ese User-Agent antiguo en particular y analizar el Request-URI para determinar qué carga útil debe enviarse.

Interceptación UDP

Durante su inicialización, el backdoor crea un socket de escucha UDP pasivo y deja que el sistema operativo asigne el puerto. Puede haber complicaciones para los atacantes que utilizan puertas traseras pasivas: por ejemplo, si los cortafuegos o enrutadores que utilizan NAT impiden la comunicación entrante desde fuera de la red. Además, el controlador del implante necesita conocer la dirección IP y el puerto exactos de la máquina comprometida para ponerse en contacto con la puerta trasera.

Creemos que los atacantes resolvieron este último problema utilizando el mismo puerto en el que el backdoor escucha comandos para exfiltrar también los datos recopilados, de modo que el implante de red sabrá exactamente a dónde reenviar los paquetes. El procedimiento de exfiltración de datos, por defecto, comienza tras la creación del socket, y consiste en consultas DNS para el dominio microsoft.com ; los datos recogidos se añaden al paquete DNS. La Figura 10 muestra una captura de la primera consulta DNS enviada por el backdoor.

Figure 10. DNS query
Figura 10. Consulta DNS enviada por el backdoor; la información recopilada se añade al texto plano

La primera consulta DNS se envía a 180.76.76[.]11:53 (un servidor que, en el momento de escribir esto, no expone ningún servicio DNS) y para cada una de las siguientes consultas, la dirección IP de destino se cambia por la dirección siguiente, como se muestra en la Figura 11.

Figure 11. DNS messages sent by the backdoor
Figura 11. Mensajes DNS enviados por la puerta trasera; observe que la dirección IP aumenta en uno con cada petición

La red 180.76.76.0/24 es propiedad de Baidu, y curiosamente, algunos de los servidores en estas direcciones IP exponen servicios DNS, como 180.76.76.76, que es el servicio DNS público de Baidu.

Creemos que cuando se interceptan los paquetes de consulta DNS, el implante de red los reenvía al servidor de los atacantes. El implante puede filtrar fácilmente los paquetes combinando varios valores para crear una huella digital, por ejemplo

  • dirección IP de destino
  • Puerto UDP (observamos 53, 4499 y 8000)
  • iD de transacción de la consulta DNS que coincide con 0xFEAD,
  • nombre de dominio, y,
  • Consulta DNS con datos extraños añadidos.

Reflexiones finales

El uso de la capacidad AitM de los atacantes para interceptar paquetes es una forma inteligente de ocultar la ubicación de su infraestructura de C&C. Hemos observado víctimas ubicadas fuera de China -es decir, en Japón y el Reino Unido- contra las que el orquestador pudo desplegar el backdoor. A continuación, los atacantes enviaron comandos al backdoor para descargar plugins; por ejemplo, la víctima del Reino Unido recibió dos plugins diseñados para recopilar información y chats de Tencent QQ. Por lo tanto, sabemos que el sistema AitM estaba instalado y en funcionamiento, y debemos suponer que el mecanismo de exfiltración también lo estaba.

Algunos de los servidores -por ejemplo, en la red 180.76.76.0/24- parecen ser anycasted, lo que significa que podría haber múltiples servidores geolocalizados en todo el mundo para responder a las solicitudes entrantes (legítimas). Esto sugiere que la interceptación de la red se realiza probablemente más cerca de los objetivos que de la red de Baidu. La interceptación desde un ISP chino también es improbable porque Baidu tiene parte de su infraestructura de red fuera de China, por lo que las víctimas de fuera de China pueden no pasar por ningún ISP chino para llegar a los servicios de Baidu.

NSPX30

En las siguientes secciones describiremos las principales etapas de ejecución del malware.

Fase 1

La Figura 12 ilustra la cadena de ejecución cuando el componente legítimo carga una DLL dropper maliciosa que crea varios archivos en el disco.

Figure 12. Execution chain initiated by the dropper DLL
Figura 12. Cadena de ejecución iniciada por el dropper DLL

El dropper ejecuta RsStub.exe, un componente de software legítimo del producto antimalware chino Rising Antivirus, del que se abusa para cargar lateralmente el archivo malicioso comx3.dll.

La Figura 13 ilustra los principales pasos que se siguen durante la ejecución de este componente.

 

Figure 13. Loading chain
Figura 13. Cadena de carga iniciada cuando RsStub.exe carga el archivo malicioos comx3.dll

Cuando RsStub.exe llama a ExitProcess, se ejecuta la función loader del shellcode en lugar del código de función API legítimo.

El loader descifra la DLL instaladora del archivo comx3.dll.txt; a continuación, el shellcode carga la DLL instaladora en memoria y llama a su punto de entrada.

DLL de instalación

El instalador utiliza técnicas de evasión de UAC tomadas de implementaciones de código abierto para crear un nuevo proceso elevado. El proceso que utiliza depende de varias condiciones, como se muestra en la Tabla 3.

Tabla 3. Condición principal y sus respectivas sub-condiciones que deben cumplirse para aplicar una técnica de bypass UAC

Main condition

Sub-conditions

UAC bypass technique

Process named rstray.exe exists

- OS version is Windows 2000/XP/Vista

Execution via AppKey\18\ShellExecute

- OS version is Windows 10

- Process named avp.exe exists

SilentCleanup UAC bypass

- OS version is Windows 10

- Process named avp.exe does not exist

CMSTPLUA COM UAC bypass

- OS version is Windows 7/8/8.1/10 or Windows Server 2008 R1/2012 R2

IARPUninstallStringLauncher UAC bypass

Current process is not a member of the administrator group

- OS version is Windows 10

- Process named avp.exe exists

SilentCleanup UAC bypass

- OS version is Windows 10

- Process named avp.exe does not exist

CMSTPLUA COM UAC bypass

- OS version is Windows 7/8/8.1/10 or Windows Server 2008 R1/2012 R2

IARPUninstallStringLauncher UAC bypass

Las condiciones verifican la presencia de dos procesos: creemos que avp.exe es un componente del software antimalware de Kaspersky, y rstray.exe un componente de Rising Antivirus.

El instalador intenta desactivar el envío de muestras por parte de Windows Defender, y añade una regla de exclusión para el loader DLL msnsp.dll. Para ello, ejecuta dos comandos PowerShell a través de cmd.exe:

  • cmd /c powershell -inputformat none -outputformat none -NonInteractive -Command Set-MpPreference -SubmitSamplesConsent 0
  • cmd /c powershell -inputformat none -outputformat none -NonInteractive -Command Add-MpPreference -ExclusionPath "C:\Program Files (x86)\Common Files\microsoft shared\TextConv\msnsp.dll"

A continuación, el instalador coloca la DLL del loader persistente en C :\Program Files (x86)\Common Files\microsoft shared\TextConv\msnsp.dll y establece la persistencia para ella utilizando la API WSCInstallNameSpace para instalar la DLL como un proveedor de espacio de nombres Winsock llamado msnsp, como se muestra en la Figura 14.

Figure 14. Code that installs a malicious Winsock namespace provider
Figura 14. Código que instala un proveedor de espacio de nombres Winsock malicioso

Como resultado, la DLL se cargará automáticamente cada vez que un proceso utilice Winsock.

Finalmente, el instalador deposita la DLL loader a mshlp.dll y la DLL orquestadora cifrada WIN.cfg en C:\ProgramData\Windows.

Fase 2

Esta etapa comienza con la ejecución de msnsp.dll. La Figura 15 ilustra la cadena de carga en la Etapa 2.

Figure 15. Loading chain
Figura 15. Cadena de carga iniciada cuando el sistema carga el proveedor de espacio de nombre Winsock malicioso

Orquestador

La Figura 16 ilustra las principales tareas llevadas a cabo por el orquestador, que incluyen la obtención del backdoor y la carga de plugins.

Figure 16. Execution chain of the Orchestrator components and its main tasks
Figura 16. Cadena de ejecución del orquestador

Cuando se carga, el orquestador crea dos hilos para realizar sus tareas.

Hilo 1 del orquestador

El orquestador elimina el archivo dropper original del disco e intenta cargar el backdoor desde msfmtkl.dat. Si el archivo no existe o no se abre, el orquestador utiliza las API de Internet de Windows para abrir una conexión con el sitio web legítimo de la empresa china Baidu, como se ha explicado anteriormente.

La respuesta del servidor se guarda en un archivo temporal sujeto a un procedimiento de validación; si se cumplen todas las condiciones, la carga útil cifrada que se encuentra dentro del archivo se escribe en un nuevo archivo y se renombra como msfmtkl.dat.

Una vez creado el nuevo archivo con la carga útil cifrada, el orquestador lee su contenido y descifra la carga útil utilizando RC4. El PE resultante se carga en memoria y se ejecuta su punto de entrada.

Hilo orquestador 2

Dependiendo del nombre del proceso actual, el orquestador realiza varias acciones, incluyendo la carga de plugins y la adición de exclusiones para permitir la inclusión de las DLL del loader en las bases de datos locales de tres productos de software antimalware de origen chino.

La Tabla 4 describe las acciones realizadas cuando el nombre del proceso coincide con el de un paquete de software de seguridad en el que el orquestador puede incluir sus loaders en la lista de permitidos.

Tabla 4. Acciones del orquestador cuando se ejecuta en un proceso con el nombre de un software de seguridad específico

Process name

Targeted software

Action

qqpcmgr.exe

qqpctray.exe

qqpcrtp.exe

Tencent PC Manager

Attempts to load the legitimate DLL <CURRENT_DIRECTORY>\TAVinterface.dll to use the exported function CreateTaveInstance to obtain an interface. When calling a second function from the interface, it passes a file path as a parameter.

360safe.exe

360tray.exe

360 Safeguard (aka 360Safe)

Attempts to load the legitimate DLL <CURRENT_DIRECTORY>\deepscan\cloudcom2.dll to use the exported functions XDOpen, XDAddRecordsEx, and XDClose, it adds a new entry in the SQL database file speedmem2.hg.

360sd.exe

360 Antivirus

Attempts to open the file <CURRENT_DIRECTORY>\sl2.db to adds a base64-encoded binary structure that contains the path to the loader DLL.

kxescore.exe

kxetray.exe

Kingsoft AntiVirus

Attempts to load the legitimate DLL <CURRENT_DIRECTORY>\security\kxescan\khistory.dll to use the exported function KSDllGetClassObject to obtain an interface. When it calls one of the functions from the vtable, it passes a file path as a parameter.

La Tabla 5 describe las acciones realizadas cuando el nombre del proceso coincide con el del software de mensajería instantánea seleccionado. En estos casos, el orquestador carga los plugins desde el disco.

Tabla 5. Acciones del orquestador cuando se ejecuta en un proceso con el nombre de un software de mensajería instantánea específico

Process name

Targeted software

Action

qq.exe

Tencent QQ

Attempts to create a mutex named GET QQ MESSAGE LOCK <PROCESS_ID>. If the mutex does not already exist, it loads the plugins c001.dat, c002.dat, and c003.dat from disk.

wechat.exe

WeChat

Loads plugin c006.dat.

telegram.exe

Telegram

Loads plugin c007.dat.

skype.exe

Skype

Loads plugin c003.dat.

cc.exe

Unknown; possibly CloudChat.

raidcall.exe

RaidCall

yy.exe

Unknown; possibly an application from YY social network.

aliim.exe

AliWangWang

Loads plugin c005.dat.

Después de completar las acciones correspondientes, el hilo vuelve.

Grupo de plugins "c"

A partir de nuestro análisis del código del orquestador, entendemos que podrían existir al menos seis plugins del grupo "c", de los cuales sólo conocemos tres en este momento.

La Tabla 6 describe la funcionalidad básica de los plugins identificados.

Tabla 6. Descripción de los plugins del grupo "c"

Plugin name

Description

c001.dat

Steals information from QQ databases, including credentials, chat logs, contact lists, and more.

c002.dat

Hooks several functions from Tencent QQ’s KernelUtil.dll and Common.dll in the memory of the QQ.exe process, enabling interception of direct and group messages, and SQL queries to databases.

c003.dat

Hooks several APIs:

- CoCreateInstance

- waveInOpen

- waveInClose

- waveInAddBuffer

- waveOutOpen

- waveOutWrite

- waveOutClose

This enables the plugin to intercept audio conversations in several processes.

Backdoor

Ya hemos compartido varios detalles sobre el propósito básico del backdoor: comunicarse con su controlador y exfiltrar los datos recopilados. La comunicación con el controlador se basa principalmente en la escritura de datos de configuración de plugins en un archivo no cifrado llamado license.dat, y en la invocación de funcionalidades de los plugins cargados. La Tabla 7 describe los comandos más relevantes manejados por el backdoor.

Tabla 7. Descripción de algunos de los comandos manejados por el backdoor

Command ID

Description

0x04

Creates or closes a reverse shell and handles input and output.

0x17

Moves a file with paths provided by the controller.

0x1C

Uninstalls the implant.

0x1E

Collects file information from a specified directory, or collects drive’s information.

0x28

Terminates a process with a PID given by the controller.

Grupos de plugins "a" y "b"

El componente backdoor contiene sus propios plugins DLL (ver Tabla 8) que se escriben en el disco y le dan al backdoor sus capacidades básicas de espionaje y recolección de información.

Tabla 8. Descripciones de los grupos de plugins "a" y "b" incrustados en el backdoor

Plugin name

Description

a010.dat

Collects installed software information from the registry.

b010.dat

Takes screenshots.

b011.dat

Basic keylogger.

Conclusión

Hemos analizado los ataques y capacidades de un actor de amenazas al que hemos denominado Blackwood, que ha llevado a cabo operaciones de ciberespionaje contra individuos y empresas de China, Japón y Reino Unido. Hemos mapeado la evolución de NSPX30, el implante personalizado desplegado por Blackwood, desde 2005 hasta un pequeño backdoor que hemos denominado Project Wood.

Curiosamente, el implante Project Wood de 2005 parece ser obra de desarrolladores con experiencia en el desarrollo de malware, dadas las técnicas implementadas, lo que nos lleva a pensar que aún nos queda por descubrir más sobre la historia del backdoor primordial.

Para cualquier consulta sobre nuestra investigación publicada en WeLiveSecurity, por favor contáctenos en threatintel@eset.com.
ESET Research ofrece informes privados de inteligencia APT y fuentes de datos. Para cualquier consulta sobre este servicio, visite la página de ESET Threat Intelligence.

IOCs

Archivos

SHA-1

Filename

ESET detection name

Description

625BEF5BD68F75624887D732538B7B01E3507234

minibrowser_shell.dll

Win32/Agent.AFYI

NSPX30 initial dropper.

43622B9573413E17985B3A95CBE18CFE01FADF42

comx3.dll

Win32/Agent.AFYH

Loader for the installer.

240055AA125BD31BF5BA23D6C30133C5121147A5

msnsp.dll

Win32/Agent.AFYH

Persistent loader.

308616371B9FF5830DFFC740318FD6BA4260D032

mshlp.dll

Win32/Agent.AFYH

Loader for the orchestrator.

796D05F299F11F1D78FBBB3F6E1F497BC3325164

comx3.dll.txt

Win32/TrojanDropper.Agent.SWR

Decrypted installer.

82295E138E89F37DD0E51B1723775CBE33D26475

WIN.cfg

Win32/Agent.AFYI

Decrypted orchestrator.

44F50A81DEBF68F4183EAEBC08A2A4CD6033DD91

msfmtkl.dat

Win32/Agent.VKT

Decrypted backdoor.

DB6AEC90367203CAAC9D9321FDE2A7F2FE2A0FB6

c001.dat

Win32/Agent.AFYI

Credentials and data stealer plugin.

9D74FE1862AABAE67F9F2127E32B6EFA1BC592E9

c002.dat

Win32/Agent.AFYI

Tencent QQ message interception plugin.

8296A8E41272767D80DF694152B9C26B607D26EE

c003.dat

Win32/Agent.AFYI

Audio capture plugin.

8936BD9A615DD859E868448CABCD2C6A72888952

a010.dat

Win32/Agent.VKT

Information collector plugin.

AF85D79BC16B691F842964938C9619FFD1810C30

b011.dat

Win32/Agent.VKT

Keylogger plugin.

ACD6CD486A260F84584C9FF7409331C65D4A2F4A

b010.dat

Win32/Agent.VKT

Screen capture plugin.

Red

IP

Domain

Hosting provider

First seen

Details

104.193.88[.]123

www.baidu[.]com

Beijing Baidu Netcom Science and Technology Co., Ltd.

2017‑08‑04

Legitimate website contacted by the orchestrator and backdoor components to download payloads. The HTTP GET request is intercepted by AitM.

183.134.93[.]171

dl_dir.qq[.]com

IRT‑CHINANET‑ZJ

2021‑10‑17

Part of the URL from where the dropper was downloaded by legitimate software.

Técnicas ATT&CK de MITRE

Esta tabla se ha elaborado utilizando la versión 14 del marco MITRE ATT&CK.

Tactic

ID

Name

Description

Resource Development

T1587.001

Develop Capabilities: Malware

Blackwood used a custom implant called NSPX30.

Initial Access

T1195

Supply Chain Compromise

NSPX30’s dropper component is delivered when legitimate software update requests are intercepted via AitM.

Execution

T1059.001

Command and Scripting Interpreter: PowerShell

NSPX30’s installer component uses PowerShell to disable Windows Defender’s sample submission, and adds an exclusion for a loader component.

T1059.003

Command and Scripting Interpreter: Windows Command Shell

NSPX30’s installer can use cmd.exe when attempting to bypass UAC.

NSPX30’s backdoor can create a reverse shell.

T1059.005

Command and Scripting Interpreter: Visual Basic

NSPX30’s installer can use VBScript when attempting to bypass UAC.

T1106

Native API

NSPX30’s installer and backdoor use CreateProcessA/W APIs to execute components.

Persistence

T1574

Hijack Execution Flow

NSPX30’s loader is automatically loaded into a process when Winsock is started.

Privilege Escalation

T1546

Event Triggered Execution

NSPX30’s installer modifies the registry to change a media button key value (APPCOMMAND_LAUNCH_APP2) to point to its loader executable.

T1548.002

Abuse Elevation Control Mechanism: Bypass User Account Control

NSPX30’s installer uses three techniques to attempt UAC bypasses.

Defense Evasion

T1140

Deobfuscate/Decode Files or Information

NSPX30’s installer, orchestrator, backdoor, and configuration files are decrypted with RC4, or combinations of bitwise and arithmetic instructions.

T1562.001

Impair Defenses: Disable or Modify Tools

NSPX30’s installer disables Windows Defender’s sample submission, and adds an exclusion for a loader component.

NSPX30’s orchestrator can alter the databases of security software to allowlist its loader components. Targeted software includes: Tencent PC Manager, 360 Safeguard, 360 Antivirus, and Kingsoft AntiVirus.

T1070.004

Indicator Removal: File Deletion

NSPX30 can remove its files.

T1070.009

Indicator Removal: Clear Persistence

NSPX30 can remove its persistence.

T1202

Indirect Command Execution

NSPX30’s installer executes PowerShell through Windows’ Command Shell.

T1036.005

Masquerading: Match Legitimate Name or Location

NSPX30’s components are stored in the legitimate folder %PROGRAMDATA%\Intel.

T1112

Modify Registry

NSPX30’s installer can modify the registry when attempting to bypass UAC.

T1027

Obfuscated Files or Information

NSPX30’s components are stored encrypted on disk.

T1027.009

Obfuscated Files or Information: Embedded Payloads

NSPX30’s dropper contains embedded components.

NSPX30’s loader contains embedded shellcode.

T1218.011

System Binary Proxy Execution: Rundll32

NSPX30’s installer can be loaded through rundll32.exe.

Credential Access

T1557

Adversary-in-the-Middle

The NSPX30 implant is delivered to victims through AitM attacks.

T1555

Credentials from Password Stores

NSPX30 plugin c001.dat can steal credentials from Tencent QQ databases.

Discovery

T1083

File and Directory Discovery

NSPX30’s backdoor and plugins can list files.

T1012

Query Registry

NSPX30 a010.dat plugin collects various information of installed software from the registry.

T1518

Software Discovery

NSPX30 a010.dat plugin collects information from the registry.

T1082

System Information Discovery

NSPX30’s backdoor collects system information.

T1016

System Network Configuration Discovery

NSPX30’s backdoor collects various network adapter information.

T1049

System Network Connections Discovery

NSPX30’s backdoor collects network adapter information.

T1033

System Owner/User Discovery

NSPX30’s backdoor collects system and user information.

Collection

T1056.001

Input Capture: Keylogging

NSPX30 plugin b011.dat is a basic keylogger.

T1560.002

Archive Collected Data: Archive via Library

NSPX30 plugins compress collected information using zlib.

T1123

Audio Capture

NSPX30 plugin c003.dat records input and output audio streams.

T1119

Automated Collection

NSPX30’s orchestrator and backdoor automatically launch plugins to collect information.

T1074.001

Data Staged: Local Data Staging

NSPX30’s plugins store data in local files before exfiltration.

T1113

Screen Capture

NSPX30 plugin b010.dat takes screenshots.

Command and Control

T1071.001

Application Layer Protocol: Web Protocols

NSPX30’s orchestrator and backdoor components download payloads using HTTP.

T1071.004

Application Layer Protocol: DNS

NSPX30’s backdoor exfiltrates the collected information using DNS.

T1132.001

Data Encoding: Standard Encoding

Collected data for exfiltration is compressed with zlib.

T1001

Data Obfuscation

NSPX30’s backdoor encrypts its C&C communications.

T1095

Non-Application Layer Protocol

NSPX30’s backdoor uses UDP for its C&C communications.

T1090

Proxy

NSPX30’s communications with its C&C server are proxied by an unidentified component.

Exfiltration

T1020

Automated Exfiltration

When available, NSPX30’s backdoor automatically exfiltrates any collected information.

T1030

Data Transfer Size Limits

NSPX30’s backdoor exfiltrates collected data via DNS queries with a fixed packet size.

T1048.003

Exfiltration Over Alternative Protocol: Exfiltration Over Unencrypted Non-C2 Protocol

NSPX30’s backdoor exfiltrates the collected information using DNS.

 

 

 

 

 

CorregirBasicCerrarOrtografíaSe ha encontrado un posible error ortográfico.proyectoproyectaproyectóproyecteprovectaDescartar