# T1547.006 - Módulos e Extensões de Kernel
## Técnica Pai
Esta é uma sub-técnica de [[t1547-boot-logon-autostart-execution|T1547 - Execução na Inicialização do Sistema]].
## Descrição
Adversários modificam o kernel do sistema operacional para executar código automaticamente durante a inicialização, atingindo o mais alto nível de privilégio possível. Em sistemas Linux, isso é feito por meio de Loadable Kernel Modules (LKMs) - blocos de código que podem ser carregados e descarregados dinâmicamente no kernel sem necessidade de reinicialização, originalmente projetados para adicionar suporte a dispositivos e funcionalidades ao SO.
Quando explorados maliciosamente, LKMs funcionam como [[t1014-rootkit|rootkits]] em modo kernel (Ring 0), com acesso irrestrito a toda a memória e recursos do sistema. Rootkits baseados em LKM são capazes de se ocultar completamente do espaço do usuário: removem a si mesmos das listagens de módulos, ocultam processos, arquivos e conexões de rede, adulterem logs do sistema e instalam backdoors autenticados que concedem acesso root a usuários não privilegiados - tudo de forma invisível para ferramentas forenses convencionais.
No macOS, o equivalente são as Kernel Extensions (kexts), que funcionam de maneira similar ao LKM do Linux. Kexts precisam ser assinadas com um Developer ID com privilégios especiais concedidos pela Apple. Com o SIP (System Integrity Protection) desabilitado, kexts não assinadas podem ser carregadas via `kextload`. A partir do macOS Catalina 10.15, as kexts foram oficialmente depreciadas em favor das System Extensions, porém ainda são suportadas como "Legacy System Extensions" enquanto não há substitutos para todas as interfaces de programação de kernel.
**Contexto Brasil/LATAM:** Esta técnica é utilizada principalmente por adversários sofisticados - atores de estado-nação e grupos APT - em operações de espionagem de longa duração contra infraestrutura crítica, telecomúnicações e entidades governamentais na América Latina. Malwares como [[drovorub|Drovorub]] (atribuído ao GRU russo) e [[s0468-skidmap|Skidmap]] (cryptominer com rootkit LKM) demonstram o uso real desta técnica em ambientes Linux de produção. A persistência em nível de kernel é extremamente difícil de remover sem reinstalação do sistema operacional.
## Attack Flow
```mermaid
graph TB
A["Comprometimento inicial<br/>(exploração de vulnerabilidade / RCE)"] --> B["Escalada de privilégios<br/>para root / SYSTEM"]
B --> C["Carregamento de LKM ou kext malicioso<br/>ESTA TÉCNICA - T1547.006"]
C --> D["Rootkit em Ring 0<br/>oculta processos, arquivos, rede"]
D --> E["Backdoor autenticado<br/>e persistência na inicialização"]
E --> F["Espionagem de longa duração<br/>exfiltração e sabotagem"]
```
## Como Funciona
1. **Preparação** - O adversário compila um LKM ou kext malicioso adaptado ao kernel específico do alvo (versão exata do kernel Linux ou macOS), obtendo privilégios root no sistema comprometido.
2. **Carregamento** - No Linux, o módulo é carregado via `insmod` ou `modprobe`; no macOS, via `kextload`. Para persistência automática na inicialização, o módulo é adicionado ao `/etc/modules` (Linux) ou equivalente de configuração de boot.
3. **Ocultação (rootkit)** - Após carregado, o módulo manipula as estruturas internas do kernel para remover a si mesmo da lista visível de módulos (`lsmod`), ocultar arquivos em disco, esconder conexões de rede e manipular chamadas de sistema para enganar ferramentas de auditoria.
4. **Persistência** - A cada reinicialização do sistema, o módulo é carregado automaticamente antes que qualquer ferramenta de segurança do espaço do usuário estejá ativa, garantindo persistência inabalável.
**Exemplo - Carregamento e persistência de LKM no Linux:**
```bash
# Compilar o módulo para o kernel atual
make -C /lib/modules/$(uname -r)/build M=$(pwd) modules
# Carregar o módulo imediatamente
insmod malicious_module.ko
# Verificar que está oculto (não aparece no lsmod após hook)
lsmod | grep malicious_module
# Configurar persistência na inicialização (como root)
echo "malicious_module" >> /etc/modules
```
## Detecção
**Fontes de dados:** Logs de carregamento de módulos do kernel (`/proc/modules`, `dmesg`), auditoria de chamadas de sistema `init_module` e `finit_module` via `auditd`, monitoramento de alterações em `/etc/modules` e `/etc/modprobe.d/`, comparação de hash de módulos em disco com módulos carregados em memória, ferramentas de integridade de kernel (AIDE, Tripwire), análise de memória volátil para detectar módulos ocultos.
```yaml
title: Carregamento de Módulo de Kernel Não Assinado ou Suspeito
id: d4e9f3b2-6a1c-4d8e-b5f3-5e8d9f0b1c2e
status: experimental
logsource:
category: process_creation
product: linux
detection:
selection_insmod:
Image|endswith: '/insmod'
selection_modprobe:
Image|endswith: '/modprobe'
CommandLine|contains:
- '--force'
- '-f'
selection_kextload:
Image|endswith: '/kextload'
condition: selection_insmod or selection_modprobe or selection_kextload
falsepositives:
- Administradores carregando módulos legítimos de hardware (ex: drivers GPU, VPN)
- Sistemas de build e ambientes de desenvolvimento de kernel
- Ferramentas de virtualização (VirtualBox, VMware) carregando módulos próprios
level: medium
tags:
- attack.persistence
- attack.privilege_escalation
- attack.t1547.006
```
## Mitigação
| Mitigação | Recomendação Prática |
|-----------|---------------------|
| [[m1026-privileged-account-management\|M1026 - Privileged Account Management]] | Restringir carregamento de módulos de kernel exclusivamente a contas de administração dedicadas; separar privilégios de root de acesso operacional do dia a dia |
| [[m1018-user-account-management\|M1018 - User Account Management]] | Desabilitar capacidade de usuários comuns de usar `sudo insmod` ou `sudo modprobe`; auditar sudoers regularmente |
| [[Antimalware]] | Utilizar soluções de segurança com capacidade de análise de módulos de kernel e detecção comportamental em nível de sistema (EDR para Linux/macOS) |
| [[m1038-execution-prevention\|M1038 - Execution Prevention]] | Habilitar Secure Boot e verificação de assinatura de módulos no kernel (`CONFIG_MODULE_SIG_FORCE`); no macOS, manter SIP habilitado e exigir assinatura de kexts |
## Software Associado
- [[drovorub|Drovorub]] - rootkit LKM sofisticado atribuído ao APT28 (GRU), com backdoor, redirecionamento de arquivos e comunicação C2 oculta
- [[s0468-skidmap|Skidmap]] - malware de cryptomining para Linux com rootkit LKM que oculta processos e uso de CPU
- [[s1219-reptile|REPTILE]] - rootkit LKM open-source utilizado em ataques reais, com shell reverso e funcionalidades de ocultação
## Relações com Outras Técnicas
- [[t1014-rootkit|T1014 - Rootkit]] - técnica frequentemente implementada via LKMs maliciosos
- [[ta0004-privilege-escalation|TA0004 - Privilege Escalation]] - tática secundária habilitada pelo controle em Ring 0
- [[ta0003-persistence|TA0003 - Persistence]] - tática principal desta sub-técnica
- [[t1547-boot-logon-autostart-execution|T1547 - Boot or Logon Autostart Execution]] - técnica pai desta sub-técnica
---
*Fonte: [MITRE ATT&CK - T1547.006](https://attack.mitre.org/techniques/T1547/006)*