monitor de injeção de processo para Windows. usa ETW (Event Tracing for Windows) combinado com varredura periódica de regiões de memória para detectar técnicas comuns de process injection em tempo real.
o nome vem do latim — larva significa "máscara" ou "fantasma". parece adequado pra uma coisa que fica de olho no que tá se escondendo.
varredura de memória (scan periódico):
- regiões
PAGE_EXECUTE_READWRITEsem arquivo mapeado (MEM_PRIVATE) — indicador clássico de shellcode ou reflective DLL loading - páginas executáveis anônimas em processos arbitrários
- módulos carregados de caminhos suspeitos (
\Temp\,\AppData\,\Downloads\, etc.)
via ETW (Microsoft-Windows-Kernel-Process):
- threads com
Win32StartAddressapontando pra memória privada executável — sinalizaCreateRemoteThreadcom shellcode
com flag -H:
- processo hollowing: compara campos críticos do PE header em memória vs arquivo em disco (
e_magic,e_lfanew,Machine)
larva.exe [opcoes]
-p <pid> foca num processo específico
-i <ms> intervalo entre scans (padrão: 5000ms)
-e desativa ETW, só varredura de memória
-H ativa detecção de hollowing (mais lento)
-o <arq> salva alertas em arquivo de log
-v verboso
precisa rodar como Administrador pra ter acesso completo à memória de outros processos e pra iniciar a sessão ETW.
mingw-w64:
make
dependências: psapi, tdh, advapi32 (já incluídas no MinGW-w64)
-
ETW via
Microsoft-Windows-Kernel-Processnão expõe o PID criador da thread — só o PID alvo. pra rastrear origem com precisão seria necessário o providerMicrosoft-Windows-Threat-Intelligence, que exige PPL ou driver de kernel. -
detecção de hollowing compara campos do PE header, não o conteúdo das seções. relocações e patches legítimos podem causar diferença nos headers — use
-Hcom cuidado em ambientes de produção. -
regiões RWX existem legitimamente em algumas JVMs e runtimes de linguagem dinâmica. filtre por processo com
-pse estiver monitorando um alvo específico.
- ETW Deep Dive — Matt Graeber
- Detecting Process Injection — endgame.com
- Windows Internals Part 1, capítulo 3 (processos e threads)