# DET0091 — Detection Strategy for Dynamic API Resolution via Hash-Based Function Lookups
## Descrição
Esta estratégia detecta a resolução dinâmica de funções de API do Windows via hashing, técnica utilizada por malwares sofisticados para evitar importações estáticas detectáveis em tabelas IAT (Import Address Table). Em vez de importar `CreateProcess` diretamente, o malware percorre a lista de exports de DLLs carregadas calculando hashes dos nomes das funções até encontrar o hash alvo — tornando análise estática e detecção por assinatura muito mais difíceis.
Os artefatos de detecção incluem: código que itera pelo PEB (Process Environment Block) para percorrer módulos carregados, loops sobre a export table de `ntdll.dll` ou `kernel32.dll` calculando hashes com algoritmos simples (ROR13, djb2), e ausência de imports estáticos para APIs sensíveis em executáveis que claramente as utilizam em runtime. Esta técnica é característica de shellcode e loaders como [[s0154-cobalt-strike]] beacons, [[metasploit]] e malware custom de APTs.
A telemetria de EDR com visibilidade de memória pode detectar padrões de acesso ao PEB seguidos de chamadas a APIs que não constam na IAT do processo. YARA rules focando em loops de hashing com constantes conhecidas (ex: `0x6A4ABC5B` para ROR13 de `CreateRemoteThread`) são eficazes em análise estática e em memória. Grupos como [[g0096-apt41]] e desenvolvedores de crimeware avançado aplicam esta técnica rotineiramente.
## Indicadores de Detecção
- Acesso ao PEB (`fs:[0x30]`/`gs:[0x60]`) em código fora de módulos legítimos do sistema
- Presença de constantes de hash conhecidas em código executável (ROR13: `0x1F`, djb2: `0x1003F`)
- Execução de APIs críticas (`VirtualAlloc`, `CreateThread`, `WriteProcessMemory`) por processos sem imports correspondentes na IAT
- Loops de iteração sobre export tables de `ntdll.dll` ou `kernel32.dll` por código não-sistema
- Shellcode em memória com padrão de resolução de API: acesso a PEB → percurso de listas → comparação de hash
- Carregamento de DLLs via `LoadLibraryA` com hash calculado em vez de nome literal
## Técnicas Relacionadas
- [[t1027-obfuscated-files-or-information]] — Ofuscação via hashing de API
- [[t1620-reflective-code-loading]] — Carregamento reflexivo que frequentemente usa hashing
- [[t1055-process-injection]] — Injeção de processo usando APIs resolvidas dinâmicamente
- [[t1140-deobfuscate-decode]] — Fase de decodificação correlacionada
- [[t1059-command-and-scripting-interpreter]] — Execução posterior às APIs resolvidas
## Analytics Relacionadas
- [[an0250-analytic-0250|AN0250 — Analytic 0250]]
---
*Fonte: [MITRE ATT&CK — DET0091](https://attack.mitre.org/detectionstrategies/DET0091)*