# DET0529 — Behavioral Detection of Native API Invocation via Unusual DLL Loads and Direct Syscalls
## Descrição
A invocação direta de APIs nativas do Windows (syscalls) é uma técnica avançada de evasão ([[t1106-native-api|T1106 — Native API]]) onde adversários chamam funções do kernel Windows diretamente via syscall instruction, contornando hooks de monitoramento instalados por produtos de segurança na `ntdll.dll`. Ferramentas como `SysWhispers`, `Hell's Gaté` e `Halo's Gaté` automatizam a geração de syscall stubs que resolvem dinâmicamente os números de syscall em tempo de execução, tornando a detecção baseada em IAT hooking ineficaz. Implantes avançados de APTs e frameworks C2 modernos (Cobalt Strike com malleable profiles, Brute Ratel C4) utilizam extensivamente direct syscalls.
A detecção de DLL loads incomuns foca em processos que carregam `ntdll.dll` de memória não-mapeada ou que executam syscalls sem passar pelo código legítimo de `ntdll.dll`. Técnicas como `indirect syscalls` e `module stomping` tentam disfarçar a origem da chamada, mas ainda deixam artefatos detectáveis: acesso à estrutura PEB para resolução manual de módulos, leitura de `ntdll.dll` do disco para obter números de syscall frescos, ou execução de código em regiões de memória RWX não associadas a módulos conhecidos.
O monitoramento via ETW (Event Tracing for Windows) com providers como `Microsoft-Windows-Threat-Intelligence` e `Microsoft-Windows-Security-Auditing` provê visibilidade sobre chamadas de sistema suspeitas. Ferramentas de EDR com telemetria de kernel são fundamentais para detectar este padrão — soluções baseadas apenas em user-mode hooks são significativamente mais fáceis de contornar por adversários sofisticados.
## Indicadores de Detecção
- Processo com módulo `ntdll.dll` carregado de endereço de memória diferente do arquivo mapeado do disco
- Execução de instrução `syscall` originada de região de memória não associada a módulo carregado (unbacked memory)
- Leitura de `ntdll.dll` do disco por processo que já o tem mapeado (técnica de refresh para obter syscall numbers não-hooked)
- Alocação de memória RWX (`VirtualAlloc` com PAGE_EXECUTE_READWRITE) sem subsequente proteção de memória
- ETW event de `NtAllocateVirtualMemory` ou `NtCreateThreadEx` sem correspondente call stack em módulo legítimo
- Carregamento de DLL de path não-padrão por processo que normalmente não carrega DLLs adicionais
## Técnicas Relacionadas
- [[t1106-native-api|T1106 — Native API]] — técnica principal coberta por esta estratégia
- [[t1055-process-injection|T1055 — Process Injection]] — uso frequente de direct syscalls para injeção
- [[t1562-impair-defenses|T1562 — Impair Defenses]] — contorno de EDR hooks como objetivo da técnica
- [[t1027-obfuscated-files-or-information|T1027 — Obfuscated Files or Information]] — ofuscação de shellcode que usa direct syscalls
- [[t1574-hijack-execution-flow|T1574 — Hijack Execution Flow]] — técnicas relacionadas de desvio de fluxo de execução
## Analytics Relacionadas
- [[an1465-analytic-1465|AN1465 — Analytic 1465]]
- [[an1466-analytic-1466|AN1466 — Analytic 1466]]
- [[an1467-analytic-1467|AN1467 — Analytic 1467]]
---
*Fonte: [MITRE ATT&CK — DET0529](https://attack.mitre.org/detectionstrategies/DET0529)*