Qué Es un Rootkit: Taxonomía Completa (User-Mode, Kernel, Firmware)
Taxonomía completa de rootkits: user-mode (LD_PRELOAD, IAT hooking), kernel-mode (LKM, sys_call_table), bootkits (MBR, VBR, UEFI), firmware implants, y hypervisor rootkits. Clasificación por nivel de privilegio, persistencia y dificultad de detección.
El malware invisible
La mayoría del malware intenta pasar desapercibido, pero eventualmente es detectable: un proceso sospechoso, una conexión de red anómala, un archivo nuevo en el sistema. Los rootkits van un paso más allá: modifican el propio sistema operativo para que sus componentes sean literalmente invisibles para las herramientas de detección.
Un proceso oculto por un rootkit no aparece en Task Manager ni en ps. Un archivo oculto no se ve con dir ni con ls. Una conexión de red oculta no aparece en netstat. El rootkit filtra la realidad que el sistema operativo presenta al usuario y a las herramientas de seguridad.
Clasificación por nivel de privilegio
Nivel 3: User-Mode Rootkits (Ring 3)
Operan en el mismo nivel de privilegio que las aplicaciones normales. Son los más simples pero también los más fáciles de detectar.
| Técnica | OS | Descripción | Detección |
|---|---|---|---|
| LD_PRELOAD (Linux) | Linux | Cargar librería que intercepta funciones de libc | Verificar /etc/ld.so.preload, ldd |
| IAT hooking (Windows) | Windows | Modificar Import Address Table de procesos para redirigir funciones | Verificar integridad de IAT |
| Inline hooking | Ambos | Parchear los primeros bytes de funciones en librerias del sistema | Comparar código en memoria vs disco |
| Binary replacement | Ambos | Reemplazar binarios del sistema (ps, ls, netstat) con versiones modificadas | Verificar hashes de binarios con paquete original |
| Function pointer hooking | Ambos | Modificar punteros a funciones en estructuras de datos | Verificar punteros contra valores esperados |
Limitaciones: cualquier herramienta que opere a nivel de kernel (o que lea directamente del disco sin pasar por las APIs hookeadas) puede detectarlos.
Nivel 0: Kernel-Mode Rootkits (Ring 0)
Operan en el kernel del sistema operativo con máximos privilegios. Pueden modificar cualquier estructura del kernel.
| Técnica | OS | Descripción | Detección |
|---|---|---|---|
| sys_call_table hooking | Linux | Reemplazar punteros en la tabla de syscalls | Verificar tabla contra valores esperados |
| SSDT hooking | Windows | Hooking de System Service Descriptor Table | Verificar SSDT contra ntoskrnl.exe en disco |
| DKOM (Direct Kernel Object Manipulation) | Windows/Linux | Modificar listas de procesos/módulos del kernel directamente | Memory forensics (Volatility) |
| VFS hooking | Linux | Hookear operaciones del Virtual File System | Verificar file_operations structs |
| IRP hooking | Windows | Hookear I/O Request Packets de drivers | Verificar IRP handlers |
| Callback manipulation | Windows | Desregistrar callbacks de EDR en el kernel | Verificar lista de callbacks |
| LKM (Loadable Kernel Module) | Linux | Cargar módulo del kernel malicioso | lsmod, /proc/modules, Volatility |
| eBPF abuse | Linux | Usar eBPF para interceptar syscalls | bpftool prog list |
Carga: en Windows requiere firma digital del driver (o BYOVD). En Linux requiere root (o exploit de escalada).
Nivel -1: Hypervisor Rootkits (Ring -1)
Operan por debajo del sistema operativo, en el nivel del hypervisor.
| Técnica | Descripción | Ejemplo |
|---|---|---|
| Blue Pill | Rootkit que virtualiza el OS en ejecución, insertándose como hypervisor | Joanna Rutkowska, 2006 (PoC) |
| SubVirt | Rootkit que mueve el OS a una VM sin que lo note | Microsoft/Michigan, 2006 (PoC) |
| Hardware VM rootkit | Explotar features de virtualización (VT-x) para control total | Investigación académica |
Estado actual: los hypervisor rootkits puros son mayormente teóricos/PoC. En la práctica, los APTs prefieren bootkits UEFI que son más simples y igualmente persistentes.
Nivel -2/-3: Firmware/Hardware Rootkits
Operan en el firmware del sistema (BIOS/UEFI, SPI flash, BMC).
| Tipo | Ubicación | Persistencia | Ejemplo |
|---|---|---|---|
| UEFI bootkit | UEFI firmware, ESP partition | Sobrevive reinstalación de OS | BlackLotus, LoJax |
| SPI flash implant | Chip SPI flash (firmware BIOS/UEFI) | Sobrevive cambio de disco | MoonBounce, CosmicStrand |
| BMC/IPMI rootkit | Baseboard Management Controller | Sobrevive todo excepto reemplazo de placa | Investigación/PoC |
| NIC firmware | Firmware de la tarjeta de red | Sobrevive reinstalación | Investigación |
| GPU firmware | Firmware de GPU | Investigación | JellyFish (PoC) |
| HDD/SSD firmware | Firmware del disco | Sobrevive formateo | Equation Group (NSA) |
Detección: requiere herramientas que lean directamente el firmware (CHIPSEC, UEFI scanning tools). Las herramientas del OS no pueden detectar rootkits que operan por debajo del OS.
Clasificación por técnica de ocultación
Qué puede ocultar un rootkit
| Elemento | Cómo se oculta | Nivel necesario |
|---|---|---|
| Procesos | Filtrar resultados de getdents/NtQuerySystemInformation, DKOM en listas de procesos | Kernel |
| Archivos | Filtrar resultados de readdir/NtQueryDirectoryFile | Kernel o User (LD_PRELOAD) |
| Conexiones de red | Filtrar /proc/net/tcp o NtDeviceIoControlFile | Kernel |
| Módulos del kernel | Eliminar de la lista de módulos (list_del en Linux, unlinking en Windows) | Kernel |
| Claves de registro | Filtrar resultados de NtEnumerateKey/NtQueryValueKey | Kernel |
| Threads | Ocultar threads de la lista de threads del proceso | Kernel |
| Drivers | Ocultar driver de la lista de drivers | Kernel |
| Tráfico de red | Filtrar paquetes antes de que lleguen al stack TCP/IP | Kernel (BPF/NDIS) |
| Memoria | Ocultar regiones de memoria de herramientas de dump | Kernel |
Técnicas de persistencia
| Técnica | Nivel | Sobrevive a... |
|---|---|---|
| Registry Run keys | User | Reboot: Sí. Reinstalación: No |
| Scheduled tasks | User | Reboot: Sí. Reinstalación: No |
| Service/Driver | Kernel | Reboot: Sí. Reinstalación: No |
| LKM autoload | Kernel | Reboot: Sí. Reinstalación: No |
| MBR/VBR infection | Bootkit | Reboot: Sí. Reinstalación: Depende |
| UEFI bootkit (ESP) | Bootkit | Reboot: Sí. Reinstalación: Depende del tipo |
| SPI flash implant | Firmware | Reboot: Sí. Reinstalación: Sí. Cambio de disco: Sí |
| BMC rootkit | Firmware | Todo excepto reemplazo de placa madre |
Evolución histórica
Timeline de rootkits
| Año | Rootkit | Tipo | Innovación |
|---|---|---|---|
| 1999 | FU Rootkit | Windows kernel (DKOM) | Primer rootkit DKOM documentado |
| 2003 | Hacker Defender | Windows user-mode + kernel | Hooking avanzado, configurable |
| 2005 | Sony BMG rootkit | Windows kernel | Rootkit comercial en CDs de música |
| 2006 | Blue Pill (PoC) | Hypervisor | Concepto de virtualización ofensiva |
| 2006 | Rustock | Windows kernel | Rootkit de botnet de spam |
| 2008 | TDL4/Alureon | MBR bootkit | Primer bootkit masivo |
| 2010 | ZeroAccess | Windows kernel + P2P | Rootkit con red P2P |
| 2012 | Necurs | Windows kernel | Rootkit de botnet, millones de infecciones |
| 2014 | Uroburos/Turla | Windows kernel | APT ruso, rootkit sofisticado |
| 2018 | LoJax | UEFI bootkit | Primer UEFI rootkit in-the-wild (APT28) |
| 2020 | MosaicRegressor | UEFI firmware | Implant en firmware SPI |
| 2022 | MoonBounce | SPI flash | Implant en SPI flash (Lazarus) |
| 2022 | CosmicStrand | UEFI firmware | Rootkit UEFI persistente |
| 2022 | BlackLotus | UEFI bootkit | Bypass de Secure Boot |
| 2022 | BPFDoor | Linux BPF | Backdoor basado en BPF (APT chino) |
| 2022 | Symbiote | Linux LD_PRELOAD + BPF | Rootkit que se inyecta en TODOS los procesos |
Rootkits vs Bootkits vs Firmware Implants
| Aspecto | Rootkit (kernel) | Bootkit | Firmware Implant |
|---|---|---|---|
| Ubicación | En el kernel del OS en ejecución | En el proceso de arranque (MBR/UEFI) | En el chip de firmware (SPI flash) |
| Momento de carga | Después del boot | Durante el boot (antes del OS) | Antes del boot (firmware) |
| Sobrevive reinstalación | No | Parcialmente | Sí |
| Sobrevive cambio de disco | No | No | Sí (firmware en placa madre) |
| Complejidad de desarrollo | Media-Alta | Alta | Muy alta |
| Complejidad de detección | Media | Alta | Muy alta |
| Quién los desarrolla | Malware commodity + APTs | Solo APTs | Solo APTs tier-1 (nation-state) |
| Herramientas de detección | Volatility, rootkit scanners | Secure Boot, UEFI scanning | CHIPSEC, firmware verification |
Detección: enfoque por capas
| Capa | Herramienta | Qué detecta |
|---|---|---|
| User-mode | rkhunter, chkrootkit, Unhide | Binarios reemplazados, LD_PRELOAD, procesos ocultos (comparación) |
| Kernel | Volatility (memory forensics) | Módulos ocultos, hooks en sys_call_table/SSDT, DKOM |
| Boot | Secure Boot verification, UEFI scanner | Bootkit en MBR/ESP/UEFI |
| Firmware | CHIPSEC, fwupd, Intel Boot Guard | Implants en SPI flash, firmware modificado |
| Behavioral | EDR con kernel callbacks | Actividad anómala incluso si el rootkit oculta artefactos |
| Network | Análisis de tráfico externo | Tráfico C2 que el rootkit no puede ocultar del exterior |
El principio fundamental
Un rootkit puede ocultar artefactos del sistema que controla, pero no puede ocultar su tráfico de red de un sensor externo. Un IDS/NDR en la red captura el tráfico del rootkit independientemente de si el rootkit controla el kernel del host.
Esto es la base de la detección: combinar análisis del host (donde el rootkit puede mentir) con análisis externo (donde el rootkit no tiene control).
Mapeo MITRE ATT&CK
| Técnica | ID | Tipo de rootkit |
|---|---|---|
| Rootkit | T1014 | Técnica general |
| Kernel Modules and Extensions | T1547.006 | LKM rootkits |
| Hijack Execution Flow: LD_PRELOAD | T1574.006 | User-mode Linux |
| Pre-OS Boot: System Firmware | T1542.001 | Firmware implants |
| Pre-OS Boot: Bootkit | T1542.003 | Bootkits MBR/UEFI |
| Modify System Image | T1601 | Firmware modification |
| BYOVD | T1068 | Obtener kernel access para rootkit |
Fuentes y referencias
- Matrosov, A. et al. "Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats." No Starch Press, 2019.
- Russinovich, M. et al. "Windows Internals Part 1." Microsoft Press, 2017.
- Love, R. "Linux Kernel Development." Addison-Wesley, 2010.
- MITRE ATT&CK. "Rootkit (T1014)." https://attack.mitre.org/techniques/T1014/
- MITRE ATT&CK. "Pre-OS Boot (T1542)." https://attack.mitre.org/techniques/T1542/
- ESET. "UEFI Threats Research." ESET Research.
- Kaspersky. "MoonBounce: Firmware Rootkit." GReAT, 2022.
Preguntas frecuentes
Libros recomendados
Artículos relacionados
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.