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.
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.
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.
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.
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).
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.
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.
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.
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.
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:
- 0x9C4013FC - envía la librería hooking de 32 bits que será inyectada en los procesos del navegador web de destino.
- 0x9C400FFC - envía la librería hooking de 64 bits que será inyectada en los procesos del navegador web de destino.
- 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.
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, |
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, |
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.
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 .
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.
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 .
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.
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).
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.
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.
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.
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.comESET 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 |
NO DISPONIBLE |
Win64/HotPage.B |
Controlador de HotPage. |
DDD82422D418FC8E8748 |
NO DISPONIBLE |
Win32/HotPage.B |
librería de enganche HotPage de 32 bits. |
D5D646B052E8B2572399 |
NO DISPONIBLE |
Win64/HotPage.A |
librería HotPage hooking de 64 bits. |
941F0D2D4589FB8ADF22 |
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 |
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 |
Ejecución de usuario: Archivo malicioso |
El componente instalador es una aplicación ejecutable. |
|
Servicios del Sistema: Ejecución de Servicio |
El driver de DwAdsafe se carga creando un servicio. |
||
Persistencia |
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 |
Inyección de Procesos: Llamada a Procedimiento Asíncrono |
El driver de DwAdsafe puede usar APC como método de inyección. |
|
Subvertir Controles de Confianza: Firma de Código |
El driver de DwAdsafe está firmado con un certificado válido de firma de código. |
||
Deobfuscate/Decode Archivos o Información |
Los archivos de configuración incrustados están encriptados. |
||
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. |
||
Archivos o Información Ofuscados: Embedded Payloads |
El driver de DwAdsafe y las librerías de hooking están embebidas dentro del instalador. |
||
Eliminación de indicadores: Eliminación de archivos |
El driver de DwAdsafe se borra del disco. |
||
Archivos o Información Ofuscados: Software Packing |
El instalador de DwAdsafe está empaquetado con UPX. |
||
Descubrimiento |
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 |
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 |
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. |
|
Canal Cifrado: Criptografía Simétrica |
El algoritmo de encriptación RC4 se utiliza para encriptar la comunicación con el C&C. |
||
Impacto |
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. |