# DC0031 — Kernel Module Load
## Descrição
O **Kernel Module Load** registra o evento de carregamento de um módulo diretamente no kernel do sistema operacional. No Linux, isso corresponde ao uso de `insmod`, `modprobe` ou chamadas equivalentes para adicionar um Loadable Kernel Module (LKM) ao espaço do kernel. No Windows, equivale ao carregamento de drivers no ring-0. No macOS, corresponde ao carregamento de Kernel Extensions (kexts) via `kextload`.
O carregamento de módulos no kernel é uma das operações mais privilegiadas possíveis em um sistema operacional — um módulo malicioso tem acesso irrestrito à memória do kernel, pode interceptar syscalls, ocultar processos, arquivos e conexões de rede (características de rootkits), e persistir através de reboots. Por isso, o monitoramento desse evento é crítico para detectar comprometimentos de alto nível, especialmente em servidores Linux que hospedam infraestrutura crítica.
Adversários utilizam LKMs maliciosos (rootkits de kernel) para obter persistência profunda e evasão de detecção. Exemplos notórios incluem o Diamorphine, Reptile e Necurs (Windows). O MITRE ATT&CK mapeia essas atividades em [[t1014-rootkit|T1014-rootkit]] e [[t1547-boot-or-logon-autostart-execution|T1547-boot-or-logon-autostart-execution]]. A detecção é desafiadora porque um rootkit carregado com sucesso pode ocultar sua própria presença dos mecanismos de monitoramento — tornando a detecção em tempo real (antes do carregamento) mais valiosa do que análise post-mortem.
Em ambientes cloud e containers (AWS, GCP, Azure), o carregamento de módulos de kernel é geralmente restrito ou monitorado pela plataforma. No entanto, em instâncias com acesso privilegiado (`--privileged` no Docker, por exemplo), esse vetor permanece relevante.
## Telemetria
| Plataforma | Event ID | Descrição | Log Source |
|---|---|---|---|
| Linux | Auditd `init_module` / `finit_module` | Syscall de carregamento de módulo de kernel | Auditd |
| Linux | `/var/log/syslog` ou `/var/log/messages` | Entradas do kernel sobre módulos carregados | Syslog |
| Linux | `journalctl -k` | Logs do kernel via systemd journal | systemd Journal |
| Windows | Sysmon 6 | DriverLoad — driver carregado no kernel | Sysmon |
| Windows | 6 (System Event Log) | Carregamento de driver pelo SCM | System.evtx |
| macOS | Unified Logs `kextload` | Carregamento de extensão de kernel | Unified Logs |
| macOS | `ES_EVENT_TYPE_AUTH_KEXTLOAD` | Endpoint Security Framework — autorização de kext | ESF |
## Queries de Detecção
### KQL — Azure Sentinel / Microsoft Defender
```kql
// Driver carregado sem assinatura válida (Windows)
DeviceEvents
| where ActionType == "DriverLoad"
| where not(InitiatingProcessFileName in~ ("services.exe", "wininit.exe", "svchost.exe"))
| project Timestamp, DeviceName, FileName, FolderPath, SHA256, Signed, SignatureStatus,
InitiatingProcessFileName, InitiatingProcessCommandLine
| where Signed == false or SignatureStatus != "Valid"
| order by Timestamp desc
```
### SPL — Splunk (com Sysmon + Auditd)
```spl
(index=sysmon EventCode=6 Signed=false)
OR
(index=linux_audit type=SYSCALL syscall IN ("init_module", "finit_module"))
| eval platform=if(index=="sysmon", "Windows", "Linux")
| eval risk="critical"
| table _time, Computer, platform, ImageLoaded, Signed, SignatureStatus, CommandLine, risk
| sort - _time
```
## Técnicas Relacionadas
| Técnica | Nome | Relevância |
|---|---|---|
| [[T1215-kernel-modules-and-extensions]] | Kernel Modules and Extensions | Carregamento direto de LKMs/kexts maliciosos |
| [[t1547-boot-or-logon-autostart-execution\|T1547-boot-or-logon-autostart-execution]] | Boot or Logon Autostart Execution | Módulos configurados para carregar na inicialização |
| [[t1014-rootkit\|T1014-rootkit]] | Rootkit | LKMs usados para ocultar artefatos e persistência de longo prazo |
## Contexto LATAM
> [!globe] Relevância Regional
> Em ambientes brasileiros, o monitoramento de Kernel Module Load é mais crítico em infraestruturas Linux de servidores (hosting providers, fintechs, setor de telecomúnicações). O auditd com regras específicas para `init_module` e `finit_module` é a forma mais acessível de implementar essa detecção. Grupos APT com foco em espionagem (ex.: [[g0007-apt28]], [[g0016-apt29]]) utilizam rootkits de kernel em ataques de alto valor. Para ambientes cloud na AWS ou Azure, verificar CloudTrail e Azure Activity Logs para operações privilegiadas em instâncias que possam indicar pré-requisitos para carregamento de módulos.
## Referências
- [MITRE ATT&CK — DC0031 Kernel Module Load](https://attack.mitre.org/datasources/DS0008/#Kernel%20Module%20Load)
- [Linux Auditd — Monitoramento de Syscalls](https://linux.die.net/man/8/auditctl)
- [Sysmon Event ID 6 — Driver Loaded](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon)
- [[ds0008-kernel|DS0008 — Kernel]]
- [[t1014-rootkit|T1014-rootkit]]
- [[T1215-kernel-modules-and-extensions]]