AvanzadorootkitsUEFIfirmwareAPT28LoJaxpersistence

LoJax: El Primer Rootkit UEFI Detectado en un Ataque Real

Analisis tecnico de LoJax, el primer rootkit UEFI usado por APT28 en ataques reales. Infeccion SPI flash, persistencia extrema y deteccion defensiva.

MalwareIntel Research··13 min lectura
Serie: Rootkits y Bootkits — Parte 11

El rootkit que demostro que el firmware no era intocable

En septiembre de 2018, ESET Research publico un analisis que altero la percepcion de lo que un grupo APT podia lograr en terminos de persistencia. LoJax, atribuido al grupo APT28 (Fancy Bear/Sednit, unidad 26165 del GRU ruso), fue el primer rootkit UEFI documentado en un ataque real contra objetivos en Europa.

Antes de LoJax, los rootkits UEFI existian como pruebas de concepto en conferencias de seguridad. Hacking Team habia desarrollado un modulo UEFI para su herramienta de vigilancia, descubierto tras la filtracion de 2015. Pero LoJax fue diferente: era un arma operativa de un actor estatal desplegada contra objetivos reales, no un prototipo de laboratorio.

La implicacion era directa. Un sistema infectado con LoJax no podia limpiarse reinstalando el sistema operativo, formateando el disco duro ni reemplazandolo por uno nuevo. El rootkit vivia en la memoria flash SPI de la placa base, un componente que la mayoria de procedimientos de respuesta a incidentes ni siquiera contemplaban.

Computrace: el software legitimo que inspiro la tecnica

Para entender LoJax hay que entender Computrace (anteriormente LoJack for Laptops), un producto anti-robo de Absolute Software. Computrace se implementaba como un modulo en el firmware UEFI por los propios fabricantes de portatiles (Dell, HP, Lenovo, entre otros) y proporcionaba:

  1. Persistencia a nivel de firmware: el modulo UEFI detectaba si el agente de Computrace estaba instalado en Windows. Si no lo encontraba (por ejemplo, tras un formateo), lo reinstalaba automaticamente.

  2. Comunicacion con servidor central: el agente contactaba los servidores de Absolute Software para reportar ubicacion y estado del equipo, permitiendo rastreo y borrado remoto en caso de robo.

  3. Escritura en NTFS desde UEFI: el modulo era capaz de montar la particion NTFS de Windows durante el proceso de arranque y escribir archivos directamente, antes de que el sistema operativo cargara.

Esta arquitectura, disenada para un proposito legitimo, proporcionaba exactamente las capacidades que un rootkit necesita: persistencia extrema, reinstalacion automatica y ejecucion pre-OS. APT28 no invento la tecnica. La copio de un producto comercial que llevaba anos funcionando en millones de portatiles.

Cadena de infeccion: del reconocimiento al firmware

LoJax no era un unico componente sino un conjunto de herramientas que operaban en secuencia. Los investigadores de ESET identificaron tres elementos principales en los sistemas comprometidos.

Herramienta de reconocimiento: lectura de la flash SPI

El primer paso era leer el contenido actual del firmware UEFI del equipo victima. Para esto, APT28 utilizaba una version modificada de RWEverything, una herramienta legitima de diagnostico de hardware que permite lectura y escritura directa a memoria, I/O ports y buses del sistema.

Proceso de reconocimiento:
1. Ejecutar RWEverything con privilegios de administrador en Windows
2. Acceder al controlador SPI flash a traves del chipset
3. Leer la region BIOS completa de la flash SPI (~8-16 MB)
4. Volcar la imagen del firmware a un archivo local
5. Exfiltrar la imagen para analisis offline

Esta fase era critica porque el firmware varia entre fabricantes, modelos y versiones. APT28 necesitaba conocer la estructura exacta del firmware del objetivo antes de poder modificarlo. Un error en la modificacion podia dejar el equipo inoperativo (brick), alertando a la victima.

Herramienta de parcheado: modificacion de la imagen UEFI

Con la imagen del firmware extraida, APT28 la modificaba offline para insertar un driver DXE (Driver Execution Environment) malicioso. El driver se camuflaba como un modulo UEFI legitimo de Computrace, reutilizando la estructura y los identificadores del modulo original.

La modificacion consistia en:

PasoAccionDetalle
1Parsear la imagen UEFIIdentificar volumes UEFI y filesystem de drivers (FFS)
2Localizar espacio disponibleBuscar padding o modulos prescindibles en el volume DXE
3Insertar driver maliciosoAgregar nuevo modulo FFS con GUID propio al DXE volume
4Configurar el driverIncluir URL del servidor C&C y parametros de operacion
5Recalcular checksumsActualizar checksums del volume para pasar validaciones

El driver DXE malicioso se ejecutaba durante la fase DXE del arranque UEFI, antes de la carga del bootloader de Windows. Su funcion era escribir el agente (payload) en la particion NTFS del sistema operativo durante cada arranque.

Herramienta de escritura: reflash de la SPI

El paso mas critico era escribir la imagen modificada de vuelta en la flash SPI. Esta operacion requeria:

  1. Bypass de protecciones SPI: los chipsets Intel implementan registros de proteccion (BIOS_CNTL, PRx registers) que restringen la escritura a la flash SPI. En muchos sistemas, estas protecciones estaban incorrectamente configuradas por el fabricante o podian desactivarse con acceso de administrador.

  2. Escritura directa al controlador SPI: usando las mismas primitivas de RWEverything, la herramienta de APT28 escribia la imagen modificada sector a sector en la flash SPI.

  3. Verificacion post-escritura: lectura de verificacion para confirmar que el firmware modificado se habia escrito correctamente.

Flujo de escritura SPI:
1. Verificar que las protecciones de escritura SPI estan desactivadas
   -> Leer registro BIOS_CNTL del chipset
   -> Si BLE (BIOS Lock Enable) = 0, escritura posible
   -> Si BLE = 1, intentar desactivar via SMI (System Management Interrupt)
2. Borrar los sectores de la region BIOS en la flash SPI
3. Escribir la imagen modificada sector a sector (tipicamente 4 KB por sector)
4. Verificar cada sector escrito contra la imagen original modificada
5. Si la verificacion falla, abortar y restaurar la imagen original

En los sistemas donde las protecciones SPI estaban correctamente habilitadas, la herramienta de escritura fallaba. ESET documento que APT28 desplegaba las tres herramientas en todos los objetivos, pero la infeccion del firmware solo tenia exito en equipos con protecciones SPI debiles, tipicamente hardware mas antiguo o firmware desactualizado.

Mecanismo de persistencia: del firmware al sistema operativo

Una vez instalado en la flash SPI, el driver DXE de LoJax se ejecutaba en cada arranque del equipo, siguiendo esta secuencia:

Power On → SEC → PEI → DXE (LoJax driver se ejecuta aqui)
  └→ LoJax DXE driver:
       1. Registrar callback para evento ExitBootServices
       2. Cuando UEFI transfiere control al bootloader:
            a. Enumerar particiones del disco
            b. Localizar particion NTFS de Windows
            c. Montar NTFS (lectura/escritura)
            d. Verificar si el agente existe en %WINDIR%\System32\
            e. Si no existe: escribir rpcnetp.exe (small agent)
            f. Registrar rpcnetp.exe como servicio de Windows
            g. Continuar boot normal

El agente rpcnetp.exe (nombre copiado del agente legitimo de Computrace) era un ejecutable pequeno cuya unica funcion era descargar y ejecutar un segundo payload desde el servidor C&C de APT28. Este diseno en dos etapas minimizaba el tamano del componente almacenado en el firmware y permitia actualizar el payload sin necesidad de reinfectar la flash SPI.

Reinstalacion automatica

La caracteristica mas significativa de LoJax era su capacidad de reinstalarse tras cualquier accion convencional de remediacion:

Accion del defensorResultado
Eliminar rpcnetp.exe y limpiar serviciosLoJax lo reescribe en el siguiente arranque
Reinstalar WindowsLoJax detecta la nueva instalacion y despliega el agente
Formatear el disco duroLoJax escribe el agente en la nueva particion NTFS
Reemplazar el disco duroLoJax escribe el agente en el disco nuevo
Actualizar el firmware UEFI (reflash)Unica remediacion efectiva: sobreescribe la flash SPI

Por que LoJax fue un punto de inflexion

LoJax no fue el primer rootkit de firmware en existir. Mebromi (2011) ya habia demostrado infeccion de BIOS legacy. Hacking Team (2015) tenia un modulo UEFI. Pero LoJax fue el primero en cumplir tres condiciones simultaneamente:

  1. Uso operativo real: no era una PoC de conferencia ni una herramienta filtrada. Fue desplegado activamente contra objetivos de inteligencia.

  2. Actor estatal documentado: la atribucion a APT28/GRU tenia alto nivel de confianza, basada en infraestructura compartida con campanas previas de Sednit y en los TTPs observados.

  3. Persistencia verificada en campo: los investigadores confirmaron que la infeccion del firmware era funcional y que el agente se reinstalaba tras intentos de limpieza convencionales.

Para los equipos de respuesta a incidentes, LoJax invalido la asuncion de que reinstalar el sistema operativo era una remediacion definitiva. Si un actor estatal habia tenido acceso al sistema con privilegios de administrador, la verificacion del firmware se convertia en un paso obligatorio del proceso forense.

Deteccion defensiva

CHIPSEC: verificacion de integridad del firmware

CHIPSEC, el framework open-source de Intel para auditar la seguridad de plataformas, es la herramienta principal para detectar modificaciones no autorizadas en el firmware UEFI.

Las verificaciones relevantes para LoJax:

# Verificar protecciones de escritura SPI
chipsec_main -m common.bios_wp
  -> Comprueba BIOS_CNTL.BLE y registros PRx
  -> FAIL indica que la flash SPI es escribible (vulnerable a LoJax)

# Verificar lista blanca de modulos EFI
chipsec_main -m tools.uefi.whitelist -a generate,firmware_clean.bin
chipsec_main -m tools.uefi.whitelist -a check,firmware_actual.bin
  -> Compara modulos DXE actuales contra imagen limpia de referencia
  -> Detecta modulos anadidos o modificados (como el driver de LoJax)

# Verificar Secure Boot
chipsec_main -m common.secureboot.variables
  -> Confirma que Secure Boot esta habilitado y configurado

Indicadores de compromiso a nivel de sistema operativo

Aunque LoJax reside en el firmware, su payload opera en Windows y deja trazas detectables:

  • Presencia de rpcnetp.exe en %WINDIR%\System32\ sin correspondencia con una instalacion legitima de Computrace
  • Servicio de Windows registrado con nombre similar a Computrace pero apuntando a servidores C&C no asociados a Absolute Software
  • Comunicaciones de red hacia dominios e IPs conocidos de la infraestructura de APT28/Sednit
  • El agente rpcnetp.exe contactaba URLs con patrones especificos, diferentes a los endpoints legitimos de Absolute Software

Escaner UEFI integrado

ESET desarrollo un modulo de escaneo UEFI especifico para detectar modificaciones en la flash SPI sin necesidad de ejecutar CHIPSEC manualmente. Este enfoque, integrado en el producto de seguridad, permitia deteccion continua sin requerir conocimientos de analisis de firmware por parte del administrador.

Mitigaciones defensivas

Protecciones a nivel de firmware

MitigacionEfectoPrioridad
Habilitar Secure BootVerifica integridad de componentes de arranqueCritica
Activar protecciones de escritura SPIImpide modificacion de la flash SPI desde el SOCritica
Actualizar firmware UEFICorrige vulnerabilidades en protecciones SPIAlta
Habilitar Intel Boot GuardVerifica firmware en hardware, inmune a softwareAlta (si disponible)
Configurar password de BIOS/UEFIPreviene cambios en configuracion de Secure BootMedia

Protecciones a nivel de sistema operativo

  • Credential Guard / VBS: Virtualization-Based Security reduce la superficie de ataque para la obtencion de privilegios de administrador necesarios para la infeccion.
  • Monitoreo de integridad del firmware: Soluciones que verifican periodicamente el contenido de la flash SPI contra una imagen de referencia conocida.
  • Restriccion de herramientas de hardware: Bloquear la ejecucion de herramientas como RWEverything que permiten acceso directo a hardware desde userland.

Procedimiento de remediacion

Si se confirma infeccion por LoJax, el unico procedimiento efectivo es:

  1. Obtener la imagen de firmware UEFI limpia del fabricante para el modelo exacto del equipo
  2. Reflashear la SPI flash con la imagen limpia usando herramientas del fabricante o un programador SPI externo
  3. Verificar con CHIPSEC que la imagen flasheada coincide con la referencia del fabricante
  4. Reinstalar el sistema operativo desde cero en un disco limpio
  5. Habilitar Secure Boot y verificar protecciones de escritura SPI antes de reconectar a la red

Mapeo MITRE ATT&CK

TacticaTecnicaIDDescripcion en contexto LoJax
PersistencePre-OS Boot: System FirmwareT1542.001Driver DXE malicioso en flash SPI UEFI
PersistenceBoot or Logon Autostart ExecutionT1547.001Agente rpcnetp.exe registrado como servicio Windows
Defense EvasionRootkitT1014Componente firmware invisible para el SO y antivirus convencionales
Defense EvasionSubvert Trust ControlsT1553Explotacion de protecciones SPI debiles para escribir firmware modificado
ExecutionNative APIT1106Escritura directa a flash SPI via chipset I/O
DiscoverySystem Information DiscoveryT1082Lectura de firmware SPI para reconocimiento previo a la infeccion
Command and ControlApplication Layer Protocol: Web ProtocolsT1071.001Agente rpcnetp.exe contacta C&C via HTTP/HTTPS
Resource DevelopmentDevelop Capabilities: MalwareT1587.001Herramientas custom de lectura, parcheado y escritura SPI
Initial Access(Previo)VariosAPT28 obtenia acceso inicial via spearphishing y exploits, LoJax era post-compromiso

Evolucion posterior: rootkits UEFI despues de LoJax

LoJax abrio la puerta a una categoria de amenazas que se ha expandido desde 2018:

  • MosaicRegressor (2020): Kaspersky descubrio un segundo framework de rootkit UEFI in-the-wild, atribuido a actores de habla china. Usaba multiples modulos DXE y un esquema de persistencia mas sofisticado que LoJax.
  • FinSpy UEFI (2021): la version para firmware de FinFisher/FinSpy, otro producto de vigilancia comercial, detectada por Kaspersky con modulos UEFI para Windows y Linux.
  • ESPecter (2021): ESET documento un bootkit que modificaba el Windows Boot Manager en la particion EFI System Partition, un enfoque diferente al de LoJax (que escribia en la flash SPI).
  • CosmicStrand (2022): Kaspersky identifico un rootkit UEFI en firmware de placas base con chipset H81, atribuido a un actor de habla china. Implementaba un esquema de ejecucion en cadena desde el firmware hasta un shellcode en memoria del kernel.
  • BlackLotus (2023): primer bootkit UEFI capaz de bypasear Secure Boot en sistemas Windows 11 completamente actualizados, explotando CVE-2022-21894. Opera en la ESP, no en la flash SPI.

La tendencia muestra una evolucion clara: de la modificacion directa de la flash SPI (LoJax, MosaicRegressor, CosmicStrand) hacia la manipulacion de la particion EFI (ESPecter, BlackLotus), que es menos invasiva y no requiere bypass de protecciones de hardware.

Fuentes y referencias

  • Dorais-Joncas, A. & ESET Research (2018). LoJax: First UEFI rootkit found in the wild, courtesy of the Sednit group. ESET White Paper.
  • Matrosov, A., Rodionov, E. & Bratus, S. (2019). Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats. No Starch Press. Capitulos 16-18.
  • Intel Corporation. CHIPSEC: Platform Security Assessment Framework. GitHub repository.
  • MITRE ATT&CK: Technique T1542.001 (Pre-OS Boot: System Firmware).
  • MITRE ATT&CK: Group G0007 (APT28 / Fancy Bear / Sednit).
  • Kaspersky GReAT (2020). MosaicRegressor: Lurking in the Shadows of UEFI.
  • ESET Research (2021). ESPecter: UEFI persistence on the ESP.
  • Kaspersky GReAT (2022). CosmicStrand: the discovery of a sophisticated UEFI firmware rootkit.

Preguntas frecuentes

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.