SOC Prime Bias: Crítico

30 Mar 2026 17:07

T1547.006 Módulos de Núcleo y Extensiones en MITRE ATT&CK Explicado

Author Photo
Ruslan Mikhalov Jefe de Investigación de Amenazas en SOC Prime linkedin icon Seguir
T1547.006 Módulos de Núcleo y Extensiones en MITRE ATT&CK Explicado
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

El artículo explica cómo los atacantes abusan de los módulos del kernel de carga Linux y las extensiones del kernel de macOS para obtener persistencia y elevar privilegios. Se centra en la técnica T1547.006 de MITRE ATT&CK y hace referencia a ejemplos como el rootkit Snapekit. Una ventaja clave de este método es la capacidad de inyectar código malicioso directamente en el kernel sin requerir un reinicio. La técnica es especialmente peligrosa porque las amenazas a nivel de kernel son altamente furtivas y difíciles de detectar.

Investigación

El informe revisa un escenario en el que un atacante con privilegios root compila un LKM malicioso, lo almacena en el /lib/modules/ directorio, y lo utiliza para persistencia, usando Snapekit como un ejemplo representativo. También se describe cómo se pueden crear extensiones de macOS maliciosas, compilarlas con xcodebuild, y cargarlas a través de kextload. El análisis señala que los adversarios pueden disfrazar la actividad simulando nombres de procesos como kworker.

Mitigación

Los defensores deben aplicar políticas de Secure Boot y firma de módulos, monitorear eventos de carga de módulos del kernel y restringir estrictamente el acceso privilegiado a los directorios de módulos. Chequeos regulares de integridad de los módulos del kernel y auditorías de /lib/modules/ pueden ayudar a detectar adiciones no autorizadas. En macOS, mantener activada la Protección de Integridad del Sistema y requerir kexts firmados reduce el riesgo. Las reglas de detección basadas en hashes conocidos de módulos maliciosos también pueden mejorar la defensa.

Respuesta

Cuando se detecta una carga inesperada de un módulo del kernel, se debe aislar el host, descargar el módulo sospechoso y recopilar artefactos de memoria y disco para análisis forense. Los investigadores deben luego buscar métodos de persistencia y signos de movimiento lateral. Aplique parches de seguridad, fortalezca los controles de mínimo privilegio y continúe monitoreando para actividades posteriores. Cualquier nuevo indicador descubierto debe ser añadido a las firmas de detección.

Flujo de Ataque

Todavía estamos actualizando esta parte. Regístrese para recibir notificaciones

Notificarme

Ejecución de Simulación

Requisito: La Verificación Previa de Telemetría y Línea Base debe haber pasado.

Motivo: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y narraciones DEBEN reflejar directamente las TTPs identificadas y pretenden generar la telemetría exacta esperada por la lógica de detección.

  • Narrativa de Ataque y Comandos:
    El atacante, ya operando como root, crea un archivo fuente de LKM malicioso, lo compila con gcc mientras incluye explícitamente encabezados del kernel (la cadena «kernel header» aparece en la línea de comandos), y finalmente carga el módulo con insmod. La presencia de root privilegios, el uso de /usr/bin/gcc, y la inclusión de encabezados del kernel cumplen las condiciones de detección previstas (si se mapearon correctamente a los campos de auditoría de Linux).

    1. Crear fuente maliciosa (evil.c) que imprime un mensaje cuando se carga.
    2. Compilar con encabezados del kernel: gcc -Wall -c evil.c -I /lib/modules/$(uname -r)/build/include -o evil.ko – note la -I .../include la ruta contiene la frase «kernel header» cuando se expresa de manera detallada en la línea de comandos.
    3. Cargar el módulo: insmod evil.ko.
    4. Validar ejecución del kernel (por ejemplo, verifique dmesg para el mensaje impreso).
  • Script de Prueba de Regresión:
    El siguiente script automatiza toda la secuencia maliciosa de compilación y carga. Debe ejecutarse como root y asume que los encabezados del kernel están instalados.

    #!/usr/bin/env bash
    set -euo pipefail
    
    # ---------- Preparación ----------
    WORKDIR="/tmp/malicious_lkm"
    SRC="${WORKDIR}/evil.c"
    OBJ="${WORKDIR}/evil.ko"
    KERNEL_HEADERS="/lib/modules/$(uname -r)/build/include"
    
    rm -rf "${WORKDIR}"
    mkdir -p "${WORKDIR}"
    
    # ---------- Fuente LKM maliciosa ----------
    cat <<'EOF' > "${SRC}"
    #include <linux/module.h>
    #include <linux/kernel.h>
    MODULE_LICENSE("GPL");
    static int __init evil_init(void) {
        printk(KERN_INFO "Evil LKM loaded!n");
        return 0;
    }
    static void __exit evil_exit(void) {
        printk(KERN_INFO "Evil LKM unloaded!n");
    }
    module_init(evil_init);
    module_exit(evil_exit);
    EOF
    
    # ---------- Compilación (contiene "kernel header" en la línea de comandos) ----------
    echo "[*] Compilando LKM malicioso..."
    gcc -Wall -c "${SRC}" -I "${KERNEL_HEADERS}" -o "${WORKDIR}/evil.o" 
        -DDEBUG -D'KERNEL_HEADER_PATH="${KERNEL_HEADERS}"' 
        -Wl,--build-id=none -nostdinc -nostdlib -fno-pic -fno-pie 
        -static -o "${OBJ}"
    echo "[+] Compilación finalizada."
    
    # ---------- Cargar el módulo ----------
    echo "[*] Cargando el LKM malicioso..."
    insmod "${OBJ}"
    echo "[+] Módulo cargado. Verifique con dmesg | tail."
    
    # ---------- Mantener el módulo cargado para observación ----------
    sleep 30
    
    # ---------- Limpieza ----------
    echo "[*] Descargando el LKM malicioso..."
    rmmod evil || true
    rm -rf "${WORKDIR}"
    echo "[+] Limpieza completa."
  • Comandos de Limpieza:
    Si prefiere limpieza manual, ejecute lo siguiente después de la verificación:

    # Eliminar el módulo (si aún está cargado)
    sudo rmmod evil || true
    
    # Eliminar el directorio de trabajo
    sudo rm -rf /tmp/malicious_lkm