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