Grupo Winnti dirigido a universidades en Hong Kong


Investigadores de ESET descubren una nueva campaña del Grupo Winnti dirigida a universidades y utilizando malware ShadowPad y Winnti

En noviembre de 2019, descubrimos una nueva campaña dirigida por el Grupo Winnti contra dos universidades de Hong Kong. Encontramos una nueva variante de la puerta trasera ShadowPad, la puerta trasera insignia del grupo, implementada usando un nuevo lanzador e integrando numerosos módulos. El malware Winnti también se encontró en estas universidades unas semanas antes de ShadowPad.

El Grupo Winnti, activo desde al menos 2012, es responsable de los ataques de cadena de suministro de alto perfil contra las industrias de videojuegos y software que conducen a la distribución de software trojanizado (como CCleaner, ASUS LiveUpdate y múltiples videojuegos) que luego se utilizan para comprometer a más víctimas. También es conocido por haber comprometido varios objetivos en los sectores de la salud y la educación.

Investigadores de ESET recientemente publicó un libro blanco actualizando nuestra comprensión del arsenal del Grupo Winnti, siguiendo una publicación de blog que documenta un ataque a la cadena de suministro dirigido a la industria de los videojuegos en Asia. Además, publicamos una publicación de blog en un nueva puerta trasera llamada skip-2.0 que se dirige a Microsoft SQL Server.

Este artículo se centra en los detalles técnicos de esta nueva variante de ShadowPad.

Sobre el nombre del "Grupo Winnti":

Hemos elegido mantener el nombre "Grupo Winnti", ya que es el nombre que Kaspersky usó por primera vez para identificarlo, en 2013. Como Winnti también es una familia de malware, siempre escribimos "Grupo Winnti" cuando nos referimos a los malhechores detrás de los ataques. Desde 2013, se ha demostrado que Winnti es solo una de las muchas familias de malware utilizadas por el Grupo Winnti.

ShadowPad encontrado en varias universidades de Hong Kong

En noviembre de 2019 El motor de aprendizaje automático de ESET, Augur, detectó una muestra maliciosa y única presente en varias computadoras pertenecientes a dos universidades de Hong Kong donde ya se había encontrado el malware Winnti a fines de octubre. La muestra sospechosa detectada por Augur es en realidad un nuevo lanzador ShadowPad de 32 bits. Las muestras de ShadowPad y Winnti encontradas en estas universidades contienen identificadores de campaña y URL de C&C con los nombres de las universidades, lo que indica un ataque dirigido.

Además de las dos universidades comprometidas, gracias al formato de URL de C&C utilizado por los atacantes, tenemos razones para pensar que al menos tres universidades adicionales de Hong Kong pueden haber sido comprometidas al usar estas mismas variantes de ShadowPad y Winnti.

Esta campaña del Grupo Winnti contra las universidades de Hong Kong se estaba llevando a cabo en el contexto de las protestas cívicas de Hong Kong que comenzaron en junio de 2019 provocadas por un proyecto de ley de extradición. A pesar de que el proyecto de ley fue retirado en octubre de 2019, las protestas continuaron, exigiendo una democracia plena e investigación de la policía de Hong Kong. Estas protestas reunieron a cientos de miles de personas en las calles con un gran apoyo de estudiantes de las universidades de Hong Kong, lo que llevó a múltiples ocupaciones del campus universitario por parte de los manifestantes.

Nos hemos puesto en contacto con las universidades comprometidas y les hemos proporcionado la información y asistencia necesarias para remediar el compromiso.

Lanzador actualizado

A diferencia de las variantes anteriores de ShadowPad documentadas en nuestro documento técnico sobre el arsenal del Grupo Winnti, este lanzador no se ofusca con VMProtect. Además, la carga útil cifrada no está incrustada en la superposición ni ubicada en un COM1: NULL.dat flujo de datos alternativo. Y el cifrado RC5 habitual con una clave derivada de la ID de volumen de la unidad del sistema de la máquina víctima (como se ve en la puerta trasera PortReuse, skip-2.0 y algunas variantes de ShadowPad) tampoco está presente. En este caso, el lanzador es mucho más simple.

DLL de carga lateral

El iniciador es una DLL de 32 bits llamada hpqhvsei.dll, que es el nombre de una DLL legítima cargada por hpqhvind.exe. Este ejecutable es de HP y generalmente se instala con su software de impresión y escaneo llamado "HP Digital Imaging". En este caso lo legítimo hpqhvind.exe fue atacado por los atacantes, junto con sus maliciosos hpqhvsei.dllen C: Windows Temp.

Aunque no tenemos el componente que eliminó y ejecutó este iniciador, la presencia de estos archivos nos lleva a pensar que la ejecución inicial de este iniciador se realiza a través de la carga lateral de DLL.

Cuando la DLL maliciosa se carga en hpqhvind.exe inicio, se llama a su función DLLMain que verificará su proceso padre para la siguiente secuencia de bytes en el desplazamiento 0x10BA:

85 C0; prueba eax, eax
0F 84; jz

En el caso donde el proceso padre es hpqhvind.exe, esta secuencia de bytes está presente en esta ubicación exacta y la DLL maliciosa procederá a parchear el proceso principal en la memoria. Reemplaza las instrucciones originales en 0x10BA con un salto incondicional (jmp – 0xE9) a la dirección de la función de hpqhvsei.dll que descifra y ejecuta la carga útil cifrada incrustada en el iniciador.

La función descompilada responsable de parchar el proceso padre se muestra en la Figura 1. En caso de que hpqhvsei.dll es cargado por un proceso diferente al hpqhvind.exe, el código malicioso no se descifrará ni ejecutará.

Figura 1. Función descompuesta responsable de parchear el proceso padre

La diferencia entre el original y el parcheado hpqhvind.exe se muestra en la Figura 2.

Figura 2. Diferencia entre original (izquierda) y parcheado (derecha) hpqhvind.exe

La parte del código que está parcheada se encuentra al comienzo de la función principal de hpqhvind.exe. Como podemos ver en la Figura 2, el código parcheado se encuentra justo después de la carga de hpqhvsei.dll. Esto significa que la función responsable de descifrar y ejecutar la carga útil se ejecuta directamente después de la carga de la DLL maliciosa.

Descifrado de carga útil

La carga útil cifrada se encuentra en el .rdata Sección de hpqhvsei.dll y el algoritmo de descifrado es un ciclo XOR donde la clave XOR se actualiza en cada iteración, como se muestra en la Figura 3.

Figura 3. Pseudocódigo del ciclo de descifrado de la carga útil

La carga útil descifrada es el código de shell habitual responsable de la inicialización de ShadowPad (ofuscado usando saltos condicionales falsos para dificultar el desmontaje).

Persistencia

Después de haber sido descifrado, se ejecuta el shellcode de ShadowPad. Primero logrará persistencia en el sistema al escribir el proceso primario parcheado en memoria en el disco en una ruta especificada en el grupo de cadenas de configuración. En el caso que examinamos, el camino era C: ProgramData DRM CLR CLR.exe. Luego crea un servicio llamado clr_optimization_v4.0.30229_32, que se encarga de ejecutar CLR.exe. Para evitar sospechas, este nombre de servicio, así como el nombre ejecutable, se eligieron para que se parecieran al nombre de un Servicio de optimización de Microsoft .NET.

El proceso de estadificación completo se resume en la Figura 4. La numeración en cada flecha corresponde a la secuencia cronológica de eventos.

Figura 4. Proceso de organización de ShadowPad

Módulos

ShadowPad es una puerta trasera multimodular donde se hace referencia a los módulos desde el módulo raíz con una lista circular de la que se puede extraer la dirección del módulo, una marca de tiempo UNIX (probablemente incrustada automáticamente durante el proceso de compilación del módulo) y un identificador de módulo. Del módulo en sí también podemos extraer el nombre que el desarrollador le dio al módulo. Esta versión incorpora los 17 módulos enumerados en la siguiente tabla:

Tabla 1. Módulos utilizados con esta versión de ShadowPad

CARNÉ DE IDENTIDAD Nombre Marca de tiempo Descripción
100 Raíz Jue 24 oct 2019 12:08:27 PM UTC Shellcode inicial
101 Complementos Jue 24 oct 2019 12:07:02 PM UTC Proporciona API para los otros módulos; carga módulos
102 Config Jue 24 oct 2019 12:07:09 PM UTC Maneja el conjunto de cadenas de configuración cifradas
103 Instalar en pc Jue 24 oct 2019 12:07:46 PM UTC Logra persistencia
104 En línea Jue 24 oct 2019 12:07:17 PM UTC Comunicaciones generales con el servidor de C&C
106 ImpUser Jue 24 oct 2019 12:07:24 PM UTC Suplantación de usuario mediante duplicación de token
200 TCP Jue 24 oct 2019 12:01:01 PM UTC Comunicaciones TCP
202 HTTPS Jue 24 oct 2019 12:01:15 PM UTC Comunicaciones HTTPS
207 Tubo Jue 24 oct 2019 12:01:35 PM UTC Maneja tuberías con nombre
300 Disco Jue 24 oct 2019 12:02:29 PM UTC Operaciones del sistema de archivos
301 Proceso Jue 24 oct 2019 12:02:36 PM UTC Manejo de procesos
302 Servcie Jue 24 oct 2019 12:02:45 PM UTC Servicio de manejo
303 Registrarse Jue 24 oct 2019 12:02:52 PM UTC Operaciones de registro
304 Cáscara Jue 24 oct 2019 12:03:00 PM UTC Operaciones de línea de comando
306 Keylogger Jue 24 oct 2019 12:03:16 PM UTC Registro de teclas en el sistema de archivos
307 Pantalla Jue 24 oct 2019 12:03:25 PM UTC Captura de pantalla
317 Archivos recientes Jue 24 oct 2019 12:04:44 PM UTC Enumera los archivos a los que accedió recientemente

Estos módulos, a excepción de RecentFiles, ya han sido mencionados por Kaspersky y Avast. Observe el error tipográfico "Servcie".

Como de costumbre, todas las marcas de tiempo del módulo se distribuyen en un corto intervalo de tiempo, lo que podría sugerir el uso de un marco de compilación para compilar estos módulos. Esto también sugiere que estos módulos se construyeron unas horas antes del lanzador en sí, cuya marca de tiempo de compilación es Jue 24 oct 14:10:32 2019. Dado que esta marca de tiempo de compilación se remonta dos semanas antes de esta campaña, es probable que los atacantes no la hayan manipulado.

También podría notarse que el número de módulos integrados en esta variante es mucho mayor (17) que el número de módulos integrados en las variantes previamente documentadas en nuestro documento técnico (8 a 10 módulos).

Por defecto, cada pulsación de tecla se registra utilizando el módulo Keylogger (306, previamente documentado por Avast) y guardado en el disco en el archivo % APPDATA% PAGM OEY XWWEYG WAOUE.

El archivo de registro se cifra utilizando el mismo algoritmo que el utilizado para cifrar cadenas estáticas del módulo. El uso de este módulo por defecto indica que los atacantes están interesados ​​en robar información de las máquinas de las víctimas. Por el contrario, las variantes que describimos en nuestro documento técnico ni siquiera tenían ese módulo incrustado.

Configuración

Al igual que con las variantes anteriores de ShadowPad, el módulo de configuración (102) contiene un conjunto de cadenas cifradas a las que se puede acceder desde cualquier otro módulo. El conjunto de cadenas nunca se almacena completamente descifrado en la memoria; el campo de interés se descifra cuando es necesario y luego se libera inmediatamente (por lo tanto, no está disponible rápidamente). El tamaño de la configuración es 2180 bytes y las cadenas cifradas se encuentran en el desplazamiento 0x84. El algoritmo utilizado para descifrar las cadenas es el mismo que el utilizado para descifrar las cadenas estáticas del módulo. El contenido descifrado del conjunto de cadenas es el siguiente:

0x84: 2019/11/7 16:28:36
0x99: CAMPAIGN_ID_REDACTED
0xa1:% ALLUSERSPROFILE% DRM CLR CLR.exe
0xc5: clr_optimization_v4.0.30229_32
oxe6: clr_optimization_v4.0.30229_32
0x107: clr_optimization_v4.0.30229_32
0x128: SOFTWARE Microsoft Windows CurrentVersion Run
0x158: CLR
0x15e:% Archivos de programa% Windows Media Player wmplayer.exe
0x197:% windir% system32 svchost.exe
0x1b7: TCP: // b(redactado).dnslookup.services: 443
0x1db: UDP: // b(redactado).dnslookup.services: 443
0x202: CALCETINES4
0x21e: CALCETINES5

El ID de la campaña se encuentra en el desplazamiento 0x99 y es el nombre de la universidad objetivo. Tener una ID de campaña relacionada con el objetivo es bastante común en el caso de ShadowPad y Winnti.

Curiosamente, la marca de tiempo presente en esta configuración en el desplazamiento 0x84 es posterior a las marcas de tiempo de los módulos y la marca de tiempo de compilación del cargador. Esto sugiere que esta configuración se agrega manualmente a la muestra después de haber sido construida. Aunque probablemente sea una coincidencia, la fecha dentro de la configuración corresponde a la fecha de la primera detección de esta muestra en la universidad correspondiente.

Comunicaciones de red

Una vez instalado en el sistema, ShadowPad inicia un Microsoft Windows Media Player oculto y suspendido wmplayer.exe proceso y se inyecta en ese proceso. El camino hacia wmplayer.exe es proporcionado por el módulo de configuración.

Una vez que ShadowPad se inyecta en wmplayer.exe, el módulo en línea se pondrá en contacto con el servidor de C&C utilizando la URL especificada en la configuración. Luego comenzará a escuchar conexiones en el puerto 13567 después de haber actualizado las reglas del firewall en consecuencia:

Clave de registro:
HKLM SYSTEM ControlSet001 services SharedAccess Parameters FirewallPolicy FirewallRules 816381AB-1400-45E5-B560-B8E11C5988CF

Valor:
v2.10 | Acción = Permitir | Activo = VERDADERO | Dir = En | Protocolo = 6 | Perfil = Público | LPort = 13567 | Nombre = Descubrimiento de red (TCP) |

La comunicación es manejada por el módulo TCP (200), que fue documentado previamente por Kaspersky.

El malware Winnti también estaba allí

Además de ShadowPad, el malware Winnti se encontró en algunas máquinas en estas dos universidades a fines de octubre (es decir, dos semanas antes de ShadowPad) en el archivo C: Windows System32 oci.dll y es detectado por los productos ESET como Win64 / Winnti.CA.

El malware Winnti generalmente contiene una configuración que especifica un ID de campaña y una URL de C&C. En todas las máquinas, el ID de la campaña coincide con el nombre de la universidad objetivo y las URL de C&C son:

  • w(redactado).livehost.live: 443
  • w(redactado).dnslookup.services: 443

donde la parte redactada corresponde al nombre de la universidad objetivo.

Formato de URL de C&C

Se puede observar que la URL de C&C utilizada por Winnti y ShadowPad cumple con el esquema (backdoor_type) (target_name) .domain.tld: 443 dónde (tipo de puerta trasera) es una sola letra que es "w"En el caso del malware Winnti o"si"En el caso de ShadowPad.

Desde este formato, pudimos encontrar varias URL de C&C, incluidos tres nombres adicionales de universidades de Hong Kong. Los identificadores de campaña que se encuentran en las muestras que analizamos coinciden con la parte del subdominio del servidor de C&C, lo que muestra que estas muestras realmente estaban dirigidas a estas universidades.

Conclusión

El Grupo Winnti todavía está utilizando activamente una de sus puertas traseras insignia, ShadowPad, esta vez contra las universidades de Hong Kong. En esta campaña, el iniciador VMProtected utilizado con ShadowPad, así como con la puerta trasera PortReuse y skip-2.0, fue reemplazado por uno más simple. El hecho de que estas muestras, además de haber sido encontradas en estas universidades, contengan ID de campaña que coincidan con los nombres de las universidades y utilicen URL de C&C que contengan los nombres de las universidades, son buenos indicios de que esta campaña está altamente dirigida.

Continuaremos monitoreando nuevas actividades del Grupo Winnti y publicaremos información relevante en nuestro blog. Para cualquier consulta, contáctenos a la amenazaintel@eset.com. Los IoC también están disponibles en nuestro repositorio GitHub.

Indicadores de compromiso (IoC)

Nombres de detección de ESET

Win32 / Shadowpad.C troyano
Troyano Win64 / Winnti.CA

Nombres de archivo

% ALLUSERSPROFILE% DRM CLR hpqhvsei.dll
% ALLUSERSPROFILE% DRM CLR CLR.exe
C: windows temp hpqhvsei.dll
C: windows temp hpqhvind.exe
% ALLUSERSPROFILE% DRM CLR hpqhvsei.dll
% SYSTEM32% oci.dll
% APPDATA% PAGM OEY XWWEYG WAOUE

Nombre para mostrar del servicio

clr_optimization_v4.0.30229_32

Servidores C&C

Servicios b (org_name) .dnslookup (.): 443
w (org_name) .livehost (.) live: 443
w (org_name) .dnslookup (.) servicios: 443

Lanzador ShadowPad

Muestra similar para evitar revelar universidades específicas.
693f0bd265e7a68b5b98f411ecf1cd3fed3c84af

Técnicas MITRE ATT y CK

Táctica CARNÉ DE IDENTIDAD Nombre Descripción
Persistencia T1050 Nuevo servicio ShadowPad persiste como un servicio llamado clr_optimization_v4.0.30229_32.
Evasión de defensa T1073 DLL de carga lateral El iniciador de ShadowPad se carga mediante un ejecutable legítimo a través de la carga lateral de DLL.
T1055 Inyección de proceso ShadowPad se inyecta en un wmplayer.exe proceso.
T1140 Desobuscar / decodificar archivos o información El iniciador ShadowPad usa XOR para descifrar la carga útil. ShadowPad utiliza un algoritmo personalizado para descifrar cadenas y configuración.
T1027 Archivos o información ofuscados El shellcode de ShadowPad está codificado en XOR y utiliza saltos condicionales falsos para impedir el desmontaje. Las cadenas y la configuración de ShadowPad están encriptadas. También usa hashing API.
T1143 Ventana oculta ShadowPad se inyecta en un wmplayer.exe El proceso comenzó en una ventana oculta.
Descubrimiento T1010 Aplicación Window Discovery El módulo de registro de teclas de ShadowPad enumera las ventanas de aplicaciones.
T1083 Descubrimiento de archivos y directorios El módulo RecentFiles de ShadowPad enumera los archivos a los que se accedió recientemente.
Comando y control T1071 Protocolo de capa de aplicación estándar ShadowPad puede usar HTTP y HTTPS para comunicaciones C&C.
T1043 Puerto de uso común ShadowPad usa TCP: 443 y UDP: 443.
T1065 Puerto poco utilizado ShadowPad escucha en el puerto 13567.
T1095 Protocolo estándar de capa sin aplicación ShadowPad puede usar UDP y TCP para comunicaciones C&C.
T1024 Protocolo criptográfico personalizado ShadowPad usa su propio protocolo criptográfico para las comunicaciones de C&C.
Colección T1056 Captura de entrada ShadowPad tiene un módulo de registro de teclas.
T1113 La captura de pantalla ShadowPad tiene un módulo de captura de pantalla.
Exfiltración T1022 Datos cifrados Las pulsaciones de teclas grabadas por el módulo de registro de teclas se almacenan cifradas en el disco.








Enlace a la noticia original