# DC0010 - OS API Execution ## Descrição OS API Execution monitora chamadas diretas a APIs do sistema operacional, especialmente aquelas em nível mais baixo (syscalls e APIs nativas do Windows como `NtCreateProcess`, `NtAllocateVirtualMemory`, `NtWriteVirtualMemory`). Adversários abusam dessas APIs para contornar hooks de EDR que operam em nível de user-mode API, executar código injetado em outros processos, manipular tokens de segurança e realizar operações de credential dumping sem acionar assinaturas tradicionais. ### Pipeline de Detecção ```mermaid graph TB A["📥 Fonte de Dados<br/>ETW Kernel Providers<br/>EDR API Hooking"] --> B["🔄 Coleta<br/>CrowdStrike / SentinelOne<br/>Defender for Endpoint"] B --> C["📊 Normalização<br/>API name, caller process,<br/>target process, parameters"] C --> D["🔍 Correlação<br/>Sequência de APIs<br/>(alloc > write > thread)"] D --> E["⚠️ Regras de Detecção<br/>Injection chain,<br/>direct syscall bypass"] E --> F["🚨 Alerta<br/>SOC Tier 2/3 - Avançado"] F --> G["📋 Resposta<br/>Análise de malware +<br/>Threat hunting"] classDef source fill:#3498db,stroke:#2c3e50,color:#ecf0f1 classDef process fill:#2ecc71,stroke:#2c3e50,color:#ecf0f1 classDef alert fill:#e74c3c,stroke:#2c3e50,color:#ecf0f1 class A source class B,C,D process class E,F,G alert ``` ## Fonte de Dados Parent: [[ds0009-process|DS0009 - Process]] ## O Que Monitorar - Chamadas a APIs de alocação de memória em processos remotos (`VirtualAllocEx`, `NtAllocateVirtualMemory`) - Uso de `WriteProcessMemory` / `NtWriteVirtualMemory` em processos de terceiros - Chamadas a `CreateRemoteThread` / `NtCreateThreadEx` para injeção de threads - APIs de manipulação de token: `DuplicateToken`, `ImpersonateLoggedOnUser`, `SetThreadToken` - Chamadas diretas via syscall para bypassar hooks de EDR (Hell's Gate, Halo's Gate) - Uso de `MiniDumpWriteDump` para extrair credenciais da memória - Carregamento de DLLs em processos via `LoadLibraryEx` ou `LdrLoadDll` ## Técnicas Detectadas | Técnica | ID | Como Detectar | |---------|-----|---------------| | Native API | [[t1106-native-api\|T1106]] | Chamadas diretas a Nt* APIs fora do padrão normal | | Process Injection | [[t1055-process-injection\|T1055]] | Sequência: VirtualAllocEx > WriteProcessMemory > CreateRemoteThread | | Process Hollowing | [[t1055-process-injection\|T1055.012]] | NtUnmapViewOfSection seguido de NtWriteVirtualMemory | | Access Token Manipulation | [[t1134-access-token-manipulation\|T1134]] | Chamadas a APIs de impersonation e token duplication | | OS Credential Dumping | [[t1003-os-credential-dumping\|T1003]] | MiniDumpWriteDump, NtReadVirtualMemory em lsass | ## Implementação **API Monitoring via EDR:** CrowdStrike Falcon, SentinelOne e Microsoft Defender for Endpoint instrumentam chamadas de API em modo kernel para detecção sem hooks userland. **ETW (Event Tracing for Windows):** Monitorar provider `Microsoft-Windows-Kernel-Process` e `Microsoft-Windows-Kernel-Memory` para chamadas de API de baixo nível. **Ferramenta API Monitor:** Para ambientes de análise/sandbox, usar API Monitor para capturar todas as chamadas de API de processos suspeitos. **Regra de correlação:** ``` # Sequência clássica de injeção de processo VirtualAllocEx (MEM_COMMIT|PAGE_EXECUTE_READWRITE) -> WriteProcessMemory -> CreateRemoteThread ``` **Ferramentas:** CrowdStrike Falcon, SentinelOne, Microsoft Defender for Endpoint, Elastic Endpoint, Frida (análise dinâmica). ## Detecção KQL (Microsoft Sentinel / Defender) ```kql // Sequência de injeção de processo via APIs DeviceEvents | where ActionType in ("CreateRemoteThreadApiCall", "QueueUserApcRemoteApiCall", "SetThreadContextRemoteApiCall") | where InitiatingProcessFileName !in~ ("svchost.exe", "csrss.exe", "lsass.exe") | project Timestamp, DeviceName, ActionType, InitiatingProcessFileName, FileName, InitiatingProcessCommandLine | order by Timestamp desc ``` ```kql // Direct syscall evasion - processos sem import table normal DeviceImageLoadEvents | where FileName =~ "ntdll.dll" | where InitiatingProcessFileName !in~ ("svchost.exe", "services.exe", "csrss.exe") | summarize LoadCount = count() by InitiatingProcessFileName, DeviceName, bin(Timestamp, 1h) | where LoadCount > 10 ``` ## Contexto LATAM > [!latam] Relevância Regional > OS API Execution é o data component mais avançado e de menor adoção em SOCs brasileiros. Requer EDR com instrumentação de kernel-level, o que limita a cobertura a organizações com orçamento para soluções como CrowdStrike ou SentinelOne. Trojans bancários brasileiros (Grandoreiro, Guildma, Javali) utilizam extensivamente process injection via APIs nativas, tornando esta detecção crítica apesar da baixa adoção. > - Adoção em SOCs brasileiros: **muito baixo** > - Ferramentas comuns: CrowdStrike Falcon (em grandes bancos), Microsoft Defender for Endpoint (em empresas com E5), SentinelOne > - Desafios: requer EDR com telemetria de kernel (custo elevado para mercado brasileiro); analistas precisam de conhecimento avançado de Windows internals; técnicas de evasão como direct syscall (Hell's Gate) contornam a maioria dos EDRs disponíveis; sandbox analysis raramente utilizado fora de grandes instituições financeiras