# 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)*