
Campanha com contas comprometidas no YouTube distribui um carregador JavaScript empacotado com nexe, contorna análise automatizada e usa Kidkadi para injeção PE em memória por meio de Vectored Exception Handling.
| Componente | GachiLoader, carregador JavaScript baseado em Node.js, e Kidkadi, módulo nativo .node usado como segundo estágio em parte das amostras. |
| Vetor | Vídeos publicados por contas comprometidas no YouTube induzem usuários a baixar arquivos de hospedagem externa, normalmente anunciados como cheats de jogos ou software crackeado, com senha no arquivo e instruções para desativar o Windows Defender. |
| Impacto | Execução de payloads adicionais, desativação parcial de controles do Defender, coleta de informações do host, comunicação com C2 e entrega do infostealer Rhadamanthys protegido por VMProtect ou Themida. |
| Prioridade | Remover conteúdos e contas abusadas, bloquear downloads associados, caçar uso anômalo de Node.js empacotado, revisar exclusões do Defender e coletar amostras em memória antes da limpeza. |
| Versões | Não há versões de produto afetadas; a exposição depende da execução voluntária do pacote malicioso pelo usuário em Windows. |
| Artefatos | Executáveis grandes empacotados com nexe, arquivo mutex .lock em %TEMP%, módulo kidkadi.node, comandos net session, taskkill /F /IM SecHealthUI.exe e Add-MpPreference -ExclusionPath. |
| Mitigação | Impedir execução de pacotes não confiáveis, monitorar alterações em exclusões do Defender, bloquear criação e carregamento suspeito de módulos .node em %TEMP% e investigar requisições com cabeçalho X-Secret. |
A campanha distribui GachiLoader, um malware JavaScript de Node.js empacotado como executável autônomo para Windows. O fluxo começa fora do endpoint, com contas comprometidas no YouTube publicando vídeos que promovem cheats de jogos e software crackeado. As descrições direcionam o usuário para plataformas externas de hospedagem, fornecem senha para o arquivo compactado e incluem instruções que favorecem a execução do malware, como a desativação do Windows Defender. Foram observados mais de cem vídeos, cerca de 220 mil visualizações, 39 contas comprometidas e atividade iniciada em 22 de dezembro de 2024, indicando uma operação mantida por meses e capaz de repor conteúdo quando contas ou vídeos são removidos.
O carregador finaliza a cadeia com Rhadamanthys em amostras monitoradas, mas seu valor técnico está no modo como reduz a visibilidade da execução intermediária. O JavaScript é ofuscado e embutido em executáveis criados com nexe, que incluem o runtime do Node.js e podem ter entre 60 MB e 90 MB. Esse tamanho não é necessariamente suspeito para a vítima, porque o pacote se apresenta como instalador ou aplicação completa. Em parte das amostras, GachiLoader baixa um payload de C2; em outra variante, ele carrega um segundo estágio nativo chamado Kidkadi, salvo como .node, que executa uma técnica de injeção PE em memória baseada em Vectored Exception Handling.
A técnica associada ao Kidkadi foi chamada de Vectored Overloading e se diferencia de carregadores reflexivos mais comuns porque manipula o fluxo do carregador do Windows durante chamadas como LoadLibrary, NtOpenSection, NtMapViewOfSection e NtClose. O malware prepara uma seção SEC_IMAGE a partir de wmp.dll, sobrescreve essa visão com o PE malicioso, ajusta cabeçalhos quando o payload não é DLL e usa breakpoints de hardware tratados por um VEH para trocar handles e valores de saída. O resultado é a aparência de carregamento de um módulo legítimo enquanto a seção efetivamente mapeada contém o payload malicioso.
Após a execução inicial, GachiLoader aplica verificações antianálise e anti-VM antes de expor sua funcionalidade maliciosa. O script JavaScript executa comandos PowerShell e consultas via WMI para enumerar recursos e características do sistema, buscando sinais de sandbox, máquina virtual ou ambiente de análise. Quando essas verificações indicam um ambiente não desejado, o programa entra em um loop de requisições HTTP GET para domínios benignos, incluindo linkedin.com, grok.com, whatsapp.com e twitter.com. Esse comportamento não entrega necessariamente a carga útil, mas gera tráfego aparentemente comum e dificulta a classificação por sandboxes que dependem de execução curta.
O carregador também evita múltiplas execuções em janela curta por meio de um arquivo mutex com nome aleatório por amostra e extensão .lock criado em %TEMP%. Se o arquivo já existir ou tiver sido modificado nos últimos cinco minutos, a execução termina. Quando a amostra decide continuar, ela verifica privilégio administrativo com net session. A falha do comando é tratada como ausência de elevação, e o malware tenta reiniciar o processo com powershell -WindowStyle Hidden -Command "Start-Process cmd.exe -Verb RunAs -WindowStyle Hidden -ArgumentList '/c \" \"'". Esse fluxo aciona UAC, mas o contexto de falso instalador aumenta a chance de aceitação pelo usuário.
Em seguida, a amostra tenta degradar a proteção local. O processo SecHealthUI.exe, associado à interface do Windows Security, é encerrado com taskkill /F /IM SecHealthUI.exe, e exclusões são adicionadas ao Microsoft Defender por meio de Add-MpPreference -ExclusionPath. Também foi observada uma exclusão para extensão .sys com Add-MpPreference -ExclusionExtension '.sys', embora as amostras analisadas não tenham gravado drivers .sys. Esse detalhe é importante para detecção porque a alteração de exclusões do Defender por um processo recém-baixado, especialmente com origem em diretórios temporários, é um sinal de alto valor mesmo quando a carga final ainda não foi materializada.
A variante com C2 coleta informações do host, incluindo produtos antivírus e versão do sistema operacional, e envia esses dados por POST ao endpoint /log. As amostras carregam múltiplos endereços de C2 para redundância e tentam cada um em sequência. Depois, uma requisição GET ao caminho /richfamily/, com valor específico por amostra e cabeçalho X-Secret: gachifamily, retorna uma URL codificada em Base64 para o payload final. O download exige novamente um cabeçalho X-Secret, desta vez com chave única embutida no binário; sem esse valor, o servidor responde com erro Forbidden. O payload é salvo em %TEMP% com nome aleatório que imita software legítimo, como KeePass.exe, GoogleDrive.exe ou UnrealEngine.exe, e contém Rhadamanthys protegido por VMProtect ou Themida.
Na variante com Kidkadi, o payload está embutido e é passado como buffer binário para um módulo nativo de Node.js. Arquivos .node são DLLs usadas como addons nativos e carregadas por Node.js via dlopen, o que permite ao JavaScript acionar funcionalidade de baixo nível não exposta pela API padrão. O Kidkadi recebe o PE malicioso, cria uma seção SEC_IMAGE baseada em wmp.dll, copia seções, aplica realocações e permissões, e prepara a memória para que o carregador do Windows seja induzido a mapear a seção errada. Quando LoadLibrary é chamado para amsi.dll, o breakpoint em NtOpenSection dispara o VEH, que substitui o handle de saída pelo handle da seção maliciosa e avança o ponteiro de instrução para simular retorno. Outro breakpoint em NtMapViewOfSection faz o mesmo com base e tamanho da seção. Um breakpoint final em NtClose valida o fechamento do handle esperado.
A exposição principal está em estáções Windows onde usuários executam arquivos baixados de canais não confiáveis, especialmente quando há expectativa de instalador, crack, cheat ou ferramenta que exige privilégio administrativo. O uso de nexe permite que o malware rode sem Node.js previamente instalado, eliminando uma dependência que poderia limitar a campanha. Como o executável carrega o runtime junto com o JavaScript ofuscado, controles que filtram apenas scripts soltos ou invocações explícitas de node.exe podem não observar a cadeia completa.
Ambientes corporativos ficam expostos quando usuários têm permissão para baixar arquivos compactados, extrair conteúdo protegido por senha, executar binários em diretórios de usuário e aprovar elevação via UAC. A instrução para desativar o Defender e as tentativas programáticas de criar exclusões ampliam o risco em hosts sem política central de proteção contra adulteração. A presença de Rhadamanthys como payload final torna a cadeia relevante para times de identidade e resposta a incidentes, porque o objetivo provável é coleta de credenciais, sessões, dados de navegadores e outros artefatos sensíveis típicos de infostealer.
A técnica Vectored Overloading também altera a superfície de detecção em memória. Como o carregador manipula a abertura e o mapeamento de seções durante o fluxo do carregador do Windows, parte da aparência operacional pode envolver DLLs legítimas como wmp.dll e amsi.dll, enquanto o conteúdo real mapeado corresponde ao PE malicioso. Isso exige telemetria capaz de correlacionar criação de seções, proteção de memória, uso de VEH, breakpoints de hardware e carregamento de módulos a partir de processos que nasceram de executáveis grandes e recentes em diretórios temporários.
- Usuários que baixaram arquivos compactados protegidos por senha a partir de vídeos sobre cheats, cracks ou instaladores não oficiais.
- Hosts Windows nos quais executáveis desconhecidos foram iniciados a partir de
%TEMP%, Downloads ou diretórios de perfil do usuário. - Estáções com alterações recentes em exclusões do Microsoft Defender por
Add-MpPreference. - Processos que carregam módulos
.nodefora de diretórios esperados de aplicações Node.js legítimas. - Ambientes em que UAC foi aceito para um pacote baixado fora de canais de distribuição confiáveis.
A caça deve começar pela linha de comando e pelo histórico de execução. Procure uso de net session por processos sem relação administrativa, criação de PowerShell oculto com Start-Process cmd.exe -Verb RunAs, encerramento de SecHealthUI.exe e chamadas a Add-MpPreference logo após a execução de um binário baixado. A combinação de diretório temporário, arquivo grande empacotado, criação de .lock em %TEMP% e tentativa de alterar exclusões do Defender é mais forte do que qualquer sinal isolado. Em EDR, correlacione processo pai, caminho do arquivo, timestamp de download, criação de arquivo compactado extraído e aprovação de elevação.
Na rede, as variantes com C2 fazem POST para /log, depois GET para /richfamily/ com cabeçalho X-Secret: gachifamily, e posteriormente tentam baixar o payload usando outro X-Secret embutido. Mesmo sem endereços de C2 conhecidos, proxy, inspeção TLS corporativa e logs de gateway podem identificar padrões de URI e cabeçalhos incomuns. O tráfego falso para domínios benignos após detecção de sandbox também é relevante em laboratório: uma amostra que fica presa em HTTP GET repetitivo para sites populares pode estar ocultando o fluxo real por acreditar estar em ambiente de análise.
No endpoint, monitore carregamento de .node em %TEMP%, chamadas a dlopen por executáveis Node.js empacotados, criação de seções SEC_IMAGE associadas a DLL legítima seguida de escrita de conteúdo incompatível e uso de Vectored Exception Handlers em sequência com breakpoints de hardware. A presença de LoadLibrary para amsi.dll em um processo que não deveria interagir com AMSI, seguida por anomalias em NtOpenSection, NtMapViewOfSection e NtClose, deve ser tratada como sinal de injeção ou manipulação do carregador. Quando possível, colete dumps de memória antes de encerrar o processo, porque payloads protegidos por Themida ou VMProtect podem expor configuração de C2 somente em tempo de execução.
- Execução de
taskkill /F /IM SecHealthUI.exepor processo recém-criado a partir de diretório de usuário. - Comandos
Add-MpPreference -ExclusionPatheAdd-MpPreference -ExclusionExtension '.sys'sem mudança administrativa planejada. - Arquivo
.lockcriado em%TEMP%por binário desconhecido e encerramento quando o arquivo foi modificado nos últimos cinco minutos. - Requisições para
/loge/richfamily/com cabeçalhoX-Secret, especialmenteX-Secret: gachifamily. - Criação ou carregamento de
kidkadi.nodeem%TEMP%. - Carregamento de
amsi.dlljunto de manipulação deNtOpenSection,NtMapViewOfSectioneNtCloseem processo não relacionado a segurança ou scripting legítimo.
A resposta deve priorizar contenção do host e preservação de evidência. Isole estáções que executaram pacotes vindos da campanha, colete árvore de processos, linha de comando, arquivos em %TEMP%, exclusões do Defender, histórico de downloads, eventos de PowerShell e dumps de memória dos processos suspeitos. Encerrar o processo antes da coleta pode remover artefatos úteis, especialmente quando o carregador tenta apagar payloads baixados ou quando a configuração do infostealer só fica disponível após desempacotamento em memória. Depois da coleta, remova exclusões maliciosas do Defender, restaure políticas de proteção contra adulteração e verifique se há persistência adicional criada pelo payload final.
Como Rhadamanthys foi observado como carga final, a contenção precisa incluir rotação de credenciais e invalidação de sessões para contas usadas no host afetado. Dê prioridade a navegadores, carteiras, clientes de mensageria, VPN, painéis administrativos, repositórios de código e identidades com acesso a nuvem. A ausência de IoCs de C2 no ambiente não elimina comprometimento, porque a variante embutida pode não depender do primeiro estágio de rede para entregar o payload. Trate a execução confirmada de GachiLoader como comprometimento de credenciais até que logs e memória indiquem o contrário.
Na prevenção, bloqueie execução de arquivos de origem desconhecida em diretórios graváveis pelo usuário, aplique regras de controle de aplicação para binários recém-baixados e restrinja alterações locais em configurações do Defender. Arquivos .node devem ser permitidos apenas para aplicações aprovadas, com caminho e assinatura esperados. Em gateways e proxies, crie detecções para downloads de arquivos compactados protegidos por senha vinculados a descrições de vídeo, padrões de cabeçalho X-Secret e uso anômalo de endpoints como /log e /richfamily/. Em laboratórios, execute amostras com instrumentação de APIs de Node.js e Windows para capturar payloads antes que sejam apagados, mas mantenha isolamento de rede e snapshots limpos para evitar vazamento de credenciais reais.
- Isolar hosts com execução confirmada e preservar memória, arquivos temporários, árvore de processos e eventos de PowerShell.
- Remover exclusões adicionadas por
Add-MpPreferencee validar política de proteção contra adulteração do Defender. - Rotacionar credenciais e revogar sessões associadas ao usuário afetado quando houver execução de Rhadamanthys ou do carregador.
- Bloquear execução de binários e módulos
.nodea partir de%TEMP%, Downloads e outros diretórios graváveis pelo usuário. - Criar alertas para
X-Secret,/log,/richfamily/,kidkadi.node,.lockem%TEMP%e encerramento deSecHealthUI.exe. - Remover vídeos, contas abusadas e links de hospedagem externa quando identificados em processos de abuso ou resposta coordenada.
0 Comentários