Engenharia reversa do Amadey Loader com x64dbg: resolução dinâmica de API, escalonamento de privilégios de token, hooks de keylogger, captura de área de transferência e abuso de linha de comando para preparação de stealer.
A amostra do Amadey Loader foi carregada no x64dbg. No ponto de entrada, o loader realiza resolução dinâmica de APIs por meio de thunks jmp apontando para GetProcAddressForCaller e VirtualAlloc. A visualização de dump abaixo revela strings descriptografadas e nomes de APIs usados pelas rotinas de keylogger e persistência do loader.
jmp qword ptr ds:[] – consulta dinâmica de API, evita importações estáticas. jmp qword ptr ds:[] – aloca memória RWX para payload/shellcode desempacotado. SetWindowsHookExW / CallNextHookEx / UnhookWindowsHookEx – cadeia de hooks do keylogger (WH_KEYBOARD_LL) GetForegroundWindow / GetWindowTextW / GetWindowThreadProcessId – captura o título da janela ativa a cada tecla pressionada. GetKeyState / GetAsyncKeyState – polling do estado bruto das teclas. GetUserObjectInformationW / wndProc /UnregisterClassW – tratamento da classe de janela para a janela oculta do keylogger. GetTickCount / timeGetTime / GetSystemTimeAsFileTime – rotinas de temporização usadas para intervalos de beacon e bufferização de teclas.
Resolução Dinâmica de API: GetProcAddressForCaller contorna a análise de importações estáticas, derrotando a detecção baseada em assinaturas. Confirmação do Keylogger: A cadeia SetWindowsHookExW + CallNextHookEx é o clássico hook de teclado de baixo nível usado para interceptar cada tecla em todo o sistema. Registro com Contexto: GetForegroundWindow + GetWindowTextW capturam o título da janela ativa, dando contexto a cada tecla (nomes de usuário, senhas, conversas). Alocação RWX: VirtualAlloc é usado para desempacotar e executar o payload do próximo estágio em memória, sem deixar artefato em disco. Correspondência com o Comportamento do Amadey: Este conjunto de APIs é consistente com o comportamento conhecido do Amadey de roubo de credenciais e keylogging.

Um olhar mais atento na mesma sessão do x64dbg revela que o Amadey Loader resolve um segundo lote de APIs do Windows focado em escalação de privilégios, manipulação de tokens e enumeração de processos. O thunk VirtualAlloc no topo da desmontagem é usado para alocar memória para a tabela de APIs resolvidas, enquanto a visualização de dump abaixo expõe a intenção do loader de escalar para acesso em nível SYSTEM antes de executar seu payload.
OpenProcessToken / DuplicateTokenEx / ImpersonateLoggedOnUser – duplicação de token e impersonação para escalação de privilégios. LookupPrivilegeValueW / AdjustTokenPrivileges – habilita SeDebugPrivilege e outros privilégios sensíveis. GetTokenInformation / SetTokenInformation – lê e modifica o token do processo atual. OpenProcess / Process32FirstW / Process32NextW – enumeração de processos para localizar alvos de alto valor (por exemplo, lsass.exe, processos de AV). CreateFileW / CreateToolhelp32Snapshot / Module32FirstW – usados para operações de arquivo e enumeração de módulos. RegCreateKeyExW / RegSetValueExW / Persistência: RegCreateKeyExW + RegSetValueExW sob chaves Run permitem que o Amadey inicie automaticamente após a reinicialização. GetProcAddress / LoadLibraryW / GetModuleHandleW – resolução dinâmica de API. CreateProcessW / ShellExecuteExW / WinExec – lança payloads do próximo estágio. IsDebuggerPresent / CheckRemoteDebuggerPresent – verificações anti-depuração.
Impersonação de Token: DuplicateTokenEx + ImpersonateLoggedOnUser permitem que o Amadey seja executado com privilégios mais elevados (frequentemente SYSTEM), conferindo controle total sobre o sistema. Abuso de SeDebugPrivilege: LookupPrivilegeValueW + AdjustTokenPrivileges habilitam o SeDebugPrivilege, que é necessário para injetar em processos protegidos como o lsass.exe. Direcionamento de Processos: Process32FirstW / Process32NextW são usados para enumerar e selecionar alvos de alto valor (AV, navegadores, armazenamentos de credenciais). Anti-Depuração: IsDebuggerPresent + CheckRemoteDebuggerPresent detectam ativamente ambientes de análise e encerram ou alteram o comportamento. Execução em Cadeia: CreateProcessW / ShellExecuteExW confirmam o papel do Amadey como loader — ele libera e executa o payload da próxima etapa (por exemplo, Lumma Stealer, Vidar ou ransomware).

Uma terceira visão da mesma sessão do x64dbg mostra o Amadey Loader resolvendo APIs para E/S de arquivos, gerenciamento de timers e manipulação de entrada/teclado. Juntamente com as strings do dump, isso aponta para um payload que se comporta como um híbrido de keylogger/stealer — capturando entrada, gravando logs e limpando timers para reduzir sua pegada.
jmp qword ptr ds:[] – grava dados capturados / payload liberado no disco. jmp qword ptr ds:[] – gravação assíncrona de arquivo (usada para descarga furtiva de logs). jmp qword ptr ds:[] – operação de gravação dispersa (usada para liberações de payload fragmentadas). jmp qword ptr ds:[] – remove filas de timers para apagar rastros baseados em temporização. SetSystemTime / SetLocalTime – potencial manipulação de carimbos de data/hora. SetWindowsHookEx / CallNextHookEx / UnhookWindowsHookEx – cadeia de hooks de teclado. GetForegroundWindow / GetWindowTextW / GetClassNameW – captura o contexto da janela ativa. GetSystemInfo / EnumWindows / EnumChildWindows – enumeração do ambiente.
Confirmação de Keylogger (Reforçada): A combinação de SetWindowsHookEx, CallNextHookEx, ToUnicodeEx e GetForegroundWindow é uma implementação clássica de keylogger que registra tanto as teclas digitadas quanto a janela em que foram digitadas. Comportamento de Stealer: WriteFile + WriteFileEx + WriteFileGather indicam que os dados capturados (teclas digitadas, credenciais) são gravados no disco em blocos fragmentados e assíncronos para evitar detecção. Limpeza Anti-Forense: DeleteTimerQueue e SetSystemTime ajudam o loader a apagar seus próprios artefatos de temporização e potencialmente modificar carimbos de data/hora de arquivos. Entrada Sintética: SendInput + RegisterHotKey sugerem que o payload também pode injetar teclas — útil para persistência ou para acionar ações remotamente. Padrão de Payload do Amadey: Este conjunto de APIs confirma que o loader está se preparando para implantar um payload de keylogger/stealer (comumente Vidar, Lumma ou similar).
