# 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]]