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