MoonBounce: El Rootkit UEFI Mas Avanzado Atribuido a APT41/Winnti
Analisis tecnico de MoonBounce, rootkit UEFI que modifica CORE_DXE en SPI flash. Atribuido a APT41/Winnti. Cadena de infeccion, deteccion y mitigaciones.
El rootkit que modifico el corazon del firmware UEFI
En enero de 2022, el equipo GReAT de Kaspersky publico un analisis que elevo el estado del arte de los rootkits UEFI a un nivel sin precedentes. MoonBounce no anadia un driver malicioso nuevo al firmware, como habian hecho LoJax (2018) y MosaicRegressor (2020). Modificaba un componente existente, CORE_DXE, directamente en la flash SPI de la placa base.
Esta diferencia no es menor. Los rootkits UEFI anteriores dejaban una huella visible: un nuevo volumen o driver DXE en el firmware que herramientas de analisis podian identificar comparando la estructura del firmware contra la imagen original del fabricante. MoonBounce elimino esa huella. Al modificar un componente que ya debia existir, no creaba entradas nuevas que pudieran levantar alertas.
El rootkit fue atribuido al grupo APT41 (tambien conocido como Winnti, G0096 en MITRE ATT&CK), un actor de amenazas vinculado al Ministerio de Seguridad del Estado de China (MSS). APT41 es notable por combinar operaciones de espionaje patrocinadas por el estado con actividad criminal con motivacion financiera.
Contexto: la evolucion de rootkits UEFI in-the-wild
Antes de MoonBounce, solo dos rootkits UEFI habian sido documentados en ataques reales contra objetivos fuera de laboratorio.
LoJax (2018), descubierto por ESET, fue el primer rootkit UEFI detectado en un ataque real. Atribuido a APT28 (Fancy Bear/Sednit), anadia un driver DXE malicioso al firmware. El driver desplegaba un agente de persistencia en el sistema de archivos de Windows que se reinstalaba automaticamente tras cada arranque. Su debilidad: el driver nuevo era visible en la estructura de volumenes del firmware.
MosaicRegressor (2020), descubierto por Kaspersky, utilizaba una aproximacion similar. Anadia multiples drivers DXE nuevos al firmware que cooperaban para desplegar payloads en el sistema operativo. Fue atribuido a un actor de habla china con posible vinculacion a APT41. Al igual que LoJax, dejaba una huella estructural en el firmware.
MoonBounce represento el siguiente salto evolutivo. En lugar de anadir componentes nuevos, parasitaba uno existente.
Anatomia tecnica: la flash SPI y CORE_DXE
Para entender por que MoonBounce es tan efectivo, es necesario comprender la arquitectura del arranque UEFI y el papel de la flash SPI.
La flash SPI
La flash SPI (Serial Peripheral Interface) es un chip de memoria no volatil soldado en la placa base que almacena el firmware UEFI. Su contenido incluye:
- SEC (Security Phase): primera fase de arranque, valida la integridad
- PEI (Pre-EFI Initialization): inicializa memoria y CPU
- DXE (Driver Execution Environment): carga drivers de firmware
- BDS (Boot Device Selection): selecciona el dispositivo de arranque
La flash SPI no reside en el disco duro. Es un componente fisico de la placa base. Por eso un rootkit que modifica su contenido sobrevive a reinstalaciones del SO, formateos e incluso al reemplazo del disco.
CORE_DXE: el objetivo
CORE_DXE es el modulo central de la fase DXE. Su funcion es inicializar los servicios de arranque UEFI (EFI_BOOT_SERVICES) que el resto de drivers y el boot loader del sistema operativo utilizan. Es el componente que expone funciones como:
AllocatePool: asigna memoria durante el arranqueCreateEventEx: crea eventos que se disparan en puntos especificos del bootExitBootServices: senala la transicion del control al sistema operativo
CORE_DXE existe en todas las implementaciones UEFI. Es un objetivo ideal: siempre esta presente, se ejecuta temprano en el arranque y tiene acceso completo a los servicios de firmware.
Cadena de infeccion: del firmware al userland
La cadena de infeccion de MoonBounce opera en cuatro fases, cada una escalando desde el firmware hasta el espacio de usuario de Windows.
Fase 1: Parcheo de CORE_DXE en flash SPI
El vector de acceso inicial para escribir en la flash SPI no fue documentado publicamente en el reporte de Kaspersky. Las posibilidades incluyen acceso fisico, explotacion de una vulnerabilidad en el firmware de gestion (BMC/IPMI) o el uso de un driver kernel con privilegios de escritura en la flash SPI.
El atacante lee el contenido actual de CORE_DXE, inyecta codigo adicional (hooks) y escribe la version modificada de vuelta a la flash SPI. El tamano del modulo apenas cambia, y su posicion en el firmware permanece identica.
Fase 2: Hooks en EFI_BOOT_SERVICES
Cuando el sistema arranca, CORE_DXE se ejecuta como parte normal del proceso de arranque. La version modificada ejecuta su funcion original, pero ademas instala hooks en dos funciones de EFI_BOOT_SERVICES:
EFI_BOOT_SERVICES.AllocatePool → Hook: intercepta asignaciones de memoria
EFI_BOOT_SERVICES.CreateEventEx → Hook: monitoriza eventos de transicion de boot
El hook en AllocatePool permite al rootkit inyectar codigo en buffers de memoria asignados durante el arranque. El hook en CreateEventEx permite detectar el momento exacto en que el boot loader de Windows toma el control.
Fase 3: Inyeccion de shellcode en el kernel de Windows
Cuando el boot loader de Windows solicita memoria y carga el kernel (ntoskrnl.exe), los hooks interceptan el proceso. MoonBounce inyecta shellcode directamente en la imagen del kernel en memoria.
El shellcode parcheado en el kernel tiene una funcion especifica: durante la inicializacion de Windows, crea un hilo (thread) en el contexto del kernel que descarga e inyecta el payload final en un proceso de usuario.
Esta cadena es completamente en memoria. No hay archivos maliciosos escritos en el disco duro durante ninguna de las fases anteriores.
Fase 4: Implante en modo usuario (ScrambleCross/SideWalk)
El payload final es una variante de ScrambleCross (tambien conocido como SideWalk), un backdoor modular atribuido al arsenal de APT41. ScrambleCross proporciona:
- Comunicacion cifrada con servidores C2
- Carga dinamica de plugins y modulos adicionales
- Exfiltracion de datos
- Ejecucion remota de comandos
- Movimiento lateral en la red comprometida
La cadena completa (firmware → kernel → userland) se ejecuta en cada arranque del sistema, garantizando persistencia incluso si el implante de usuario es detectado y eliminado. Al siguiente reinicio, la cadena se reestablece desde el firmware.
Por que MoonBounce es el mas avanzado: comparativa tecnica
La siguiente tabla compara los tres rootkits UEFI documentados in-the-wild hasta la fecha de publicacion de MoonBounce.
| Caracteristica | LoJax (2018) | MosaicRegressor (2020) | MoonBounce (2022) |
|---|---|---|---|
| Descubridor | ESET | Kaspersky GReAT | Kaspersky GReAT |
| Atribucion | APT28 (Rusia) | Actor chino (posible APT41) | APT41/Winnti (China) |
| Tecnica en firmware | Anadir driver DXE nuevo | Anadir multiples drivers DXE | Modificar CORE_DXE existente |
| Huella en firmware | Alta: nuevo volumen visible | Alta: multiples volumenes nuevos | Minima: no hay entradas nuevas |
| Cadena en memoria | Parcial: escribe agente en disco | Parcial: escribe payload en disco | Completa: todo en memoria |
| Componente afectado | Nuevo DXE driver | Nuevos DXE drivers | CORE_DXE (componente core) |
| Persistencia en disco | Si (agente en filesystem NTFS) | Si (payload en filesystem) | No (cadena in-memory) |
| Payload final | LoJax agent (HTTP downloader) | Diversos (droppers customizados) | ScrambleCross/SideWalk |
| Complejidad | Media | Media-Alta | Muy Alta |
| Dificultad de deteccion | Media | Media | Alta |
| Requiere reflasheo para limpiar | Si | Si | Si |
La diferencia clave es la economia de la modificacion. LoJax y MosaicRegressor anadian artefactos al firmware. MoonBounce los modifica. Es la diferencia entre meter un mueble nuevo en una habitacion (detectable a simple vista) y alterar sutilmente un mueble que ya estaba ahi.
Deteccion: como identificar MoonBounce
La deteccion de rootkits UEFI que modifican componentes existentes es significativamente mas compleja que la deteccion de drivers DXE anadidos. Las tecnicas disponibles son:
1. Volcado y verificacion de firmware
El metodo mas fiable es volcar el contenido de la flash SPI y comparar los hashes de cada modulo contra los valores esperados del fabricante.
Herramientas:
- CHIPSEC (Intel): python chipsec_util.py spi dump firmware.bin
- UEFITool: analisis visual de la estructura de volumenes
- Binarly FwHunt: reglas de deteccion especificas para rootkits UEFI
Si el hash de CORE_DXE no coincide con el valor esperado para la version de firmware instalada, hay una modificacion no autorizada.
2. Analisis de integridad en tiempo de ejecucion
Verificar que las funciones de EFI_BOOT_SERVICES apuntan a las direcciones esperadas durante el arranque. Los hooks de MoonBounce redirigen AllocatePool y CreateEventEx a codigo malicioso.
3. Monitoreo de escrituras en flash SPI
Los intentos de escritura en la flash SPI son eventos anomalos durante la operacion normal del sistema. Soluciones de seguridad de firmware como Intel Boot Guard y BIOS Write Protection pueden alertar o bloquear escrituras no autorizadas.
4. Indicadores de compromiso en el sistema operativo
Aunque la cadena es in-memory, el implante ScrambleCross tiene indicadores detectables:
- Comunicaciones de red con infraestructura C2 conocida de APT41
- Patrones de inyeccion de codigo en procesos legitimos de Windows
- Comportamiento anomalo de hilos del kernel durante el arranque
Reglas YARA y Sigma
La comunidad de seguridad ha publicado reglas de deteccion para MoonBounce. Kaspersky proporciono IoCs y firmas en su informe tecnico. Las reglas de deteccion se centran en:
- Firmas de bytes especificas en el CORE_DXE modificado
- Patrones de comunicacion de red del implante ScrambleCross
- Anomalias en la tabla de funciones de EFI_BOOT_SERVICES
Mitigaciones: como protegerse contra rootkits UEFI de firmware
Intel Boot Guard
Intel Boot Guard es la mitigacion mas efectiva contra modificaciones no autorizadas del firmware. Funciona verificando criptograficamente cada fase del arranque contra claves almacenadas en fusibles OTP (One-Time Programmable) del procesador.
Si el firmware ha sido modificado (incluyendo CORE_DXE), Boot Guard detecta la discrepancia y detiene el arranque. Esta proteccion no puede ser desactivada por software porque las claves estan grabadas fisicamente en el procesador.
Requisito: Boot Guard debe estar habilitado por el fabricante de la placa base. No todos los equipos lo tienen activado de fabrica.
UEFI Secure Boot
Secure Boot verifica las firmas de los componentes de arranque, pero su efectividad contra rootkits como MoonBounce es limitada. MoonBounce modifica un componente que ya tiene una firma valida en el momento de la compilacion del firmware. Secure Boot no re-verifica la integridad de los modulos DXE en cada arranque si el firmware ya fue firmado por el fabricante.
Proteccion de escritura en flash SPI
La mayoria de chipsets Intel soportan bits de proteccion de escritura para la flash SPI (BIOS_CNTL register). Cuando estan correctamente configurados:
- El bit BIOS Lock Enable (BLE) previene escrituras no autorizadas
- El SPI Protected Range (PRx) define regiones de solo lectura
- El SMM BIOS Write Protection protege desde System Management Mode
Actualizaciones de firmware
Mantener el firmware UEFI actualizado es critico. Los fabricantes publican parches que corrigen vulnerabilidades que podrian permitir la escritura en la flash SPI. Un firmware desactualizado puede tener vulnerabilidades conocidas que faciliten la infeccion inicial.
Recomendaciones operativas para equipos de seguridad
- Verificar que Boot Guard esta habilitado en todos los endpoints criticos
- Establecer una baseline de firmware volcando y hasheando los modulos de cada equipo
- Monitorizar escrituras en flash SPI con herramientas como CHIPSEC
- Incluir verificacion de firmware en los procesos de respuesta a incidentes
- Mantener inventario de versiones de firmware y aplicar parches del fabricante
Mapeo MITRE ATT&CK
MoonBounce utiliza las siguientes tecnicas documentadas en el framework MITRE ATT&CK:
| Tactica | Tecnica | ID | Descripcion en contexto MoonBounce |
|---|---|---|---|
| Persistence | Pre-OS Boot: System Firmware | T1542.001 | Modificacion de CORE_DXE en flash SPI |
| Execution | Native API | T1106 | Uso de funciones EFI_BOOT_SERVICES para inyeccion |
| Defense Evasion | Rootkit | T1014 | Operacion completamente en memoria sin artefactos en disco |
| Defense Evasion | Modify System Image | T1601.001 | Parcheo del componente de firmware existente |
| Defense Evasion | Obfuscated Files or Information | T1027 | Shellcode cifrado en la cadena de inyeccion |
| Command and Control | Application Layer Protocol | T1071.001 | ScrambleCross comunicacion HTTPS con C2 |
| Collection | Data from Local System | T1005 | Exfiltracion de datos del sistema comprometido |
La tecnica T1542.001 (System Firmware) es la mas relevante. MoonBounce demuestra la version mas sofisticada de esta tecnica documentada hasta la fecha: no anadir, sino modificar firmware existente.
APT41/Winnti: el actor detras de MoonBounce
APT41 (G0096) es uno de los grupos de amenazas mas versatiles documentados. Sus caracteristicas principales:
- Origen: China, vinculado al Ministerio de Seguridad del Estado (MSS)
- Motivacion dual: espionaje patrocinado por el estado + operaciones financieras propias
- Activo desde: al menos 2012
- Aliases: Winnti, Barium, Wicked Panda, HOODOO
- Sectores objetivo: telecomunicaciones, tecnologia, videojuegos, sanidad, gobierno
- Arsenal: ScrambleCross/SideWalk, ShadowPad, Winnti backdoor, PlugX, Cobalt Strike
La atribucion de MoonBounce a APT41 se basa en la infraestructura C2 compartida con operaciones previas del grupo, el uso de ScrambleCross como payload final (una herramienta exclusiva de APT41) y coincidencias en el codigo con malware previamente atribuido al grupo.
Implicaciones para la defensa
MoonBounce marca un punto de inflexion en la seguridad de firmware. Sus implicaciones:
Para fabricantes de hardware: la proteccion de la flash SPI debe ser una prioridad de diseno, no una opcion. Boot Guard y mecanismos equivalentes deben estar habilitados por defecto.
Para equipos SOC: la verificacion de integridad de firmware debe integrarse en los procesos de deteccion y respuesta. No basta con monitorizar el sistema operativo si la amenaza reside por debajo.
Para la industria de seguridad: las herramientas de deteccion deben evolucionar para cubrir la capa de firmware. Las soluciones tradicionales de endpoint no pueden detectar modificaciones en la flash SPI.
Para analistas de incidentes: en investigaciones donde se sospecha de un actor avanzado como APT41, el volcado y analisis del firmware debe formar parte del proceso forense estandar.
Fuentes y referencias
- Kaspersky GReAT. "MoonBounce: the dark side of UEFI firmware." Enero 2022. securelist.com
- Kaspersky GReAT. Technical indicators and detection guidance for MoonBounce. Enero 2022
- MITRE ATT&CK. APT41 (G0096). attack.mitre.org
- MITRE ATT&CK. Pre-OS Boot: System Firmware (T1542.001). attack.mitre.org
- Matrosov, A., Rodionov, E., Bratus, S. "Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats." No Starch Press, 2019
- ESET Research. "LoJax: First UEFI rootkit found in the wild." Septiembre 2018
- Kaspersky GReAT. "MosaicRegressor: Lurking in the Shadows of UEFI." Octubre 2020
- Intel Corporation. "Intel Boot Guard" technology overview
- CHIPSEC: Platform Security Assessment Framework. github.com/chipsec/chipsec
Articulo con fines exclusivamente defensivos. MalwareIntel documenta amenazas para ayudar a equipos de seguridad a detectar y mitigar rootkits de firmware. No se proporcionan binarios, exploits ni instrucciones de replicacion.
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.