Um conjunto de quase 800 pacotes maliciosos foi publicado no registro npm como parte de uma nova campanha criada para distribuir malware multiplataforma, com alvos em sistemas Windows, Mac e Linux.
“Esses pacotes parecem usar nomes gerados aleatoriamente ou obtidos por typo-squatting com aparência de AI slop, mas todos entregam um poderoso RAT e um payload de infostealer”, disse o pesquisador Paul McCarty, da OpenSourceMalware.
Diferentemente de outros ataques à cadeia de supply chain de software voltados ao npm, que usam hooks de ciclo de vida como preinstall ou postinstall para disparar a execução de código malicioso, os pacotes recém-identificados trazem um README que orienta os desenvolvedores a carregá-los com require(), uma função nativa usada para importar módulos, arquivos locais e pacotes de terceiros.
O ataque leva à execução de um downloader chamado WEL1DROPPER, que, ao ser executado, identifica o sistema operacional e a arquitetura do processador do host e busca um payload compatível em um dos três servidores do Cloudflare Workers. Os três domínios usados são os seguintes:
oob-worker.cf103-070.workers[.]dev
oob-worker.cf102-baf.workers[.]dev
oob-worker.cf99-9b3.workers[.]dev
Se os downloads baseados em HTTPS falharem, o malware alterna para um domínio específico da plataforma e usa registros DNS TXT para obter a próxima etapa a partir do domínio “wel1[.]ru”. O domínio do payload para cada sistema operacional e arquitetura de CPU é o seguinte:
Linux x64 - sdk.dl.wel1[.]ru
Linux ARM64 - ext.dl.wel1[.]ru
macOS - pkg.dl.wel1[.]ru
Windows - net.dl.wel1[.]ru
“O pacote primeiro solicita um registro TXT de c.<domínio>”, explicou McCarty. “Ele interpreta a resposta como o número de blocos do payload, aceitando um valor entre 1 e 2.000. Em seguida, solicita registros TXT numerados. As strings retornadas são unidas e decodificadas em Base64 em um buffer binário.”
Na etapa final, o payload é gravado em uma pasta temporária e executado usando “/bin/sh” no Linux e no macOS, ou “cmd.exe” no Windows.
A Sonatype, que também acompanha a campanha sob o nome Flooding Dropper, afirmou que a etapa final é iniciada como um processo separado. Na versão para Windows, o malware toma medidas para aplicar patch no Event Tracing for Windows (ETW) e no Antimalware Scan Interface (AMSI) para interferir no monitoramento, verificar a presença de sandboxes e ambientes virtuais, estabelecer persistência por meio de uma chave Run do Registry e de uma tarefa agendada, além de baixar um payload criptografado (“/pkg/update_win.exe”) e executá-lo.
A cadeia de infecção no macOS é semelhante. Ela executa um conjunto idêntico de ações para procurar depuradores e artefatos de análise antes de recuperar um payload compatível (“/pkg/beacon_mac.bin”) de um servidor remoto. Se isso falhar, recorre à entrega por DNS TXT mencionada anteriormente, configura persistência com um LaunchAgent e então inicia o executável em um processo separado.
A amostra para Linux, por sua vez, é um binário ELF empacotado com UPX, configurado para baixar payloads auxiliares de uma URL do Cloudflare Worker (“oob-worker[.]cf99-9b3.workers[.]dev”), o que acaba levando à implantação do Sliver, um framework open source de comando e controle (C2).
Os pacotes também continham um arquivo chamado “lib/telemetry.js”, que implementa um SDK de telemetria com aparência legítima, mas que também traz a mesma lógica de downloader.
“O ponto de entrada do pacote não importa esse arquivo, e ele não contém nenhuma infraestrutura adicional hardcoded”, disse a OpenSourceMalware. “A implementação inchada de telemetria parece ter sido criada para gerar ruído e fazer o comportamento malicioso parecer uma função nativa de perfilamento ou análise em uma revisão rápida.”
A presença de domínios como “tcsbank[.]ru” e “cloudpayments[.]ru” no payload para macOS indica que a campanha pode estar mirando instituições financeiras russas e sistemas de pagamentos móveis.
Também há suspeita de que se trate de uma evolução de uma campanha de dependency confusion batizada de Moika, observada no início de abril, que publicou mais de 250 pacotes no registro npm para roubar informações do ambiente e entregar um payload de segunda etapa específico para o sistema operacional.
A descoberta ocorre enquanto a Unit 42, da Palo Alto Networks, documentou várias campanhas voltadas aos repositórios npm e Python Package Index (PyPI):
• Um conjunto de 10 pacotes npm que baixa um infostealer de criptomoedas ofuscado e um trojan de acesso remoto a partir de um servidor externo. “Após a instalação, os pacotes exportam uma função ‘getPlugin’ que constrói a URL de onde o payload é baixado, como um código JavaScript IIFE (Immediately Invoked Function Expression) ofuscado incorporado em um objeto JSON”, disse a Unit 42. “O payload implementa um crypto stealer e um Remote-Access Trojan (RAT), permitindo ao atacante executar comandos arbitrários no host infectado.”
• Um conjunto de pacotes maliciosos em npm e PyPI, atribuídos a múltiplos threat actors distintos, capazes de exfiltrar credenciais de cloud, distribuir droppers EtherHiding baseados em blockchain C2, roubar chaves de carteiras de criptomoedas Solana via Telegram, exfiltrar segredos de arquivos .env, realizar execução remota de código por engenharia social com falso CAPTCHA e roubar tokens do Discord e credenciais do GitHub Actions CI/CD.
De pacotes a extensões do Chrome
Também foi observado threat actors usando extensões do Google Chrome vendidas como emuladores de jogos, gerenciadores de senhas, ferramentas de produtividade, inspetores de CSS e conversores de markdown para transformar o navegador em um proxy de web crawling. Os comandos de coleta são recebidos remotamente por meio de uma conexão WebSocket persistente.
“Essas extensões incorporam um SDK comercial idêntico de compartilhamento de banda da internet que conecta o navegador do usuário a uma rede de proxies residenciais de terceiros para operações de web scraping”, disse a Unit 42, acrescentando que ele coleta páginas ao injetar um iframe oculto em abas ativas, converte o conteúdo das páginas para Markdown em segundo plano e envia tudo para um backend remoto em cloud.
A empresa de cibersegurança observou que algumas dessas extensões revelam essa prática nas descrições da Chrome Web Store e nas políticas de privacidade de seus sites SaaS. Depois de instaladas, o SDK de terceiros solicita ao usuário que aceite participar do serviço.
“Embora os recursos de proxy e crawling permaneçam inativos se o usuário recusar, algumas extensões apresentam esse aceite como necessário para um serviço ininterrupto”, afirmou a Unit 42. “Um exemplo notável é o InstaSkip (mdondgockboebafloibbhjofmoedmnnn), que incorpora esse SDK.”
Publicidade
Nossa audiência é formada por analistas, pentesters, decisores e entusiastas que consomem nossas notícias todo dia pelo Site, Newsletter e Instagram. Fale com quem realmente importa para o seu negócio. Anuncie aqui. Saiba mais...