Engenharia reversa do Vidar Stealer: de strings de memória ofuscadas à injeção no processo do Chrome, execução de JS malicioso e sequestro de sessões ativas no Google e no Reddit.
A amostra do Vidar Stealer carregada no Binary Ninja exibe código fortemente ofuscado dentro da função main.vxormo. A análise revela que o malware depende de criptografia de strings, rotinas XOR personalizadas e montagem de memória em tempo de execução para ocultar seu verdadeiro comportamento. Os arrays de bytes com muitos \x00 (x00\x00\x00...) na visualização em pseudo-C indicam que fragmentos brutos do payload estão sendo construídos diretamente na memória.
Funções Ofuscadas: Nomes gerados aleatoriamente como main.vxormo, main.oqvmwusz e main.dzgsnuhm são usados para obscurecer a funcionalidade. Strings Ofuscadas: whatnthotsfalse... e cornbindtrue... são strings criptografadas que são resolvidas em tempo de execução. Rotina XOR Personalizada: O próprio nome da função vxormo sugere que um loop de descriptografia XOR personalizado está ativo. Construção de Payload em Memória: Arrays contendo bytes \x00, \x89, \x99, \x48 estão sendo gravados na memória usando _builtin_memcpy. O ponteiro uint8_t)rax mostra fragmentos brutos de shellcode/payload sendo montados.
Derrotando a Análise Estática: O uso de funções com nomes aleatórios e strings criptografadas significa que AVs baseados em assinaturas estáticas falharão ao identificar o payload. Execução em Memória (Fileless): O payload \x00 nunca é gravado em disco; ele é alocado e executado diretamente na memória (RWX), evadindo scanners de arquivos. Criptografia XOR Personalizada: Uma rotina XOR personalizada impede a extração simples de strings ou a correspondência de regras YARA. Ocultação de Dados: Os arrays massivos e ilegíveis (\x00\x00\x00\x01...) são provavelmente blocos de configuração criptografados (URLs de C2, módulos de captura) que são descriptografados apenas quando necessário.

Uma segunda visualização da amostra do Vidar Stealer no Binary Ninja revela uma função (main.obttcklrlfwpzvugbzqtn) dedicada ao reconhecimento do sistema e à limpeza antiforense. A função processa strings criptografadas e resolve nomes de APIs para apagar rastros de sua execução, visando especificamente caches DNS, logs de eventos e arquivos temporários de internet antes de liberar o payload final.
Resolução Ofuscada de APIs: A string ...DiednsQuery_WGGetIfEntryCancelIoExCreatePipe... é uma concatenação criptografada de chamadas WinAPI APIs de Limpeza Identificadas: DnsQuery_W / DnsFlushResolverCache – limpa o cache DNS para ocultar rastros da resolução de domínios C2. GetIfEntry – enumera interfaces de rede (verificando adaptadores de sandbox/virtuais). WinExec – executa dinamicamente utilitários de limpeza do sistema (por exemplo, cmd.exe /c del ...). Execução de Syscall/Script: Referências a dllws2_32.dll e /dev/stdin (redirecionamento de entrada padrão) indicam que o malware se prepara para interagir com os fluxos padrão ou a pilha de rede do sistema.
Antiforense: Limpar o cache DNS (DnsFlushResolverCache) e invocar rotinas de limpeza garante que logs de rede e artefatos locais sejam destruídos, dificultando a resposta a incidentes. Evasão de Sandbox: Consultar interfaces de rede (GetIfEntry) permite que o stealer detecte ambientes virtualizados (por exemplo, VMware, VirtualBox) e aborte a execução se uma sandbox for detectada Falsificação do Fluxo de Execução: Usar WinExec para limpeza significa que o malware não precisa importar estaticamente APIs de exclusão; ele delega o trabalho sujo ao SO. Interação Fileless: O redirecionamento de /dev/stdin e o uso de pipes (CreatePipe) permitem que o stealer passe dados roubados para um processo injetado ou um shell de comando sem tocar no disco.

A visualização de memória do Process Hacker do processo chrome.exe (PID 8944) confirma que o Vidar Stealer injetou seu payload diretamente no espaço de memória do navegador. A varredura de strings expõe múltiplos blocos de execução de threads, um artefato padrão de process hollowing ou injeção de thread remota. Ao injetar no Chrome, o stealer opera sob um processo confiável e de alta integridade para coletar silenciosamente cookies, credenciais salvas e tokens de sessão.
Threads Injetadas (Strings de Memória): THREAD_BROWSER_WATCHDOG / THREAD_GPU_WATCHDOG – watchdogs sequestrados para manter as threads injetadas ativas. THREAD_CACHE_BLOCKFILE – indica manipulação do cache do Chrome (provavelmente para extrair dados de sessão). THREAD_AUDIO_INPUTDEVICE / THREAD_GAMEPAD_POLLING – threads não essenciais reaproveitadas para mascarar atividade maliciosa. THREAD_WEBCRYPTO – altamente suspeito; a API de criptografia interna do Chrome é usada para descriptografar senhas e cookies salvos. THREAD_PROXYRESOLVER / THREAD_DATABASE – usados para interceptar tráfego de rede e acessar o banco de dados de credenciais local.
Roubo de Credenciais do Navegador: O hooking em THREAD_WEBCRYPTO e THREAD_DATABASE permite que o Vidar contorne a criptografia do Chrome e roube senhas e cookies salvos. Living off the Land: Ao injetar no chrome.exe, o malware se disfarça como tráfego legítimo do navegador, contornando facilmente firewalls e regras de rede de EDR. Process Hollowing: A presença de threads padrão do Chrome junto às injetadas significa que o malware provavelmente esvaziou uma thread legítima ou usou CreateRemoteThread. Sequestro de Sessão: THREAD_CACHE_BLOCKFILE e a extração de cookies permitem que o atacante roube sessões ativas (session hijacking) sem precisar da senha do usuário. Evasão: Soluções antivírus raramente escaneiam dentro do espaço de memória de um navegador assinado como o Chrome.

Um olhar mais aprofundado no espaço de memória injetado do chrome.exe (PID 8944) revela uma coleção de strings direcionadas especificamente a fluxos de autenticação do Google, sessões do Reddit e execução de JavaScript do navegador. A presença dessas strings confirma que o Vidar Stealer injeta JavaScript malicioso ou faz hooking em APIs do navegador para interceptar credenciais de login e tokens de sessão.