# T1055.001 - Dynamic-link Library Injection
## Técnica Pai
Esta é uma sub-técnica de [[t1055-process-injection|T1055 - T1055 - Process Injection]].
## Descrição
DLL Injection é uma técnica de evasão de defesa em que o adversário insere o caminho de uma biblioteca dinâmica (DLL) no espaço de memória de um processo legítimo em execução e força sua carga. O objetivo central é mascarar a execução de código malicioso sob a identidade de um processo confiável - como `explorer.exe`, `svchost.exe` ou `lsass.exe` - tornando a detecção por nome de processo ineficaz. A sequência clássica utiliza as APIs nativas do Windows: `VirtualAllocEx` para alocar memória no processo alvo, `WriteProcessMemory` para gravar o caminho da DLL e `CreateRemoteThread` para disparar o carregamento via `LoadLibrary`.
Variações mais sofisticadas - como **Reflective DLL Injection** e **Module Stomping (DLL Hollowing)** - eliminam a dependência de `LoadLibrary` ao mapear a DLL inteiramente na memória, sem deixar rastros em disco. No Module Stomping, uma DLL legítima é carregada em um processo remoto e seu ponto de entrada (`AddressOfEntryPoint`) é sobrescrito antes de um novo thread ser iniciado - a execução maliciosa fica "ancorada" em um módulo legítimo, dificultando análise forense. Ferramentas como [[s0154-cobalt-strike|Cobalt Strike]] implementam reflective injection nativamente em seus beacons.
**Contexto Brasil/LATAM:** No cenário brasileiro, DLL Injection é amplamente empregada por operadores de trojans bancários para se injetar em processos de navegadores, capturando sessões bancárias em tempo real. O malware [[s1066-darktortilla|DarkTortilla]], distribuído por grupos que miram organizações latinoamericanas, utiliza injeção de DLL para carregar payloads criptografados dentro de processos .NET legítimos. O grupo [[ta505|TA505]], que historicamente targetou o setor financeiro brasileiro, usa [[s0154-cobalt-strike|Cobalt Strike]] com reflective DLL injection em suas campanhas de pós-comprometimento.
**Event IDs críticos (Windows Security + Sysmon):**
| Fonte | Event ID | Descrição |
|-------|----------|-----------|
| Sysmon | **8** | `CreateRemoteThread` - thread criada em processo externo |
| Sysmon | **10** | `ProcessAccess` - processo acessando outro com permissões de escrita |
| Sysmon | **7** | `ImageLoad` - DLL carregada de caminho suspeito (AppData, Temp, Public) |
| Windows Security | **4663** | Acesso a objeto - leitura/escrita em memória de processo |
| Windows Security | **4688** | Criação de processo - correlacionar com injeção suspeita |
**Sigma Rule - DLL Injection via CreateRemoteThread:**
```yaml
title: Suspicious CreateRemoteThread DLL Injection
id: 6f7b1a2c-4d9e-4b3f-8a1c-2e5d7f9b0c3a
status: experimental
description: Detects potential DLL injection via CreateRemoteThread into a remote process
references:
- [[t1055-001-dynamic-link-library-injection]]
logsource:
product: windows
category: creaté_remote_thread
detection:
selection:
EventID: 8
TargetImage|endswith:
- '\explorer.exe'
- '\svchost.exe'
- '\lsass.exe'
- '\winlogon.exe'
- '\services.exe'
StartFunction: 'LoadLibraryA'
filter_legitimate:
SourceImage|startswith:
- 'C:\Windows\System32\'
- 'C:\Program Files\'
condition: selection and not filter_legitimate
falsepositives:
- Legitimaté software using remote thread for IPC (rare)
- AV/EDR solutions injecting monitoring DLLs
level: high
tags:
- attack.defense_evasion
- attack.t1055.001
```
## Attack Flow
```mermaid
graph TB
A[Acesso Inicial] --> B[Reconhecimento de Processos]
B --> C[Alocação de Memória<br/>VirtualAllocEx]
C --> D:::highlight[DLL Injection<br/>WriteProcessMemory + CreateRemoteThread]
D --> E[Persistência / Pivô Lateral]
classDef highlight fill:#e74c3c,color:#fff
```
## Como Funciona
**Preparação - Identificação e Alocação**
O adversário identifica um processo alvo de alta confiança (ex: `explorer.exe`) usando APIs como `CreateToolhelp32Snapshot` ou `EnumProcesses`. Em seguida, obtém um handle com `OpenProcess` (requer `PROCESS_VM_WRITE` e `PROCESS_CREATE_THREAD`) e aloca um bloco de memória no espaço de endereçamento do processo alvo com `VirtualAllocEx`, específicando permissões de leitura/escrita/execução.
**Execução - Escrita e Disparo**
O caminho completo da DLL maliciosa (ex: `C:\Users\Public\evil.dll`) é escrito na memória alocada via `WriteProcessMemory`. O carregamento é então disparado com `CreateRemoteThread`, apontando a função de início para o endereço de `LoadLibraryA` na memória do processo alvo. O sistema operacional carrega e executa a DLL no contexto do processo legítimo.
**Pós-execução - Ocultação e Persistência**
Após a injeção, o código malicioso opera sob a identidade do processo hospedeiro, herdando seus tokens de segurança, acesso à rede e possíveis privilégios elevados. Implementações avançadas (reflective injection) removem o arquivo DLL do disco imediatamente após o carregamento, deixando apenas rastros na memória volátil. Técnicas complementares de [[t1055-001-dynamic-link-library-injection|Module Stomping]] sobrescrevem módulos legítimos para camuflar ainda mais a presença.
## Detecção
> [!warning] Eventos de Alta Relevância para SOC
> A detecção eficaz requer correlação entre chamadas de API e contexto de processo. Alertas isolados de `CreateRemoteThread` geram alto volume de falsos positivos - priorize a combinação dos eventos abaixo.
## Mitigação
| Controle | Medida | Aplicação para Organizações Brasileiras |
|----------|--------|----------------------------------------|
| [[m1040-behavior-prevention-on-endpoint\|M1040]] | Prevenção comportamental no endpoint | Implantar EDR com detecção de injeção em memória (CrowdStrike, SentinelOne, Microsoft Defender for Endpoint). Habilitar regras de ASR no Defender. |
| Hardening de Processos | Proteger LSASS com PPL | Ativar `RunAsPPL` no registro para proteger `lsass.exe` de acesso remoto - bloqueia a maioria das injeções de credenciais. |
| Controle de Aplicações | Restringir execução de DLLs não assinadas | Usar Windows Defender Application Control (WDAC) ou AppLocker para bloquear DLLs sem assinatura digital de fabricante confiável. |
| Monitoramento | Baselines de módulos carregados | Mapear DLLs legítimas de processos críticos e alertar sobre carregamento de módulos fora do baseline - especialmente de `%TEMP%`, `%APPDATA%` e `C:\Users\Public\`. |
| Privilégios | Princípio do menor privilégio | Limitar contas de usuário e serviço a privilégios mínimos. Injeção em processos como `lsass.exe` requer `SeDebugPrivilege` - remover este direito de usuários comuns. |
## Threat Actors
- [[g0010-turla|Turla]] - grupo de espionagem russo que usa DLL injection para persistir em redes diplomáticas e governamentais, incluindo missões latino-americanas.
- [[g1026-malteiro|Malteiro]] - ator brasileiro especializado em trojans bancários que injeta em processos de navegadores para capturar sessões financeiras.
- [[g0135-backdoordiplomacy|BackdoorDiplomacy]] - APT que mira ministérios e embaixadas, usando injeção de DLL para mascarar backdoors em processos legítimos do Windows.
- [[g0065-leviathan|Leviathan]] - grupo de espionagem chinês (APT40) com histórico de usar DLL injection em campanhas contra setor marítimo e governo.
- [[g0024-putter-panda|Putter Panda]] - APT chinês que usa variantes de injeção para manter acesso persistente em redes corporativas comprometidas.
- [[g0032-lazarus-group|Lazarus Group]] - grupo norte-coreano que emprega reflective DLL injection em campanhas financeiras, incluindo ataques a exchanges e bancos na América Latina.
- [[g0081-tropic-trooper|Tropic Trooper]] - APT que usa injeção de DLL em processos de segurança para evadir soluções AV tradicionais.
- [[ta505|TA505]] - grupo financeiramente motivado com histórico de ataques a bancos brasileiros, usando [[s0154-cobalt-strike|Cobalt Strike]] com injeção reflective.
- [[g0102-conti-group|Wizard Spider]] - operador do TrickBot/Ryuk, usa injeção de DLL como etapa de pós-comprometimento antes do deploy do ransomware.
## Software Associado
- [[s0154-cobalt-strike|Cobalt Strike]] - framework de C2 amplamente abusado; beacons usam reflective DLL injection nativamente para operar exclusivamente em memória.
- [[s1027-heyoka-backdoor|Heyoka Backdoor]] - backdoor que usa injeção de DLL para se manter oculto em processos do sistema durante exfiltração via DNS.
- [[s1018-saint-bot|Saint Bot]] - loader que injeta payloads de segundo estágio em processos legítimos do Windows como etapa de evasão.
- [[s0082-emissary|Emissary]] - trojan usado pelo Tropic Trooper com capacidade de injeção de DLL em processos de comunicação.
- [[s0125-remsec|Remsec]] - malware modular do Turla com módulos de injeção DLL para operação furtiva em redes de alto valor.
- [[s1066-darktortilla|DarkTortilla]] - loader .NET com injeção de DLL usado em campanhas direcionadas a organizações latinoamericanas, incluindo brasileiras.
- [[s0089-blackenergy|BlackEnergy]] - framework de ataque a infraestrutura crítica com módulos de injeção para persistência em sistemas SCADA/ICS.
- [[s0613-ps1|PS1]] - malware que combina PowerShell com injeção de DLL para execução fileless em ambientes corporativos.
- [[s0250-koadic|Koadic]] - framework de C2 open-source frequentemente usado por atores de espionagem para injeção pós-comprometimento.
- [[s0055-rarstone|RARSTONE]] - RAT com capacidade de injeção de DLL para evadir análise comportamental de soluções de endpoint.
---
*Fonte: [MITRE ATT&CK - T1055.001](https://attack.mitre.org/techniques/T1055/001)*