Descripciones de malware

El driver de la destrucción: cómo un controlador legítimo se usa para desactivar los procesos antivirus

Introducción

En un caso reciente de respuesta a incidentes en Brasil, detectamos un nuevo software desactivador de antivirus (AV killer) que ha estado en circulación desde al menos octubre de 2024. Este artefacto malicioso abusa del driver ThrottleStop.sys, que se entrega junto con el malware como parte de una técnica conocida como BYOVD (Bring Your Own Vulnerable Driver, “trae tu propio driver vulnerable”), utilizada para finalizar numerosos procesos de antivirus y debilitar así la defensa del sistema. Los desactivadores de antivirus que dependen de varios drivers o controladores vulnerables son un problema conocido. Hemos notado un reciente incremento de ataques cibernéticos usan este tipo de malware.

Es importante destacar que los productos de Kaspersky, como Kaspersky Endpoint Security (KES), tienen implementados mecanismos de autodefensa que impiden la alteración o eliminación de archivos de la aplicación en disco, procesos en memoria y entradas en el registro del sistema. Estos mecanismos contrarrestan el desactivador de antivirus descrito en este artículo.

En el caso que analizamos, el cliente buscó nuestra ayuda después de descubrir que sus sistemas habían sido cifrados por una muestra de ransomware. El adversario logró obtener acceso al sistema inicial (un servidor SMTP) mediante una credencial de RDP válida. Después, extrajo las credenciales de otros usuarios con Mimikatz e inició un movimiento lateral por la red usando la técnica pass-the-hash junto con las herramientas Invoke-WMIExec.ps1 e Invoke-SMBExec.ps1. El atacante logró su objetivo después de deshabilitar el antivirus instalado en varios endpoints y servidores a lo largo de la red, y ejecutar una variante del ransomware MedusaLocker.

En este artículo, ofreceremos detalles sobre el ataque, así como un análisis del eliminador de antivirus. Al final, indicaremos las tácticas, técnicas y procedimientos (TTP) que emplearon los atacantes.

Los productos de Kaspersky detectan las amenazas encontradas en este incidente como:

  • Trojan-Ransom.Win32.PaidMeme.* (variante MedusaLocker)
  • Win64.KillAV.* (AV killer)

Descripción general del incidente

El ataque comenzó cuando el atacante obtuvo credenciales válidas de una cuenta administrativa. Después, logró conectarse a un servidor de correo mediante RDP desde Bélgica y, usando Mimikatz, extrajo el hash NTLM de otro usuario. Acto seguido, utilizó los siguientes comandos PowerShell Invoke-TheHash para realizar ataques pass-the-hash con el objetivo de crear usuarios en distintas máquinas.

Un dato interesante es que el atacante no buscaba crear el mismo nombre de usuario en todas las máquinas. Más bien optó por agregar un número secuencial al final de cada nombre de usuario (por ejemplo, Usuario1, Usuario2, …, UsuarioN). Sin embargo, la contraseña era la misma para todos los usuarios creados.

El atacante subió varios archivos a la carpeta C:\Users\Administrator\Music en el servidor de correo, entre ellos el desactivador de antivirus. Estos artefactos también se subieron más tarde junto con el ransomware (haz8.exe) a otras máquinas, pero esta vez en la ruta C:\Users\UserN\Pictures. Al principio, Windows Defender pudo contener la amenaza de ransomware en algunas máquinas justo después de que se las subiera, pero el atacante no tardó en desactivar la solución de seguridad.

La siguiente imagen muestra un panorama general del incidente. Pudimos extraer evidencias para determinar el flujo de trabajo del atacante y los artefactos involucrados. Por suerte, todavía había información relevante en los sistemas analizados, pero no siempre sucede así.

Flujo de incidentes

Flujo de incidentes

Este tipo de ataque resalta la importancia de una defensa profunda y por capas. La organización tenía instalado un antivirus. Pero el atacante pudo usar una cuenta válida para cargar un artefacto indetectable que logró evadir la defensa. Esto podría haberse evitado mediante prácticas de seguridad simples, como hacer cumplir el uso de contraseñas complejas y, por supuesto, deshabilitar el acceso RDP a las direcciones IP públicas.

El análisis del desactivador de antivirus

Para desactivar las defensas del sistema, los atacantes usaron dos archivos: ThrottleBlood.sys y All.exe. El primero es un driver legítimo (cuyo nombre original es ThrottleStop.sys) desarrollado por TechPowerUp y utilizado por la aplicación ThrottleStop. Esta aplicación está diseñada para detectar y corregir problemas de desaceleración de la CPU, y su uso es más común entre los jugadores. El driver involucrado en el incidente tiene un certificado válido, firmado el 2020-10-06 20:34:00 UTC, como se muestra a continuación:

Hash Valor
MD5 6bc8e3505d9f51368ddf323acb6abc49
SHA-1 82ed942a52cdcf120a8919730e00ba37619661a3
SHA-256 16f83f056177c4ec24c7e99d01ca9d9d6713bd0497eeedb777a3ffefa99c97f0

Una vez cargado, el driver crea un dispositivo en .\\.\\ThrottleStop, que es un canal de comunicación entre el modo de usuario y el modo kernel.

Esquema del flujo de comunicación del controlador ThrottleStop

Esquema del flujo de comunicación del controlador ThrottleStop

La comunicación con el driver se lleva a cabo a través de llamadas IOCTL, en particular mediante la función Win32 DeviceIoControl. Esta función habilita el uso de códigos IOCTL para solicitar diversas operaciones del driver. El driver deja al descubierto dos funciones IOCTL vulnerables: una que permite leer de la memoria y otra que permite escribir en ella, ambas utilizando direcciones físicas. Lo importante es que cualquier usuario con privilegios administrativos puede acceder a estas funciones, lo que constituye la vulnerabilidad principal. Esa es la esencia de la vulnerabilidad.

Para acceder a la memoria física, el driver utiliza la función MmMapIoSpace, una API de nivel de kernel que mapea una dirección física determinada dentro del espacio de direcciones virtuales del sistema, en particular dentro de la región MMIO (Memory-Mapped I/O). Este mapeo permite que las lecturas y escrituras en la memoria virtual afecten directamente a la memoria física correspondiente. Este tipo de vulnerabilidad es bien conocida en los controladores del kernel y ha sido explotada durante años, no solo por atacantes, sino también frecuentemente por jugadores tramposos que buscan acceso a la memoria de bajo nivel. La vulnerabilidad en ThrottleStop.sys tiene asignado el identificador CVE-2025-7771. Según nuestros datos, el proveedor está preparando un parche para subsanarla. Por ahora, recomendamos que las soluciones de seguridad monitoreen la presencia de este controlador, que se sabe que es vulnerable, en el sistema operativo, para prevenir que la exploten los eliminadores de EDR, como el que hemos descrito en este artículo.

El segundo artefacto (All.exe) es el eliminador de antivirus en sí. Nuestro análisis comenzó con una inspección básica del archivo.

Hash Valor
MD5 a88daa62751c212b7579a57f1f4ae8f8
SHA-1 c0979ec20b87084317d1bfa50405f7149c3b5c5f
SHA-256 7a311b584497e8133cd85950fec6132904dd5b02388a9feed3f5e057fb891d09

Primero, inspeccionamos sus propiedades. Cuando estábamos buscando cadenas relevantes, un patrón llamó nuestra atención: dentro del binario se enumeraban varios nombres de procesos de antivirus. La siguiente imagen muestra un extracto de nuestra consulta.

Nombres de antivirus dentro del binario

Nombres de antivirus dentro del binario

Pudimos mapear todos los procesos que el malware intenta eliminar. La tabla siguiente muestra cada uno de ellos, así como el proveedor correspondiente. Como podemos ver, el artefacto intenta eliminar los principales productos antivirus disponibles en el mercado.

Nombres de procesos Vendedor
AvastSvc.exe, AvLaunch.exe, aswToolsSvc.exe, afwServ.exe, wsc_proxy.exe, bccavsvc.exe Avast
AVGSvc.exe, AVGUI.exe, avgsvca.exe, avgToolsSvc.exe AVG Technologies (Avast)
bdlived2.exe, bdredline.exe, bdregsvr2.exe, bdservicehost.exe, bdemsrv.exe, bdlserv.exe, BDLogger.exe, BDAvScanner.exe, BDFileServer.exe, BDFsTray.exe, Arrakis3.exe, BDScheduler.exe, BDStatistics.exe, npemclient3.exe, epconsole.exe, ephost.exe, EPIntegrationService.exe, EPProtectedService.exe, EPSecurityService.exe, EPUpdateService.exe BitDefender
CSFalconContainer.exe, CSFalconService.exe, CSFalconUI.exe CrowdStrike
egui.exe, eguiProxy.exe, ERAAgent.exe, efwd.exe, ekrn.exe ESET
avp.exe, avpsus.exe, avpui.exe, kavfs.exe, kavfswh.exe, kavfswp.exe, klcsldcl.exe, klnagent.exe, klwtblfs.exe, vapm.exe Kaspersky
mfevtps.exe McAfee (Trellix)
MsMpEng.exe, MsMpSvc.exe, MSASCui.exe, MSASCuiL.exe, SecurityHealthService.exe, SecurityHealthSystray.exe Microsoft
QHPISVR.EXE, QUHLPSVC.EXE, SAPISSVC.EXE Quick Heal Technologies
ccSvcHst.exe, ccApp.exe, rtvscan.exe, SepMasterService.exe, sepWscSvc64.exe, smc.exe, SmcGui.exe, snac.exe, SymCorpUI.exe, SymWSC.exe, webextbridge.exe, WscStub.exe Symantec (Broadcom)
PSANHost.exe, pselamsvc.exe, PSUAMain.exe, PSUAService.exe Panda Security (WatchGuard)
SentinelAgent.exe, SentinelAgentWorker.exe, SentinelHelperService.exe, SentinelServiceHost.exe, SentinelStaticEngine.exe, SentinelStaticEngineScanner.exe, SentinelUI.exe SentinelOne
SophosFileScanner.exe, SophosFIMService.exe, SophosFS.exe, SophosHealth.exe, SophosNetFilter.exe, SophosNtpService.exe, hmpalert.exe, McsAgent.exe, McsClient.exe, SEDService.exe Sophos

El binario, al empezar a ejecutarse, primero carga el driver ThrottleBlood.sys utilizando métodos de la API del Administrador de control de servicios (SCM), como OpenSCManagerA() y StartServiceW().

Proceso de carga del driver ThrottleStop/ThrottleBlood

Proceso de carga del driver ThrottleStop/ThrottleBlood

El desactivador de antivirus necesita el driver ThrottleStop para secuestrar funciones del kernel y habilitar la ejecución de rutinas exclusivas del modo kernel desde el modo usuario. Para invocar funciones del kernel mediante las primitivas vulnerables de lectura y escritura del driver, el malware primero obtiene la dirección base del kernel cargado y las direcciones de las funciones objetivo que planea sobrescribir. Lo logra utilizando la función no documentada NtQuerySystemInformation de Win32.

Recolección de la dirección base del kernel

Recolección de la dirección base del kernel

Al pasar el indicador SystemModuleInformation, la función puede devolver la lista de módulos y drivers cargados en el sistema en un momento dado. El kernel de Windows se denomina ntoskrnl.exe. La dirección base siempre es diferente debido a KASLR (Kernel Address Space Layout Randomization).
Para realizar operaciones de lectura y escritura utilizando MmMapIoSpace, el sistema primero debe determinar la dirección física utilizada por el kernel. Esto se logra con una técnica llamada SuperFetch, que está incluida en el proyecto de código abierto superfetch, disponible en GitHub. Este proyecto facilita la traducción de direcciones virtuales a direcciones físicas mediante una biblioteca de C++ compuesta solo por archivos de encabezado.

Cálculo de dirección física

Cálculo de dirección física

La biblioteca Superfetch de C++ invoca la función NtQuerySystemInformation, especificando la consulta SystemSuperfetchInformation. Esta consulta devuelve todos los rangos de memoria actuales y sus páginas. Usando esta información, la biblioteca superfetch puede convertir cualquier dirección virtual del kernel en su respectiva dirección física.

Llamando funciones del kernel

Una vez obtenida la dirección base física, el malware debe seleccionar una función del kernel que pueda invocarse de forma indirecta a través de alguna llamada al sistema desde el modo de usuario. El syscall elegido es NtAddAtom, que no se usa con frecuencia y es fácil de llamar a través de ntdll.dll.

Recopilación de direcciones de NtAddAtom

Recopilación de direcciones de NtAddAtom

Al cargar ntoskrnl.exe con la función LoadLibrary, el malware, entre otras cosas, puede descubrir sin dificultad el desplazamiento de la función NtAddAtom y así determinar su dirección en el kernel sumando la dirección base actual y el desplazamiento; la dirección física se obtiene de la misma manera que la base del kernel. Con el controlador cargado y las direcciones físicas ya obtenidas, el malware puede aprovechar los códigos IOCTL vulnerables para leer y escribir la memoria física de la función NtAddAtom.

Inyección de código en el núcleo utilizando un driver vulnerable

Inyección de código en el núcleo utilizando un driver vulnerable

Para llamar cualquier función del kernel, el eliminador de antivirus escribe un pequeño shellcode que salta a una dirección objetivo dentro del kernel, la cual puede ser cualquier función del kernel deseada. Una vez que la función se completa, el malware restaura el código original del núcleo para prevenir fallos del sistema.

Diagrama de inyección de código en el kernel

Diagrama de inyección de código en el kernel

Rutina principal del proceso desactivador

Habiendo obtenido toda la información necesaria, el desactivador de antivirus inicia un bucle para encontrar procesos objetivo utilizando las llamadas de API Process32FirstW() y Process32NextW. Como mencionamos antes, la lista de software de seguridad objetivo, como MsMpEng.exe (Windows Defender), está codificada de forma fija en el malware.

Se encontró coincidencia con MsMpEng.exe

Se encontró coincidencia con MsMpEng.exe

El eliminador de antivirus verifica todos los procesos en ejecución contra la lista especificada en el código, y si alguno de ellos coincide, los termina utilizando el driver vulnerable para llamar a las funciones del núcleo PsLookupProcessById y PsTerminateProcess.

Si el proceso ya fue finalizado, la consola muestra un mensaje que indica su nombre y estado, como se observa en la siguiente imagen. Esto nos lleva a sugerir que el malware estaba siendo depurado.

MsMpEng.exe fue terminado

MsMpEng.exe fue terminado

Windows Defender, al igual que la mayoría de los antivirus disponibles hoy en día, seguirá intentando reiniciar el servicio para mantener la máquina segura, pero el bucle principal del programa seguirá identificando el proceso asociado al antivirus y continuará desactivándolo.

El defensor intenta reiniciar, pero de nuevo lo eliminan

El defensor intenta reiniciar, pero de nuevo lo eliminan

Regla Yara

A partir de nuestro análisis de la muestra, desarrollamos la siguiente regla YARA para detectar la amenaza en tiempo real. La regla tiene en cuenta el tipo de archivo, las cadenas relevantes y las importaciones de funciones de biblioteca.

Víctimas

Según nuestra telemetría y la información recopilada de fuentes públicas de inteligencia sobre amenazas, este artefacto ha sido utilizado por adversarios desde al menos octubre de 2024. Las víctimas más afectadas son originarias de Rusia, Bielorrusia, Kazajistán, Ucrania y Brasil.

Atribución

Esta herramienta eliminadora de antivirus fue utilizada no hace mucho en un ataque en Brasil para desplegar el ransomware MedusaLocker dentro de la infraestructura de una empresa. Sin embargo, este tipo de malware es común entre varios actores de amenazas, incluidos varios grupos de ransomware y afiliados.

Conclusión y recomendaciones

Este incidente nos deja varias lecciones valiosas. Primera, que es importante implementar prácticas de fortalecimiento sólidas para proteger los servidores contra ataques de fuerza bruta y restringir la exposición pública de los protocolos de acceso remoto. Si la víctima hubiera implementado un acceso RDP limitado y directivas de contraseñas complejas, la brecha inicial del atacante podría haberse prevenido. Más importante aún, este incidente subraya la necesidad de una defensa profunda. El eliminador de antivirus logró desactivar las defensas del sistema, lo que permitió al atacante moverse lateralmente a través de las máquinas sin dificultad. Para mitigar tales amenazas, los administradores del sistema deben implementar mecanismos como:

  • Lista blanca de aplicaciones y aplicación estricta del acceso de mínimo
  • Segmentación e aislamiento de la red para restringir las brechas y limitar el movimiento lateral.
  • Autenticación multifactor (MFA) para todos los canales de acceso remoto.
  • Gestión regular de parches y análisis automatizado de vulnerabilidades.
  • Sistemas de detección y prevención de intrusiones (IDS/IPS) para detectar comportamientos anómalos.
  • Herramientas de detección y respuesta en endpoints (EDR) para monitorear y aplicar soluciones en tiempo real.
  • Registro, monitoreo y alertas integrales para garantizar la rápida detección de incidentes.
  • Evaluaciones de seguridad y pruebas de penetración periódicas para validar la efectividad de los controles.

En fechas recientes, hemos visto un aumento en los ataques que involucran diversos softwares eliminadores de antivirus. Los servicios de protección contra amenazas deben implementar mecanismos de autodefensa para prevenir este tipo de ataque. Esto incluye proteger los archivos de la aplicación contra modificaciones no autorizadas, monitorear los procesos de memoria y mantener las reglas de detección actualizadas regularmente en los dispositivos del cliente.

Tácticas, técnicas y procedimientos

A continuación, presentamos las TTP identificadas a partir de nuestro análisis del malware eliminador de antivirus.

Táctica Técnica Id.
Detección Detección de procesos T1057
Evasión de defensas Inhabilitar defensas: desactivar o modificar herramientas T1562.001
Evasión de defensas Deterioro de defensas: Bloqueo de indicadores T1562.006
Escalamiento de privilegios Crear o modificar proceso del sistema: Servicio de Windows T1543.003
Impacto Detención del servicio T1489

Indicadores de compromiso

Driver ThrottleBlood.sys vulnerable
82ed942a52cdcf120a8919730e00ba37619661a3
Malware detectado en el incidente
f02daf614109f39babdcb6f8841dd6981e929d70 (haz8.exe)
c0979ec20b87084317d1bfa50405f7149c3b5c5f (Todo.exe)
Otras variantes del eliminador de antivirus
eff7919d5de737d9a64f7528e86e3666051a49aa
0a15be464a603b1eebc61744dc60510ce169e135
d5a050c73346f01fc9ad767d345ed36c221baac2
987834891cea821bcd3ce1f6d3e549282d38b8d3
86a2a93a31e0151888c52dbbc8e33a7a3f4357db
dcaed7526cda644a23da542d01017d48d97c9533

El driver de la destrucción: cómo un controlador legítimo se usa para desactivar los procesos antivirus

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Informes

BlindEagle vuela alto en LATAM

Kaspersky proporciona información sobre la actividad y los TTPs del APT BlindEagle. Grupo que apunta a organizaciones e individuos en Colombia, Ecuador, Chile, Panamá y otros países de América Latina.

MosaicRegressor: acechando en las sombras de UEFI

Encontramos una imagen de firmware de la UEFI infectada con un implante malicioso, es el objeto de esta investigación. Hasta donde sabemos, este es el segundo caso conocido en que se ha detectado un firmware malicioso de la UEFI usado por un actor de amenazas.