Análisis De Malware: Un Cargador De Rootkits De Kernel Land para FK_Undead

diciembre 24, 2024
G DATA Blog

 

Análisis De Malware: Un Cargador De Rootkits De Kernel Land para FK_Undead

Descubrimos un cargador de rootkits de Windows [F1] para la familia de malware FK_Undead. La familia de malware es conocida por interceptar el tráfico de red de los usuarios mediante la manipulación de las configuraciones de proxy. Hasta donde sabemos, el cargador de rootkits no se ha analizado oficialmente antes. Tal y como requiere cualquier controlador del kernel de Windows, el cargador de rootkits está firmado válidamente con el certificado del editor de compatibilidad de hardware de Microsoft Windows (consulte la huella digital [T1]). Es compatible con diferentes versiones de Windows y está protegido con VMProtect.


Instalación del rootkit

Antes de que se ejecute la funcionalidad del cargador del rootkit, primero debe instalarse como un servicio del sistema. De acuerdo con VirusTotal, el cargador de rootkits es eliminado e instalado por un ejecutable malicioso que se disfraza de «Aplicaciones de Microsoft Foundation» [F2]. El dropper coloca el cargador de rootkits en «C:\Windows\System32\drivers\ws3ifsl.sys» [P1] y lo registra como un servicio del sistema en modo de usuario [P2]. El nombre «ws3ifsl» probablemente se eligió para disfrazarse como Winsock2 IFS Layer (ws2ifsl.sys), que es una utilidad legítima de Windows para la comunicación de sockets.

Una vez que se ejecuta el controlador, primero se mueve de «C:\Windows\System32\drivers\ws3ifsl.sys» [P1] a «C:\ProgramData\Microsoft\Windows\EventStore.dat» [P3]. A continuación, suprime el servicio antiguo «ws3ifsl» y registra un nuevo servicio del sistema denominado «EventStore» que apunta a la nueva ubicación [P3] (consulte la figura 1). Sin embargo, esta vez el servicio está configurado para cargarse como controlador del kernel con «Tipo» igual a «1». Lo más probable es que esto se haga para evitar que los usuarios detecten el servicio en el Administrador de tareas de Windows o en la información general de Servicios.

Figura 1 – Servicio de controlador del kernel de EventStore

Emulación con speakeasy

Dado que los sistemas de sandbox automatizados tradicionales generalmente no son capaces de activar las funciones de un controlador de kernel, empleamos el emulador speakeasy de Mandiant en su lugar. La herramienta nos permite capturar los accesos a memoria para extraer las cadenas planas protegidas por VMProtect y crear volcados de memoria. Aumentamos el tiempo de espera de emulación predeterminado de 60 segundos a 10 minutos:

Después de que speakeasy emuló las 15 llamadas API a la interfaz del kernel «ntoskrnl.exe», encontramos varias cadenas interesantes. Entre ellos hay cuatro URL que apuntan a una dirección HTTP que contiene el puerto poco común 38005 [U1-4]. En el momento de la publicación de esta entrada del blog, los dominios ya no están registrados. Las direcciones URL [U1-2] alojaban previamente el archivo [F3] y las direcciones URL [U3-4] servían el archivo [F4]. Los archivos [F3-4] contienen un blob codificado en base64 que resulta ser puntos muertos con bytes de aspecto aleatorio al principio y una dirección URL HTTP al final. Como se muestra en la Figura 2, los puntos muertos solo difieren en las rutas de URL [U5-6], que alojan la carga útil cifrada de la segunda etapa que pertenece a la familia de malware FK_Undead.

Figura 2 – Vista hexadecimal de Deaddrop

Análisis de la gota muerta

El controlador utiliza diferentes puntos muertos y cargas útiles FK_Undead en función de la versión de Windows. Determina la versión de Windows llamando a la rutina del sistema «RtlGetVersion» o, alternativamente, a la función obsoleta «PsGetVersion». Si el número de versión de Windows es igual a 10.0, descargará el punto muerto «auth.bin» [F3] de la URL [U1], de lo contrario, «auth7.bin» [F4] de la URL [U3] a «C:\ProgramData\Microsoft\Windows\Templates.log» [P4]. Si se produce un error en la descarga, intenta obtener el punto muerto de la URL [U2] o [U4]. Una vez finalizada la descarga, descodifica el blob base64 y descifra los primeros 16 bytes con AES-128. Mientras que la clave AES («0XMTXKEDTNLDKADSLIOKJASDF») tiene una longitud de 25 bytes, solo se utilizan los primeros 16 bytes en el paso de expansión de la clave AES.

El contenido y la estructura del archivo de punto muerto descifrado se visualizan en la figura 3. Consta de un marcador de inicio y fin, dos delimitadores como bytes «0D 0A», una semilla de ocho bytes de largo y la URL de la carga útil FK_Undead. Después de analizar el archivo del punto muerto, el cargador de rootkits descarga la carga útil «txlsddlx64.dat» [F5] o «txlsddlx64_7.dat» [F6] y la almacena en la carpeta de datos del programa de Windows con un nombre de archivo derivado de una huella digital basada en el GUID de la máquina y la semilla de tamaño fijo.

Figura 3 – Estructura de la gota muerta

Finalmente, el archivo de punto muerto descargado anteriormente «Template.log» [P4] se mueve un directorio más arriba a «C:\ProgramData\Microsoft\Templates.tmp» [P5]. Si el controlador malicioso se carga de nuevo, primero comprueba si «Templates.tmp» [P5] ya existe antes de intentar descargarlo de nuevo.

Descifrar la carga útil FK_Undead

Una vez que la carga útil se descarga correctamente, el cargador de rootkits la descifra invirtiendo cada bit (consulte la Figura 4).

Figura 4 – Descifrado de la carga útil txlsddlx64.dat y txlsddlx64_7.dat

La carga vuelve a ser un controlador firmado protegido con VMProtect [F7-8]. Identificamos la muestra como una variante de la familia de malware FK_Undead. Como ya se describió en publicaciones de blog anteriores, enruta el tráfico de usuarios a través de servidores controlados por atacantes mediante PAC (configuración automática de proxy).

Posteriormente, el cargador de rootkits registra el controlador de FK_Undead como un nuevo servicio del sistema utilizando la misma función que para el servicio EventStore, pero con la huella digital generada como DisplayName y nombre de archivo en ImagePath (consulte la figura 5).

Figura 5 – FK_Undead Kernel Driver Service (<huella dactilar> es el marcador de posición para la huella digital)

Capacidades de evasión del rootkit

El cargador de rootkits toma varias medidas para disfrazarse y evitar ser detectado. En primer lugar, comprueba si existen archivos relacionados con PC Hunter (pchunter64as.sys) o Windows Kernel Explorer (WIN64AST.SYS) en el sistema. Si este es el caso, simplemente se abortará.
Además, escanea si están presentes los controladores de VMWare (vmci.sys, vmmouse.sys, vmrawdsk.sys) o VirtualBox (VBoxGuest.sys, VBoxMouse.sys, VBoxSF.sys, VBoxWddm.sys). Sin embargo, el cargador de rootkits no aplica ninguna mitigación si se encuentra alguno de los archivos. Además, encontramos una función no utilizada sub_180016DD0 que comprueba si hay una conexión a Internet disponible descargando un archivo de un servidor controlado por el atacante [U7-8] y guardándolo en «C:\ProgramData\Microsoft\Crypto\RSA\connect.dat» [P11] (ver Figura 6). Desafortunadamente, no pudimos obtener los archivos porque el dominio ya no está registrado.

Figura 6 – Prueba de conexión no utilizada

La función no utilizada y las mitigaciones faltantes para VMWare y VirtualBox indican que el cargador de rootkits aún se está desarrollando o que el código se ha copiado y adaptado.

Por último, el cargador de rootkits registra varias rutinas de notificación mediante PsSetLoadImageNotifyRoutine y PsSetCreateProcessNotifyRoutine que se activan si se cargan los siguientes ejecutables o controladores:

  1. regedit.exe
  2. 360Safe.exe
  3. 360sd.exe
  4. SuperKiller.exe
  5. register.exe
  6. HRSword.exe
  7. WIN64AST.SYS
  8. pchunter64as.sys
  9. PCHunter64ar.sys

Si se descubre un proceso de este tipo, se espera hasta que ninguno de los SYSTEM. Los archivos LOG [P6] ya no se abren mediante otro proceso. Una vez que esto se cumple, llama a sub_180015680 para eliminar las entradas de servicio del registro que el cargador de rootkits creó antes para sí mismo y para la carga útil descargada [P7-10] (consulte la Figura 7). Por lo tanto, se esconde de la detección por parte de las soluciones de seguridad o los respondedores de incidentes.

Archivos

[F1] Cargador de rootkits (ws3ifsl.sys / EventStore.dat)

adf0bed4734b416c0c958e096593e93726ba9eb2b39c88645e02033755e16a1b

[F2] Cuentagotas de rootkits

046442a7e16166225a0c070bf8d311caddc48cbe61a4b82d462d8dd4501cfd00

[F3] Gota muerta 1 (auth.bin)

33a305cf2ff910c833e3c8efd77e9f55fc1344215f75a4c8feda6fd5d8e98628

[F4] Deaddrop 2 (auth7.bin)

6af4343fd0ce9b27a2862f75d409d4021efc3160c40a5bda174b2ad30086722d

[F5] Carga FK_Undead cifrada 1 (txlsddlx64.dat)

10d8591dd18e061febabe0384dc64e5516b7e7e54be87ca0ac35e11f698b0cc2

[F6] Carga FK_Undead cifrada 2 (txlsddlx64_7.dat)

ca8061f5ee59cba8f8f4e036eddc5f470e0936ebec470a0ebd4e84ab0475ece2

[F7] Carga útil FK_Undead descifrada 1 (txlsddlx64.dat)

708f4f45f7515d2b94de5772ee883cfd579dbff216e8a8db3181d2cf0e2a2770

[F8] Carga FK_Undead desencriptada 2 (txlsddlx64_7.dat)

1f5dcc5b0916a77087f160130d5eadb26fe8ee9d47177d19944773d562c03e8e

Direcciones URL

[U1] hxxp://tjxgood[.]COM:38005/auth.bin

[U2] hxxp://tjxupdates[.]COM:38005/auth.bin

[U3] hxxp://tjxgood[.]COM:38005/auth7.bin

[U4] hxxp://tjxupdates[.]COM:38005/auth7.bin

[U5] hxxp://101[.]37[.]76[.]254:31005/txlsddlx64.dat

[U6] hxxp://101[.]37[.]76[.]254:31005/txlsddlx64_7.dat

[U7] hxxp://microsoftdns2.com:27688/html/png/V[aaaaMMddHHmmssfff].dat

[U8] hxxp://microsoftdns2.com:27688/html/jpg/U[aaaaMMddHHmmssfff].dat

Caminos

[P1] C:\Windows\System32\drivers\ws3ifsl.sys

[P2] HKLM\System\CurrentControlSet\services\ws3ifsl

[P3] C:\ProgramData\Microsoft\Windows\EventStore.dat

[P4] C:\ProgramData\Microsoft\Windows\Templates.log

[P5] C:\ProgramData\Microsoft\Templates.tmp

[P6] C:\Windows\System32\config\SYSTEM. REGISTRO[1-5]

[pág. 7] HKLM\SYSTEM\CurrentControlSet\Services\[EventStore/<fingerprint>]

[pág. 8] HKLM\SYSTEM\ControlSet001\Services\[EventStore/<fingerprint>]

[pág. 9] HKLM\SYSTEM\ControlSet002\Services\[EventStore/<fingerprint>]

[P10] HKLM\SYSTEM\ControlSet003\Services\[EventStore/<fingerprint>]

[Pág. 11] C:\ProgramData\Microsoft\Crypto\RSA\connect.dat

Huella digital del certificado

[T1] e2d6c9b698932d209c9fab3f96c48d476a44669a


Enlace: Análisis de malware: un cargador de rootkits de Kernel Land para FK_Undead Blog de G DATA Marius Benthin