Resumen ejecutivo
OPSWAT identificado una amplia campaña de infección, probablemente con fines económicos, que utiliza software de IA falso como señuelo para que los usuarios descarguen una familia de malware recién descubierta a la que hemos bautizado como «JavaSquid», precisamente por sus múltiples componentes de JavaScript evasivos y escurridizos.
Según el seguimiento que hemos realizado gracias a las capacidades MetaDefender , hemos determinado que la campaña sigue en marcha y que comenzó a mediados de julio de 2024. Los autores de la amenaza asociados a esta campaña han llevado a cabo anteriormente ataques exitosos en los que sustrajeron certificados digitales de diversas empresas chinas.
Además de descubrir una nueva familia de malware y una campaña activa, los resultados de esta investigación y seguimiento han permitido mejorar las capacidades de detección Sandboxnuestro Sandbox. Por otra parte, nuestra investigación proporciona información suficiente para implementar una aplicación completa del Modelo Diamante de Análisis de Intrusiones, junto con los IOC (indicadores de compromiso) facilitados y las correspondencias específicas con el marco MITRE ATT&CK que figuran en los informes MetaDefender .
Descubriendo la campaña
El equipo de investigación Sandbox OPSWAT Sandbox ha descubierto una campaña de infección que utiliza software de IA como señuelo, pero que en realidad no emplea la IA en sus ataques ni en su malware. La investigación comenzó cuando observamos el dominio sospechoso https[://]my-profai[.]com. Aunque el dominio parece haber sido ya retirado, se registró el 5 de septiembre de 2024, lo que significa que la campaña se lanzó muy recientemente y es probable que aún esté en marcha, según la información recopilada durante nuestra investigación.
Según el título de su sitio web, «Epivaravomw: Dando vida a tus imágenes estáticas», parece que ofrecen una herramienta basada en IA para añadir movimiento a las imágenes, lo que apunta a un posible ataque de tipo «watering hole», que además aprovecha la publicidad maliciosa en otros sitios web para inducir a los usuarios a descargar el malware. Sin embargo, es probable que se trate de una suplantación de https://proai.co, ya que el ejecutable de Windows disponible para su descarga se llama ProAI.exe, que es la muestra de malware que analizaremos a continuación.

Estas técnicas de acceso inicial indican que los autores de la amenaza que están detrás de la campaña buscan infecciones oportunistas y, por lo tanto, es probable que actúen con fines económicos, posiblemente como un IAB (Initial Access Broker). A juzgar por la ubicación de las muestras enviadas, es muy probable que el objetivo de la campaña sea principalmente Europa.
El dominio «watering hole» utilizado para engañar a las víctimas y distribuir el malware está protegido por Cloudflare. Sin embargo, la muestra de malware que han obtenido se conecta a un dominio diferente, que se resuelve en una dirección IP a la que también apuntan muchos otros dominios. Muchos de los distintos dominios que apuntan a la misma dirección IP también parecen estar relacionados con el señuelo basado en la tecnología de IA y la suplantación de identidad de otras empresas.
Curiosamente, nuestra investigación OSINT reveló que la dirección IP del servidor de comando y control (C2) se había relacionado anteriormente con los ladrones de datos Lumma y Poseidon. Mientras que, según se informa, el ladrón de datos Lumma se basaba en el antiguo ladrón de datos Mars, Poseidon es una familia de malware descubierta muy recientemente y escrita en AppleScript, por lo que está dirigida a entornos iOS. El hecho de que esta nueva familia esté escrita en JavaScript podría indicar que el autor de la amenaza detrás de esta actividad podría estar pasando a utilizar un lenguaje de scripting que se puede emplear en diferentes entornos. Otro aspecto a destacar es el hecho de que la dirección IP pertenece a un proveedor de servicios de Internet chino (Chang Way Technologies Co. Limited), mientras que el servidor está geolocalizado dentro de la Federación Rusa.
La muestra inicial de malware contaba con una firma digital válida cuando la analizamos por primera vez (el 9 de noviembre de 2024), emitida por la empresa china «Taigu Fulong Electronic Tech Co., Ltd». Sin embargo, durante nuestra investigación observamos que ya había sido revocada.

Al analizar muestras similares mediante nuestro motorSandbox , encontramos un conjunto de muestras de la misma familia que utilizaban el mismo certificado digital, probablemente sustraído, pero también dos nuevos conjuntos de muestras. Uno de los conjuntos no tenía ninguna firma digital, mientras que el otro utilizaba un certificado digital diferente. Todas las muestras seguían los mismos patrones y técnicas de hacerse pasar por alguna herramienta de utilidad legítima basándose en sus diferentes nombres (ai_Generation.exe, sweethome3d.exe, Installer_capcut_pro_x64.exe...).

Según nuestras conclusiones, esta campaña comenzó a mediados de julio y sigue en marcha, ya que seguimos detectando nuevas muestras de esta familia, incluso en la última semana de octubre de 2024. Además, aunque el certificado de la muestra inicial fue revocado durante nuestra investigación, el otro certificado descubierto, perteneciente a un conjunto diferente, sigue siendo válido y fue emitido a principios de septiembre, lo que podría indicar que el emisor ha sido comprometido y que no era consciente de ello hasta que nos pusimos en contacto con él para informarle de que su certificado estaba siendo utilizado en malware.
Comprender el malware
Aunque MetaDefender detecta muchas de las capacidades del archivo PE original y sus fases posteriores, tal y como se explica más adelante, en el momento de redactar este artículo, la muestra inicial del malware sigue sin ser detectada por la mayoría de los proveedores de antivirus.

El archivo PE es un malware de JavaScript compilado, que utiliza la herramienta pkg para convertir el código JavaScript en un archivo PE de Windows. El JavaScript compilado parece estar en auge dentro del panorama de amenazas, tal y como han informado recientemente otros investigadores. La herramienta mencionada empaqueta una carga útil de JavaScript en un PE de Windows mediante la incrustación de un intérprete Node JS/V8 con la opción de compilar el código en bytecode V8, incorporando así al PE bien el código en texto plano o bien un bytecode de JavaScript compilado. La extracción de la versión en texto plano es trivial en la mayoría de los casos; sin embargo, MetaDefender puede extraer el código compilado como un JSC (archivo JavaScript compilado) y desensamblarlo para su posterior análisis.

La carga útil de JavaScript contiene la carga útil relevante codificada en base64, la descodifica y la ejecuta mediante la función eval. Esta carga útil descodificada comienza realizando una rápida comprobación del tamaño de la RAM, probablemente para evitar ejecutarse en entornos de análisis. Aunque muchos entornos de pruebas tradicionales no superarían esta comprobación, MetaDefender lleva a cabo un análisis más profundo de todo el código JavaScript, lo que permite activar los indicadores relevantes.

Una vez superada la comprobación, la muestra enviará una solicitud HTTP a la URL de un evento de Google Calendar, cuya descripción contiene una segunda URL en formato base64.

La URL descodificada apunta a un dominio controlado por el atacante, que envía una nueva carga útil en base64 tras la solicitud correspondiente. Una vez descodificada la nueva carga útil de JavaScript, esta se ejecuta inmediatamente mediante la función eval. Este código JavaScript adicional descifra y ejecuta una carga útil codificada de forma estática en una capa adicional utilizando cifrado AES.


Curiosamente, las claves IV y AES se obtienen de los encabezados de respuesta de la última solicitud HTTP, que, según hemos observado, son diferentes en cada solicitud, lo que significa que la carga útil y los encabezados que se envían se crean dinámicamente en cada solicitud al servidor C2 para ser descifrados con claves diferentes. Además, la carga útil descifrada parece ser siempre la misma, pero con una ofuscación diferente, lo que revela que no solo el cifrado, sino también la ofuscación, se producen dinámicamente en cada solicitud. Esta técnica no solo podría dificultar el análisis forense en caso de incidente o la investigación de amenazas, sino que también eludiría las detecciones basadas en firmas, ya que la ofuscación es diferente en cada solicitud.
Este módulo, recientemente descifrado, está muy ofuscado y amplía considerablemente las funcionalidades de la muestra al incorporar código de bibliotecas adicionales, principalmente para gestionar operaciones con archivos y funciones de compresión mediante el módulo «adm». Además, coloca distintos archivos en diferentes subdirectorios de %appdata%\Local, utilizando nombres aleatorios.
Uno de los archivos descargados es un script de PowerShell llamado «run.ps1», que contiene el código para instalar el instalador MSI de NodeJS con el fin de ejecutar posteriormente la carga útil final de JavaScript utilizando el NodeJS instalado, en lugar de la carga útil inicial de JavaScript compilada.

En este punto, la ejecución mostrará al usuario un mensaje de error en forma de ventana emergente, lo que probablemente lleve a la víctima a pensar que el «software de IA» esperado (ProAI.exe) podría no ser compatible con su sistema, desviando así su atención de la infección por JavaSquid que se está produciendo. Esta carga útil de JavaScript de la fase posterior también descargará un último archivo JavaScript utilizando el mismo mecanismo de contacto con los calendarios de Google, para luego ponerse en contacto con su dominio controlado utilizando los encabezados de respuesta HTTP para descifrar la carga útil finalmente servida. En esta ocasión, la carga útil final se guardará como index.js en un directorio con un nombre aleatorio ubicado dentro del directorio %appdata%/Romaing.
El archivo «run.ps1» anterior se sustituirá más adelante por otro script de PowerShell con el mismo nombre, que también se ejecutará de inmediato. Como se puede ver en la captura de pantalla, este script solo se utiliza para conseguir persistencia en el equipo, mientras que el código principal del malware se escribió en «index.js».

Archivos adicionales creados por el malware:
- VeqVMR.zip (nombre generado aleatoriamente): Descargado desde el mismo C2. Solo contiene un instalador de Notepad (npp.8.6.6.Installer.exe) que, al parecer, no afecta al comportamiento general.
- bypass.ps1: se utiliza para ejecutar el archivo run.ps1 mencionado anteriormente, eludiendo la restricción de ejecución de scripts de PowerShell.
- NiOihmgUci.msi (nombre generado aleatoriamente): instalador de Node.js, descargado de su sitio web oficial.
- Update.lnk: Si se coloca en la carpeta de inicio, apuntará al script de PowerShell «run.ps1».

Como se ha mencionado, la carga útil final se guarda en el equipo de la víctima con el nombre index.js. Además, está muy ofuscada y se cifra dinámicamente en cada solicitud, siguiendo el mismo flujo descrito anteriormente para la carga útil de la etapa intermedia (Google Calendar, URL Base64, descifrado de la carga útil). Sin embargo, dado que se trata de la última etapa de la cadena de infección de JavaSquid, las claves de descifrado están escritas en el propio script, lo que permitió a MetaDefender identificar, extraer y descifrar la carga útil final para realizar un análisis exhaustivo.

Curiosamente, hemos descubierto que el archivo index.js que se está sirviendo actualmente ha ido cambiando a diferentes versiones que incluyen una implementación mejorada y características ligeramente diferentes. Esto respalda la hipótesis de que la campaña sigue activa, y que la carga útil final de JavaSquid aún se encuentra en fase de desarrollo. El archivo se ha servido sistemáticamente como un fragmento de JavaScript de una sola línea con una carga útil de etapa intermedia codificada en base64, que contiene claves codificadas de forma fija para el descifrado AES. Como se muestra en la captura de pantalla anterior, esto descifra y ejecuta la carga útil final, lo que pone de relieve la cadena de carga útil en el análisis de index.js.
La carga útil inicial servida establece su comunicación con el servidor C2 a través del protocolo WebSocket. Analizaba los mensajes procedentes del servidor C2 en formato JSON en busca del elemento «command», que debía recibirse en formato Base64. Sin embargo, la última carga útil servida tenía una funcionalidad similar, pero utilizaba solicitudes HTTP para sus comunicaciones con el servidor C2. Además, aunque esta familia sigue siendo una puerta trasera muy básica, observamos que el último código de JavaSquid que se distribuyó incluía nuevas funcionalidades de recopilación y sustracción de información.
empresas petroleras internacionales
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 dominios que apuntan a la misma dirección IP, que no han sido utilizados por las muestras analizadas, pero que también parecen estar relacionados con la suplantación de sitios web relacionados con la inteligencia artificial:
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
Descubre cómo las soluciones de análisis de malware adaptativo y de entornos de pruebas de última generación OPSWATproporcionan a las organizaciones una ventaja decisiva en la lucha contra el malware complejo y evasivo: habla con un experto.
