# DS0008 — Kernel
## Descrição
O **Kernel** é o núcleo do sistema operacional — um programa residente em memória que atua como intermediário entre o hardware (CPU, memória, dispositivos) e o software (aplicações, serviços). Ele gerencia recursos do sistema, escalonamento de processos, acesso a memória e comunicação entre componentes de hardware e software.
Do ponto de vista de segurança, o kernel é uma das fontes de dados mais sensíveis e relevantes disponíveis para analistas de SOC. Atividades maliciosas como rootkits, exploits de elevação de privilégio e técnicas de evasão de defesa frequentemente atuam diretamente no espaço do kernel para contornar controles de segurança em nível de usuário. Monitorar eventos de kernel — especialmente carregamento de módulos e chamadas de sistema suspeitas — é fundamental para detectar adversários que operam com persistência profunda no sistema.
Em ambientes Linux e macOS, a telemetria de kernel é gerada principalmente via módulos como **Auditd**, **eBPF**, **kprobes**, e ferramentas de EDR que instrumentam chamadas de sistema. A visibilidade em nível de kernel oferece detecção de alta fidelidade, porém com custo de volume e processamento significativos — exigindo estratégia de filtragem cuidadosa em SIEMs e pipelines de coleta.
## Visão Geral
### Integração com SIEM
```
# Splunk — detectar carregamento suspeito de módulo Linux
index=linux sourcetype=linux_audit syscall=init_module OR syscall=finit_module
| eval modname=if(isnull(modname), "desconhecido", modname)
| stats count by host, modname, uid, exe
| where count > 0
```
## Pipeline de Coleta
```mermaid
graph TB
A["🐧 Kernel Linux / macOS<br/>Chamadas: init_module<br/>finit_module · delete_module"] --> B["🔍 Auditd<br/>syscall init_module / finit_module"]
A --> C["⚡ eBPF / Falco<br/>kprobe:do_init_module"]
A --> D["🔍 Sysmon for Linux<br/>Event ID 19 (Kernel Module)"]
B --> E["📡 Agente SIEM<br/>Coleta e normalização"]
C --> E
D --> E
E --> F["🗄️ SIEM<br/>Splunk · Elastic · Sentinel"]
F --> G["🚨 Alerta<br/>Módulo fora do baseline<br/>LKM / rootkit detectado"]
```
## Componentes de Dados
| Componente | ID | Descrição |
|---|---|---|
| Kernel Module Load | [[dc0031-kernel-module-load\|DC0031]] | Carregamento de módulos no espaço do kernel (LKMs no Linux, kexts no macOS) |
## Como Coletar
### Linux
| Ferramenta | Configuração | Eventos gerados |
|---|---|---|
| **Auditd** | Regra `-a always,exit -F arch=b64 -S init_module,finit_module` | Carregamento de módulos de kernel |
| **eBPF / bpftrace** | Probe em `kprobe:do_init_module` | Rastreamento em tempo real de cargas de módulo |
| **Syslog / dmesg** | Monitorar `kernel:` facility | Mensagens de módulos carregados/descarregados |
| **Sysmon for Linux** | Event ID 19 (Kernel Module Load) | Compatível com formato Windows Sysmon |
| **osquery** | `SELECT * FROM kernel_modules;` | Inventário periódico de módulos ativos |
**Exemplo de regra Auditd para módulos de kernel:**
```
-a always,exit -F arch=b64 -S init_module -S finit_module -S delete_module -k kernel_modules
```
### macOS
| Ferramenta | Configuração | Eventos gerados |
|---|---|---|
| **Endpoint Security Framework** | `ES_EVENT_TYPE_NOTIFY_KEXTLOAD` | Carregamento de kernel extensions (kexts) |
| **Unified Log (syslog)** | Subsistema `com.apple.kext` | Mensagens de carga/descarga de kexts |
| **osquery** | `SELECT * FROM kernel_extensions;` | Inventário de kexts carregados |
> **Nota para SOCs brasileiros:** A partir do macOS 11 (Big Sur), Apple restringe kexts não assinadas via System Extensions. Alertas de carregamento de kexts não assinadas são indicadores de alta prioridade.
## Técnicas Detectadas
| ID MITRE | Técnica | Relevância |
|---|---|---|
| [[t1547-006-kernel-modules-and-extensions\|T1547.006]] | Kernel Modules and Extensions | Persistência via módulo de kernel malicioso (rootkit LKM) |
| [[t1014-rootkit\|T1014]] | Rootkit | Rootkits que se injetam no kernel para ocultar processos e arquivos |
| [[t1611-escape-to-host\|T1611]] | Escape to Host | Escape de container para kernel do host via módulo malicioso |
| [[t1068-exploitation-for-privilege-escalation\|T1068]] | Exploitation for Privilege Escalation | Exploits de kernel para obter ring-0 / capabilities elevadas |
| [[t1562-001-disable-or-modify-tools\|T1562.001]] | Disable or Modify Tools | Módulos de kernel que desabilitam agentes de segurança (EDR, Auditd) |
## Gaps de Cobertura Brasil/LATAM
**Problemas comuns observados em SOCs brasileiros:**
- **Auditd desabilitado ou mal configurado:** A maioria dos servidores Linux corporativos no Brasil não possui regras Auditd para `init_module`/`finit_module`. Atacantes como o [[g0032-lazarus-group|Lazarus Group]] e grupos de ransomware utilizam módulos de kernel maliciosos para desabilitar EDRs sem disparar alertas.
- **Falta de visibilidade em ambientes containerizados:** Ambientes Kubernetes/Docker sem monitoramento de kernel do host são pontos cegos críticos. O namespace de kernel é compartilhado — uma fuga de container expõe o host inteiro.
- **Ausência de inventário de módulos:** Sem baseline de módulos legítimos, é impossível detectar carregamento de módulos anômalos via alertas de delta.
**Recomendações:**
1. Habilitar Auditd com regras para syscalls `init_module`, `finit_module` e `delete_module` em todos os servidores Linux
2. Implementar `osquery` para inventário periódico de módulos — criar alerta para qualquer módulo não presente no baseline
3. Em macOS, monitorar o log unificado para eventos `kextload` de bundles não assinados ou não presentes no baseline corporativo
4. Considerar soluções EDR com telemetria eBPF (ex: Elastic Agent, Falco) para visibilidade de kernel em tempo real
## Referências
- [[dc0031-kernel-module-load|DC0031 — Kernel Module Load]] — componente de dados gerado por esta fonte
- [[t1547-006-kernel-modules-and-extensions|T1547.006 — Kernel Modules and Extensions]] — técnica de persistência detectável
- [[t1014-rootkit|T1014 — Rootkit]] — técnica de evasão via kernel
- [[m1049-antivirusantimalware|M1049 — Antivirus/Antimalware]] — mitigação complementar
- [[m1038-execution-prevention|M1038 — Execution Prevention]] — mitigação para bloquear módulos não assinados
- [[ds0009-process|DS0009 — Process]] — fonte complementar para correlação de processos que carregam módulos
---
*Fonte: [MITRE ATT&CK — DS0008](https://attack.mitre.org/datasources/DS0008)*