# DC0011 - Module Load > [!info] Componente de detecção que monitora o carregamento dinâmico de bibliotecas compartilhadas (DLLs/SO). Essencial para detectar DLL hijacking, sideloading e injeção de código malicioso em processos legítimos. ## Descrição Module Load captura eventos de carregamento dinâmico de bibliotecas compartilhadas (DLLs no Windows, .so no Linux) em processos em execução. É essencial para detectar DLL hijacking, sideloading e injeção de DLLs maliciosas — técnicas amplamente utilizadas por APTs para persistência e execução de código. A correlação entre o módulo carregado, seu caminho no sistema e o processo que o carregou permite identificar DLLs suspeitas ou fora do caminho esperado. ## Fonte de Dados Parent: [[ds0011-module|DS0011 - Module]] ## Pipeline de Detecção ```mermaid graph TB A["🔍 Sysmon Event ID 7<br/>ImageLoaded"] --> B["📋 Hash + Assinatura<br/>Digital Coletados"] B --> C{"✅ Assinatura<br/>Válida?"} C -->|Não| D["🚨 Alerta: DLL<br/>Não Assinada"] C -->|Sim| E{"📁 Caminho<br/>Esperado?"} E -->|Não| F["🚨 Alerta: DLL<br/>Search Order Hijack"] E -->|Sim| G["✔️ Evento<br/>Benigno"] classDef alert fill:#e74c3c,color:#ecf0f1 classDef ok fill:#2ecc71,color:#2c3e50 classDef check fill:#3498db,color:#ecf0f1 classDef source fill:#2c3e50,color:#ecf0f1 class D,F alert class G ok class C,E check class A,B source ``` ## O Que Monitorar - Sysmon Event ID 7 (ImageLoaded) com hash e assinatura digital - DLLs sem assinatura digital carregadas por processos do sistema - DLLs carregadas de diretórios incomuns (`%TEMP%`, `%APPDATA%`, rede) - Carregamento de DLLs com nomes idênticos às do sistema mas em caminhos diferentes (DLL search order hijacking) - DLLs com hashes diferentes das versões originais do sistema - Módulos carregados com reflexive loading (sem tocar o disco) - Carregamento de `amsi.dll` ou `clrjit.dll` modificados (bypass de AMSI) ## Técnicas Detectadas | Técnica | ID | Como Detectar | |---------|-----|---------------| | Hijack Execution Flow | [[t1574-hijack-execution-flow\|T1574]] | DLL com nome legítimo carregada de caminho errado | | Native API | [[t1106-native-api\|T1106]] | DLLs de sistema carregadas em processos não esperados | | Shared Modules | [[t1129-shared-modules\|T1129]] | Módulos carregados em tempo de execução sem verificação | | DLL Injection | [[t1055-process-injection\|T1055.001]] | DLL carregada em processo via LoadLibrary remoto | ## Implementação **Sysmon Event ID 7:** ```xml <RuleGroup name="ImageLoaded" groupRelation="or"> <ImageLoaded onmatch="include"> <Signed condition="is">false</Signed> <ImageLoaded condition="contains">\AppData\</ImageLoaded> </ImageLoaded> </RuleGroup> ``` **Importante:** O Event ID 7 gera alto volume de eventos. Usar listas de exclusão para módulos comuns e assinados para reduzir ruído. **Verificar assinatura digital:** Correlacionar hash de DLL com Microsoft Authenticode via CTI feeds ou ferramentas de baseline. **Ferramentas:** Sysmon, Process Monitor (Sysinternals), CrowdStrike Falcon, Elastic Endpoint, Carbon Black App Control. ## Consultas KQL — Microsoft Sentinel / Defender ### Detecção de DLL Não Assinada Carregada por Processo de Sistema ```kql // DC0011 - DLL não assinada carregada por processo crítico do sistema DeviceImageLoadEvents | where Timestamp > ago(1d) | where not(InitiatingProcessSignatureStatus == "Signed") | where InitiatingProcessFolderPath has_any ( @"C:\Windows\System32", @"C:\Windows\SysWOW64" ) | where FolderPath !startswith @"C:\Windows\System32" and FolderPath !startswith @"C:\Windows\SysWOW64" | project Timestamp, DeviceName, InitiatingProcessFileName, FileName, FolderPath, SHA256, InitiatingProcessSignatureStatus | order by Timestamp desc ``` ### DLL Search Order Hijacking - Nome Legítimo, Caminho Incomum ```kql // DC0011 - Possível DLL hijacking: DLL do sistema carregada de caminho não padrão let system_dlls = dynamic([ "ntdll.dll", "kernel32.dll", "kernelbase.dll", "advapi32.dll", "user32.dll", "ws2_32.dll", "msvcrt.dll", "shell32.dll", "ole32.dll" ]); DeviceImageLoadEvents | where Timestamp > ago(7d) | where FileName in~ (system_dlls) | where FolderPath !startswith @"C:\Windows\System32" and FolderPath !startswith @"C:\Windows\SysWOW64" and FolderPath !startswith @"C:\Windows\WinSxS" | summarize count(), min(Timestamp), max(Timestamp), make_set(FolderPath, 10) by DeviceName, FileName, InitiatingProcessFileName | order by count_ desc ``` ## Contexto LATAM > [!latam] Relevância Regional > **DLL Hijacking é técnica favorita de APTs que atacam o Brasil.** Grupos como **Guildma/Astaroth** (malware bancário brasileiro) utilizam DLL sideloading extensivamente para carregar payloads maliciosos via processos legítimos do Windows — contornando soluções AV tradicionais. No setor financeiro brasileiro, campanhas de 2024-2025 documentaram uso de **LOLBins + DLL sideloading** para estabelecer persistência em endpoints corporativos. Monitorar carregamento de módulos é crítico para bancos, seguradoras e fintechs que compõem o sistema financeiro mais digitalmente avançado da América Latina. O Sysmon Event ID 7 com baseline de hashes deve ser prioritário em ambientes SOC brasileiros. ## Referências - [MITRE ATT&CK - DS0011 Module](https://attack.mitre.org/datasources/DS0011/) - [Sysmon Event ID 7 - Image Loaded](https://learn.microsoft.com/en-us/sysinternals/downloads/sysmon) - [Astaroth/Guildma - ESET Research](https://www.welivesecurity.com/la-es/) - [DLL Search Order Hijacking - MITRE T1574](https://attack.mitre.org/techniques/T1574/)