La investigación del malware implica el estudio de las TTP de los actores de amenazas, el mapeo de la infraestructura, el análisis de técnicas novedosas... Y aunque la mayoría de estas investigaciones se basan en otras ya existentes, a veces parten de una corazonada, de algo que parece demasiado simple. A finales de 2023, dimos con un instalador llamado HotPage.exe que despliega un controlador capaz de inyectar código en procesos remotos, y dos bibliotecas capaces de interceptar y manipular el tráfico de red de los navegadores. El malware puede modificar o sustituir el contenido de una página solicitada, redirigir al usuario a otra página o abrir una nueva página en una nueva pestaña en función de determinadas condiciones.

El instalador fue detectado por la mayoría de los productos de seguridad como un componente de adware, pero lo que realmente despertó nuestro interés fue el controlador incrustado firmado por Microsoft. Según su firma, fue desarrollado por una empresa china llamada 湖北盾网网络科技有限公司 (traducción automática: Hubei Dunwang Network Technology Co., Ltd), cuya falta de información resulta intrigante. El método de distribución aún no está claro, pero según nuestra investigación, este software se anunciaba como una "solución de seguridad para cibercafés" dirigida a personas de habla china. Pretende mejorar la experiencia de navegación web bloqueando anuncios y sitios web maliciosos, pero la realidad es bien distinta: aprovecha sus capacidades de interceptación y filtrado del tráfico del navegador para mostrar anuncios relacionados con juegos. También envía cierta información sobre el ordenador al servidor de la empresa, muy probablemente para recopilar estadísticas de instalación.

Además de su evidente comportamiento malicioso, este componente del kernel deja involuntariamente la puerta abierta para que otras amenazas ejecuten código en el nivel de privilegios más alto disponible en el sistema operativo Windows: la cuenta SYSTEM. Debido a las restricciones de acceso inadecuadas a este componente del kernel, cualquier proceso puede comunicarse con él y aprovechar su capacidad de inyección de código para atacar a cualquier proceso no protegido.

Informamos de este controlador a Microsoft el 28 de marzo de 2024 y seguimos su proceso coordinado de divulgación de vulnerabilidades. El Centro de respuesta de seguridad de Microsoft (MSRC) determinó que ya no se trata de una vulnerabilidad, ya que el controlador infractor se eliminó del catálogo de Windows Server el 1 de mayo de 2024. Las tecnologías de ESET detectan esta amenaza como Win{32|64}/HotPage.A y Win{32|64}/HotPage.B.

¿Quién es 湖北盾网网络科技有限公司 ?

Durante su ejecución, el malware HotPage instala un controlador, pero antes de sumergirnos en los detalles técnicos de su funcionamiento interno, queríamos saber más sobre la firma de código de este controlador. Lo primero que nos llamó la atención fue el propietario del certificado de firma, como se ilustra en la Figura 1.

Figure 1. Owner of HotPage driver’s digital signature
Figura 1. Propietario del certificado de firma del controlador HotPage.

Desde la versión de 64 bits de Windows 7, los controladores en modo kernel deben estar firmados para poder ser cargados por el sistema operativo. Como han detallado anteriormente los equipos de Mandiant Intelligence, SentinelLabs y G DATA, el proceso de firma se basa en la confianza, pero ha habido casos en los que se ha abusado de ella. Parece que la empresa china pasó por encima de los requisitos de firma de código de controladores de Microsoft y logró obtener un certificado de Verificación Extendida (EV), como se muestra en la Figura 2.

Figure 2. HotPage driver’s certificate Extended Verification and code-signing attributes
Figura 2. Verificación ampliada del certificado del controlador HotPage y atributos de firma de código

Para recuperar el nombre de la empresa asociado a esta firma, fue necesario extraer los atributos del firmante. La figura 3 muestra el atributo SpcSpOpusInfo identificado por el objeto ID 1.3.6.1.4.1.311.2.1.12.

Figure 3. HotPage driver’s certificate SpcSpOpusInfo attribute
Figura 3. Atributo SpcSpOpusInfo del certificado del controlador HotPage.

Utilizando el analizador binario LIEF, es posible extraer el miembro de la estructura programName que identifica a la empresa detrás de esta firma, tal y como se muestra en la Figura 4.

Figure 4. Extraction of the company name from the HotPage driver’s certificate
Figura 4. Extracción del nombre de la empresa del certificado del controlador HotPage

Encontramos una referencia a esta empresa en el Catálogo de Windows Server, como se muestra en la Figura 5. La empresa utilizó varias categorías de productos al presentar sus controladores para la certificación. Basándonos en su nombre, parece que la empresa desarrolló dos programas de filtrado de red: un componente netfilter y el controlador HotPage denominado adsafe o por su nombre interno KNewTalbeBase (Nótese la errata [Tt]albe, que también aparece en otras partes del código de HotPage).

Figure 5. The Chinese company’s certified products listed in the Windows Server Catalog
Figura 5. Productos certificados de la empresa china incluidos en el catálogo de Windows Server.

La investigación de la empresa a través de motores de búsqueda no arrojó muchos resultados. Según el registro de empresas dingtalk, descubrimos que la empresa se creó el 6 de enero de 2022 y proporcionó la dirección de correo electrónico dwadsafe@mail[.]io. El ámbito empresarial incluye: actividades relacionadas con la tecnología, como desarrollo, servicios, consultoría, etc., pero también actividades publicitarias. Como se traduce en la Figura 6, el principal accionista es ahora Wuhan Yishun Baishun Culture Media Co., Ltd, una empresa muy pequeña que parece estar especializada en publicidad y marketing.

Figure 6. Translated executive and shareholder information about the company
Figura 6. Información traducida sobre ejecutivos y accionistas de la empresa.

En la pestaña Propiedad intelectual, nos enteramos de que en abril y mayo de 2022 la empresa solicitó el nombre comercial Shield Internet Café Security Defense y el sitio web dwadsafe[.]com se creó el 22 de febrero de 2022. El dominio ahora resuelve a localhost(127.0.0.1) y por lo tanto es inaccesible. Sin embargo, una captura de pantalla del sitio web fue tomada el 10 de noviembre de 2023 por un rastreador web, como se ve en la Figura 7.

Figure 7. Screenshot of the dwadsafe[.]com webpage made by zhizhuyinqing.com
Figura 7. Captura de pantalla de la web wadsafe[.]com realizada por zhizhuyinqing.com (marca de agua en azul claro)

El cuerpo HTTP de la URL https://www.dwadsafe[.]com/login/reg.html (SHA-1: 744FFC3D8ECE37898A0559B62CC9F814006A1218) también fue capturado por VirusTotal. El código fuente contiene la descripción 网吧主动防御云平台 (traducción automática: Internet café active defense cloud platform). Esta página incluye un acuerdo de licencia que detalla el propósito del software, aunque con contradicciones. La Tabla 1 enumera algunos fragmentos interesantes de esa información.

Tabla 1. Traducción de las partes relevantes del acuerdo de licencia

Texto original

Texto traducido (a través de Google Translate; el subrayado es nuestro)

6、DwAdsafe作为一款主动防御系统,自身并不具有任何拦截功能,单独运行本软件不会对现有任何软件或者程序有拦截、破坏、修改等操作,也不会拦截任何病毒程序。用户只有在编写相关过滤规则后,才会开始生效;用户可以根据自己的实际需要,选择是否使用这些规则.

6. Como sistema de defensa activa, DwAdsafe no tiene ninguna función de interceptación. Ejecutar este software por sí solo no interceptará, destruirá o modificará ningún software o programa existente, ni interceptará ningún programa de virus. Sólo después de que los usuarios escriban las reglas de filtrado pertinentes, éstas surtirán efecto; los usuarios pueden elegir si utilizar estas reglas según sus necesidades reales.

7、DwAdsafe是应用户的强烈需求而开发的:目前,有部分软件和网站的广告对用户存在较大的骚扰和误导,严重影响用户的上网体验。应广大用户提出要求,本公司开发并提供网吧环境下的安全监视、监控、过滤等功能的软件--DwAdsafe。DwAdsafe中所有的过滤规则均由网友提供并共享,通过DwAdsafe发布。用户可以根据自己的实际需要,选择是否使用这些功能。

7. DwAdsafe fue desarrollado en respuesta a las fuertes necesidades de los usuarios: En la actualidad, los anuncios de algunos programas y sitios web son bastante acosadores y engañosos para los usuarios, lo que afecta gravemente a su experiencia en línea. En respuesta a las peticiones de los usuarios, nuestra empresa desarrolla y proporciona software para la supervisión de la seguridad, el control, el filtrado y otras funciones en entornos de cibercafés: DwAdsafe. Todas las reglas de filtrado de DwAdsafe son proporcionadas y compartidas por los internautas y publicadas a través de DwAdsafe. Los usuarios pueden elegir si desean utilizar estas funciones en función de sus necesidades reales.

8、DwAdsafe是主动防御型软件,故包括但不限于拦截、监视、删除、结束等功能。使用DwAdsafe会对计算机信息系统的部分或全部有对应的控制及处理权限,

8. DwAdsafe es un software de defensa activa, por lo que incluye pero no se limita a la interceptación, monitoreo, eliminación, terminación y otras funciones. Usando DwAdsafe tendrá el correspondiente control y autoridad de procesamiento sobre parte o la totalidad del sistema de información del ordenador.

Según el contrato de licencia, el software se comercializa efectivamente como una solución de seguridad para que los cibercafés bloqueen los anuncios. Sin embargo, a pesar de las afirmaciones de la empresa de que DwAdsafe no tiene capacidad de interceptación, nuestra investigación reveló que el software sí tiene una bastante intrusiva y viene con reglas preescritas e inmodificables.

Aparte de esta información, la empresa que está detrás de este componente malicioso sigue siendo un misterio.

Análisis de HotPage

En esta sección describimos cómo se instalan los distintos componentes e interactúan entre sí para conseguir su propósito: inyectar anuncios en el navegador. Hasta ahora, no hemos averiguado cómo se distribuyó el malware, pero creemos, con poca confianza, que podría haber sido incluido en otro paquete de software o anunciado como producto de seguridad debido al nivel de privilegios necesario para instalar el controlador. En 2022 se encontraron algunas referencias publicitarias del producto en algunos foros; en la figura 8 se muestra un ejemplo.

Figure 8. Mention of dwadsafe[.]com in a forum dedicated to Internet café maintenance
Figura 8. Mención de dwadsafe[.]com en un foro dedicado al mantenimiento de cibercafés

El instalador deposita el controlador en el disco e inicia un servicio para ejecutarlo. Descifra su archivo de configuración, que contiene una lista de navegadores y bibliotecas basados en Chromium. Si tales ejecutables se encuentran en ejecución o se están cargando, el controlador intenta inyectar una de las bibliotecas de la lista en el proceso del navegador. Tras enganchar funciones de la API de Windows basadas en red, la biblioteca inyectada comprueba la URL a la que se accede y, en determinadas condiciones, muestra otra página al usuario por diversos medios.

El instalador

El instalador que analizamos (SHA-1: 941F0D2D4589FB8ADF224C8969F74633267B2561) es un archivo comprimido UPX que fue subido a VirusTotal el 2023-08-26. La Figura 9 muestra un resumen de alto nivel de la instalación del controlador.

Figure 9. Overview of the installer’s workflow
Figura 9. Visión general del flujo de trabajo del instalador.

El instalador contiene las versiones cifradas (operación XOR de un byte con la clave 0xE3) del componente del controlador, las bibliotecas que se inyectarán en los procesos del navegador web y tres archivos de configuración con formato JSON:

  • chromedll contiene los nombres de las bibliotecas del navegador objetivo a enganchar y el patrón de las funciones objetivo para engancharlas,
  • hotPage (sin usar) contiene la lista de navegadores objetivo, listas de parámetros de línea de comandos y sitios web permitidos, y la URL de la página de inicio que podría utilizarse, y
  • newtalbe contiene reglas de filtrado, un endpoint API para enviar información básica sobre el ordenador comprometido y otro para gestionar las actualizaciones de configuración.

El malware comienza ejecutando la instrucción CPUID (ver Hypervisor Discovery), para comprobar si se está ejecutando dentro de un entorno virtualizado. A continuación, comprueba si el nombre de archivo de dispositivo del controlador \\KNewTableBaseIo existe y, si no es así, descifra el controlador y lo almacena en C:\Windows\ShieldNetWork\Business\. Su nombre es una cadena de 7 caracteres generada aleatoriamente seguida de la extensión .sys. Se crea un servicio con la ruta de archivo del controlador almacenado y se utiliza la cadena aleatoria como nombre del servicio. Como el tipo de inicio está configurado como SERVICE_DEMAND_START, el servicio debe iniciarse explícitamente para cargar el controlador. Curiosamente, este adware no implementa ningún mecanismo de persistencia, o al menos no en esta versión.

El instalador procede a comunicarse con el controlador y configurarlo a través de su nombre de archivo de dispositivo utilizando códigos de control de E/S en el siguiente orden:

  1. 0x9C4013FC - envía la librería hooking de 32 bits que será inyectada en los procesos del navegador web de destino.
  2. 0x9C400FFC - envía la librería hooking de 64 bits que será inyectada en los procesos del navegador web de destino.
  3. 0x9C40173C - envía la configuración de chromedll .

El instalador recupera la clave de registro asociada con el servicio creado y comprueba si los valores IP y puerto están presentes. Estos valores nunca son establecidos por este código por lo que presumiblemente son creados por otro componente. Sin entrar en los detalles del protocolo de red, el servidor remoto debe servir una actualización de la nueva configuración de . La comunicación se cifra con RC4, utilizando una clave derivada de la cadena ID:f~WdH+K?KD)r*sD4mk mediante la función BCryptGenerateSymmetricKey de Windows. La figura 10 muestra el contenido del fichero de configuración.

Figure 10. newtalbe configuration
Figura 10. Configuraciónde newtalbe

La Tabla 2 describe los valores importantes utilizados de este fichero, listados en el orden en que aparecen en el fichero de configuración (Figura 10).

Tabla 2. Descripción de la configuración denewtalbe

Valor

Descripción

cnz

Patrón URI que coincide con las URL utilizadas para recopilar estadísticas cuando se visita la URL especificada por el valor url .

url y dns

Si se accede a una de las URLs listadas en blist , se abrirá una nueva pestaña apuntando al valor url . El valor dns es la dirección IP del dominio.

hostapikey, hostapi,
lista de hosts

El valor URL de hostapi se utiliza para actualizar el hostlist, un diccionario compuesto por dominios relacionados con el juego junto con sus correspondientes direcciones IP. Hostapikey es la clave de descifrado.

apiurl

Lista de endpoints a los que enviar información sobre el ordenador comprometido.

Wlist,
blist,
jclist,
hblist

Listas de patrones (URI, dominios, extensiones de archivo, código HTML y cabeceras de respuesta HTTP) que deben coincidir para aplicar reglas de redirección (consulte la sección Enganche de NtDeviceIoControlFile e inspección de datos entrantes y salientes ).

Utilizando el valor de la URL hostapi de este archivo, se realiza una petición HTTP GET sobre TLS con una cadena User-Agent genérica. Los datos recibidos se desencriptan usando RC4 con el valor hostapikey ; contiene un diccionario de nombres de host relacionados con el juego con su correspondiente dirección resuelta.

Una vez realizadas estas actualizaciones, el instalador envía la configuración newtalbe actualizada al controlador mediante la emisión de una solicitud de E/S con el código de control 0x9C400BFC.

Por último, el malware itera sobre la lista de endpoints proporcionada por el elemento JSON apiurl y para cada uno de ellos crea una cadena con formato JSON que contiene información sobre el ordenador comprometido, la cifra con RC4 utilizando la clave Abc123!@#&XM derivada a través de la API de Windows BcryptGenerateSymmetricKey, y envía la información recopilada al servidor remoto a través de una petición HTTP POST. La información recopilada incluye el nombre del ordenador, la dirección MAC de la interfaz de red, la versión del sistema operativo y las dimensiones de la pantalla.

Controlador del inyector

El objetivo principal del controlador es inyectar bibliotecas en las aplicaciones del navegador y alterar su flujo de ejecución para cambiar la URL a la que se accede o abrir una página en una nueva pestaña. Se crean dos hilos para gestionar las peticiones de apertura de una nueva pestaña y la inyección de librerías utilizando el proyecto Blackbone disponible públicamente. Además, se establecen rutinas de notificación de creación de procesos y carga de imágenes para supervisar los procesos recién creados y las imágenes ejecutables que se cargan. La lógica simplificada del controlador se ilustra en la Figura 11.

Figure 11. Simplified driver logic
Figura 11. Lógica simplificada del controlador.

Por una razón desconocida, el controlador comienza borrando su imagen del disco. Después crea un objeto dispositivo llamado \KNewTableBaseIo y configura su rutina IRP_MJ_DEVICE_CONTROL para manejar las diversas peticiones de E/S listadas en la Tabla 3. Los códigos de control (IOCTL) utilizados para la configuración o ajuste de las librerías inyectadas sólo pueden ser llamados una vez; por lo tanto, los ajustes no pueden ser actualizados. Estos códigos de control especiales están protegidos por la comprobación de que la ruta del archivo de la persona que llama coincide con la expresión regular *ShieldNetWork\Business\\DwBusiness_*.

Tabla 3. Lista de IOCTL disponibles Lista de IOCTL disponibles y su descripción

IOCTL

Acción

0x9C400BFC

Analiza la nueva configuración pasada como argumento.

0x9C400FFC

Establece la librería de 64 bits a inyectar.

0x9C4013FC

Establece la librería de 32 bits a inyectar.

0x9C40173C

Analiza la configuración de chromedll pasada como argumento.

0x9C401EC4

Recibe una lista de pestañas del navegador (procesos) para matar.

0x9C4027A8

Devuelve la configuración de hotPage .

0x9C4027AC

Devuelve el tamaño de la configuración de hotPage .

0x9C4027E8

Devuelve la configuración newtalbe .

0x9C4027EC

Devuelve el tamaño de la configuración de newtalbe .

0x9C4027FC

Analiza la configuración hotPage pasada como argumento.

Al manejar los códigos de control 0x9C400BFC y 0x9C40173C, el controlador itera sobre los módulos cargados de todos los procesos en ejecución. Si se encuentra uno de los módulos objetivo listados en la configuración de chromedll , se pone en cola una petición para inyectar una librería en ese proceso.

Por último, el controlador finaliza su inicialización creando dos hilos y estableciendo las rutinas de notificación mencionadas anteriormente.

Es importante señalar que la configuración de hotPage nunca se establece. Cualquier mención a este archivo se hace únicamente para describir cómo se utilizaría según el flujo de control del controlador. Básicamente, la configuración de hotPage se utiliza para redirigir al usuario a una página específica (o página de inicio) llena de anuncios cuando se inicia un navegador específico.

La versión del software que analizamos se basaba únicamente en las configuraciones chromedll y newtalbe para lograr su inyección de anuncios.

Hilo de inyección de la biblioteca

Este subproceso comprueba las solicitudes de inyección en cola y, para cada una de ellas, se adjunta al proceso objetivo a través de KeStackAttachProcess, asigna trozos de memoria y copia su shellcode. Utilizando la función ZwCreateThreadEx de la biblioteca Blackbone, el controlador llama al shellcode, que implementa su propio cargador PE y llama al punto de entrada de la biblioteca inyectada.

Nuevo hilo de pestaña

El segundo hilo utiliza la misma lógica; sin embargo, el shellcode inyectado es diferente. Llama a la función de la API de Windows CreateProcessW con el parámetro de línea de comandos que es el nombre del proceso objetivo concatenado con la URL que debe abrirse. Esta última está formada por la URL seguida de la suma de las variables idindex y userid de la configuración hotPage . Por ejemplo, la configuración mostrada en la Figura 12 crearía la cadena https://www.hao774[.]com/?90386-00001. Dado que los navegadores basados en Chromium crean un nuevo proceso para cada nueva pestaña, la creación de un proceso a partir del proceso del navegador creará efectivamente una nueva pestaña.

La figura 12 muestra el contenido del archivo de configuración hotPage .

Figure 12. The hotPage configuration
Figura 12. Configuración de HotPage.

Este archivo de configuración contiene la lista de navegadores web objetivo y los parámetros de línea de comandos que determinan si el proceso debe ser inyectado. Los nombres de dominio están relacionados con anuncios de juegos o mantenimiento de cibercafés.

Rutina de notificación de creación de procesos

Esencialmente, esta rutina se asegura de que la página de inicio de la nueva instancia del navegador web sea redirigida a una URL específica presente en la configuración de hotPage . Esta sección describe cómo el controlador implementa esta función aunque no se utilice, ya que esta versión del instalador nunca envía esta configuración al controlador.

Dependiendo de las siguientes condiciones, el proceso del navegador web será marcado como elegible para abrir la URL en la configuración de hotPage:

  • se trata de la primera instancia del navegador y no de la apertura de una nueva pestaña,
  • la ruta de archivo del proceso coincide con una de las expresiones regulares de la lista del navegador en la configuración de hotPage ,
  • la línea de comandos del proceso no coincide con ninguna expresión regular de la lista wlist de la configuración de hotPage , y
  • si la línea de comandos del proceso incluye su propia ruta de archivo, no debe coincidir con ninguna expresión regular de la lista ppwlist de la configuración de hotPage .

Como se detalla en la siguiente sección, cuando el proceso del navegador comienza a cargar las primeras imágenes ejecutables, se pone en cola una solicitud para abrir una nueva pestaña. Las figuras 13 y 14, respectivamente, muestran la diferencia entre el directorio web legítimo 2345[.]com y la página con publicidad que se muestra al usuario.

Figure 13. Legitimate main page of the web directory 2345[.]com
Figura 13. Página principal legítima del directorio web 2345 .]com
Figure 14. Ad-riddled page mimicking the homepage of 2345[.]com
Figura 14. Página con publicidad que imita la página principal de 2345 [.] com

Rutina de notificación de carga de imágenes

Esta rutina maneja esencialmente dos tipos de escenarios. Si la imagen que se está cargando está en la lista de chromedll , se pone en cola una rutina APC que cargará una de las bibliotecas de enganche a través de su propio cargador PE.

En caso contrario, si el proceso se marcó como apto para abrir una nueva página, el malware lo consigue abriéndola en una nueva pestaña o en la actual. Si el nombre de archivo del proceso coincide con una de las expresiones regulares en la lista browser1 de la configuración hotPage , se pone en cola una solicitud para abrir una nueva pestaña y será manejada por el hilo apropiado (nótese que el elemento de la lista browser1 no estaba presente en el archivo de configuración que recuperamos). En el otro caso, la página se abrirá en la pestaña que se está creando poniendo en cola un elemento de trabajo (a través de IoQueueWorkItemEx) que modificará la línea de comandos del proceso que se está creando. Este último se adjunta al proceso, encuentra la dirección de exportación de GetCommandLineA y GetCommandlineW dentro de la biblioteca kernelbase.dll, y modifica la cadena Unicode almacenada en BaseAnsiCommandLine. La línea de comandos se sustituye por la ruta del archivo ejecutable del proceso concatenada con la URL en la configuración de hotPage . La Figura 15 muestra una comparación lado a lado del código responsable de encontrar el buffer de la línea de comandos y el desensamblado de la función GetCommandLineA .

Figure 15. Function that finds the command line buffer (left) and disassembly of the GetCommandlineA
Figura 15. Función que encuentra el búfer de la línea de comandos (izquierda) y desensamblado de la funsión GetCommandlineA (derecha).

Biblioteca inyectada

Lo primero que hace la librería inyectada es recuperar las configuraciones hotPage y newtalbe consultando al controlador. Si el nombre de archivo del navegador inyectado es 360Chrome, borra la clave de registro HKCU\Software\360chrome\Homepage y parchea el archivo Preferencias (ubicado en el directorio por defecto del navegador 360chrome\chrome\User Data\Default\Preferences) para hacer que la página de inicio apunte al valor URL de la configuración hotPage.

Usando la librería de hooking Microsoft Detours, el ejemplo engancha SetProcessMitigationPolicy para hacer que devuelva 1 con el fin de evitar que las políticas de seguridad se apliquen al proceso, permitiendo así la inyección de código. Luego se engancha getaddrinfo para forzar al navegador a resolver ciertos nombres de host a direcciones IP específicas para asegurar que la redirección se hace al servidor correcto en caso de que los nombres de dominio ya no existan.

Enganche de SSL_read y SSL_write

El malware engancha las funciones SSL_read y SSL_write para permitir la manipulación del tráfico TLS descifrado del navegador; lo hace buscando patrones específicos dentro de los módulos cargados, ya que estas funciones no se exportan. Por ejemplo, el diccionario chromewrite dentro de la configuración de chromedll contiene dos tipos de patrones, sslcode y oldchrome, como se ve en la Figura 16. Se utilizan, respectivamente, para encontrar patrones en la configuración de chromedll. Se utilizan, respectivamente, para encontrar versiones nuevas y antiguas de la función DoPayloadWrite. Hemos comprobado y confirmado que los patrones coinciden con la biblioteca de Microsoft Edge msedge.dll versión 122.0.2365.80.

Figure 16. Patterns used to find the DoPayloadWrite function
Figura 16. Patrones utilizados pra encontar la función DoPayloadWrite.

El valor de modo se utiliza para determinar la versión del patrón, ya sea de 32 o 64 bits; el valor de código es el patrón de bytes real, y el desplazamiento es la distancia desde el inicio del patrón hasta el puntero a la función SSL_write (véase la figura 17).

Figure 17. Finding the pointer to the SSL_write function
Figura 17. Encontrar el puntero a la funsión SSL_write.

Una vez encontrados SSL_write y SSL_read, se enganchan utilizando la librería Detours. Para la primera, el malware inspecciona los datos y luego llama a la función original, que los cifra y envía. En cuanto a la segunda, la biblioteca inyectada hace lo contrario para manipular los datos descifrados. Para ambas funciones, los datos son inspeccionados por el código que maneja respectivamente los códigos de control AFD_SEND y AFD_RECV en la función hooking NtDeviceIoControlFile.

Enganche de NtDeviceIoControlFile e inspección de los datos entrantes y salientes

La librería maliciosa engancha la función NtDeviceIoControlFile para manejar códigos IOCTL específicos como se ve en la Figura 18.

Figure 18. Hook routine for NtDeviceIoControlFile API function
Figura 18. Rutina de enganche para la función APINtDeviceIoControlFile

Para el código de control 0x12023(AFD_SEND_DATAGRAM utilizado cuando se envían paquetes UDP), el malware cancela cualquier petición DNS devolviendo STATUS_INVALID_PARAMETER si el número de puerto remoto es 53. Esto asegura que el navegador web sólo utilice la dirección IP del navegador. Esto asegura que el navegador web sólo utilice los hosts proporcionados por la configuración de newtalbe .

La rutina que maneja el código de control 0x1201F (AFD_SEND) comienza extrayendo la URL y la cabecera Referrer de la petición. Basándose en la coincidencia de la URL con ciertos valores de las configuraciones newtalbe y hotPage, el malware realiza diversas acciones, tal y como se describe en la Tabla 4. En algunos casos, la solicitud se envía pero la respuesta se modifica en la rutina que maneja el código de control AFD_RECV mediante diferentes métodos de redirección que se explican más adelante.

Tabla 4. Lista de acciones realizadas bajo ciertas condiciones al enviar peticiones HTTP

Configuración

Valor de coincidencia

Acción

newtalbe

cnz

Envía información sobre el ordenador comprometido a la apiurl (similar al final del instalador).

hotPage

página de inicio

Aumenta el contador interno de visitas a la página de inicio.

hotPage

wjclist

Envía los datos sin modificaciones.

newtalbe

url o wlist

Envía los datos sin ninguna modificación.

newtalbe

blist

Envía los datos pero modifica la respuesta utilizando el método de redirección 0. La respuesta se abre en una nueva pestaña del navegador.

newtalbe

jclist

Envía los datos pero modifica la respuesta utilizando el método de redirección 1.

newtalbe

bcnzlist

Envía los datos pero modifica la respuesta utilizando el método de redirección 2.

hotPage

jclist

Envía los datos pero modifica la respuesta utilizando el método de redirección 3.

Para el código de control 0x12017(AFD_RECV), el malware primero recupera los datos recibidos por el cliente y comprueba si la respuesta fue marcada como elegible para redirección. Existen cuatro tipos de redirecciones, tal y como se describe en la Tabla 5. La cadena xxx en la respuesta modificada se cambia por la URL en la configuración newtalbe .

Tabla 5. Métodos de redireccionamiento Métodos de redireccionamiento

Método de redirección

Respuesta modificada

Descripción

0

HTTP/1.1 302 Movido temporalmente

Servidor: nginx

Tipo de contenido: text/html

Conexión: close

Ubicación: xxx

Redirige al usuario a otra página utilizando el código HTTP 302; se incrementa un contador interno de redirecciones.

1

<html><head><meta charset="utf-8"><meta content="always" name="referrer"></head><body scroll=no style="margin:0;padding:0"><iframe src="xxx" width=100% height=100% frameborder=0></iframe></body></html>

Sustituye el contenido de la página actual por un iframe que apunta a una nueva URL.

2

location.replace("xxx")

Redirige la página actual utilizando el método replace de la interfaz Location .

3

HTTP/1.1 302 Movido temporalmente

Servidor: nginx

Tipo de contenido: text/html

Conexión: close

Ubicación: xxx

Igual que la redirección 0, pero el contador de redirecciones no se incrementa.

La figura 19 ilustra la aplicación del método de redirección 0 tras navegar a una URL que coincide con uno de los patrones de URL blist de la configuración newtalbe (www.5zy[.]cn). Se abre otra pestaña que apunta a la url especificada en la misma configuración.

Figure 19. Redirection method 0
Figura 19. Método de redirección 0

Problemas de seguridad y escalada de privilegios

Al inicializar su objeto dispositivo, el controlador no especifica ninguna lista de control de acceso(ACL) para restringir quién puede comunicarse con él; por lo tanto, cualquiera puede enviarle peticiones de E/S. Como se mencionó anteriormente, algunos códigos de control de E/S requieren que el proceso solicitante se encuentre en una ruta que coincida con la expresión regular:

*ShieldNetWork\\Business\DwBusiness_*

Evidentemente, esto no es suficiente para comprobar si el proceso que se comunica es uno de los componentes de HotPage y puede evitarse fácilmente creando los directorios necesarios en una carpeta que el usuario pueda escribir.

Se nos ocurrieron dos escenarios que permitirían a un usuario con el controlador HotPage ejecutándose en su sistema ejecutar código como la cuenta NT AUTHORITY\System. Creamos un script de prueba de concepto (PoC) en Python para lograr ambos escenarios.

Escenario #1: Escalada de privilegios mediante inyección arbitraria de DLL en procesos arbitrarios

En este primer escenario, asumimos que el driver fue cargado pero que la configuración de chromedll y las librerías para inyectarlo no fueron configuradas. En ese caso, es posible crear y configurar nuestra propia librería para inyectar. Creamos una pequeña biblioteca que simplemente registraría el PID del proceso inyectado, si se está ejecutando con privilegios de administrador y la ruta del archivo del proceso inyectado.

Como se ve en la captura de pantalla del archivo de registro de la Figura 20, se inyectaron muchos procesos con nuestra biblioteca, incluidos procesos con privilegios de administrador.

Figure 20. Log file of our injected library
Figura 20. Archivo de registro de nuestra biblioteca inyectada.

Debe tenerse en cuenta, sin embargo, que los procesos protegidos no pueden ser inyectados utilizando esta técnica.

Escenario #2: Escalada de privilegios mediante la modificación de la línea de comandos de procesos recién creados

En el primer escenario, nos basamos en el hecho de que tanto las librerías inyectadas como la configuración de chromedll no estaban establecidas, pero, como se ve en el análisis del instalador, ambas se establecen tan pronto como el controlador se carga inicialmente. Sin embargo, la configuración de hotPage nunca se establece. Basándonos en el análisis del flujo de control, ideamos una forma de aprovechar la lógica de creación de procesos del controlador y las rutinas de notificación de carga de imágenes para ejecutar de nuevo el mismo ejecutable pero con una línea de comandos diferente.

En determinadas condiciones, como se explica en las secciones Rutina de notificación de creación de procesos y Rutina de notificación de carga de imágenes, el controlador puede abrir una nueva pestaña que apunte a la URL presente en la configuración de hotPage. Esto se consigue sustituyendo la línea de comandos del proceso de navegador recién creado o duplicando el proceso de navegador y cambiando su línea de comandos por la URL presente en la configuración de hotPage. Si especificamos qué proceso puede ser duplicado y la nueva línea de comandos, podemos conseguir una escalada de privilegios apuntando a un proceso con privilegios SYSTEM, por ejemplo.

Conclusión

El análisis de esta pieza de malware de aspecto bastante genérico ha demostrado, una vez más, que los desarrolladores de adware todavía están dispuestos a hacer un esfuerzo adicional para lograr sus objetivos. No sólo eso, estos han desarrollado un componente del kernel con un amplio conjunto de técnicas para manipular procesos, sino que también pasaron por los requisitos impuestos por Microsoft para obtener un certificado de firma de código para su componente controlador.

El controlador HotPage nos recuerda que el abuso de certificados de Verificación Extendida sigue existiendo. Como muchos modelos de seguridad se basan en algún punto en la confianza, los actores de amenazas tienden a jugar en la línea entre lo legítimo y lo turbio. Tanto si el software se anuncia como una solución de seguridad como si simplemente se incluye con otro software, las capacidades concedidas gracias a esta confianza exponen a los usuarios a riesgos de seguridad.

A pesar de lo molesto que puede resultar el adware, las vulnerabilidades introducidas por este malware dejan el sistema abierto a amenazas aún más peligrosas. Un atacante con una cuenta sin privilegios podría aprovechar el controlador vulnerable para obtener privilegios de SISTEMA o inyectar librerías en procesos remotos para causar más daños, todo ello mientras utiliza un controlador legítimo y firmado.

Las tecnologías de ESET detectan esta amenaza -que Microsoft eliminó del Catálogo de Windows Server el 1 de mayo de 2024- como Win{32|64}/HotPage.A y Win{32|64}/HotPage.B.

Para cualquier consulta sobre nuestras investigaciones publicadas en WeLiveSecurity, póngase en contacto con nosotros 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

Nombre de archivo

Detección

Descripción

0D1D298A3EBCA4ECE0BA
52828DD3B7676D884E7F

NO DISPONIBLE

Win64/HotPage.B

Controlador de HotPage.

DDD82422D418FC8E8748
BCC7BD2E2BC468124A6B

NO DISPONIBLE

Win32/HotPage.B

librería de enganche HotPage de 32 bits.

D5D646B052E8B2572399
1CB4CAB51CB2F9D55906

NO DISPONIBLE

Win64/HotPage.A

librería HotPage hooking de 64 bits.

941F0D2D4589FB8ADF22
4C8969F74633267B2561

Hotpage.exe

Win32/HotPage.A

Instalador de HotPage.

Red

IP

Dominio

Proveedor de alojamiento

Visto por primera vez

Detalles

61.147.93[.]49

nnijs-f-9-9-1.nycpqx[.]top

CHINATELECOM JiangSu YangZhou IDC.

2023-10-06

Servidor utilizado para obtener una lista de dominios relacionados con el juego con sus correspondientes direcciones IP.

140.210.24[.]33

tmrr-s-f-9-9-1.vosdzxhbv[.]top

CHINATELECOM JiangSu YangZhou IDC.

2023-10-06

Los usuarios comprometidos son redirigidos a este servidor web que aloja páginas con publicidad.

202.189.5[.]222

N/A

Shandong eshinton Network Technology Co., Ltd.

2023-10-06

Antiguo dominio de DwAdsafe utilizado para recopilar información sobre instalaciones.

Técnicas MITRE ATT&CK

Esta tabla se construyó utilizando la versión 15 del marco MITRE ATT&CK.

Táctica

ID

Nombre

Descripción

Desarrollo de recursos

T1588.003

Obtener capacidades: Certificados de firma de código

El controlador de DwAdsafe está firmado con un certificado de firma de código válido.

Ejecución

T1204.002

Ejecución de usuario: Archivo malicioso

El componente instalador es una aplicación ejecutable.

T1569.002

Servicios del Sistema: Ejecución de Servicio

El driver de DwAdsafe se carga creando un servicio.

Persistencia

T1574.013

Flujo de Ejecución Hijack: KernelCallbackTable

El driver de DwAdsafe instala callbacks del kernel para monitorizar las imágenes cargadas y la creación de procesos.

Evasión de Defensa

T1055.004

Inyección de Procesos: Llamada a Procedimiento Asíncrono

El driver de DwAdsafe puede usar APC como método de inyección.

T1553.002

Subvertir Controles de Confianza: Firma de Código

El driver de DwAdsafe está firmado con un certificado válido de firma de código.

T1140

Deobfuscate/Decode Archivos o Información

Los archivos de configuración incrustados están encriptados.

T1055.001

Inyección de Procesos: Inyección de bibliotecas de vínculos dinámicos

DwAdsafe puede secuestrar el flujo de control de los procesos del navegador web inyectando DLLs.

T1027.009

Archivos o Información Ofuscados: Embedded Payloads

El driver de DwAdsafe y las librerías de hooking están embebidas dentro del instalador.

T1070.004

Eliminación de indicadores: Eliminación de archivos

El driver de DwAdsafe se borra del disco.

T1027.002

Archivos o Información Ofuscados: Software Packing

El instalador de DwAdsafe está empaquetado con UPX.

Descubrimiento

T1033

Descubrimiento del Propietario/Usuario del Sistema

El instalador de DwAdsafe y las librerias de hooking recogen el nombre de usuario de la victima.

Recolección

T1185

Secuestro de Sesión de Navegador

Las librerias hooking de DwAdsafe pueden interceptar y manipular el trafico de red dentro de los procesos del navegador web.

Comando y Control

T1071.001

Protocolo de Capa de Aplicación: Protocolos Web

El protocolo HTTP es utilizado para enviar información recolectada sobre el usuario y la computadora al C&C.

T1573.001

Canal Cifrado: Criptografía Simétrica

El algoritmo de encriptación RC4 se utiliza para encriptar la comunicación con el C&C.

Impacto

T1565.002

Manipulación de datos: Manipulación de Datos Transmitidos

Las librerías de hooking de DwAdsafe pueden interceptar y manipular el tráfico de red dentro de los procesos del navegador web.