# DET0382 — Detection Strategy for Process Hollowing on Windows
## Descrição
Process Hollowing (também conhecido como "RunPE" ou "process replacement") é uma técnica de injeção de processo onde o adversário cria um processo legítimo em estado suspenso (`CreateProcess` com `CREATE_SUSPENDED`), remove o código original da memória do processo via `NtUnmapViewOfSection` ou simplesmente sobrescrevendo com `WriteProcessMemory`, e injeta o payload malicioso no espaço de endereço esvaziado antes de retomar a execução. O resultado é um processo com o nome e assinatura de um executável legítimo (como `svchost.exe`, `explorer.exe`, `notepad.exe`) executando código malicioso arbitrário.
Essa técnica é extensivamente utilizada por [[s0154-cobalt-strike|Cobalt Strike]], [[Metasploit]], e RATs avançados como [[s0013-plugx|PlugX]] e [[s0262-quasarrat|QuasarRAT]] para evadir soluções de EDR e antivírus que confiam em listas de processos confiáveis. A sequência de chamadas de API é característica e detectável: `CreateProcess(SUSPENDED)` → `NtUnmapViewOfSection` (ou não) → `VirtualAllocEx` → `WriteProcessMemory` → `SetThreadContext` → `ResumeThread`. Ferramentas de detecção comportamental monitoram exatamente essa sequência.
A detecção foca em identificar a sequência de criação de processo suspenso seguida de modificação de memória e retomada de execução, análise de discrepâncias entre o módulo PE no disco e na memória do processo (image anomaly detection), e monitoramento de chamadas `NtUnmapViewOfSection` seguidas de `WriteProcessMemory` para o mesmo PID.
## Indicadores de Detecção
- `CreateProcess` com flag `CREATE_SUSPENDED` seguido de `WriteProcessMemory` para o processo criado
- Discrepância entre o hash do módulo PE em disco e o conteúdo da memória do processo correspondente
- `NtUnmapViewOfSection` ou `ZwUnmapViewOfSection` chamado logo após criação de processo suspenso
- Módulo PE carregado em memória sem entrada correspondente na lista de módulos carregados (PEB)
- Processo `svchost.exe`, `explorer.exe` ou similar com linha de comando incomum ou PAI inesperado
- Sequência: `VirtualAllocEx` + `WriteProcessMemory` + `SetThreadContext` + `ResumeThread` para mesmo PID
## Técnicas Relacionadas
- [[T1055012-process-hollowing|T1055.012 — Process Hollowing]]
- [[t1055-process-injection|T1055 — Process Injection]]
- [[T1036005-match-legitimate-name-or-location|T1036.005 — Match Legitimaté Name or Location]]
- [[t1027-obfuscated-files-or-information|T1027 — Obfuscated Files or Information]]
- [[t1562-001-disable-or-modify-tools|T1562.001 — Disable or Modify Tools]]
## Analytics Relacionadas
- [[an1076-analytic-1076|AN1076 — Analytic 1076]]
---
*Fonte: [MITRE ATT&CK — DET0382](https://attack.mitre.org/detectionstrategies/DET0382)*