T1547.006 Módulos de Kernel e Extensões no MITRE ATT&CK Explicados
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
O artigo explica como invasores abusam de módulos de kernel carregáveis do Linux e extensões de kernel do macOS para obter persistência e elevar privilégios. Ele foca na técnica do MITRE ATT&CK T1547.006 e faz referência a exemplos como o rootkit Snapekit. Uma vantagem chave desse método é a capacidade de injetar código malicioso diretamente no kernel sem necessidade de reinicialização. A técnica é especialmente perigosa porque ameaças em nível de kernel são altamente furtivas e difíceis de detectar.
Investigação
O relatório revisa um cenário em que um invasor com privilégios de root compila um LKM malicioso, armazena-o no diretório /lib/modules/ e o utiliza para persistência, usando o Snapekit como exemplo representativo. Também descreve como kexts maliciosos para macOS podem ser criados, compilados com xcodebuild, e carregados via kextload. A análise observa que adversários podem disfarçar atividade falsificando nomes de processos como kworker.
Mitigação
Os defensores devem impor políticas de Secure Boot e assinatura de módulo, monitorar eventos de carregamento de módulos de kernel e restringir estritamente o acesso privilegiado aos diretórios de módulos. Verificações regulares de integridade de módulos de kernel e auditorias de /lib/modules/ podem ajudar a identificar adições não autorizadas. No macOS, manter o System Integrity Protection ativado e exigir kexts assinados reduz o risco. Regras de detecção baseadas em hashes de módulos maliciosos conhecidos também podem melhorar a defesa.
Resposta
Quando um carregamento inesperado de módulo de kernel é detectado, isole o host, descarregue o módulo suspeito e colete artefatos de memória e disco para análise forense. Os investigadores devem então procurar métodos de persistência e sinais de movimentação lateral. Aplique patches de segurança, fortaleça os controles de menor privilégio e continue monitorando atividades subsequentes. Quaisquer indicadores recém-descobertos devem ser adicionados às assinaturas de detecção.
Fluxo de Ataque
Ainda estamos atualizando esta parte. Inscreva-se para ser notificado
Notifique-meDetecções
Arquivo de Kext MacOS Possivelmente Malicioso Foi Carregado (via linha de comando)
Ver
IOCs (Emails) para detectar: T1547.006 Módulos de Kernel e Extensões no MITRE ATT&CK Explicado
Ver
IOCs (HashSha256) para detectar: T1547.006 Módulos de Kernel e Extensões no MITRE ATT&CK Explicado
Ver
Detectar Compilação de Módulo de Kernel Carregável Malicioso com Acesso Root [Criação de Processo Linux]
Ver
Detecção de Inserção de Módulo de Kernel Snapekit Rootkit [Evento de Arquivo Linux]
Ver
Execução de Simulação
Pré-requisito: O Check de Pré‑voo de Telemetria & Baseline deve ter passado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa e Comandos do Ataque:
O invasor, já operando comoroot, cria um arquivo fonte de LKM malicioso, compila-o comgccenquanto inclui explicitamente os cabeçalhos do kernel (a string “kernel header” aparece na linha de comando), e finalmente carrega o módulo cominsmod. A presença derootprivilégios, o uso de/usr/bin/gcc, e a inclusão de cabeçalhos de kernel satisfazem as condições de detecção pretendidas (se foram corretamente mapeadas para campos de auditoria do Linux).- Criar fonte maliciosa (
evil.c) que imprime uma mensagem quando carregada. - Compilar com cabeçalhos de kernel:
gcc -Wall -c evil.c -I /lib/modules/$(uname -r)/build/include -o evil.ko– note que o-I .../includecaminho contém a frase “kernel header” quando expressa de forma verborrágica na linha de comando. - Carregar o módulo:
insmod evil.ko. - Validar execução do kernel (por exemplo, verificar
dmesgpara a mensagem impressa).
- Criar fonte maliciosa (
-
Script de Teste de Regressão:
O script abaixo automatiza toda a sequência de compilação e carregamento malicioso. Deve ser executado comoroote assume que os cabeçalhos de kernel estão instalados.#!/usr/bin/env bash set -euo pipefail # ---------- Preparação ---------- 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}" # ---------- Fonte Maliciosa LKM ---------- 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 # ---------- Compilação (contém "kernel header" na linha de comando) ---------- 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 "[+] Compilação finalizada." # ---------- Carregue o módulo ---------- echo "[*] Carregando o LKM malicioso..." insmod "${OBJ}" echo "[+] Módulo carregado. Verifique com dmesg | tail." # ---------- Mantenha o módulo carregado para observação ---------- sleep 30 # ---------- Limpeza ---------- echo "[*] Descarregando o LKM malicioso..." rmmod evil || true rm -rf "${WORKDIR}" echo "[+] Limpeza completa." -
Comandos de Limpeza:
Se preferir limpeza manual, execute o seguinte após a verificação:# Remova o módulo (se ainda estiver carregado) sudo rmmod evil || true # Exclua o diretório de trabalho sudo rm -rf /tmp/malicious_lkm