Resumo executivo
OPSWAT identificou uma vasta campanha de infeção, provavelmente com motivação financeira, que utiliza software de IA falso como isco para descarregar uma família de malware recém-descoberta, que apelidámos de "JavaSquid", nomeadamente devido às suas múltiplas partes JavaScript evasivas/deslizantes.
Com base na nossa monitorização, graças às capacidades do MetaDefender Sandbox , avaliámos que a campanha continua em curso e que começou em meados de julho de 2024. Os agentes de ameaças associados a esta campanha realizaram ataques anteriores bem sucedidos, nos quais roubaram certificados digitais de diferentes empresas chinesas.
Para além de descobrir uma nova família de malware e uma campanha em direto, os resultados desta investigação e monitorização permitiram melhorar as capacidades de caraterísticas/indicadores do nosso Sandbox. Além disso, a nossa investigação fornece informações suficientes para implementar uma instância abrangente de um Modelo Diamante de Análise de Intrusão, juntamente com os IOC (indicadores de comprometimento) fornecidos e mapeamentos MITRE ATT&CK específicos dos relatórios MetaDefender Sandbox .
Descobrir a campanha
OPSWATO site Sandbox Threat Research da Microsoft descobriu uma campanha de infeção que utiliza software de IA como isco, mas que na realidade não utiliza IA nos seus ataques ou malware. A investigação começou quando observámos o domínio suspeito, https[://]my-profai[.]com. Embora o domínio pareça já ter sido retirado, foi registado em 2024-09-05, o que significa que a campanha foi lançada muito recentemente e provavelmente ainda está em curso, com base nas informações recolhidas durante a nossa investigação.
De acordo com o título do seu sítio Web "Epivaravomw: Bringing Your Static Images to Life", parece que eles oferecem uma ferramenta baseada em IA para adicionar movimento às imagens, o que aponta para um potencial ataque de watering hole, que também aproveita a publicidade maliciosa noutros sites para levar os utilizadores a descarregar o malware. No entanto, é provável que se trate de uma imitação do https://proai.co, uma vez que o executável do Windows disponível para descarregamento tem o nome de ProAI.exe, que é a amostra de malware que iremos analisar mais à frente.
Estas técnicas de comprometimento inicial indicam que os agentes da ameaça por detrás da campanha procuram infecções oportunistas e, por conseguinte, agem provavelmente com motivação financeira, potencialmente como um IAB (Initial Access Broker). Com base na localização dos envios de amostra, é muito provável que o alvo da campanha seja principalmente a Europa.
O domínio watering hole utilizado para enganar as vítimas e servir o malware é protegido pelo Cloudflare. No entanto, a sua amostra de malware irá contactar um domínio diferente que se resolve num endereço IP que também é apontado por muitos outros domínios. Muitos dos diferentes domínios que apontam para o mesmo endereço IP também parecem estar relacionados com o engodo tecnológico da IA e a personificação de outras empresas.
Curiosamente, a nossa investigação OSINT indicou que o endereço IP C2 estava anteriormente relacionado com os ladrões Lumma e Poseidon. Enquanto o Lumma stealer foi alegadamente baseado no antigo Mars stealer, o Poseidon é uma família de malware descoberta muito recentemente e escrita em AppleScript, visando assim ambientes iOS. O facto de esta nova família ser escrita em JavaScript pode indicar que o agente da ameaça por detrás da atividade pode estar a mudar para uma linguagem de scripting que pode ser utilizada em diferentes ambientes. Outro aspeto a destacar é o facto de o endereço IP pertencer a um ISP chinês (Chang Way Technologies Co. Limited), enquanto o anfitrião está geolocalizado na Federação Russa.
A amostra inicial de malware tinha uma assinatura digital válida na altura em que a analisámos pela primeira vez (9 de novembro de 2024), emitida por uma empresa chinesa "Taigu Fulong Electronic Tech Co., Ltd". No entanto, observámos que, durante a nossa investigação, a assinatura já tinha sido revogada.
Ao pesquisar amostras semelhantes utilizando o nosso motor de buscaSandbox , encontrámos um conjunto de amostras da mesma família utilizando o mesmo certificado digital provavelmente roubado, mas também dois novos conjuntos de amostras. Um dos conjuntos não tinha qualquer assinatura digital, enquanto o outro utilizava um certificado digital diferente. Todas as amostras seguiam os mesmos padrões e técnicas de fingir ser uma ferramenta utilitária legítima com base nos seus diferentes nomes (ai_Generation.exe, sweethome3d.exe, Installer_capcut_pro_x64.exe...).
Com base nas nossas descobertas, esta campanha começou em meados de julho e está atualmente em curso, uma vez que continuamos a observar novas amostras da família até à última semana de outubro de 2024. Além disso, embora o certificado da amostra inicial tenha sido revogado durante a nossa investigação, o outro certificado descoberto do conjunto diferente ainda é válido e foi emitido no início de setembro, indicando potencialmente que o emissor pode estar comprometido, e não estava ciente até que o contactámos informando sobre a utilização do seu certificado em malware.
Compreender o malware
Embora o Metadefender Sandbox assinale muitas capacidades do PE original e das suas fases posteriores, como explicado adiante, no momento em que este artigo foi escrito, a amostra inicial de malware continua a não ser detectada pela maioria dos fornecedores de AV.
O PE é um malware JavaScript compilado, que usa a ferramenta pkg para transformar o código JavaScript em um Windows PE. O JavaScript compilado parece estar em ascensão no cenário de ameaças, conforme relatado recentemente por outros pesquisadores. A ferramenta mencionada empacota um payload JavaScript num Windows PE, incorporando um interpretador Node JS/V8 com a opção de compilar o código em bytecode V8, incorporando assim no PE o código de texto simples ou um bytecode JavaScript compilado. A extração da versão em texto simples é trivial na maioria dos casos, no entanto, Metadefender Sandbox pode extrair o código compilado como um ficheiro JSC (JavaScript Compiled file) e desmontá-lo para posterior análise.
O payload JavaScript mantém o payload relevante codificado em base64, descodifica-o e executa-o usando a função eval. Este payload descodificado começa por executar uma verificação rápida do tamanho da RAM, provavelmente para evitar a execução em ambientes de análise. Enquanto muitas sandboxes tradicionais não passariam por esta verificação, Metadefender Sandbox efectua uma análise mais profunda de todo o código JavaScript, permitindo o acionamento de indicadores relevantes.
Quando a verificação é aprovada, o exemplo executa um pedido HTTP para um URL de evento do Google Calendar, que armazena na sua descrição um segundo URL no formato base64.
O URL descodificado aponta para um domínio controlado pelo atacante, que serve um novo payload base64 após o pedido correspondente. Após a descodificação do novo payload JavaScript, este é também imediatamente executado utilizando a função eval. Este código JavaScript adicional desencripta e executa um payload hardcoded de camada adicional usando encriptação AES.
Curiosamente, as chaves IV e AES são obtidas a partir dos cabeçalhos de resposta do último pedido HTTP, que observámos serem diferentes em cada pedido, o que significa que a carga útil e os cabeçalhos servidos são criados dinamicamente em cada pedido ao C2 para serem desencriptados com chaves diferentes. Além disso, a carga útil desencriptada parece ser sempre a mesma, mas com uma ofuscação diferente, o que revela que não só a encriptação como também a ofuscação ocorrem dinamicamente em cada pedido. Esta técnica poderia não só dificultar a análise forense em caso de incidente ou a investigação de ameaças, como também evitaria as detecções baseadas em assinaturas, uma vez que a ofuscação é diferente em cada pedido.
Este novo módulo desencriptado está altamente ofuscado e traz muitas mais funcionalidades à amostra, adicionando o código de bibliotecas adicionais, principalmente para lidar com operações de ficheiros e funcionalidades zip usando o módulo adm. Além disso, coloca diferentes ficheiros em diferentes subdirectórios %appdata%\Local, utilizando nomes aleatórios.
Um dos arquivos descartados é um script do PowerShell chamado run.ps1, que contém o código para instalar o instalador MSI do NodeJS para depois lançar o payload JavaScript final usando o NodeJS instalado, em vez do payload JavaScript compilado inicial.
Neste ponto, a execução irá desencadear uma mensagem de erro para o utilizador sob a forma de um pop-up, provavelmente para levar a vítima a pensar que o esperado "software AI" (ProAI.exe) pode não ser capaz de ser executado no seu sistema, desviando a sua atenção da infeção JavaSquid em curso. Este payload JavaScript de fase posterior também descarregará um último ficheiro JavaScript usando o mesmo mecanismo de contacto com os calendários do Google, contactando depois o seu domínio controlado usando os cabeçalhos de resposta HTTP para desencriptar o payload finalmente servido. Desta vez, o payload final será guardado como index.js num diretório com um nome aleatório localizado dentro do diretório %appdata%/Romaing.
O ficheiro run.ps1 anterior será posteriormente substituído por um script PowerShell diferente com o mesmo nome e também imediatamente executado. Como podemos ver na captura de ecrã, este script é apenas utilizado para ganhar persistência na máquina, enquanto o código principal do malware foi escrito em index.js.
Ficheiros adicionais largados pelo malware:
- VeqVMR.zip (nome gerado aleatoriamente): Descarregado do mesmo C2. Contém apenas um instalador do notepad (npp.8.6.6.Installer.exe) aparentemente sem impacto no comportamento geral.
- bypass.ps1: usado para executar o run.ps1 mencionado anteriormente, ignorando a restrição de execução do script powershell.
- NiOihmgUci.msi (nome gerado aleatoriamente): instalador do nodejs, obtido a partir do seu sítio Web oficial.
- Update.lnk: Colocado na pasta de arranque, apontará para o script PowerShell run.ps1.
Como mencionado, o payload final é guardado na máquina da vítima como index.js. Também é altamente ofuscado e encriptado dinamicamente em cada pedido, seguindo o mesmo fluxo descrito anteriormente para o payload da fase intermédia (google calendar, URL base64, desencriptação do payload). No entanto, uma vez que esta é a última fase da cadeia de infeção do JavaSquid, as chaves de desencriptação são escritas no próprio script, o que permitiu ao Metadefender Sandbox identificar, extrair e desencriptar o payload final para uma análise completa.
Curiosamente, descobrimos que o index.js servido atualmente tem vindo a mudar para versões diferentes que incluem uma implementação melhorada e caraterísticas ligeiramente diferentes. Isto apoia a hipótese de que a campanha ainda está viva, com o payload final do JavaSquid ainda em desenvolvimento. O ficheiro tem sido consistentemente apresentado como um JavaScript de linha única com um payload de fase intermédia codificado em base64, contendo chaves codificadas para desencriptação AES. Como mostrado na captura de ecrã anterior, isto desencripta e executa o payload final, destacando a cadeia de payloads na análise do index.js.
O payload inicial servido implementa a sua comunicação com o C2 através do protocolo websocket. Analisava as mensagens do C2 em formato json à procura do elemento "command", que devia ser recebido em formato base64. No entanto, a última carga útil servida tinha uma funcionalidade semelhante, mas utilizava o pedido HTTP para as suas comunicações com o C2. Além disso, embora esta família continue a ser uma backdoor muito básica, observámos que o código JavaSquid mais recente que foi servido incluía novas funcionalidades de recolha e roubo de informações.
COIs
999abd365022c5d83dd2db4c0739511a7ac38bcd9e3aa19056d62d3f5c29ca30
Aec44665395d4ae7064ea08d6d03b729464715d2169c629f3e3215d61c1299ea
b216880a67fc2e502ae94928aead75ef870fbb7ba142f7eda355d9ed6e72146d
chackopanikulamskykat@gmail.com
kendalllopez149@gmail.com
45.93[.]20.174
ambisecperu[.]com
angelswipe [.]com
nenkinseido[.]com
hxxps://calendar.app[.]google/X97t5bVooB2ti1QB8
hxxps://calendar.app[.]google/pPGGk4W26WW7oJxN7
hxxps://calendar.app[.]google/fD8MeHaN46bfYy3SA
hxxps://ambisecperu[.]com/a74Uxj9QjqWbeKr2SYOHsw%3D%3D
hxxps://ambisecperu[.]com/lBdvVW3MiQgpwRGAl5KNwg%3D%3D
hxxps://ambisecperu[.]com/o2BF9EGgskwn0k5Cwo7kugjt7xChBPSnghiJkDU7MwQ%3D
wss://ambisecperu[.]com/ss_ss?uuid=L07nKQ%2FEG1qQXwzQ1Tv3vqduOgfze7Yz3Ry%2FrXnr8WY%3D
hxxp://angelswipe[.]com?uuid=1sdtM0o5b35Uhe6wp9nM5UMMZ8BNrbYwtT1LAvW4rRA%3D
hxxps://nenkinseido[.]com/a3vNlpuRk6O5S469pG17Gw%3D%3D
hxxps://nenkinseido[.]com/YMvBag0VXbce5q0WvNrMRg%3D%3D
9A:84:A9:7F:AC:26:DF:5C:8A:74:FB:E6:88:0A:0B:5D:A5:17:08:DC
BB:F9:86:55:F4:D4:ED:39:6F:BC:A9:5F:4A:F8:ED:4E:B0:19:50:A9
Diferentes domínios que apontam para o mesmo endereço IP, que não foram utilizados pelas amostras analisadas, mas que também parecem estar relacionados com a falsificação de sítios Web relacionados com a IA:
agattiairport[.]com
aimodel[.]itez-kz[.]com
akool[.]cleartrip[.]voyage
akool[.]techdom[.]click
akordiyondersi[.]com
albanianvibes[.]com
albert[.]alcokz[.]store
albert[.]flora-kz[.]store
apkportion[.]com
asd[.]leboncoin-fr[.]eu
basgitardersi[.]com
bendiregitimi[.]com
bybit[.]travel-watch[.]org
cap[.]cleartrip[.]voyage
dipo[.]cleartrip[.]voyage
face[.]techdom[.]click
facetwo[.]techdom[.]click
ftp[.]millikanrams[.]com
haiper[.]techdom[.]click
haiper[.]travel-watch[.]org
havoc[.]travel-watch[.]org
l[.]apple-kz[.]store
liama[.]cleartrip[.]voyage
loader[.]waltkz[.]com
locktgold[.]travel-watch[.]org
luminarblack[.]techdom[.]click
millikanrams[.]com
openaai[.]clear-trip-ae[.]com
proai[.]travel-watch[.]org
sweethome[.]travel-watch[.]org
synthesia[.]flow-kz[.]store
synthesia[.]techdom[.]click
uizard[.]flow-kz[.]store
upscayl[.]cleartrip[.]voyage
Saiba mais sobre como as soluções de análise de malware adaptável e sandbox de próxima geração da OPSWATdão às organizações uma vantagem crítica na luta contra malware complexo e evasivo - fale com um especialista.