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