# DET0100 — Behavioral Detection of Asynchronous Procedure Call (APC) Injection via Remote Thread Queuing ## Descrição Esta estratégia detecta injeção de código via APC (Asynchronous Procedure Call), técnica que coloca código malicioso na fila de execução de uma thread de processo legítimo sem criar uma nova thread remotamente. O fluxo típico é: `OpenProcess` → `VirtualAllocEx` → `WriteProcessMemory` → `QueueUserAPC` (ou `NtQueueApcThread`), resultando na execução do payload quando a thread alvo entra em estado alertable (esperando I/O ou via `SleepEx`/`WaitForSingleObjectEx`). A telemetria EDR é essencial para esta detecção, pois requer visibilidade de chamadas de API em nível de kernel: sequência de `OpenProcess` com acesso `PROCESS_VM_WRITE | PROCESS_VM_OPERATION` sobre um processo alvo, seguida de `WriteProcessMemory` e `QueueUserAPC` ao mesmo PID. O acesso de memória cross-processo (processo A escrevendo no espaço de processo B) é o discriminador primário. Sysmon Event ID 8 (CreateRemoteThread) não captura APC, tornando monitoramento de API calls via ETW necessário. A variante "Early Bird APC Injection" injeta código antes da inicialização do processo alvo (via `CREATE_SUSPENDED`), tornando detecção ainda mais difícil. [[s0154-cobalt-strike]] com perfis de malleable C2 e loaders customizados de [[g0016-apt29]] utilizam APC injection extensivamente. A detecção via análise comportamental de processo que realiza escrita cross-processo seguida de comportamentos de C2 é mais eficaz que detecção por assinatura. ## Indicadores de Detecção - Sequência `OpenProcess(PROCESS_VM_WRITE)` → `VirtualAllocEx` → `WriteProcessMemory` → `QueueUserAPC` para mesmo PID alvo - Processo alocando memória em outro processo com proteção `PAGE_EXECUTE_READWRITE` - `NtQueueApcThread` chamado cross-processo por processo em diretório temporário ou não-sistema - Threads em estado alertable em processos legítimos (`svchost`, `explorer`, `notepad`) executando código fora dos módulos carregados - Processo criado com `CREATE_SUSPENDED` seguido de `WriteProcessMemory` antes de `ResumeThread` - Comportamento de rede (beaconing, DNS periódico) originado de processo tipicamente sem conectividade (`notepad.exe`, `calc.exe`) ## Técnicas Relacionadas - [[t1055004-process-injection-asynchronous-procedure-call]] — Técnica principal - [[t1055-process-injection]] — Categoria pai de process injection - [[t1055002-process-injection-portable-executable-injection]] — Técnica relacionada de PE injection - [[t1055012-process-injection-process-hollowing]] — Process hollowing como alternativa - [[t1134-access-token-manipulation]] — Técnica frequentemente combinada pós-injeção ## Analytics Relacionadas - [[an0277-analytic-0277|AN0277 — Analytic 0277]] --- *Fonte: [MITRE ATT&CK — DET0100](https://attack.mitre.org/detectionstrategies/DET0100)*