# T1055.002 - Portable Executable Injection > [!danger] Técnica Core de Evasão e Persistência > PE Injection é utilizada por frameworks C2 de ponta como [[brute-ratel-c4|Brute Ratel C4]] e [[s1229-havoc|Havoc]], por malware financeiro como [[g0008-carbanak|Carbanak]] e por grupos APT para executar código arbitrário dentro de processos legítimos - tornando a detecção baseada em nome de processo completamente ineficaz. ## Descrição **Portable Executable Injection** é uma sub-técnica de [[t1055-process-injection|T1055 - Process Injection]] que consiste em injetar um arquivo PE completo (`.exe` ou `.dll`) no espaço de endereçamento virtual de um processo remoto em execução, forçando sua execução sem que o arquivo precise tocar o disco. Diferente de outras formas de injeção (shellcode, DLL injection via `LoadLibrary`), a PE Injection opera com uma imagem PE completa - cabeçalhos, seções de código, dados e a tabela de importações - e é responsável por manualmente: 1. Alocar memória no processo-alvo 2. Copiar o PE para essa memória 3. Corrigir os **base relocations** (endereçamento relativo ao novo endereço base) 4. Resolver a **Import Address Table (IAT)** manualmente 5. Invocar o ponto de entrada do PE (ou uma função exportada específica) Esse processo, por não usar `LoadLibrary`, bypassa os ganchos (hooks) que EDRs colocam nessa função para detectar carregamento de módulos suspeitos. > **Técnica pai:** [[t1055-process-injection|T1055 - Process Injection]] --- ## Como Funciona ### Sequência de API Calls A cadeia de chamadas Win32 API mais comum para PE Injection é: | Etapa | API Win32 | Descrição | |-------|-----------|-----------| | 1. Abrir processo-alvo | `OpenProcess` | Obtém handle com `PROCESS_ALL_ACCESS` ou privilégios mínimos necessários | | 2. Alocar memória remota | `VirtualAllocEx` | Reserva e comita memória no espaço do processo-alvo (`MEM_COMMIT | MEM_RESERVE`, `PAGE_EXECUTE_READWRITE`) | | 3. Escrever o PE | `WriteProcessMemory` | Copia cabeçalhos e seções do PE na memória alocada | | 4. Corrigir relocations | Lógica manual | Itera pela tabela de base relocations e ajusta endereços absolutos para o novo endereço base | | 5. Resolver IAT | Lógica manual | Chama `LoadLibrary`/`GetProcAddress` no contexto local e escreve os endereços no processo-alvo | | 6. Executar | `CreateRemoteThread` | Cria thread no processo-alvo apontando para o entry point do PE injetado | ### Variantes Técnicas | Variante | Característica | Detecção | |---------|---------------|---------| | Injeção direta com `CreateRemoteThread` | Mais comum, mais detectável | Moderada | | Injeção via `NtCreateThreadEx` | Bypassa hooks em `CreateRemoteThread` | Difícil | | Injeção via APC (Asynchronous Procedure Call) | Usa `QueueUserAPC` - execução diferida | Difícil | | `Process Hollowing` (relacionado) | Cria processo suspenso e substitui memória | Difícil | | Reflexive PE Injection | O próprio PE resolve sua relocations/IAT - sem dependência de código externo | Muito difícil | ### Processos-Alvo Comuns Adversários tipicamente selecionam processos que: - São confiáveis pelo SO e por EDRs: `svchost.exe`, `explorer.exe`, `lsass.exe`, `notepad.exe` - Têm acesso legítimo à rede: `iexplore.exe`, `chrome.exe`, `firefox.exe`, `svchost.exe` - Permanecem em execução continuamente: serviços do Windows --- ## Attack Flow ```mermaid graph TB A["💣 Payload Inicial<br/>(Dropper / Stager / Documento Malicioso)"] --> B["🔍 Enumeração de Processos<br/>(CreateToolhelp32Snapshot / NtQuerySystemInformation)"] B --> C["🎯 Seleção do Processo-Alvo<br/>(svchost.exe / explorer.exe / chrome.exe)"] C --> D["🔓 OpenProcess<br/>(PROCESS_ALL_ACCESS)"] D --> E["📦 VirtualAllocEx<br/>(Alocar memória RWX no processo-alvo)"] E --> F["✍️ WriteProcessMemory<br/>(Copiar PE headers + seções)"] F --> G["🔧 Fixup Relocations<br/>(Ajuste de endereços base)"] G --> H["📋 Resolver IAT Manualmente<br/>(LoadLibrary + GetProcAddress)"] H --> I["🚀 CreateRemoteThread / NtCreateThreadEx<br/>(Execução no EntryPoint do PE)"] I --> J["🏃 Execução Mascarada<br/>(Código malicioso roda como svchost.exe)"] J --> K["📡 Comúnicação C2<br/>(Tráfego parece legítimo do processo host)"] K --> L["🏠 Persistência<br/>(Scheduled Task / Service / Registry Run)"] ``` --- ## Exemplos de Uso ### Threat Actors #### [[g0106-rocke|Rocke]] - Cryptominer com PE Injection O grupo Rocke, focado em cryptomining, utiliza PE Injection para injetar mineradores de criptomoeda (Monero) em processos legítimos como `apache2`, `nginx` e processos de sistema em Linux e Windows. Isso permite que o minerador opere sob o contexto de um processo confiável, dificultando a detecção por ferramentas de monitoramento de recursos que associam uso de CPU ao nome do processo. #### [[g0078-gorgon-group|Gorgon Group]] - Espionagem e Criminalidade O Gorgon Group usou PE Injection como parte de sua cadeia de ataque para implantar RATs como [[s0385-njrat|njRAT]] e [[s0198-netwire|NetWire]] em processos de sistema, combinando a técnica com [[t1566-002-spearphishing-link|spearphishing attachment]] via documentos Office maliciosos. ### Software Associado | Ferramenta/Malware | Uso de PE Injection | Contexto | |-------------------|-------------------|---------| | [[brute-ratel-c4\|Brute Ratel C4]] | Reflexive PE Injection nativa | Framework C2 adversarial (alternativa ao Cobalt Strike) | | [[s0260-invisimole\|InvisiMole]] | Injeção em processos legítimos para espionagem | APT de espionagem - foco Europa/LATAM | | [[s1229-havoc\|Havoc]] | PE Injection como módulo de evasão | Framework C2 open-source | | [[g0008-carbanak\|Carbanak]] | Injeção em processos bancários | Grupo FIN7 / ataques a bancos | | [[s0681-lizar\|Lizar]] | Modular - PE Injection para plugins | Grupo TA505 | | [[s1138-gootloader\|Gootloader]] | Injeção de segunda fase | SEO poisoning + PE injection | | [[greyenergy\|GreyEnergy]] | Injeção em processos ICS/SCADA | Ataque a infraestrutura crítica (Ucrânia) | | [[pikabot\|Pikabot]] | Core Injection Module | Substituto do QakBot como loader | | [[s0330-zeus-panda\|Zeus Panda]] | Injeção em browsers para hooking | Banking trojan - Brasil/LATAM | | [[s1158-dustpan\|DUSTPAN]] | Shellcode loader com PE Injection | APT41 - espionagem | --- ## Detecção ### Indicadores Comportamentais | Indicador | Descrição | Nível | |----------|-----------|-------| | `VirtualAllocEx` + `WriteProcessMemory` + `CreateRemoteThread` em sequência | Triade clássica de injeção - processo abre outro processo e aloca/escreve/executa memória | Crítico | | Alocação de memória `PAGE_EXECUTE_READWRITE` em processo remoto | Permissões RWX em memória remota são incomuns em código legítimo | Alto | | Thread criada em processo sem module correspondente | `CreateRemoteThread` aponta para endereço não mapeado a nenhum módulo carregado | Alto | | PE magic bytes (`MZ`, `PE\x00\x00`) escritos via `WriteProcessMemory` | Confirma injeção de PE completo, não apenas shellcode | Alto | | Processo sem imports de rede fazendo tráfego de saída | Ex: `notepad.exe` estabelecendo conexão TCP - resultado de injeção de C2 | Médio-Alto | ### Regra Sigma ```yaml title: Portable Executable Injection - Remote Memory Allocation + Thread Creation id: a7b3c2d4-5e6f-4a8b-9c1d-2e3f4a5b6c7d status: experimental description: > Detecta a tríade de API calls associada a PE Injection: VirtualAllocEx em processo remoto seguido de WriteProcessMemory e CreateRemoteThread / NtCreateThreadEx. Correlaciona eventos de processo para identificar injeção cross-process. references: - https://attack.mitre.org/techniques/T1055/002/ - https://www.elastic.co/security-labs/linux-process-injection-with-gdb author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.privilege_escalation - attack.t1055.002 logsource: category: process_access product: windows detection: selection_inject: GrantedAccess|contains: - '0x1F0FFF' - '0x1F1FFF' - '0x143A' - '0x40' CallTrace|contains: - 'VirtualAllocEx' - 'WriteProcessMemory' filter_legitimate: SourceImage|contains: - '\Windows\System32\csrss.exe' - '\Windows\System32\werfault.exe' condition: selection_inject and not filter_legitimate falsepositives: - Debuggers legítimos (WinDbg, x64dbg) - Ferramentas de instrumentação (Frida, DynamoRIO) - Alguns instaladores de software complexos level: high ``` > [!tip] Detecção com ETW > O **Event Tracing for Windows (ETW)** via providers `Microsoft-Windows-Kernel-Process` e `Microsoft-Windows-Threat-Intelligence` (ETWTI) fornece visibilidade em nível de kernel sobre alocações de memória remota e criação de threads - muito mais eficaz que API hooking em userland, que pode ser contornado via syscalls diretas. --- ## Mitigação | ID | Mitigação | Implementação | Efetividade | |----|-----------|--------------|-------------| | [[m1040-behavior-prevention-on-endpoint\|M1040 - Behavior Prevention on Endpoint]] | EDR com análise comportamental em tempo real (CrowdStrike Falcon, Microsoft Defender for Endpoint, SentinelOne) | Configurar políticas de proteção ativa (não apenas detecção) | Alta | | Credential Guard / Protected Processes | Marcar processos críticos como `PP` ou `PPL` (Protected Process Light) - impede `OpenProcess` por processos não-protegidos | `RunAsPPL` em LSASS via registry | Alta (para processos protegidos) | | Attack Surface Reduction (ASR) | Regras ASR do Microsoft Defender bloqueiam injeção via Office e outras origens comuns | GPO: `Block process creations originating from PSExec and WMI commands` | Média | | Arbitrary Code Guard (ACG) | Impede que processos modifiquem permissões de memória executável existente ou criem nova memória executável | `SetProcessMitigationPolicy` com `ProcessDynamicCodePolicy` | Alta (quando aplicável) | | Control Flow Guard (CFG) | Mitiga exploração de ponteiros de função corrompidos na IAT resolvida manualmente | Compilação com `/guard:cf` | Média | --- ## Contexto Brasil/LATAM ### Uso em Malware Financeiro Regional PE Injection é uma técnica central no ecossistema de malware bancário brasileiro, que é o mais ativo e sofisticado da América Latina. Famílias como [[s0330-zeus-panda|Zeus Panda]], [[s0531-grandoreiro|Grandoreiro]] e [[s0528-javali|Javali]] utilizam variantes de PE Injection para: - Injetar hooks em browsers (`chrome.exe`, `iexplore.exe`, `firefox.exe`) para interceptar credenciais bancárias - Executar [[t1185-browser-session-hijacking|Browser Session Hijacking]] em portais de internet banking - Evadir soluções de segurança instaladas por bancos brasileiros nos endpoints dos clientes ### Ataque a Infraestrutura Crítica O malware [[greyenergy|GreyEnergy]], atribuído ao grupo Sandworm (GRU), utilizou PE Injection em ataques a sistemas SCADA e ICS - uma ameaça crescente para o setor de energia e utilities no Brasil, dado o avanço da digitalização do setor elétrico nacional (ANEEL, ONS). ### Grupos Regionais - **Gorgon Group** tem histórico de campanhas direcionadas ao Brasil e Argentina com uso documentado de PE Injection - **Grupos de ransomware** operando na LATAM (LockBit, BlackCat/ALPHV) utilizam PE Injection como parte dos loaders usados no estágio de pré-ransomware (ex: [[pikabot|Pikabot]], [[s1138-gootloader|Gootloader]]) > [!note] Impacto em SOCs Brasileiros > Muitos SOCs brasileiros ainda dependem de soluções AV tradicionais com detecção baseada em assinatura. PE Injection, especialmente na variante reflexiva, bypassa completamente essas soluções. A migração para EDRs com análise comportamental baseada em telemetria ETW é a principal recomendação. --- ## Referências - [MITRE ATT&CK - T1055.002](https://attack.mitre.org/techniques/T1055/002/) - [Process Injection Techniques - Elastic Security Labs](https://www.elastic.co/security-labs/linux-process-injection-with-gdb) - [Ten Process Injection Techniques - Odzhan](https://modexp.wordpress.com/2018/08/04/process-injection-self-injection/) - [Brute Ratel C4 - Analysis - Palo Alto Unit 42](https://unit42.paloaltonetworks.com/brute-ratel-c4-tool/) - [Havoc C2 Framework Analysis](https://research.checkpoint.com/2023/havoc-across-the-cybercrime-landscape/) **Relacionado:** [[t1055-process-injection|T1055 - Process Injection]] · [[t1055-001-dll-injection|T1055.001 - DLL Injection]] · [[t1055-012-process-hollowing|T1055.012 - Process Hollowing]] · [[brute-ratel-c4|Brute Ratel C4]] · [[g0008-carbanak|Carbanak]] · [[pikabot|Pikabot]] · [[s1138-gootloader|Gootloader]] · [[g0106-rocke|Rocke]] · [[g0078-gorgon-group|Gorgon Group]] · [[m1040-behavior-prevention-on-endpoint|M1040 - Behavior Prevention on Endpoint]]