# 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]]