WinorDLL64: ¿Una puerta trasera del vasto arsenal de Lazarus?

WinorDLL64: ¿Una puerta trasera del vasto arsenal de Lazarus?

Nodo de origen: 1975596

La región objetivo y la superposición en el comportamiento y el código sugieren que la herramienta es utilizada por el infame grupo APT alineado con Corea del Norte.

Investigadores de ESET han descubierto una de las cargas útiles del descargador wslink que descubrimos en 2021. Llamamos a esta carga útil WinorDLL64 según su nombre de archivo WinorDLL64.dll. Wslink, que tenía el nombre de archivo WinorLoaderDLL64.dll, es un cargador de binarios de Windows que, a diferencia de otros cargadores similares, se ejecuta como un servidor y ejecuta los módulos recibidos en la memoria. Como sugiere la redacción, un cargador sirve como una herramienta para cargar una carga útil, o el malware real, en el sistema ya comprometido. No se ha identificado el vector de compromiso Wslink inicial.

La carga útil inicialmente desconocida de Wslink se cargó a VirusTotal desde Corea del Sur poco después de la publicación de nuestra entrada de blog y alcanzó una de nuestras reglas YARA basadas en el nombre único de Wslink. WinorDLL64. Con respecto a Wslink, la telemetría de ESET ha visto solo unas pocas detecciones: en Europa Central, América del Norte y Medio Oriente.

El WinorDLL64 payload sirve como una puerta trasera que, en particular, adquiere amplia información del sistema, proporciona medios para la manipulación de archivos, como exfiltración, sobrescritura y eliminación de archivos, y ejecuta comandos adicionales. Curiosamente, se comunica a través de una conexión que ya fue establecida por el cargador Wslink.

En 2021, no encontramos ningún dato que sugiera que Wslink es una herramienta de un actor de amenazas conocido. Sin embargo, después de un extenso análisis de la carga útil, hemos atribuido WinorDLL64 al grupo Lazarus APT con poca confianza en función de la región de destino y una superposición tanto en el comportamiento como en el código con muestras conocidas de Lazarus.

Activo desde al menos 2009, este infame grupo alineado con Corea del Norte es responsable de incidentes de alto perfil como el Truco de Sony Pictures Entertainment y decenas de millones de dólares ciberatracos en 2016, la WannaCryptor (también conocido como WannaCry) en 2017, y una larga historia de ataques disruptivos contra Infraestructura pública y crítica de Corea del Sur desde al menos 2011. US-CERT y el FBI llaman a este grupo COBRA OCULTA.

Basado en nuestro amplio conocimiento de las actividades y operaciones de este grupo, creemos que Lazarus consiste en un gran equipo que está sistemáticamente organizado, bien preparado y está compuesto por varios subgrupos que utilizan un gran conjunto de herramientas. El año pasado, nosotros descubrió una herramienta de Lázaro que aprovechó la CVE‑2021‑21551 vulnerabilidad para atacar a un empleado de una empresa aeroespacial en los Países Bajos y un periodista político en Bélgica. Fue el primer abuso registrado de la vulnerabilidad; en combinación, la herramienta y la vulnerabilidad condujeron al cegamiento del monitoreo de todas las soluciones de seguridad en las máquinas comprometidas. También proporcionamos una descripción extensa de la estructura de la maquina virtual utilizado en muestras de Wslink.

Esta publicación de blog explica la atribución de WinorDLL64 a Lazarus y proporciona un análisis de la carga útil.

Enlaces de Lázaro

Hemos descubierto superposiciones tanto en el comportamiento como en el código con muestras de Lazarus de Operación GhostSecret y del implante de perdigones descrito por McAfee. La descripción de los implantes en los artículos de GhostSecret y Bankshot contiene superposiciones en la funcionalidad con WinorDLL64 y encontramos algunas superposiciones de código en las muestras. En esta publicación de blog solo usaremos el FE887FCAB66D7D7F79F05E0266C0649F0114BA7C muestra de GhostSecret para compararla con WinorDLL64 (1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F), a menos que se especifique lo contrario.

Los siguientes detalles resumen los hechos que respaldan nuestra atribución de baja confianza a Lázaro:

1. Victimología

  • Investigadores compañeros de AhnLab confirmaron víctimas surcoreanas de Wslink en su telemetría, que es un indicador relevante considerando los objetivos tradicionales de Lazarus y que hemos observado solo unos pocos aciertos.

Figura 1. Víctima surcoreana denunciada, donde mstoned7 es el investigador de Ahnlab

2. Malware

  • La última muestra de GhostSecret informada por McAfee (FE887FCAB66D7D7F79F05E0266C0649F0114BA7C) es de febrero de 2018; detectamos la primera muestra de Wslink a fines de 2018 y otros investigadores informaron resultados en agosto de 2018, que revelaron después de nuestra publicación. Por lo tanto, estas muestras se detectaron con un período de tiempo relativamente corto.
  • El Cabeceras ricas en PE indican que el mismo entorno de desarrollo y proyectos de tamaño similar se utilizaron en varias otras muestras conocidas de Lazarus (p. ej., 70DE783E5D48C6FBB576BC494BAF0634BC304FD6; 8EC9219303953396E1CB7105CDB18ED6C568E962). Encontramos esta superposición usando las siguientes reglas que cubren solo estas muestras de Wslink y Lazarus, que es un indicador con un peso bajo. Los probamos en Retrohunt de VirusTotal y nuestro cuerpo de archivos interno.

rich_signature.longitud == 80 y
pe.rich_signature.toolid(175, 30319) == 7 y
pe.rich_signature.toolid(155, 30319) == 1 y
pe.rich_signature.toolid(158, 30319) == 10 y
pe.rich_signature.toolid(170, 30319) >= 90 y
pe.rich_signature.toolid(170, 30319) <= 108

Esta regla se puede traducir a la siguiente notación que es más legible y utilizada por VirusTotal, donde se puede ver la versión del producto y la ID de compilación (VS2010 compilación 30319), número y tipo de archivos fuente/objeto utilizados ([LTCG C++] donde LTCG significa generación de código de tiempo de enlace, [ASM], [ C ]), y número de exportaciones ([EXP]) en la regla:

[LTCG C++] VS2010 compilación 30319 recuento = 7
[EXP] VS2010 compilación 30319 cuenta = 1
[ASM] VS2010 compilación 30319 cuenta = 10
[ C ] VS2010 build 30319 cuenta en [ 90 .. 108 ]

  • El artículo de GhostSecret describía "un componente único de recopilación de datos e instalación de implantes que escucha en el puerto 443 las conexiones del servidor de control de entrada" que, además, se ejecutaba como un servicio. Esta es una descripción precisa del comportamiento del descargador de Wslink, aparte del número de puerto, que puede variar según la configuración. En resumen, aunque la implementación es diferente, ambos tienen el mismo propósito.
  • El cargador está virtualizado por Code Virtualizer de Oreans, que es un protector comercial que se utiliza frecuentemente por Lázaro.
  • El cargador utiliza el Módulo de memoria biblioteca para cargar módulos directamente desde la memoria. La biblioteca no es comúnmente utilizada por malware, pero es bastante popular entre los grupos alineados con Corea del Norte, como Lazarus y Kimsuky.
  • Superposición en el código entre WinorDLL64 y GhostSecret que encontramos durante nuestro análisis. Los resultados y la importancia en la atribución se enumeran en la Tabla 1.

Tabla 1. Similitudes entre WinorDLL64 y GhostSecret y su importancia al atribuir ambos al mismo actor de amenazas

Otras similitudes entre WinorDLL64 y GhostSecret Impacto
Superposición de código en el código responsable de obtener la arquitectura del procesador Baja
Superposición de código en la manipulación del directorio actual Baja
Superposición de código al obtener la lista de procesos Baja
Superposición de código en el envío de archivos Baja
Superposición de comportamientos en los procesos de listado Baja
Superposición de comportamiento en la manipulación del directorio actual Baja
Superposición de comportamiento en la lista de archivos y directorios Baja
Superposición de comportamiento en los volúmenes de listado Baja
Superposición de comportamiento en la lectura/escritura de archivos Baja
Superposición de comportamientos en la creación de procesos. Baja
Considerable superposición de comportamiento en la eliminación segura de archivos Baja
Considerable superposición de comportamientos en la terminación de procesos Baja
Considerable superposición de comportamiento en la recopilación de información del sistema Baja

La superposición de código en la función de envío de archivos se resalta en la Figura 2 y la Figura 3.

Figura 2. GhostSecret enviando un archivo

Figura 3. Wslink enviando un archivo

El análisis técnico

WinorDLL64 sirve como una puerta trasera que, en particular, adquiere una gran cantidad de información del sistema, proporciona medios para la manipulación de archivos y ejecuta comandos adicionales. Curiosamente, se comunica a través de una conexión TCP que ya fue establecida por su cargador y usa algunas de las funciones del cargador.

Figura 4. Visualización de la comunicación de Wslink

La puerta trasera es una DLL con una única exportación sin nombre que acepta un parámetro: una estructura de comunicación que ya se describió en nuestro blog anterior. La estructura contiene un contexto TLS (socket, clave, IV) y devoluciones de llamada para enviar y recibir mensajes cifrados con AES-CBC de 256 bits que permiten a WinorDLL64 intercambiar datos de forma segura con el operador a través de una conexión ya establecida.

Los siguientes hechos nos llevan a creer con gran confianza que la biblioteca es de hecho parte de Wslink:

  • La estructura única se usa en todas partes de la manera esperada, por ejemplo, el contexto TLS y otros parámetros significativos se proporcionan en el orden previsto para las devoluciones de llamadas correctas.
  • El nombre de la DLL es WinorDLL64.dll y el nombre de Wslink era WinorLoaderDLL64.dll.

WinorDLL64 acepta varios comandos. La figura 5 muestra el bucle que recibe y maneja los comandos. Cada comando está vinculado a una ID única y acepta una configuración que contiene parámetros adicionales.

Figura 5. La parte principal del bucle de recepción de comandos de la puerta trasera

La lista de comandos, con nuestras etiquetas, está en la Figura 6.

Figura 6. La lista de comandos

La Tabla 2 contiene un resumen de los comandos de WinorDLL64, donde las categorías modificadas y antiguas se refieren a la relación con la funcionalidad de GhostSecret documentada anteriormente. Destacamos solo cambios significativos en la categoría modificada.

Tabla 2. Descripción general de los comandos de puerta trasera

Categoría ID de comando Funcionalidad Descripción
Nuevo 0x03 Ejecutar un comando de PowerShell WinorDLL64 indica al intérprete de PowerShell que se ejecute sin restricciones y lea los comandos de la entrada estándar. Posteriormente, la puerta trasera pasa el comando especificado al intérprete y envía la salida al operador.
0x09 Comprimir y descargar un directorio WinorDLL64 itera recursivamente sobre un directorio especificado. El contenido de cada archivo y directorio se comprime por separado y se escribe en un archivo temporal que luego se envía al operador y luego se elimina de forma segura.
0x0D Desconectar una sesión Desconecta a un usuario que ha iniciado sesión especificado de la sesión de Servicios de Escritorio remoto del usuario. El comando también puede realizar diferentes funciones según el parámetro.
0x0D Listar sesiones Adquiere varios detalles sobre todas las sesiones en el dispositivo de la víctima y los envía al operador. El comando también puede realizar diferentes funciones según el parámetro.
0x0E Medir el tiempo de conexión Utiliza la API de Windows Gettickcount para medir el tiempo requerido para conectarse a un host específico.
Modificado 0x01 Obtener información del sistema Adquiere detalles completos sobre el sistema de la víctima y los envía al operador.
0x0A Eliminar archivos de forma segura Sobrescribe los archivos especificados con un bloque de datos aleatorios, cambia el nombre de cada archivo a un nombre aleatorio y finalmente los elimina de forma segura uno por uno.
0x0C Matar procesos Finaliza todos los procesos cuyos nombres coincidan con un patrón proporcionado y/o con un PID específico.
Viejo 0x02/0x0B Crea un proceso Crea un proceso como el usuario actual o especificado y opcionalmente envía su salida al operador.
0x05 Establecer/Obtener el directorio actual Intenta establecer y posteriormente adquirir la ruta del directorio de trabajo actual.
0x06 Volúmenes de lista Itera sobre las unidades de C: a Z: y adquiere el tipo de unidad y el nombre del volumen. El comando también puede realizar diferentes funciones según el parámetro.
0x06 Listar archivos en un directorio Itera sobre los archivos en el directorio especificado y adquiere información como nombres, atributos, etc. El comando también puede realizar diferentes funciones según el parámetro.
0x07 Escribir en un archivo Descarga y agrega la cantidad indicada de datos al archivo especificado.
0x08 Leer de un archivo El archivo especificado se lee y se envía al operador.
0x0C Listar procesos Adquiere detalles sobre todos los procesos en ejecución en el dispositivo de la víctima y, además, envía la identificación del proceso actual.

Conclusión

La carga útil de Wslink está dedicada a proporcionar medios para la manipulación de archivos, la ejecución de código adicional y la obtención de información detallada sobre el sistema subyacente que posiblemente se pueda aprovechar más tarde para el movimiento lateral, debido al interés específico en las sesiones de red. El cargador Wslink escucha en un puerto especificado en la configuración y puede servir a clientes de conexión adicionales e incluso cargar varias cargas útiles.

WinorDLL64 contiene una superposición en el entorno de desarrollo, el comportamiento y el código con varias muestras de Lazarus, lo que indica que podría ser una herramienta del vasto arsenal de este grupo APT alineado con Corea del Norte.

ESET Research ofrece fuentes de datos e informes de inteligencia APT privados. Para cualquier consulta sobre este servicio, visite el Inteligencia de amenazas de ESET .

IoC

SHA-1 Nombre de detección de ESET Descripción
1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F Win64/Wslink.A Volcado de memoria de la carga útil de Wslink descubierta WinorDll64.

Técnicas MITRE ATT & CK

Esta tabla fue construida usando Versión 12 del marco ATT&CK. No volvemos a mencionar técnicas del cargador, solo la carga útil.

Táctica ID Nombre Descripción
Desarrollo de recursos T1587.001 Desarrollar capacidades: malware WinorDLL64 es una herramienta personalizada.
Ejecución T1059.001 Intérprete de comandos y secuencias de comandos: PowerShell WinorDLL64 puede ejecutar comandos arbitrarios de PowerShell.
T1106 API nativa WinorDLL64 puede ejecutar más procesos usando el CrearProcesoW y CrearProcesoComoUsuarioW APIs
Evasión de defensa T1134.002 Manipulación de token de acceso: Crear proceso con token WinorDLL64 puede llamar a las API WTSQueryUserToken y CrearProcesoComoUsuarioW para crear un proceso bajo un usuario suplantado.
T1070.004 Eliminación del indicador: eliminación de archivos WinorDLL64 puede eliminar de forma segura archivos arbitrarios.
Descubrimiento de moléculas T1087.001 Descubrimiento de cuenta: cuenta local WinorDLL64 puede enumerar sesiones y listar usuarios asociados y nombres de clientes, entre otros detalles.
T1087.002 Descubrimiento de cuenta: cuenta de dominio WinorDLL64 puede enumerar sesiones y enumerar nombres de dominio asociados, entre otros detalles.
T1083 Descubrimiento de archivos y directorios WinorDLL64 puede obtener listados de archivos y directorios.
T1135 Detección de recursos compartidos de red WinorDLL64 puede descubrir unidades de red compartidas.
T1057 Descubrimiento de procesos WinorDLL64 puede recopilar información sobre los procesos en ejecución.
T1012 Registro de consultas WinorDLL64 puede consultar el registro de Windows para recopilar información del sistema.
T1082 Descubrimiento de información del sistema WinorDLL64 puede obtener información como el nombre de la computadora, el sistema operativo y la última versión del paquete de servicio, la arquitectura del procesador, el nombre del procesador y la cantidad de espacio en las unidades fijas.
T1614 Descubrimiento de la ubicación del sistema WinorDLL64 puede obtener el nombre de país predeterminado de la víctima utilizando el Obtener información localW API.
T1614.001 Descubrimiento de la ubicación del sistema: Descubrimiento del idioma del sistema WinorDLL64 puede obtener el idioma predeterminado de la víctima usando el Obtener información localW API.
T1016 Descubrimiento de la configuración de la red del sistema WinorDLL64 puede enumerar la información del adaptador de red.
T1049 Detección de conexiones de red del sistema WinorDLL64 puede recopilar una lista de puertos de escucha.
T1033 Descubrimiento de propietario/usuario del sistema WinorDLL64 puede enumerar sesiones y enumerar nombres de usuarios, dominios y clientes asociados, entre otros detalles.
Colecciones T1560.002 Archivar datos recopilados: Archivar a través de la biblioteca WinorDLL64 puede comprimir y filtrar directorios usando el rápido biblioteca.
T1005 Datos del sistema local WinorDLL64 puede recopilar datos en el dispositivo de la víctima.
Impacto T1531 Eliminación de acceso a la cuenta WinorDLL64 puede desconectar a un usuario conectado de sesiones específicas.

Sello de tiempo:

Mas de Vivimos la seguridad