BYOVD: Bring Your Own Vulnerable Driver y Drivers Maliciosos en Windows
Análisis técnico de la técnica BYOVD (Bring Your Own Vulnerable Driver). Cómo el malware usa drivers firmados vulnerables para obtener acceso al kernel y desactivar EDR. Drivers más abusados, detección con driver blocklists, HVCI, y Sysmon.
Del user-mode al kernel: por qué los EDR no pueden protegerse
Los EDR modernos protegen sus procesos con mecanismos como PPL (Protected Process Light). Un proceso PPL no puede ser terminado por otros procesos, incluso con privilegios de administrador. Esto parece robusto: ni siquiera un atacante con Domain Admin puede matar el agente de CrowdStrike o SentinelOne.
Pero hay una excepción: código ejecutándose en kernel mode (ring 0) tiene control absoluto sobre el sistema, incluida la capacidad de terminar procesos PPL. El problema es que cargar un driver en el kernel requiere firma digital, y obtener un certificado de firma de drivers es difícil.
La solución del atacante: no crear un driver nuevo. Usar uno que ya existe, que ya está firmado por un fabricante legítimo, y que tiene una vulnerabilidad explotable. Esto es BYOVD.
Cómo funciona BYOVD
Flujo de ataque
1. Atacante obtiene acceso con privilegios de admin (ya en la red)
2. Atacante trae un driver vulnerable firmado (ej. gdrv.sys de Gigabyte)
- El driver es legítimo, firmado por Gigabyte
- Windows verifica la firma: VALIDA
- Windows carga el driver en kernel mode
3. Atacante envía IOCTL (I/O Control) al driver
- El driver tiene una vulnerabilidad: permite read/write arbitrario
en memoria del kernel sin validación adecuada
- El atacante lee/escribe cualquier dirección de kernel memory
4. Desde kernel mode, el atacante:
- Termina el proceso del EDR (incluso si es PPL)
- Deshabilita callbacks de seguridad del kernel
- Oculta su propia actividad
- Ejecuta su payload sin interferencia
Tipos de vulnerabilidades en drivers
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Arbitrary read/write | Permite leer/escribir cualquier dirección de memoria del kernel | gdrv.sys (Gigabyte), DBUtil (Dell) |
| MSR read/write | Permite leer/escribir Model Specific Registers del procesador | Capcom.sys |
| Physical memory access | Acceso directo a memoria física (mapeo de direcciones físicas a virtuales) | RTCore64.sys (MSI Afterburner) |
| Code execution | Permite ejecutar código arbitrario en kernel mode | Capcom.sys (función de callback en kernel) |
| Process manipulation | Permite manipular objetos de proceso del kernel | Process Explorer driver (ironic) |
Drivers vulnerables más abusados
| Driver | Fabricante | CVE | Producto original | Grupos que lo usan |
|---|---|---|---|---|
| gdrv.sys | Gigabyte | CVE-2018-19320 | GIGABYTE App Center | RobbinHood, Cuba |
| DBUtil_2_3.sys | Dell | CVE-2021-21551 | Dell BIOS Utility | Lazarus, ransomware varios |
| RTCore64.sys | Micro-Star (MSI) | CVE-2019-16098 | MSI Afterburner | BlackByte, AvosLocker |
| mhyprot2.sys | miHoYo | N/A | Genshin Impact anti-cheat | Múltiples ransomware |
| Capcom.sys | Capcom | N/A | Capcom game driver | Research, PoC |
| IQVW64E.SYS | Intel | CVE-2015-2291 | Intel Ethernet Diagnostics | Scattered Spider |
| AsIO.sys / AsIO64.sys | ASUS | CVE-2023-33542 | ASUS AI Suite | BlackCat affiliates |
| WinRing0x64.sys | Multiple | N/A | Hardware monitoring | Múltiples |
| HWiNFO | REALiX | CVE-2023-31160 | HWiNFO64 | Múltiples |
| Truesight.sys | Adlice | N/A | RogueKiller (ironic) | Scattered Spider |
El caso de mhyprot2.sys
El driver anti-cheat del videojuego Genshin Impact es particularmente notable:
- Firmado por un publisher conocido (miHoYo/Cognosphere)
- No requiere que el juego esté instalado (el driver se puede cargar independientemente)
- Proporciona capacidades de read/write en kernel memory
- Usado en múltiples campañas de ransomware
La ironía: un driver diseñado para proteger contra trampas en un videojuego se usa como arma para desactivar software de seguridad.
Desactivar EDR desde kernel
Técnica 1: terminar el proceso del EDR
Una vez en kernel mode, el atacante puede terminar cualquier proceso:
// Pseudocodigo: terminar proceso protegido desde kernel
// 1. Encontrar EPROCESS del proceso EDR
PEPROCESS edrProcess = find_process_by_name("CrowdStrike\\CSFalconService.exe");
// 2. Usar el driver vulnerable para escribir en kernel memory
// Modificar la proteccion PPL del proceso
// (cambiar EPROCESS.Protection.Level a 0)
write_kernel_memory(
&edrProcess->Protection,
0, // Sin proteccion
sizeof(UCHAR)
);
// 3. Ahora el proceso ya no es PPL, se puede terminar normalmente
TerminateProcess(edr_handle, 0);
Técnica 2: eliminar kernel callbacks
Los EDR registran callbacks en el kernel para ser notificados de eventos:
PsSetCreateProcessNotifyRoutine: notificación de creación de procesosPsSetCreateThreadNotifyRoutine: notificación de creación de threadsPsSetLoadImageNotifyRoutine: notificación de carga de imágenesObRegisterCallbacks: notificación de operaciones en objetos (handles)CmRegisterCallback: notificación de operaciones en registro
El atacante puede desregistrar estos callbacks desde kernel mode, cegando al EDR:
// Pseudocodigo: eliminar callback de creacion de procesos
// 1. Leer la lista de callbacks del kernel
PEX_CALLBACK_ROUTINE_BLOCK callbacks = read_kernel_array(PspCreateProcessNotifyRoutine);
// 2. Encontrar el callback del EDR (por address range del driver)
for each callback in callbacks:
if callback.address is in EDR_driver_range:
// 3. Eliminar el callback
write_kernel_memory(&callbacks[i], 0, sizeof(PVOID));
Herramientas que automatizan BYOVD
| Herramienta | Tipo | Función |
|---|---|---|
| KDU (hfiref0x) | Open source | Kernel Driver Utility: automatiza carga y explotación de drivers vulnerables |
| EDRSandblast | Open source | Usa BYOVD para desactivar EDR callbacks y hooks |
| Backstab | Open source | Termina procesos PPL via driver vulnerable |
| PPLBlade | Open source | Bypass PPL con múltiples drivers |
| Terminator (SpyBoy) | Underground | Herramienta comercial del underground para matar EDRs |
Detección y defensa
Microsoft Vulnerable Driver Blocklist
Microsoft mantiene una lista de drivers vulnerables conocidos que Windows puede bloquear:
# Verificar si la blocklist esta activa
Get-CimInstance -Namespace root\Microsoft\Windows\CI -ClassName MSFT_WDACSIPolicy | Select PolicyID, FriendlyName
La blocklist se actualiza con Windows Update pero puede estar desactualizada. Verificar manualmente que está activa y actualizada.
HVCI (Hypervisor-protected Code Integrity)
HVCI usa el hypervisor de Windows (VBS, Virtualization-Based Security) para validar la integridad del código en kernel:
- Solo permite cargar drivers firmados Y no en la blocklist
- Protege kernel code pages contra modificación
- Complementa pero no reemplaza la blocklist
# Verificar si HVCI esta habilitado
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Select VirtualizationBasedSecurityStatus, CodeIntegrityPolicyEnforcementStatus
Sysmon Event ID 6: Driver Loaded
<!-- Sysmon config: monitorizar carga de drivers -->
<DriverLoad onmatch="include">
<!-- Alertar en drivers vulnerables conocidos -->
<ImageLoaded condition="end with">gdrv.sys</ImageLoaded>
<ImageLoaded condition="end with">DBUtil_2_3.sys</ImageLoaded>
<ImageLoaded condition="end with">RTCore64.sys</ImageLoaded>
<ImageLoaded condition="end with">mhyprot2.sys</ImageLoaded>
<ImageLoaded condition="end with">WinRing0x64.sys</ImageLoaded>
<ImageLoaded condition="end with">Capcom.sys</ImageLoaded>
<ImageLoaded condition="end with">IQVW64E.SYS</ImageLoaded>
<!-- Alertar en drivers sin firma valida -->
<Signed condition="is">false</Signed>
</DriverLoad>
LOLDrivers Project
El proyecto LOLDrivers (loldrivers.io) mantiene un catálogo actualizado de drivers vulnerables conocidos con:
- Hash SHA256 de cada versión vulnerable
- CVE asociado
- Tipo de vulnerabilidad
- Capacidades que ofrece al atacante
- Referencias y análisis
URL: loldrivers.io
GitHub: github.com/magicsword-io/LOLDrivers
Regla Sigma
title: Known Vulnerable Driver Loaded (BYOVD)
id: c1234567-d2e3-f4a5-b678-90abcdef1234
status: stable
logsource:
category: driver_load
product: windows
detection:
selection_hash:
Hashes|contains:
- 'SHA256=31F4CFB4C71DA44120752721103A16512444C13C2AC2D857A7E6F13CB679B427' # gdrv.sys
- 'SHA256=0296E2CE999E67C76352613A718E11516FE1B0EFC3FFDB8918FC999DD76A73A5' # DBUtil
selection_name:
ImageLoaded|endswith:
- '\gdrv.sys'
- '\DBUtil_2_3.sys'
- '\RTCore64.sys'
- '\mhyprot2.sys'
- '\WinRing0x64.sys'
condition: selection_hash or selection_name
level: critical
tags:
- attack.privilege_escalation
- attack.t1068
Mapeo MITRE ATT&CK
| Técnica | ID | Contexto BYOVD |
|---|---|---|
| Exploitation for Privilege Escalation | T1068 | Explotar vulnerabilidad del driver para kernel access |
| Signed Binary Proxy Execution | T1218 | El driver está legítimamente firmado |
| Impair Defenses: Disable or Modify Tools | T1562.001 | Desactivar EDR desde kernel |
| Rootkit | T1014 | Capacidades de rootkit una vez en kernel |
Fuentes y referencias
- LOLDrivers. "Living Off The Land Drivers." https://loldrivers.io/
- hfiref0x. "KDU: Kernel Driver Utility." https://github.com/hfiref0x/KDU
- Elastic Security Labs. "BYOVD: EDR Killer Techniques." 2023.
- Microsoft. "Microsoft Recommended Driver Block Rules." Microsoft Docs.
- Microsoft. "Hypervisor-protected Code Integrity (HVCI)." Microsoft Docs.
- CrowdStrike. "BYOVD in Ransomware Operations." 2024 Global Threat Report.
- Mandiant. "Kernel Driver Exploitation in APT Campaigns." 2023.
- MITRE ATT&CK. "Exploitation for Privilege Escalation (T1068)." https://attack.mitre.org/techniques/T1068/
- Yosifovich, P. "Windows Kernel Programming." 2023.
Preguntas frecuentes
Libros recomendados
Artículos relacionados
EDR Internals: Cómo Funcionan y Cómo se Evaden
Windows Defender Internals: Cómo Funciona y Cómo se Evade
Evasión de Antivirus: Ofuscación, Packers y Crypters
Reglas Sigma: Sintaxis, Estructura y Tu Primer Caso Práctico
Sigma para Lateral Movement: 8 Reglas de Detección de Movimiento Lateral
Sigma para Ransomware: 10 Reglas que Todo SOC Necesita Desplegadas
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.