# DS0011 — Module
## Descrição
**Module** compreende arquivos executáveis que consistem em uma ou mais classes e interfaces compartilhadas. Isso inclui: binários no formato **PE (Portable Executable)** e **DLLs (Dynamic Link Libraries)** no Windows; binários no formato **ELF (Executable and Linkable Format)** e **shared libraries (.so)** no Linux; e binários no formato **Mach-O** e **dylibs (.dylib)** no macOS. Em essência, são os blocos de código reutilizáveis que processos carregam em tempo de execução para executar funcionalidades.
Do ponto de vista de segurança, módulos são um vetor central para ataques de **DLL hijacking**, **side-loading**, **reflective injection** e **process hollowing**. Adversários frequentemente injetam módulos maliciosos no espaço de memória de processos legítimos para executar código sem criar novos processos — evadindo detecções baseadas em criação de processo. O monitoramento de carregamento de módulos (especialmente de caminhos não-padrão, sem assinatura digital, ou com nomes que imitam bibliotecas do sistema) é um pilar da detecção de ameaças em endpoints.
Em ambientes Windows corporativos brasileiros, o Sysmon Event ID 7 (ImageLoad) é a principal fonte de telemetria de módulos. No Linux, o Auditd com regras para `mmap` e `open` de arquivos `.so`, combinado com ferramentas como Falco ou Elastic Agent, oferece visibilidade equivalente. A relação entre módulos e a fonte [[ds0009-process|DS0009 — Process]] é estreita: eventos de módulo sem o contexto do processo que os carregou têm valor limitado.
## Visão Geral
### Linux
| Ferramenta | Configuração | Eventos gerados |
|---|---|---|
| **Auditd** | `-a always,exit -F arch=b64 -S open,openat -F path=.so` | Abertura de shared libraries |
| **Falco** | Regra `fd.name endswith .so` em `open` syscall | Carregamento de .so suspeito |
| **LD_PRELOAD monitoring** | Monitorar variável de ambiente ou `/etc/ld.so.preload` | Preload de bibliotecas maliciosas |
| **osquery** | `SELECT * FROM shared_memory;` ou `SELECT * FROM process_open_files WHERE path LIKE '%.so';` | Inventário de módulos carregados |
### macOS
| Ferramenta | Configuração | Eventos gerados |
|---|---|---|
| **Endpoint Security Framework** | `ES_EVENT_TYPE_NOTIFY_MMAP` | Mapeamento de biblioteca em memória |
| **Unified Log** | `dyld` subsystem | Carregamento de dylibs pelo linker dinâmico |
| **osquery** | `SELECT * FROM shared_libraries;` | Inventário de dylibs carregadas por processo |
### Integração com SIEM
```
# Splunk — DLL carregada de caminho temporário (indicador de DLL hijacking)
index=sysmon EventCode=7
| where match(ImageLoaded, "(?i)(\\\\Temp\\\\|\\\\AppData\\\\|\\\\Downloads\\\\|\\\\ProgramData\\\\)")
AND Signed="false"
| stats count by Computer, Image, ImageLoaded, MD5
| sort -count
# Splunk — DLL com nome de sistema mas hash diferente do esperado (substituição)
index=sysmon EventCode=7 ImageLoaded="*\\system32\\*.dll" Signed="false"
| stats count by Computer, ImageLoaded, MD5
| sort -count
```
## Pipeline de Coleta
```mermaid
graph TB
A["🖥️ Processo Windows<br/>Carrega DLL em memória"] --> B["🔍 Sysmon EID 7<br/>ImageLoad — path + hash<br/>+ assinatura digital"]
C["🐧 Processo Linux / macOS<br/>Carrega .so / .dylib"] --> D["🔍 Auditd / Falco<br/>open syscall em .so<br/>LD_PRELOAD monitoring"]
B --> E["📡 WEF / Agente SIEM<br/>Filtro: Signed=false<br/>+ paths suspeitos"]
D --> E
E --> F["🗄️ SIEM<br/>Splunk · Elastic · Sentinel"]
F --> G["🚨 Alerta<br/>DLL hijacking · Side-loading<br/>Módulo sem assinatura"]
```
## Componentes de Dados
| Componente | ID | Descrição |
|---|---|---|
| Module Load | [[dc0016-module-load\|DC0016]] | Carregamento de módulo (DLL/SO/dylib) por um processo — inclui path, hash, assinatura |
## Como Coletar
### Windows
| Fonte | Configuração | Event IDs relevantes |
|---|---|---|
| **Sysmon** | Event ID 7 (ImageLoad) — habilitado na config | Event 7 (caminho, MD5/SHA256, assinatura, empresa) |
| **Windows Defender ATP / MDE** | Habilitado por padrão com sensor | Todos os carregamentos de módulo |
| **ETW (Event Tracing for Windows)** | Provider `Microsoft-Windows-Kernel-Process` | Carregamentos de imagem via kernel |
| **Process Monitor (Sysinternals)** | Filtro por operação `Load Image` | Análise ad-hoc e forensics |
**Sysmon config para ImageLoad — foco em caminhos suspeitos:**
```xml
<ImageLoad onmatch="include">
<!-- DLLs carregadas de pastas de usuário -->
<ImageLoaded condition="contains">\AppData\</ImageLoaded>
<ImageLoaded condition="contains">\Temp\</ImageLoaded>
<ImageLoaded condition="contains">\Downloads\</ImageLoaded>
<!-- DLLs sem assinatura digital -->
<Signed condition="is">false</Signed>
</ImageLoad>
```
> **Aviso de volume:** Sysmon ImageLoad sem filtro adequado pode gerar 10-50 mil eventos por hora por host. Filtrar por assinatura (`Signed=false`) reduz volume em ~95% sem perder cobertura crítica.
## Técnicas Detectadas
| ID MITRE | Técnica | Sinal de detecção |
|---|---|---|
| [[t1574-001-dll-search-order-hijacking\|T1574.001]] | DLL Search Order Hijacking | DLL legítima carregada de path não-padrão (antes do path correto no search order) |
| [[t1574-002-dll-side-loading\|T1574.002]] | DLL Side-Loading | DLL maliciosa com nome de biblioteca legítima, carregada por executável confiável |
| [[t1055-001-dynamic-link-library-injection\|T1055.001]] | Dynamic-link Library Injection | DLL injetada em processo via CreateRemoteThread + LoadLibrary |
| [[t1055-002-portable-executable-injection\|T1055.002]] | Portable Executable Injection | PE injetado em memória de processo sem passar pelo sistema de arquivos |
| [[t1129-shared-modules\|T1129]] | Shared Modules | Carregamento de módulo compartilhado para execução de código malicioso |
## Gaps de Cobertura Brasil/LATAM
**Problemas críticos observados em SOCs brasileiros:**
- **Sysmon ImageLoad desabilitado por volume:** A preocupação legítima com volume de eventos leva muitos times a desabilitar completamente o Event ID 7. O resultado é invisibilidade total para DLL injection e side-loading — técnicas usadas por grupos como [[g0032-lazarus-group|Lazarus Group]] e operadores de [[s0154-cobalt-strike|Cobalt Strike]] muito ativos no Brasil.
- **Ausência de baseline de DLLs assinadas:** Sem saber quais DLLs são normalmente carregadas por cada processo (`explorer.exe`, `svchost.exe`, etc.), é impossível criar alertas confiáveis para DLLs anômalas. Ferramentas como o Sysmon Modular config mantêm exclusões bem calibradas — mas poucos SOCs brasileiros as utilizam.
- **LD_PRELOAD não monitorado em Linux:** A técnica de injeção via `LD_PRELOAD` ou `/etc/ld.so.preload` é frequentemente usada em servidores Linux comprometidos para persistência e hooking de funções. Muito raramente monitorada em SOCs brasileiros.
- **Falta de correlação módulo-processo:** Alertas de ImageLoad isolados têm alta taxa de falso-positivo. A correlação com o processo pai, a linha de comando e o contexto de usuário é essencial — e requer uma plataforma SIEM com suporte a joins/lookups eficientes.
**Recomendações:**
1. Habilitar Sysmon Event ID 7 com filtro `Signed=false` + path suspeito — isso captura 95% das ameaças com 5% do volume total
2. Criar lookup table de DLLs legítimas por processo (baseado em baseline de 30 dias) e alertar para qualquer desvio
3. Monitorar `/etc/ld.so.preload` e a variável `LD_PRELOAD` em todos os servidores Linux críticos via Auditd ou osquery
4. Para macOS em ambientes corporativos, implementar monitoramento de dylibs carregadas de fora do bundle da aplicação
## Referências
- [[dc0016-module-load|DC0016 — Module Load]] — componente de dados principal desta fonte
- [[ds0009-process|DS0009 — Process]] — fonte complementar para contexto de qual processo carregou o módulo
- [[ds0008-kernel|DS0008 — Kernel]] — fonte para carregamento de módulos de kernel (LKMs)
- [[t1574-001-dll-search-order-hijacking|T1574.001 — DLL Search Order Hijacking]] — técnica clássica detectável por esta fonte
- [[t1055-001-dynamic-link-library-injection|T1055.001 — DLL Injection]] — injeção em processo via módulo
- [[m1044-restrict-library-loading|M1044 — Restrict Library Loading]] — mitigação diretamente relacionada
- [[m1045-code-signing|M1045 — Code Signing]] — mitigação via exigência de assinatura de módulos
---
*Fonte: [MITRE ATT&CK — DS0011](https://attack.mitre.org/datasources/DS0011)*