# DET0541 — Detection Strategy for /proc Memory Injection on Linux
## Descrição
Em sistemas Linux, o pseudo-sistema de arquivos `/proc` expõe interfaces para leitura e escrita na memória de processos em execução. Adversários abusam de `/proc/<PID>/mem` em conjunto com `/proc/<PID>/maps` para injetar código malicioso diretamente no espaço de endereços de um processo alvo sem utilizar chamadas de sistema de alto nível como `ptrace` — que são monitoradas por ferramentas de segurança. Esta técnica ([[t1055-process-injection|T1055 — Process Injection]]) é equivalente Linux do process hollowing/injection do Windows e é usada por malwares Linux como `Symbiote`, `BPFDoor` e implantes de APTs em servidores Linux de alto valor.
O acesso ao arquivo `/proc/<PID>/mem` requer privilégios root ou o mesmo UID do processo alvo, mas uma vez obtido, permite escrita arbitrária na memória do processo sem deixar arquivos em disco. A detecção é desafiadora porque `/proc` é um sistema de arquivos virtual — operações nele não geram eventos de arquivo em sistemas de audit baseados em inotify. O `auditd` com regras específicas para syscalls `open()` e `write()` em caminhos `/proc/*/mem` é a abordagem mais eficaz para detectar este padrão.
A correlação entre acesso a `/proc/<PID>/mem`, leitura prévia de `/proc/<PID>/maps` (para identificar regiões de memória mapeadas) e modificação de permissões de memória via `/proc/<PID>/mem` forma a cadeia comportamental completa de injeção. O uso de `process_vm_writev()` syscall (mais moderno e direto que `/proc/mem`) também deve ser monitorado via regras `auditd` para syscall número 311 (x86-64).
## Indicadores de Detecção
- Abertura de `/proc/<PID>/mem` com flag de escrita (`O_WRONLY`, `O_RDWR`) por processo diferente do processo alvo
- Leitura sequencial de `/proc/<PID>/maps` seguida de abertura de `/proc/<PID>/mem` pelo mesmo processo
- Syscall `process_vm_writev` (syscall 311 em x86-64) sendo executada por processo não-debugger
- Syscall `ptrace` com request `PTRACE_POKETEXT` ou `PTRACE_POKEDATA` por processo não-`gdb`/`strace`
- Criação de thread em processo remoto via `/proc/<PID>/mem` sem correspondente `fork()` ou `clone()`
- Mudança de permissão de região de memória (`/proc/<PID>/pagemap`) por processo externo
## Técnicas Relacionadas
- [[t1055-process-injection|T1055 — Process Injection]] — técnica principal coberta por esta estratégia
- [[t1055-008-ptrace-system-calls|T1055.008 — Ptrace System Calls]] — técnica relacionada de injeção via ptrace
- [[t1014-rootkit|T1014 — Rootkit]] — rootkits Linux frequentemente usam injeção de memória via /proc
- [[t1059-004-unix-shell|T1059.004 — Unix Shell]] — execução de comandos de injeção via shell
- [[t1562-impair-defenses|T1562 — Impair Defenses]] — desabilitação de auditd para mascarar injeção de memória
## Analytics Relacionadas
- [[an1494-analytic-1494|AN1494 — Analytic 1494]]
---
*Fonte: [MITRE ATT&CK — DET0541](https://attack.mitre.org/detectionstrategies/DET0541)*