Ir directamente al contenido

Se bienvenido a estas tierras digitales...

...especialmente si eres un molino....

FrostyGoop: Análisis del Malware ICS y la sorpresa de encontar que Golang est en el Cibercrimen

6 mayo, 2025

Fuente de la imagen: https://www.nozominetworks.com/blog/protecting-against-frostygoop-bustleberm-malware (esta web también analiza Frosty Goop).

La especulación de las últimas semanas sobre los ataques a la industria y sobretodo a la infraestructura eléctrica (algo que no es nuevo) hace que revise el trabajo que estoy realizando en el análisis de Frosty Goop. Y durante este análisis me he encontrado con aspectos curiosos. El primero es el uso de Golang. Todo esto lo voy a desarrollar en este artículo.

Esta semana voy a impartir dos charlas técnicas sobre este malware en mi universidad y la semana que viene tendré el privilegio de asistir a la Universidad de Castilla-La Mancha, en el campus de Toledo para exponer estos avances.

La cuestión es: hay que tener en cuenta todo el sistema operacional en España (Europa por extensión) porque es muy vulnerable. Vamos al lío:

Contexto

    FrostyGoop es un malware para sistemas de control industrial (ICS) identificado recientemente que apareció en 2024. A principios de ese año, fue utilizado para interrumpir el funcionamiento de una planta de calefacción en Leópolis, Ucrania, dejando sin calefacción a aproximadamente 600 apartamentos durante una ola de frío con temperaturas bajo cero. Este fue el primer caso conocido de malware que abusó directamente del protocolo Modbus/TCP (puerto 502) para enviar órdenes a dispositivos ICS.

    A diferencia de los troyanos de acceso remoto (RAT) tradicionales, el “payload” de FrostyGoop consiste en una secuencia de comandos de lectura/escritura en registros Modbus, enviados a controladores lógicos programables (PLC) o unidades de control distribuido. Es probable que haya sido introducido a través de un dispositivo expuesto a Internet (lo más probable es que fueran router MikroTik ocn vulnerabilidades.

    Una vez en un host Windows, el binario de FrostyGoop se ejecuta (normalmente mediante un archivo de configuración basado en JSON) para enviar comandos Modbus no autorizados a controladores de calefacción de la marca ENCO. Esto permitió a los atacantes modificar los valores de consigna y las lecturas de sensores, provocando fallos que interrumpieron el suministro de calefacción.

    En la práctica, FrostyGoop no era una backdoor ni un worm, sino una herramienta utilizada bajo demanda. Los analistas creen que los operadores la ejecutaban manualmente o mediante scripts, utilizando archivos JSON preconfigurados.

    En esencia, el malware lee y escribe secuencialmente registros específicos de PLC, y puede esperar un intervalo determinado entre operaciones. Los binarios de FrostyGoop no presentan cifrado ni empaquetamiento aparente; en cambio, su tamaño (alrededor de 4–6 MB) revela que son ejecutables de Go enlazados estáticamente. Este tamaño elevado es intencionado: muchos motores antivirus tienden a omitir, o a escanear solo parcialmente, archivos inusualmente grandes.

    Paradójicamente, esta “hinchazón” beneficia a los atacantes. La mayoría del malware habitual pesa menos de 2 MB, por lo que un archivo mayor a 4 MB resulta llamativo; sin embargo, algunos motores de análisis simplemente lo omiten para conservar recursos.

    FrostyGoop, al estar compilado de forma estática en Go, evita dependencias externas (como DLLs o archivos auxiliares de Python) y genera un binario de gran tamaño que puede eludir los análisis rápidos de los antivirus. Reconozco que me ha impactado.

    Características

    CaracterísticaDetalles
    PlataformaWindows (binario compilado en Go).
    LenguajeGo (Golang) !!!!
    Vector de entradaDispositivo ICS expuesto, probablemente un router MikroTik VPNFLIX bug comprometido.
    Protocolo usadoModbus/TCP (puerto 502) para control directo de PLCs.
    Comunicación C2Ninguna tradicional – se ejecuta localmente mediante comandos o archivos JSON.
    ConfiguraciónConfigurable mediante argumentos de línea de comandos o archivos JSON con listas de tareas.
    Registro de actividadSalida opcional a consola o archivo JSON.
    Librerías utilizadasLibrerías Go de código abierto para Modbus, JSON y control de ejecución en cola.
    Anti-análisisVerificación del flag “BeingDebugged” en el PEB de Windows; sin DLLs externas.
    EvasiónBinario de gran tamaño (~4–6 MB), lo cual evita algunos escaneos antivirus automáticos.

    Modus operandi y payload

    El ejecutable de FrostyGoop se ejecuta en un sistema Windows comprometido que tenga conectividad de red con los equipos ICS. Acepta como entrada argumentos por línea de comandos o un archivo de configuración en formato JSON (mira la Tabla 1). El archivo JSON permite definir múltiples “bloques de ataque”, cada uno de los cuales especifica: el registro Modbus objetivo (tipo y dirección), la operación (lectura o escritura) y, de forma opcional, un valor. Un objeto JSON separado, denominado “Cycle”, define los parámetros de temporización (por ejemplo, el retardo entre comandos).

    Por ejemplo, la muestra analizada contiene una “TaskList” con operaciones como la lectura de registros de entrada para medir el caudal, o la escritura en registros de control; y un bloque “Cycle” con una función de retardo entre comandos.

    Fuente: https://unit42.paloaltonetworks.com/

    Una vez lanzado, FrostyGoop abre una conexión TCP al PLC objetivo a través del puerto 502 y ejecuta comandos Modbus de lectura/escritura exactamente según lo especificado. En el incidente de Leópolis, los operadores lo usaron para enviar valores de control falsos a controladores de calefacción de la marca ENCO. Por ejemplo, pudieron haber escrito el valor 0 en las bobinas de “habilitación de bomba”, o alterado los valores de compensación de temperatura, provocando que las bombas se apagaran o que los sensores devolvieran datos erróneos.

    Estos comandos Modbus no autorizados causaron fallos operativos —como bombas fuera de servicio o sensores que marcaban “0”—, lo que conllevó una interrupción del servicio de calefacción durante aproximadamente 48 horas, hasta que los comandos fueron detectados y reinicializados.

    FrostyGoop ejecuta directamente los comandos, no depende de un canal clásico de command-and-control (C2) ni descarga instrucciones desde un servidor remoto. En su lugar, el atacante precarga las instrucciones (el payload) mediante el archivo JSON y simplemente ejecuta el binario. Esto evita tener que implantar FrostyGoop en cada sistema víctima o mantener una conexión persistente; los atacantes pueden emitir los comandos desde una máquina bajo su control con acceso a la red objetivo, lo que “elimina la necesidad de distribuir (sin ser detectado) el malware en activos dentro de la red atacada”.

    Técnicas de evasión y anti-análisis

    FrostyGoop presenta un nivel mínimo de ocultación más allá de su gran tamaño binario, que por otro lado le ayuda a pasar los controles. No está empaquetado ni ofuscado de forma compleja: en disco contiene cadenas de texto legibles (algunas provenientes de bibliotecas de código abierto y rutinas de registro de eventos). No obstante, incluye una técnica deliberada de anti-análisis. El malware realiza una comprobación para detectar si está en un entorno de análisis (esto evitaría su detonación ya que sería detectado) de depuración accediendo directamente a la estructura Process Environment Block (PEB) de Windows y leyendo el flag BeingDebugged,

    En lugar de invocar la API estándar IsDebuggerPresent(), el código compilado en Go accede a bajo nivel a la estructura PEB y verifica el parámetro BeingDebugged. Si detecta que hay un depurador presente, abortará la ejecución o alterará su comportamiento.

    Esto indica que los desarrolladores del malware eran conscientes del uso de herramientas de análisis, e implementaron una verificación de bajo nivel para evitar puntos de interrupción o depuración en entornos virtualizados. Más allá de esto, la única “evasión” de FrostyGoop radica en su modelo de uso: como no establece comunicaciones «beacon» ni se inyecta en otros procesos (usando técnicas clásicas como le process hollowing, etc), las defensas tienen pocos elementos a los que aferrarse. Simplemente realiza lecturas y escrituras de registros a través de Modbus de una forma que, para un sistema OT, puede parecer tráfico de control legítimo —salvo porque los comandos no estaban autorizados.

    En resumen, sus mecanismos de evasión se basan en:

    Enlace estático: al no depender de bibliotecas dinámicas, evita anomalías de búsqueda de DLLs, aunque esto conlleva un archivo de gran tamaño que algunos motores antivirus omiten escanear.

    Verificación PEB: una técnica de anti-depuración sigilosa que puede detectar intentos de análisis dinámico.

    Uso de un protocolo ICS común: se camufla dentro del tráfico Modbus/TCP, que muchas redes industriales no supervisan de forma exhaustiva.

    Cabe señalar que su estructura de código es legible como binario de Go, por lo que puede ser descompilado o analizado mediante ingeniería inversa (herramientas como Ghidra o IDA Pro ofrecen soporte para ejecutables en Go).De hecho, el uso de bibliotecas Go de código abierto específicas (para Modbus, JSON y gestión de colas) deja huellas características en la tabla de símbolos y en las cadenas del binario.

    Impacto en el contexto industrial

    El impacto inmediato de FrostyGoop fue una interrupción significativa de infraestructura crítica: unos 600 edificios de apartamentos en Leópolis quedaron sin calefacción central durante aproximadamente 48 horas en condiciones invernales bajo cero. La recuperación requirió que los operadores anularan manualmente los valores alterados en los PLC afectados y restablecieran los parámetros correctos. Es evidentemente un ataque de un Estado-Nación a ciudadanos.

    En un sentido más amplio, FrostyGoop demuestra que las redes ICS modernas siguen siendo vulnerables al sabotaje remoto mediante malware. El vector de entrada no fue un correo de phishing ni una memoria USB infectada (como ocurrió en Irán), sino un dispositivo de red vulnerado (un router) que actuó como puente entre los entornos IT y OT. Una vez dentro de la red ICS, había escasa segmentación entre el router comprometido y los controladores de calefacción, lo que permitió al atacante encaminar directamente sus comandos hacia la zona de control.

    Desde una perspectiva de ciberseguridad, FrostyGoop resulta alarmante por dos motivos:

    (1) Hasta ahora, la mayoría del malware dirigido a sistemas industriales (como Stuxnet, BlackEnergy, Havex, CrashOverride, TRITON, Industroyer/Pipedream, etc.) se enfocaba en redes eléctricas o procesos industriales. Pero FrostyGoop muestra que también es posible manipular controles de calefacción remotos. De hecho, es el primer malware conocido que armó el protocolo Modbus/TCP como vector directo de control. Modbus es omnipresente en la industria (control de plantas, servicios públicos, sistemas de agua, etc.), y en 2024 se estimaba que había más de 46.000 dispositivos Modbus expuestos a Internet.

    (2) FrostyGoop pone en evidencia los desafíos de proteger redes OT. Al utilizar tráfico estándar de ICS, el malware esquiva muchas defensas orientadas a IT. Como señalan los investigadores de SANS, enviar comandos Modbus desde fuera de la red “elimina la necesidad de instalar el malware en activos dentro de la red objetivo, evitando así su descubrimiento, análisis y análisis forense”. En la práctica, los atacantes solo necesitan acceso a la subred ICS, sin comprometer cada controlador o estación de trabajo. Este modo de ataque reduce la efectividad de las soluciones de seguridad en los terminales de las salas de control si el adversario ya ha logrado una posición en la red.

      En un contexto más amplio, FrostyGoop representa otro punto en la creciente ciberconflictividad contra infraestructuras críticas. Su origen probablemente estatal (todos nos imaginamos el país dada su trayectoria de ataques al sector energético ucraniano) encaja con incidentes anteriores.

      El hecho de que FrostyGoop ya esté documentado públicamente implica que cualquier red ICS que utilice Modbus está en riesgo. Las medidas clave de mitigación incluyen:

      • Segmentar adecuadamente las redes ICS.
      • Corregir vulnerabilidades en routers y cortafuegos expuestos.
      • Monitorizar activamente el tráfico Modbus.

      Golang (Go) en el desarrollo de malware: tendencias y comparativas

      El uso de Go en el malware FrostyGoop no es un caso aislado; de hecho, los investigadores en ciberseguridad han documentado un incremento notable en el malware escrito en lenguajes modernos como Go. Entre mediados de 2021 y principios de 2024, muchos grupos de amenazas (APT) e incluso operadores de ransomware adoptaron Go/Golang como su lenguaje preferido. ¿Por qué? Diversos factores hacen que Go sea atractivo para los autores de malware:

      Compilación multiplataforma

      Go permite compilar un único código fuente para Windows, Linux, macOS, ARM, etc., sin o con mínimos cambios. Una única base de código puede compilarse para todos los principales sistemas operativos. Esto simplifica el desarrollo: el atacante puede escribir las herramientas una vez y desplegarlas en servidores, estaciones de trabajo, IoT, etc., sin tener que reescribirlas para cada sistema operativo. En cambio, un troyano en C++ debe requerir compilaciones separadas o incluso cambios en el código para cada plataforma. Asimismo, el uso de lenguajes como Python implica incluir intérpretes o usar herramientas como PyInstaller, que dejan artefactos reconocibles tras su desempaquetado. Los binarios en Go contienen todo el runtime y las bibliotecas necesarias dentro del propio ejecutable, sin necesidad de “pegamento” externo ni scripts sueltos.

      Binario estático único

      Go enlaza de forma estática su biblioteca estándar en el binario. Un simple “hola mundo” en Go puede compilarse en un ejecutable de varios megabytes. Para el malware, esto significa que un único archivo auto-contenido incluye todo lo necesario. A pesar del tamaño, los atacantes aprovechan esta característica ya que omo hemos dicho muchos antivirus evitan escanear archivos muy grandes como optimización de rendimiento.

      Facilidad de uso como lenguaje de alto nivel

      Go tiene una sintaxis moderna, clara y características integradas (como recolección de basura y primitivas de concurrencia) que aceleran el desarrollo. Los desarrolladores de malware, acostumbrados a C/C++, pueden encontrar en Go un lenguaje más sencillo y menos propenso a errores. Pueden aprovechar directamente bibliotecas del ecosistema Go (clientes HTTP, analizadores JSON, bibliotecas criptográficas, etc.). Go “ofrece muchas ventajas, pero también supone mayor carga para los analistas de malware”, lo que lo convierte en un arma de doble filo. Herramientas como GoBot2 y Veil demuestran que es factible escribir funciones complejas (botnets, generadores de payloads) en Go.

      Herramientas y marcos de código abierto

      La comunidad Go ha desarrollado numerosos marcos y herramientas, tanto para red teaming como para malware, que los atacantes pueden adaptar fácilmente. Por ejemplo:

      • Veil (generador de payloads) incluyó cargas útiles en Go.
      • HERCULES es un generador de shellcode en Go.
      • GoBot2 es una botnet/C2 en Go con múltiples funciones.

      Incluso herramientas de red teaming populares como Sliver (de Bishop Fox) están escritas en Go. Al usar estas herramientas, los atacantes obtienen funciones sofisticadas (canales cifrados, packers, módulos) con mínimo esfuerzo. De hecho, muchos grupos criminales ya prefieren Sliver en lugar del costoso Cobalt Strike, porque “Sliver está escrito en Go, [así que] sus implantes son multiplataforma” y “su personalización tiene una baja barrera de entrada”.

      Evasión

      Dado que Go aún es relativamente reciente en el ámbito del malware, muchas defensas de red y de endpoint carecen de detecciones especializadas para ejecutables en Go. Las firmas diseñadas para patrones Win32 PE o packers comunes pueden pasar por alto un EXE compilado en Go. Aunque los antivirus principales ya detectan muchas amenazas en Go (incluido FrostyGoop), existe una ventana de oportunidad durante la cual el malware nuevo en Go puede pasar desapercibido. Esto quedó demostrado en un informe de CrowdStrike que mostró un aumento del 80 % en muestras de malware en Go a mediados de 2021. Los atacantes detectaron que familias de amenazas comunes (como los cryptominers) explotaban con suficiente éxito esta brecha.

      Ejemplos de malware y herramientas en Go:

      NombreTipo/UsoCaracterísticas destacadasFuentes
      FrostyGoopSabotaje ICS (energía/calor)Inyector de payloads Modbus/TCP para PLCs; primer malware en usar Modbus con fines destructivosUnit42, SANS
      GoBot2Botnet / C2Botnet en Go con múltiples funciones (HTTP/S, persistencia, carga de archivos)Unit42
      VeilGenerador de payloadsFramework para generar payloads ofuscados; incluye reverse shells en GoUnit42
      HERCULESGenerador de payloadsCreador de reverse shells en Go vía TCP/HTTP/HTTPS; afirma evadir AVUnit42
      CHAOSToolkit / RATBuilder de reverse shells/RATs en Go (TCP, multicast); evade AV por ofuscación por defectoLMNTRIX
      SliverFramework Red Team / C2C2 de código abierto en Go. Implants para Windows, Linux y macOS. Usado como alternativa a Cobalt StrikeMicrosoft, Cybereason
      AgendaRansomwareRansomware personalizable en Go para sectores como sanidad o educaciónTrendMicro
      Titan StealerInfostealerRoba credenciales y claves; ejemplo de malware común en Go (eCrime)CrowdStrike
      Grabit / SebiRAT/C2Backdoor modular en Go (y Rust), usado por APT china (Earth Lusca)Mandiant
      Godzilla RATRAT / LoaderDownloader en Go activo y vendido en foros; nombre también usado por otrosCheckPoint

      Cada uno de estos ejemplos pone de manifiesto por qué se elige Go. Sliver y Veil muestran cómo incluso equipos de red teaming utilizan Go para crear implantes multiplataforma. GoBot2, CHAOS y HERCULES demuestran que es posible escribir botnets y shells completamente funcionales en Go. FrostyGoop y Agenda ilustran que tanto el sabotaje a infraestructuras industriales a nivel estatal como el ransomware moderno también están utilizando Go.

      Es importante destacar que muchos de estos proyectos en Go eran de código abierto (en GitHub) antes de ser adoptados por actores criminales, lo que significa que los atacantes pueden inspeccionarlos y reutilizarlos con rapidez. En general, la preferencia por Golang proviene de su combinación de desarrollo rápido y flexibilidad operativa. Las herramientas que se compilan para múltiples plataformas a partir de un único código (“escribe una vez, ejecuta en cualquier parte”) reducen el esfuerzo, especialmente para atacantes que apuntan a sistemas diversos. Los binarios estáticos y auto-contenidos eliminan dependencias del runtime de Python o de Windows, facilitando una entrega más quirúrgica. Sus funcionalidades integradas (como goroutines para concurrencia, channels para coordinación y bibliotecas estándar completas) hacen que los desarrolladores no necesiten integrar muchas librerías de terceros.

      Como contrapartida, quienes trabajamos en defensa nos enfretamos a nuevos desafíos: las heurísticas tradicionales (como las anomalías en la importación de DLLs) no son ya muy útiles, y las bases de datos de firmas van muy por detrás frente a las amenazas nuevas escritas en Go.

      La creciente lista de malware basado en Go confirma esta tendencia: desde cryptominers hasta RATs, ICS dirigidos y ransomware, los actores de amenazas están aprovechando las ventajas de Go. Por tanto, debemos actualizar los sistemas de detección y análisis en consecuencia: necesitamos dotarnos de herramientas especializadas para desempaquetar e inspeccionar binarios en Go, monitorizar ejecutables grandes sospechosos y además, poder detectar comportamiento anómalo en protocolos de red atípicos (como tráfico Modbus no autorizado).

      Analistas de Información: defensa de Europa

      4 mayo, 2025

      En un esfuerzo conjunto, bajo el amparo de agencias de inteligencia financiadas por Europa y la Universidad de Almería, estamos creando un itinerario formativo para capacitar al personal técnico en el rol de Analistas de Información en toda Europa. Nuestro objetivo es reforzar la defensa de Europa. Tras asistir a un curso intensivo sobre geopolítica y amenazas, los estudiantes seleccionados serán formados por nosotros en Italia, siguiendo esta planificación. Los datos sensibles han sido ocultados por razones de seguridad.

      Roadmap de certificaciones

      3 mayo, 2025

      Fuente: https://pauljerimy.com/security-certification-roadmap/

      Haz click en la imagen.

      Las certificaciones pueden ser un buen método para demostrar conocimiento. Mantener un github con proyectos, también. Publicar tus writeUps de cómo has resuelto retos o cómo has investigado en áreas interesantes para tu perfil profesional en ciberseguridad, también.

      ¿Qué nivel de seguridad nos proporciona el firmware de los procesadores de Intel?

      2 mayo, 2025

      Desde hace bastante tiempo llevo revisando el software de bajo nivel de las arquitecturas. Desde routers a procesadores. Me causa especial interés la arquitectura Intel. Es la que he llevado conmigo desde que me tengo memoria. Siempre he preferido Intel. Y así ha sido desde el 80286. Quedaré mal si digo que he aparcado numerosas tareas docentes, de investigación y de análisis de malware por sentarme a recopilar y organizar toda la información al respecto de la seguridad de la UEFI de los procesadores Intel. Y, claro, de su siempre cuestionado ME (Management Engine). Asi que vamos a ello.

      Qué funciones tiene la UEFI BIOS e Intel ME

      La BIOS moderna basada en UEFI (entendamos y esto es algo que trato de diferenciar mucho cuando desarrollo este tema, que BIOS y UEFI no es lo mismo) es el primer código que se ejecuta al encender el sistema y reemplaza a la BIOS tradicional. Se encarga de inicializar el hardware (POST, memoria, controladores básicos) y de cargar el gestor de arranque (bootloader) desde la partición EFI (un ESP en FAT32).

      • ESP: Es un estándar para la interfaz de firmware extensible (EFI) y es necesario para que el sistema operativo pueda arrancar correctamente en sistemas que utilizan UEFI. La ESP es una partición pequeña, típicamente entre 100 y 200 MB, que contiene los archivos necesarios para el proceso de arranque. 

      Tras la fase de arranque (SEC, PEI, DXE, BDS), UEFI transfiere el control al sistema operativo pero expone a este servicios de tiempo de ejecución (variables NVRAM, runtimes, controles de energía, etc.). Además implementa Secure Boot, que verifica las firmas de cargadores autorizados antes de ejecutar el sistema operativo. Por su parte, el Intel Management Engine (ME) es un microcontrolador integrado en el chipset, basado en arquitectura x86 interna, que funciona de forma independiente a la CPU principal. ME implementa funciones de administración remota (AMT) introducidas por Intel: inventario de hardware, servicios de actualización, diagnósticos, acceso remoto (KVM) y un servidor HTTP/HTTPS embebido para control fuera de banda (OOB, out of band); es decir, dispone de su propia interfaz de red y dirección MAC/IP, lo que permite el acceso y control remoto a través de una conexión de red, incluso cuando el sistema operativo principal está apagado. Este subsistema se mantiene activo mientras la fuente de alimentación esté conectada (incluso con el PC “apagado”, mientras la fuente esté conectada), y por diseño tiene acceso DMA completo a la RAM y a todos los dispositivos del sistema. En su implementación actual, el firmware de ME corre su propio sistema operativo interno, con módulos de kernel, drivers y servicios (p. ej. componentes AMT); en modo privilegiado el ME puede acceder a todo el hardware de la placa, prácticamente de manera transparente al sistema operativo del usuario.

      Tipos de ataques posibles

      Se pueden definir varias clases de ataque sobre el firmware UEFI/BIOS y el Intel ME. A continuación se definen los más evidentes:

      Ataques al SMM (System Management Mode): El Modo de Gestión de Sistema es un contexto de ejecución privilegiado y oculto para el SO. Un atacante con privilegios puede generar una interrupción SMI y explotar vulnerabilidades en los manejadores SMM, inyectando código malicioso que se ejecutará con todos los privilegios (acceso total a RAM/dispositivos, con total transparencia al SO). De hecho, hasta 2015 muchas plataformas carecían de protecciones de memoria SMRR/TSEG, por lo que eran teóricamente vulnerables a estas inyecciones ocultas.

      Manipulación de variables NVRAM (Setup): Los sistemas UEFI almacenan datos críticos en NVRAM (p. ej. claves Secure Boot, bit de bloqueo SPI, contraseña de BIOS). Si un atacante accede al UEFI Shell (por ejemplo, mediante una herramienta EFI cargada al arranque), puede usar el comando SetVar para cambiar variables. Con ello se puede por ejemplo deshabilitar el bit de bloqueo SPI (permitiendo reescribir el firmware) o borrar las claves de Secure Boot, forzando la BIOS a ignorar la firma digital.

      Desactivación o subversión de Secure Boot: Secure Boot impide cargar código que no tenga una firma válida. Sin embargo, puede deshabilitarse si se eliminan las claves autorizadas en NVRAM o si se añade una clave maliciosa propia. Borrando las variables NVRAM relevantes (como las claves de Microsoft o las definidas en el Setup de la BIOS) el sistema cargará firmware no firmado, anulando Secure Boot. Este tipo de vector se implementa ya sea mediante UEFI Shell o aprovechando vulnerabilidades de la BIOS.

      Ataques a Intel BIOS Guard / Boot Guard: Intel Boot Guard es un mecanismo hardware que verifica la firma del bloque inicial de la BIOS; Intel BIOS Guard hace algo similar en etapas posteriores. El documento indica que si no existe verificación de integridad, el firmware puede parchearse con un programador de flash externo; si sí existe, aun se podría eludir parcheando el propio código de verificación.

      En la práctica, se ha demostrado que existen formas de desactivar o burlar estas protecciones mediante ingeniería inversa (Ermolov lo hizo en 2017:https://firmwaresecurity.com/2017/05/08/alexander-ermolov-on-intel-bootguard/).

      Inyección de firmware de dispositivos PCI (Option ROM): Una ruta de ataque complementaria es reemplazar el firmware de tarjetas o periféricos (Ethernet, video, Thunderbolt, etc.) con código malicioso. Al cargarse estos Option ROM durante el arranque, el malware puede ejecutar instrucciones arbitrarias en etapa temprana, comprometiendo igualmente la seguridad global.

      Estructura del firmware

      El firmware de plataforma está contenido en un chip flash SPI compartido. Como ilustra la figura, Intel define regiones separadas: primero el Descriptor (gestiona permisos de acceso a la flash), seguido por la región GbE (firmware del adaptador de red integrado), luego la región de Intel ME (firmware del Management Engine) y finalmente la región de UEFI BIOS (firmware EFI principal) junto con la región PDR (módulos extra de proveedor). Cada bloque se puede proteger con bits de solo lectura, aunque muchos fabricantes antiguos dejaban deshabilitado el bloqueo de la región BIOS.

      El firmware UEFI BIOS comienza en la fase SEC (verificación de integridad, carga de DRAM), continúa en PEI (inicialización de la RAM, copia de código a memoria) y en DXE (carga de drivers y servicios EFI). En DXE se inicializa el hardware restante y se crea la interfaz abstracta de dispositivos. Finalmente UEFI busca un cargador de sistema en la partición EFI del disco (FAT32). Si lo encuentra lo ejecuta; de lo contrario lanza error o pasa al gestor de arranque alternativo. El sistema operativo, una vez iniciado, puede invocar interfaces de firmware vía servicios de tiempo de ejecución EFI. Adicionalmente, durante DXE se reserva una subfase de System Management Mode (SMM).

      La región Intel ME alberga su propio firmware aislado: el código está firmado con claves RSA y protegido con atributos de solo-lectura en flash. Internamente, el ME tiene un microkernel (núcleo de sistema operativo) y varios módulos: controladores del chip, servicios de AMT, bitlocker, contenedores de seguridad, etc. En modo privilegiado el ME puede acceder a todos los dispositivos y memorias del sistema. Esta separación de módulos permite al ME operar de forma paralela a la BIOS principal, ampliando sus funcionalidades sin intervención de la CPU.

      Vulnerabilidades de Intel ME y su independencia de la CPU

      El ME se ejecuta en un entorno aislado de muy bajo nivel (“anillo –3”) y disfruta de privilegios absolutos. La arquitectura actual lo hace indispensable: si un atacante lograra modificar su firmware tendría absoluto control y podría actuar con completo sigilo en la máquina. Por ejemplo, un código malicioso en el ME podría leer/escribir toda la RAM, monitorizar el tráfico de red o controlar periféricos de E/S sin que el sistema operativo lo detecte. Además, dado que Intel firma el firmware ME con clave privada y verifica la integridad al arrancar, su único mecanismo de defensa son estas firmas. Si dicha clave maestra se filtrara, el ME quedaría completamente vulnerable. No habría forma de detectar o impedir una reprogramación maliciosa. Aunque hasta la fecha no se han publicado ataques prácticos que hayan sido exitosos contra el ME, la mera posibilidad teórica es seria: con métodos de hardware (flasheadores externos) o incluso modos ocultos se puede deshabilitar o reescribir el ME por completo.

      Esta independencia de la CPU y su capacidad de acceso DMA absoluto hacen que cualquier vulnerabilidad descubierta en el ME tenga implicaciones críticas. Por ejemplo, Positive Technologies ya ha cargado código no firmado en ME 11.x (Ermolov, otra vez), lo cual confirma que el aislamiento de ME no es infalible.

      La seguridad del ME es autónoma del SO y del procesador principal; un compromiso en esa capa implica una llave maestra sobre la plataforma entera.

      Herramientas para el análisis de firmware

      Existen varias utilidades especializadas para inspeccionar y modificar imágenes de BIOS/UEFI y ME:

      UEFITool: aplicación open-source (C++/Qt) que parsea imágenes de firmware UEFI en una estructura de árbol. Permite visualizar volúmenes FFS, módulos, verificaciones de integridad y extraer cada componente para análisis.

      unME11 / unME12: scripts Python desarrollados por Sklyarov (Positive Technologies) para desempaquetar las regiones del firmware Intel ME versión 11.x y 12.x respectivamente. Extraen particiones, módulos y metadatos del blob de ME.

      Chipsec (Intel): framework de pruebas de seguridad de plataforma que permite auditar configuraciones de firmware y registros críticos (en particular SMM, TPM, etc.).

      Herramientas Intel oficiales: ME System Tools y Flash Programming Tool permiten obtener/actualizar imágenes ME, extraer dumps de memoria y flashear chips SPI. Aunque pensadas para servicio técnico, son empleadas por investigadores para obtener firmware legítimo.

      Otros proyectos: UEFIExtract, UEFITool Engine, Fiano (Go) o FMMT (TianoCore) también pueden parsear imágenes EFI; UEFITools comunitarios (como UBU/WinToolkit) facilitan la descarga automática de firmware de fabricantes.

      Configuraciones inseguras en las placa base

      Muchos fabricantes configuran de manera poco apropiada el firmware de fábrica, abriendo la puerta a ataques triviales. Un problema común es no habilitar el bit de bloqueo SPI tras la programación inicial: muchos sistemas (sobre todo antiguos) permiten reescribir la región BIOS directamente por software porque la memoria flash no está en modo de solo-lectura. Asimismo, se reporta que suelen usarse BIOS de referencia de unos pocos proveedores (Intel, AMI, Phoenix, Insyde), por lo que hay herramientas e imágenes recicladas disponibles públicamente. De hecho, existen “rescue disks” y utilidades de flasheo (oficiales o filtradas) de firmas como Lenovo, HP, Dell, etc., que pueden descargarse de foros. Con ellas se puede sobrescribir el firmware original sin mayor restricción. Por ejemplo, páginas como BIOS-mods.com o win-raid.com alojan programas no oficiales que implementan el flasheo libre.

      La falta de protecciones por hardware (SPI Lock) y la disponibilidad de firmware e imagenes de BIOS hacen muy sencilla la configuración de BIOS inseguras en la práctica.

      Limitaciones actuales de las tecnologías de protección UEFI BIOS

      Para terminar, las medidas de protección del firmware, aunque útiles, tienen limitaciones importantes. Las defensas basadas en integridad (Secure Boot, Boot Guard) pueden ser eludidas si un atacante logra parchear el código de verificación o extraer las claves maestras. Los ataques modernos a SMM siguen siendo factibles en sistemas sin mitigaciones avanzadas. Dado que Intel ME se ejecuta de manera aislada, cualquier brecha en su firmware comprometería todo lo demás. En la práctica, las implementaciones seguras (habilitación de SPI Lock, arranque seguro activo, actualización del ME, contraseñas BIOS fuertes) pueden incrementar la robustez, pero no garantizan invulnerabilidad.

      Aún no existe una solución universal: técnicas como el flasheo por hardware o la modificación de variables NVRAM quedan fuera del alcance de las defensas estándar. Las tecnologías de protección actuales (Secure Boot, Boot Guard, etc.) reducen riesgos pero no eliminan la posibilidad de introducir malware en el firmware, especialmente si el atacante dispone de acceso local privilegiado.

      Documentación

      https://invisiblethingslab.com/resources/bh09usa/Ring%20-3%20Rootkits.pdf

      https://people.kth.se/~maguire/DEGREE-PROJECT-REPORTS/100402-Vassilios_Ververis-with-cover.pdf

      https://github.com/ptresearch/unME11

      https://github.com/ptresearch/unME12

      http://me.bios.io/images/c/ca/Rootkit_in_your_laptop.pdf

      http://composter.com.ua/documents/Exploiting_Flash_Protection_Race_Condition.pdf