¿Qué es BYOVD (Bring-Your-Own-Vulnerable-Driver)? (glosario)
BYOVD es la jugada en la que un atacante deja caer un driver de kernel legítimamente firmado que tiene un bug explotable conocido, lo carga y usa el bug para obtener ring 0. Driver Signature Enforcement asiente educadamente porque el driver está genuinamente firmado por un fabricante real. La vulnerabilidad vive dentro del propio driver, normalmente un handler IOCTL que reparte lectura/escritura arbitraria de memoria a quien abra el dispositivo.
Ejemplos famosos: el antiguo mhyprot2.sys (anticheat de Genshin Impact), gdrv.sys (Gigabyte), RTCore64.sys (MSI Afterburner), procexp152.sys (el driver de Process Explorer). La lista en loldrivers.io no para de crecer.
Por qué DSE no ayuda#
DSE comprueba la cadena de firma. No mira dentro del driver ni razona sobre su superficie IOCTL. Una vez cargado un driver firmado vulnerable, el atacante obtiene:
- Desactivar el EDR parcheando sus callbacks de kernel.
- Leer LSASS sin disparar detecciones tipo
MiniDumpWriteDump. - Modificar bits PPL para permitir que las herramientas de modo usuario toquen procesos protegidos.
- Cargar un driver de atacante completamente sin firmar escribiendo en memoria de kernel.
La blocklist de drivers recomendada por Microsoft existe para esto y, en la mayoría de SKUs, es opcional o solo parcialmente activa por defecto.
Cómo Amcache caza BYOVD#
Root\InventoryDriverBinary contiene un registro por driver que el sistema ha cargado. Los campos que importan:
DriverTimeStamp: la fecha de enlace PE del driver.DriverSigned: el flag de firma.Hash: SHA-1 del binario del driver.KeyLastWriteTimestamp: cuándo escribió el appraiser el registro.
El patrón es sencillo: firmado + DriverTimeStamp antiguo + KeyLastWriteTimestamp reciente. Un driver compilado en 2014 que apareció por primera vez en tu hive el martes pasado tiene forma de BYOVD por construcción.
Import-Csv .\HOST_amcache_DriverBinaries.csv |
Where-Object {
$_.DriverSigned -eq 'True' -and
[DateTime]$_.DriverTimeStamp -lt (Get-Date).AddYears(-2) -and
[DateTime]$_.KeyLastWriteTimestamp -gt (Get-Date).AddDays(-30)
} |
Select DriverName, DriverTimeStamp, KeyLastWriteTimestamp, Hash, Service |
Sort-Object KeyLastWriteTimestampCruza los hashes restantes con loldrivers.io. Una coincidencia es casi diagnóstica.
Para el flujo completo, ver Cazando malware común con Amcache.
Términos relacionados#
Artículos relacionados
- ¿Qué es SRUM (SRUDB.dat)? (glosario)
SRUM es la base ESE que Windows usa para registrar el uso de recursos por aplicación, por hora, durante 30-60 días. El único artefacto Windows con totales de bytes de red por aplicación. Crítico para exfiltración.
- ¿Qué es Shimcache (AppCompatCache)? (glosario)
Shimcache es la caché del loader mantenida por el kernel en la hive SYSTEM. 1024 entradas, sin hash, obsoleta hasta el reinicio. Diferente de Amcache; empareja ambos.
- ¿Qué es Amcache ProgramId? (glosario)
ProgramId es el hash de identidad de aplicación de 44 caracteres que almacena Amcache. Estable entre hosts para la misma instalación. Atrapa recompilaciones y renombrados que Hash se pierde.
- ¿Qué es Windows Prefetch? (glosario)
Windows Prefetch es el directorio de ficheros .pf que prueba ejecución. Hasta 8-10 tiempos de ejecución por binario más los ficheros cargados en los primeros diez segundos. La evidencia de ejecución más fuerte de Windows.