# T1055.004 - Asynchronous Procedure Call
## Técnica Pai
Sub-técnica de [[t1055-process-injection|T1055 - Process Injection]], que abrange todas as formas de injeção de código malicioso no espaço de endereçamento de processos legítimos para evasão de defesas e possível elevação de privilégios.
## Descrição
Adversários podem injetar código malicioso em processos via a fila de *Asynchronous Procedure Calls* (APC) para contornar defesas baseadas em processos e, em alguns casos, elevar privilégios no sistema comprometido.
APC é um mecanismo legítimo do Windows que permite que funções sejam executadas de forma assíncrona no contexto de uma thread específica. Toda thread possui uma fila de APCs do usuário. As funções enfileiradas são executadas quando a thread entra em um **estado alertável** (*alertable state*) - que ocorre quando a thread chama funções como `SleepEx`, `WaitForSingleObjectEx`, `WaitForMultipleObjectsEx`, `MsgWaitForMultipleObjectsEx`, ou `SignalObjectAndWait` com o parâmetro `bAlertable` definido como `TRUE`.
A técnica abusa desse mecanismo enfileirando código malicioso na APC de uma thread de um processo legítimo já em execução. Quando a thread entra em estado alertável, o código do adversário é executado dentro do contexto daquele processo legítimo - herdando suas permissões, tokens de acesso e aparência nos logs de segurança.
Executar código no contexto de outro processo pode conceder acesso à memória do processo, recursos de sistema e rede, e possívelmente privilégios elevados. A execução via APC injection é particularmente furtiva porque o código malicioso aparece nos logs de segurança como atividade do processo hospedeiro legítimo, não do processo adversário original.
## Como Funciona
A injeção via APC clássica segue cinco passos:
1. **Identificar processo e thread-alvo:** O adversário localiza um processo legítimo em execução (ex.: `svchost.exe`, `explorer.exe`) e uma de suas threads que frequentemente entre em estado alertável.
2. **Abrir a thread:** `OpenThread` é chamado com permissão `THREAD_SET_CONTEXT` para obter um handle para a thread-alvo.
3. **Alocar e escrever o payload:** `VirtualAllocEx` aloca memória no processo-alvo e `WriteProcessMemory` escreve o shellcode ou DLL path nessa região.
4. **Enfileirar a APC:** `QueueUserAPC` é chamado com o handle da thread e o endereço da função a ser executada (ex.: ponteiro para `LoadLibraryA` com o caminho da DLL maliciosa, ou diretamente o shellcode).
5. **Aguardar execução:** Quando a thread-alvo entrar em estado alertável, a função enfileirada será executada automaticamente pelo kernel do Windows.
### Variante: Early Bird Injection
A variante *Early Bird* é considerada mais furtiva. O adversário cria um **novo processo suspenso** (com a flag `CREATE_SUSPENDED` em `CreateProcess`), escreve o payload na memória do processo antes que o ponto de entrada sejá executado - e portanto antes que hooks de antimalware sejam instalados -, e então enfileira uma APC via `QueueUserAPC`. O processo é retomado com `ResumeThread` e executa o payload imediatamente ao inicializar.
### Variante: AtomBombing
*AtomBombing* usa a tabela global de átomos do Windows para armazenar shellcode. O adversário escreve código malicioso em um átomo via `GlobalAddAtom`, instrui uma thread do processo-alvo a copiar o átomo para memória executável via `GlobalGetAtomName` através de uma APC, e então enfileira outra APC para executar o código copiado.
## Attack Flow
```mermaid
graph TB
A["Execução de Stager / Loader<br/>(ex: Bumblebee, IcedID)"] --> B["Identificar processo-alvo<br/>em estado alertável<br/>(svchost.exe, explorer.exe)"]
B --> C["Abrir thread<br/>OpenThread(THREAD_SET_CONTEXT)"]
C --> D{"Variante de Injeção"}
D --> E["APC Clássica<br/>VirtualAllocEx + WriteProcessMemory<br/>QueueUserAPC → LoadLibraryA"]
D --> F["Early Bird<br/>CreateProcess SUSPENDED<br/>Escrever payload pré-hook<br/>QueueUserAPC → ResumeThread"]
D --> G["AtomBombing<br/>GlobalAddAtom com shellcode<br/>APC para copiar e executar"]
E --> H["Thread entra em estado alertável<br/>SleepEx / WaitForSingleObjectEx"]
F --> H
G --> H
H --> I["Payload executado no contexto<br/>do processo legítimo"]
I --> J["Evasão de EDR<br/>C2 / Movimentação Lateral<br/>Elevação de Privilégios"]
```
## Exemplos de Uso
**FIN8 - Grupo de crime financeiro**
O [[g0061-fin8|FIN8]], grupo especializado em ataques a pontos de venda (POS) e instituições financeiras, utiliza APC injection em suas ferramentas de pós-comprometimento para injetar implantes em processos legítimos do Windows, tornando a detecção e o rastreamento forense mais difíceis durante operações contra o setor de varejo e financeiro.
**Bumblebee - Loader usado por múltiplos grupos**
O [[s1039-bumblebee|Bumblebee]] implementa *Early Bird APC injection* como mecanismo primário de carregamento de payloads de segunda fase. O loader cria processos suspensos de aplicações legítimas e injeta o shellcode antes que qualquer hook de segurança sejá estabelecido, tornando a detecção baseada em API hooking ineficaz.
**IcedID - Trojan bancário modular**
O [[s0483-icedid|IcedID]] usa APC injection para carregar módulos adicionais no contexto de processos do navegador, permitindo interceptação de tráfego bancário e captura de credenciais sem criar novos processos suspeitos.
**BADHATCH - Backdoor do FIN8**
O [[badhatch|BADHATCH]], backdoor sofisticado atribuído ao [[g0061-fin8|FIN8]], emprega APC injection combinada com [[t1055-012-process-hollowing|Process Hollowing]] para estabelecer persistência furtiva em ambientes corporativos de alto valor.
**Carberp - Trojan bancário**
O [[s0484-carberp|Carberp]], trojan bancário historicamente relevante que teve impacto significativo no Brasil, utilizava APC injection para injetar hooks em processos de navegadores e interceptar credenciais de internet banking.
**InvisiMole - Spyware de espionagem avançada**
O [[s0260-invisimole|InvisiMole]], associado a campanhas de espionagem contra alvos no Leste Europeu, usa APC injection como parte de sua cadeia de execução para manter presença furtiva em sistemas comprometidos.
## Detecção
A detecção de APC injection é desafiadora porque o código malicioso é executado dentro de processos legítimos. Estrategias eficazes combinam múltiplas fontes de dados:
- **Chamadas de API suspeitas:** Monitorar sequências de `OpenThread` + `VirtualAllocEx` + `WriteProcessMemory` + `QueueUserAPC` originadas de processos não-privilegiados ou inesperados.
- **ETW (Event Tracing for Windows):** O provider `Microsoft-Windows-Threat-Intelligence` (disponível via ELAM/PPL) registra APCs maliciosas com alta fidelidade.
- **Sysmon:** Events de criação de threads remotas (Event ID 8) e acessos a processos (Event ID 10) são indicadores valiosos.
- **Early Bird:** Detectar processos criados com `CREATE_SUSPENDED` seguidos imediatamente de `WriteProcessMemory` antes de `ResumeThread`.
- **Comportamento em memória:** Regiões de memória `RWX` (leitura-escrita-execução) em processos que normalmente não as possuem são fortemente indicativas.
```yaml
title: Possível APC Injection via QueueUserAPC em Thread Remota
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection_api_sequence:
# Detectar via ETW ou hooking: OpenThread → QueueUserAPC
EventID: 10
TargetImage|endswith:
- '\svchost.exe'
- '\explorer.exe'
- '\RuntimeBroker.exe'
- '\SearchHost.exe'
GrantedAccess|contains:
- '0x1fffff'
- '0x40'
filter_legitimate:
SourceImage|startswith:
- 'C:\Windows\System32\'
- 'C:\Windows\SysWOW64\'
SourceImage|endswith:
- '\MsMpEng.exe'
- '\SgrmBroker.exe'
condition: selection_api_sequence and not filter_legitimate
falsepositives:
- Softwares legítimos de monitoramento e automação
- Profilers de performance (Visual Studio, dotTrace)
level: high
tags:
- attack.defense_evasion
- attack.privilege_escalation
- attack.t1055.004
```
## Mitigação
| ID | Mitigação | Descrição |
|----|-----------|-----------|
| [[m1040-behavior-prevention-on-endpoint\|M1040]] | Behavior Prevention on Endpoint | Soluções EDR com capacidade de detecção comportamental em tempo de execução (CrowdStrike Falcon, Microsoft Defender for Endpoint com AMSI) podem identificar e bloquear sequências de APC injection antes que o payload sejá executado |
| - | Windows Defender Credential Guard | Protege processos críticos como `lsass.exe` de serem alvos de injeção |
| - | Proteção de Memória (ACG) | *Arbitrary Code Guard* (ACG) em processos protegidos impede a criação de regiões de memória executável via `VirtualAllocEx` remoto |
| - | ELAM / PPL (Protected Process Light) | Processos críticos do sistema com PPL ativado resistem a tentativas de `OpenThread` por processos não-privilegiados |
## Contexto Brasil/LATAM
APC Injection é uma das técnicas de [[t1055-process-injection|injeção de processo]] mais prevalentes em ataques contra o setor financeiro brasileiro - historicamente um dos mais visados do mundo. Trojans bancários com longa atuação no Brasil, como [[s0484-carberp|Carberp]] e famílias modernas derivadas, utilizam esta técnica para injetar hooks em processos de navegadores e interceptar sessões de internet banking.
Grupos de [[ransomware]] operando contra organizações brasileiras frequentemente utilizam loaders como [[s1039-bumblebee|Bumblebee]] e [[s0483-icedid|IcedID]] - que implementam *Early Bird APC injection* - como primeiro estágio após acesso inicial via phishing. O alto volume de campanhas de [[t1566-001-spearphishing-attachment|spearphishing]] direcionadas a empresas brasileiras torna esses loaders vetores frequentes na região.
Para equipes de segurança no Brasil, a detecção via ETW com o provider `Microsoft-Windows-Threat-Intelligence` é a abordagem mais eficaz, mas requer processos com *Antimalware Protection* ativo - configuração nem sempre presente em ambientes legados comuns no país.
Times de [[_playbooks|resposta a incidentes]] devem priorizar a análise de memória de processos como `svchost.exe` e navegadores em investigações de comprometimento, buscando regiões `RWX` anômalas como indicador primário de APC injection.
## Referências
- MITRE ATT&CK - T1055.004: Process Injection: Asynchronous Procedure Call
- Técnica pai: [[t1055-process-injection|T1055 - Process Injection]]
- Mitigação: [[m1040-behavior-prevention-on-endpoint|M1040 - Behavior Prevention on Endpoint]]
- Técnicas relacionadas: [[t1055-012-process-hollowing|T1055.012 - Process Hollowing]], [[t1055-002-portable-executable-injection|T1055.002 - PE Injection]]
- Atores associados: [[g0061-fin8|FIN8]]
- Malware: [[s1039-bumblebee|Bumblebee]], [[s0483-icedid|IcedID]], [[badhatch|BADHATCH]], [[s0484-carberp|Carberp]], [[s0260-invisimole|InvisiMole]], [[s1207-xloader|XLoader]]
*Fonte: MITRE ATT&CK - T1055.004*