architect

STOCKSTAY Otro Día: La Última Adición al Aparato de Recolección de Inteligencia de Turla

Fuente: cloudblog.withgoogle.com 43 min de lectura

Compartir

STOCKSTAY Otro Día: La Última Adición al Aparato de Recolección de Inteligencia de Turla

Estás leyendo un resumen. El contenido completo está en cloudblog.withgoogle.com.

Escrito por: Jordan Jones Introducción El Grupo de Inteligencia de Amenazas de Google (GTIG) ha realizado un análisis en profundidad de un backdoor en .NET, rastreado como STOCKSTAY, que ha sido desarrollado y desplegado continuamente por el actor de amenaza vinculado a Rusia, Turla (también conocido como SUMMIT, Secret Blizzard, VENOMOUS BEAR, UAC-0194) desde al menos diciembre de 2022. Turla ha desplegado STOCKSTAY contra organizaciones gubernamentales y militares en Ucrania, así como entidades con interés en la política exterior italiana. Utilizado para ciberespionaje continuo, este backdoor comparte un código y funciones significativas con KAZUAR, un kit de herramientas exitoso previamente atribuido a Turla. El grupo tiene una larga historia de atacar una amplia gama de industrias, con un enfoque particular en los Ministerios de Relaciones Exteriores occidentales y organizaciones de defensa en el contexto de tensiones políticas elevadas. Turla, y específicamente su implante Snake, ha sido públicamente atribuido por la Agencia de Ciberseguridad e Infraestructura de los Estados Unidos (CISA) al Centro 16 del Servicio Federal de Seguridad de Rusia (FSB). Turla es uno de los grupos de ciberespionaje más antiguos conocidos, con actividad sospechosa que se remonta al menos al 2004. El actor sigue activo y continúa evolucionando sus métodos de entrega, como se demuestra con su despliegue de scripts especializados para interceptar comunicaciones seguras de usuarios de Signal Messenger, su secuestro de botnets criminales heredados para atacar organizaciones ucranianas, y sus recientes campañas dirigidas a sectores de defensa militar utilizando el altamente sofisticado kit de herramientas KAZUAR. Como parte de nuestro seguimiento continuo de este grupo, esta publicación de blog proporciona un resumen de nuestro análisis de STOCKSTAY, incluye una cronología de observaciones operativas y de desarrollo clave, y examina sus similitudes con KAZUAR para contextualizar esta nueva capacidad dentro del creciente arsenal de Turla. Resumen de STOCKSTAY STOCKSTAY es un backdoor multi-componente escrito en .NET, utilizando el marco de Windows Forms, que se comunica con su comando y control (C2) a través de una conexión segura de WebSocket, utilizando la biblioteca de código abierto websocket-sharp. STOCKSTAY consta de varios componentes distintos que se comunican entre sí a través de un canal de comunicación entre procesos (IPC), basado en el intercambio de mensajes WM_COPYDATA. STOCKSTAY fue diseñado originalmente para disfrazarse como una herramienta de visualización de datos del mercado de valores, incorporando este disfraz tanto en su esquema de nombres de archivos como en su almacenamiento de configuración de implante, mensajes de control y datos de respuesta. Mientras que las versiones iniciales del malware observadas por GTIG mantenían los aspectos internos de este disfraz, en 2025 identificamos variantes de STOCKSTAY disfrazándose como otras aplicaciones benignas, como visores de PDF y utilidades de calculadora. STOCKSTAY.STOCKBROKER STOCKSTAY.STOCKBROKER es un tunelador consciente del proxy que proporciona capacidades de comunicación de red al ecosistema más amplio de STOCKSTAY. STOCKSTAY.STOCKBROKER, referido internamente como "net", puede ser instruido para establecer una conexión segura de WebSocket con un servidor remoto especificado, después de lo cual actúa como un intermediario entre el servidor y el orquestador STOCKSTAY.STOCKMARKET. Como resultado, toda la comunicación C2 entre STOCKSTAY y el servidor C2 configurado es manejada por STOCKSTAY.STOCKBROKER, aislando las comunicaciones de red del malware de otras actividades maliciosas basadas en el host en la máquina infectada. STOCKSTAY.STOCKMARKET STOCKSTAY.STOCKMARKET, referido internamente como “cor”, es el orquestador del ecosistema STOCKSTAY, y permite la configurabilidad del implante. La configuración del malware se carga desde un archivo de configuración en disco encriptado que especifica varias opciones sobre la ejecución del malware, incluidos los detalles del servidor remoto de WebSocket requerido por STOCKSTAY.STOCKBROKER. El archivo de configuración intenta disfrazarse como un archivo legítimo al incluir varias URL legítimas asociadas con mercados de criptomonedas, así como descripciones falseadas de cada campo de configuración. Los datos de configuración encriptados se incrustan dentro de los campos de distracción, que son desencriptados por STOCKSTAY.STOCKMARKET. STOCKSTAY.STOCKMARKET se comunica con STOCKSTAY.STOCKBROKER para proporcionar detalles sobre el servidor de WebSocket, y para posteriormente enviar y recibir mensajes a través de la conexión de WebSocket establecida, que usualmente contienen los resultados de los comandos ejecutados. STOCKSTAY.STOCKMARKET también se comunica con el componente STOCKSTAY.STOCKTRADER para emitir comandos que se ejecuten en el host infectado. En su primera ejecución, STOCKSTAY.STOCKMARKET genera un par de claves RSA únicas de 4096 bits, que se utilizarán a lo largo del ciclo de vida del implante para encriptar datos salientes antes de ser enviados a través de WebSocket. La clave pública del implante se envía al servidor en la primera solicitud del malware, para permitir que el servidor desencripte las respuestas a las tareas. STOCKSTAY.STOCKMARKET también genera un identificador de infección único que será utilizado por el servidor C2 para determinar el receptor previsto de las tareas. El archivo de configuración de STOCKSTAY especifica un campo “internal_id”, que GTIG evalúa que representa un identificador para el componente del lado servidor del ecosistema del malware. Evaluamos que este identificador es utilizado por los operadores del malware para recuperar respuestas de servidores C2 interinos que pueden ser utilizados por múltiples operadores. Hasta la fecha, GTIG ha observado solo un único valor único para este identificador y no puede determinar si múltiples operadores están utilizando STOCKSTAY en este momento debido a la falta de telemetría. STOCKSTAY.STOCKTRADER STOCKSTAY.STOCKTRADER, referido internamente como “sys”, es el componente de backdoor del ecosistema STOCKSTAY, y soporta una gama de operaciones de ejecución de comandos, archivos y registro en el host infectado. Tarea Nombre del Comando Descripción Del Eliminar los archivos especificados. Requiere una lista de rutas de archivos separadas por punto y coma, cada una de las cuales será eliminada. Se devuelve una confirmación de cada archivo eliminado, o un fallo de eliminación, al C2. Dir Generar un listado de los directorios especificados. Requiere una lista de rutas de directorios separadas por punto y coma, cada una de las cuales será enumerada con las rutas de todos los archivos y subdirectorios contenidos siendo devueltos al C2. Opcionalmente realiza un listado de directorios recursivo. Get Recuperar uno o más archivos especificados. Permite la colección de archivos con extensiones específicas. Requiere una lista de rutas de archivo o directorio separadas por punto y coma, y una lista de extensiones de archivo objetivo. Si se incluye una ruta de archivo en la lista, se devolverá este archivo. Si en cambio se incluye una ruta de directorio en la lista, el malware realizará una búsqueda opcionalmente recursiva del directorio para identificar cualquier archivo que coincida con las extensiones de archivo objetivo. Todos los archivos que coincidan con cualquiera de las rutas de archivo especificadas, o las extensiones de archivo objetivo, se añadirán a un archivo ZIP en memoria y posteriormente serán codificados en base64 para su transmisión al C2. Imagen Realizar una captura de pantalla de la pantalla de la víctima. La imagen resultante es codificada en base64 para su transmisión al C2. MkDir Crear uno o más directorios. Requiere una lista de rutas de directorios separadas por punto y coma, cada una de las cuales será creada. Se devuelve una confirmación de cada directorio creado, o cualquier error resultante, al C2. MultyTask Procesar múltiples tareas a la vez. Requiere una lista de tareas separadas por punto y coma, cada una de las cuales debe ser un objeto JSON serializado que contenga una tarea individual. Cada tarea es presentada al gestor de comandos del malware uno por uno, con toda salida de comandos siendo descartada; no se retornan datos al C2 al procesar múltiples tareas a la vez. Put Subir un archivo al dispositivo. Requiere una representación de cadena base64 del contenido del archivo que se escribirá en la ruta de archivo especificada. La operación de escritura de archivo requerida se realiza en modo "Anexar". Se devuelve una confirmación de la carga del archivo, o detalles de cualquier error relevante, al C2. RegDelete Eliminar un valor de registro. Requiere una clave de registro y el nombre del valor correspondiente a ser eliminado. RegRead Leer un valor de registro. Requiere una clave de registro y el nombre del valor correspondiente a ser leído. RegWrite Establecer un valor de registro. Requiere una clave de registro y el nombre del valor correspondiente, así como el valor y el tipo de datos utilizados para poblar el valor de registro. RmDir Eliminar los directorios especificados. Requiere una lista de rutas de directorios separadas por punto y coma, cada una de las cuales será eliminada. Se devuelve una confirmación de cada directorio eliminado, o un fallo de eliminación, al C2. Run Ejecutar un nuevo proceso. Requiere una ruta al archivo a ejecutar y sus argumentos correspondientes. Un tiempo de espera por defecto de 60 segundos está codificado en el malware, sin embargo, esto puede ser anulado por la configuración de la tarea. Todos los subprocesos se crean sin ventana con stdout redirigido. Sysinfo Realizar un estudio del sistema para reunir información clave sobre el host infectado. Se recoge información del sistema operativo a través del Windows Management Instrumentation (WMI) ManagementObjectSearcher, específicamente los siguientes campos: OSVersion Architecture SerialNumber CodeSet CountryCode Locale InstallDate BootupTime MachineName SystemDirectory LocalTime AnsiCodePage UserName En cuanto a hardware, se consulta WMI por lo siguiente: ProcessorName NumberCores ClockSpeed MemoryCapacity MemoryType DiskModel DiskSize El malware también captura una lista de los nombres de los procesos en ejecución. UnpackArchive Extraer el archivo ZIP especificado a su directorio actual. Características de los Comandos del Backdoor Soporte de Descargadores e Instaladores Relacionados STOCKSTAY.MARKETMAKER STOCKSTAY.MARKETMAKER es un descargador consciente del proxy escrito en .NET utilizando el marco de Windows Forms que descarga y extrae cargas adicionales de un servidor remoto, establece persistencia a través de modificaciones del registro de Windows, y se ejecuta silenciosamente en segundo plano sin interfaz de usuario. Se ha observado a este descargador disfrazándose como "MicrosoftUpdateOneDrive" para parecer legítimo mientras configura múltiples entradas de autorun para ejecutar los componentes centrales de STOCKSTAY. Durante nuestro análisis, GTIG identificó lo que creemos que es una muestra de desarrollo temprano de STOCKSTAY.MARKETMAKER que, en lugar de descargar los componentes necesarios, dependía de mecanismos externos (como la inyección del Administrador de Dominio de .NET) para el despliegue inicial de muestras en el host objetivo. CONTROLADOR DEL LADO DEL SERVIDOR DE STOCKSTAY GTIG identificó un repositorio accesible públicamente en GitHub que contiene una implementación en Python del controlador del servidor WebSocket STOCKSTAY orientado a la víctima. El diseño ligero del componente del servidor parece complementar el uso del actor de amenazas de plataformas de hosting de terceros, como Render, que proporciona una plataforma para alojar servicios web, incluidos WebSockets. La incapacidad del servidor para desencriptar mensajes entrantes impide la introspección por parte de los operadores de la plataforma y oscurece aún más la ubicación de la infraestructura dedicada del actor de amenazas. Esta arquitectura se asemeja en parte a la infraestructura C2 de múltiples saltos de KAZUAR de Turla. El servidor extiende tornado.websocket.WebSocketHandler para proporcionar la interfaz descrita en la tabla, bajo la ruta /ws; alineándose con todas las URL de C2 de WebSocket de STOCKSTAY observadas. Descripción del Evento WebSocketHandler.check_origin Codificado para retornar True para aceptar todo el tráfico de origen cruzado. WebSocketHandler.open Registra la dirección IP del cliente utilizando el siguiente formato de cadena: WebSocket abierto. IP: {client_ip} WebSocketHandler.on_message Maneja mensajes entrantes del cliente conectado. Los mensajes entrantes se decodifican en base64 antes de ser analizados como JSON en un objeto conocido internamente como “paquete”. Cada “paquete” contiene una “acción” y un “contenedor”, que proporcionan el tipo de solicitud y los datos asociados, respectivamente. Lo siguiente describe la lógica de manejo de cada tipo de acción. Acción: enviar El servidor extrae los siguientes atributos del “contenedor” del mensaje entrante e inserta estos en una nueva fila dentro de la tabla de base de datos local weather_data. container.target El cliente de STOCKSTAY llena este campo con el campo internal_id o i_id del archivo de configuración. container.sender El cliente de STOCKSTAY llena este campo con el uuid único del cliente generado en la primera ejecución. container.message Este campo contiene el cuerpo del mensaje encriptado en un formato conocido dentro del cliente de STOCKSTAY como “CryptoContainer”. Al completar, el servidor registra el siguiente mensaje: Acción: enviar; trgt={target_id}; sndr={sender_id} Acción: recibir Las solicitudes entrantes de recibir simplemente especifican el atributo container.sender, que corresponde al identificador único del cliente. El servidor luego recupera todos los mensajes de la tabla de base de datos weather_data donde el identificador de destino (“columna degrees”) coincide con el especificado container.sender. Esto permite que el cliente recupere todos los mensajes destinados a él, como aquellos enviados al servidor por un controlador C2 ascendente. Cada fila coincidente es devuelta al cliente en el siguiente formato, antes de ser eliminada de la base de datos. WebSocketHandler.on_close Registra la dirección IP del cliente utilizando el siguiente formato de cadena: WebSocket cerrado. IP: {client_ip} Estructura de Base de Datos El servidor mantiene una base de datos local SQLite3 bajo el nombre de archivo weather_data1.db, estructurada como se muestra en las tablas. Descripción de la Columna id Clave primaria degrees UUID del destinatario del contenedor.target pressure UUID del remitente del contenedor.sender wdata Datos del mensaje del contenedor.message coords Dirección IP del remitente, extraída del encabezado X-Forwarded-For, o none_ip si no se especificó remitente. status Por defecto 0 - no parece ser utilizado o devuelto al cliente. datetime Hora de creación de la fila Características Operativas Clave Uso Consistente de Contenido de Atracción Académica o Diplomática Los actores de amenaza implicados en las operaciones de STOCKSTAY parecen tener una afinidad por integrar la academia y la diplomacia en su infraestructura y en los contenidos de atracción/decepción, incluyendo: comprometer una cuenta de correo electrónico perteneciente a una universidad ucraniana para difundir correos electrónicos de phishing; usar los nombres de una institución académica dentro del nombre de un archivo RDP malicioso; comprometer una plataforma de educación diplomática para phishing y distribución de archivos RDP maliciosos; usar “educación” y “diplo” dentro de dominios de phishing registrados; y usar “DiplomacyEduAI” como nombre del producto dentro de archivos MSI de STOCKSTAY. Enfoque Persistente en Objetivos Ucranianos Una proporción significativa de las operaciones de STOCKSTAY observadas por GTIG han sido dirigidas a organizaciones gubernamentales o militares dentro de Ucrania, en consonancia con los intereses rusos en relación con el conflicto en curso entre los dos países. Se ha observado que el actor de amenazas ha utilizado infraestructura comprometida en el país, incluyendo servicios gubernamentales comprometidos, para desplegar tanto STOCKSTAY como una serie de cargas suplementarias, en apoyo de estas operaciones. Objetivo Europeo Sospechoso Un número menor de operaciones de STOCKSTAY observadas por GTIG parece haber sido dirigidas a entidades europeas. Se identificaron muestras de desarrollo temprano de STOCKSTAY en varias naciones europeas, incluyendo Italia, los Países Bajos, Polonia y Alemania; sin embargo, hemos estado en gran medida imposibilitados de confirmar las víctimas previstas para la mayoría de estas primeras infecciones, ni si estas muestras fueron identificadas como resultado de la prueba de capacidades del actor de amenazas contra servicios de escaneo de virus de acceso público como VirusTotal. GTIG pudo identificar, en al menos un caso, el objetivo de entidades asociadas con, o interesadas en, un ministerio de relaciones exteriores en Europa en relación con actividades de phishing y sospechososa de actividad STOCKSTAY. Despliegue a través de Archivos RDP Maliciosos GTIG observó a STOCKSTAY siendo desplegado tras intentos de phishing exitosos utilizando archivos de configuración RDP maliciosos. Los archivos RDP estaban diseñados para crear una conexión desde el dispositivo de la víctima a la infraestructura controlada por el actor, a través de la cual el actor podía desplegar cargas posteriores. En una operación a principios de 2025, GTIG identificó un correo electrónico de phishing que afirmaba haber sido enviado por una academia de formación relacionada con la defensa, conteniendo un archivo adjunto RDP malicioso. Poco después de que la víctima se conectara a la infraestructura del actor, el actor desplegó STOCKSTAY.MARKETMAKER, un descargador en .NET diseñado para recuperar e instalar todo el conjunto de STOCKSTAY en el dispositivo de la víctima. Más tarde, a mediados de 2025, GTIG identificó archivos RDP maliciosos similares siendo alojados en una plataforma educativa de temática diplomática comprometida, engañando a las víctimas para descargar y ejecutar el archivo bajo la apariencia de habilitar acceso a un portal de formación en línea. GTIG no pudo confirmar si STOCKSTAY fue finalmente desplegado como resultado de esta operación; sin embargo, las superposiciones en la infraestructura del actor y los engaños temáticos relacionados con la educación para ambas operaciones pueden sugerir que STOCKSTAY era la carga prevista. Despliegues en Múltiples Etapas de Operaciones A través de la visibilidad de GTIG, hemos identificado que el actor de amenazas utiliza STOCKSTAY en múltiples etapas distintas de sus operaciones. En primer lugar, el actor de amenazas utiliza STOCKSTAY durante las operaciones para obtener acceso inicial a entornos que aún no han sido objeto de las actividades de reconocimiento del grupo. En estos casos, STOCKSTAY está configurado con contraseñas de configuración codificadas, que pueden ser extraídas trivialmente por los analistas. Observamos este tipo de infección derivada de las operaciones de phishing del grupo, donde el actor de amenazas no puede determinar exactamente dónde en la red de la víctima van a obtener su primer punto de apoyo. Cuando el actor de amenazas despliega STOCKSTAY en una etapa posterior de la operación, tras el reconocimiento, STOCKSTAY está configurado para incorporar una codificación ambiental para su configuración, requiriendo que el malware sea ejecutado ya sea en un host específico, por un usuario específico, dentro de un dominio específico, o una combinación predefinida de estos atributos. Esta configuración implica que, en esta etapa, el actor sabe exactamente qué máquina está siendo atacada, probablemente a través de accesos existentes al ambiente objetivo. Esto se vio dentro de redes ucranianas donde STOCKSTAY fue desplegado hacia el final de una operación que anteriormente había confiado en gran medida en otras herramientas del grupo, como KAZUAR. Superposiciones con KAZUAR K1MORPHER Ofuscación de Cadenas En abril de 2025, GTIG observó que STOCKSTAY estaba siendo actualizado para implementar un nuevo mecanismo de ofuscación de cadenas, basado en un algoritmo de generación de números pseudoaleatorios oscuro llamado “Squirrel3”, que fue presentado en la Conferencia de Desarrolladores de Juegos de 2017. GTIG identificó más tarde versiones de STOCKSTAY que contenían algunos de sus nombres de clase originales, que mostraban que el código responsable de la deofuscación de cadenas en tiempo de ejecución estaba contenido dentro de una clase llamada “K1.Morpher”. Análisis de K1MORPHER muestra la capacidad de realizar deofuscación en tiempo de ejecución de una gama de tipos de datos, como cadenas, enteros y arreglos. En junio de 2025, GTIG notó que el código K1MORPHER aparecía en muestras de KAZUAR. KAZUAR ha utilizado históricamente sus propias técnicas de ofuscación de código y cadenas simples pero efectivas para evadir la detección, como: la inserción de código basura; reemplazar valores constantes estáticos con los resultados de operaciones XOR; y grandes cantidades de tablas de sustitución de caracteres únicas. El uso de K1MORPHER dentro de STOCKSTAY por parte del actor de amenazas parece estar tendiendo a imitar las técnicas de ofuscación de múltiples clases de KAZUAR, donde la ofuscación es manejada por múltiples clases distintas, como se observó en versiones de prueba sospechosas de STOCKSTAY alojadas en un sitio web comprometido de Chipre en abril de 2024. Arquitectura del Implante Desde al menos 2024, se observa que KAZUAR es desplegado utilizando una arquitectura de múltiples componentes, donde la comunicación C2, la orquestación de tareas y la ejecución de tareas son manejadas por componentes separados. Dentro del ecosistema KAZUAR, estos componentes se denominan “BRIDGE”, “KERNEL” y “WORKER”, respectivamente. A finales de 2023, GTIG identificó una separación similar de responsabilidades dentro del ecosistema STOCKSTAY, con las mismas responsabilidades siendo separadas en componentes distintos. La comunicación C2 es gestionada por el componente rastreado por GTIG como STOCKSTAY.STOCKBROKER, mientras que la orquestación de tareas y la ejecución son manejadas por STOCKSTAY.STOCKMARKET y STOCKSTAY.STOCKTRADER, respectivamente. Codificación Ambiental Tanto los ecosistemas KAZUAR como STOCKSTAY han sido observados utilizando codificación ambiental para protegerse de la detección y el análisis. DIAMONDBACK, un dropper que a menudo se despliega antes que KAZUAR en la cadena de ejecución, ha hecho uso de un hash del nombre del host objetivo para desencriptar su carga, para prevenir la divulgación de sus intenciones fuera del ambiente objetivo. Las versiones posteriores de DIAMONDBACK pueden configurarse para incorporar el nombre de usuario y el nombre de dominio del objetivo en el hash requerido para desencriptar la carga. Se ha observado que STOCKSTAY utiliza el hash del nombre del host o dominio objetivo durante la desencriptación de sus datos de configuración, evitando la divulgación de la infraestructura C2 a menos que esté operando en el ambiente previsto. Resumen de Superposiciones GTIG evalúa con confianza moderada que STOCKSTAY y KAZUAR pueden ser desarrollados en parte por un desarrollador o equipo común, con desarrollo activo ocurriendo en tándem entre los dos ecosistemas de malware. Creemos que STOCKSTAY está siendo desarrollado a la imagen de KAZUAR, con varias decisiones de diseño probablemente surgiendo de la riqueza de experiencia del actor de amenazas en la realización de operaciones con este kit de herramientas de larga data. Ambos ecosistemas dependen en gran medida del desarrollo en .NET, y se ha observado que han utilizado sitios de WordPress comprometidos durante varias etapas de sus operaciones. Evaluamos con baja confianza que nuestras observaciones de STOCKSTAY siendo desplegado junto a KAZUAR durante operaciones activas pueden ser el resultado de que el actor de amenazas esté buscando probar nuevas capacidades en operaciones activas, particularmente donde pueden estar esperando que su acceso existente sea remediado en un futuro próximo. Cronología de STOCKSTAY GTIG ha realizado una investigación exhaustiva de la historia de STOCKSTAY, identificando actividad de desarrollo sospechosa que data de diciembre de 2022. Lo siguiente es nuestra evaluación de la cronología de eventos en torno al desarrollo y despliegue de STOCKSTAY. Para ayudar a la comunidad en la búsqueda e identificación de actividades descritas en esta publicación del blog, hemos incluido indicadores de compromiso (IOCs) dentro de cada sección de operaciones observadas y en una Colección GTI para usuarios registrados. Diciembre de 2022 La versión de la biblioteca websocket-sharp.dll de código abierto empaquetada con la mayoría de las muestras observadas de STOCKSTAY.STOCKBROKER fue modificada por última vez, según la información de marca de tiempo en archivos MSI y archivos ZIP que contienen STOCKSTAY. Aunque se construyó a partir de una biblioteca de código abierto, esta instancia específica parece haber sido compilada por el actor mismo, creando así un artefacto identificable de manera única con el cual rastrear el desarrollo continuo de este malware. Archivo Nombre Descripción SHA-256 websocket-sharp.dll Instancia de la biblioteca de código abierto utilizada por el actor d1e54270433a94aa3d45d888e4c62299bee3480eb2cb4a5489c7dda69d476c3e Septiembre 21, 2023: Alemania Una versión temprana de STOCKSTAY fue subida a VirusTotal desde Alemania, bajo el nombre de archivo “DriversPrinterGraphic.rar”. Por las marcas de tiempo del archivo, parece que la muestra fue enviada dentro de los 20 minutos posteriores a su creación, lo que probablemente indica que fue enviada por el desarrollador del malware. Esta versión precede la separación del malware en componentes basados en roles distintos, incorporando en su lugar toda la funcionalidad central en un único ejecutable: StockMarketNews.exe. Además, esta versión de STOCKSTAY contenía la interfaz de usuario mostrada que permite ver/editar opciones de configuración y mensajes de comando, mientras todavía se presenta como una utilidad del mercado de valores. Este ejemplar de STOCKSTAY usa un formato de archivo de configuración ligeramente diferente; sin embargo, las opciones de configuración subyacentes son consistentes con versiones posteriores. Este ejemplar también utiliza codificación ambiental para su archivo de configuración; usando el nombre del host en minúsculas del objetivo como la contraseña de desencriptación. GTIG no ha podido recuperar la contraseña en este momento. Nombre del Archivo Descripción SHA-256 DriversPrinterGraphic.rar Archivo RAR que contiene STOCKSTAY e6d8192960a89d5480868b94088cccdaa1560f9c8a0b0282ced2b7c1f72341b6 StockMarketNews.exe Ejecutable combinado de STOCKSTAY 1fc23ec18a94a599a34c74ef5f49a1e27acd37a07d5846661702b5e7e81a6a24 sample.conf Archivo de configuración de STOCKSTAY 1a2ca8b8e0344fe3d80da7352206a470245443e2349a237bc093df934ddc011f Diciembre 5 – 6, 2023: Países Bajos Un archivo RAR adicional que contiene STOCKSTAY fue enviado a VirusTotal el 6 de diciembre de 2023 de los Países Bajos, bajo el nombre de archivo “apps_libwallets_v1.3.rar”. Este archivo fue modificado por última vez el día anterior a las 16:47:42 del 5 de diciembre de 2023. Este patrón puede indicar que el archivo fue creado por el individuo al final de su jornada laboral, y luego enviado al día siguiente cuando regresó a la oficina. Esta instancia de STOCKSTAY fue el primer caso observado por GTIG de la funcionalidad central del malware siendo separada en componentes basados en roles distintos, utilizando los nombres de archivo mostrados en la tabla. Componente Nombre de Archivo STOCKSTAY.STOCKMARKET StockMarketView.exe STOCKSTAY.STOCKBROKER StockMarketNet.exe STOCKSTAY.STOCKTRADER StockMarketSystem.exe Similar a la muestra observada en septiembre de 2023, esta instancia de STOCKSTAY también utilizó codificación ambiental, sin embargo, esta instancia utilizó el nombre de dominio de la computadora objetivo como la contraseña de configuración. GTIG no ha podido recuperar la contraseña en este momento. Nombre del Archivo Descripción SHA-256 apps_libwallets_v1.3.rar Archivo RAR que contiene componentes de STOCKSTAY 81aabf646619ea5f4a72457cd3aa17c5988003d67e6454f45e7cb33613021bac StockMarketView.exe Orquestador STOCKSTAY.STOCKMARKET 9164054d0bf0b7c8820da4f742860940998984555e65820e4fa8dd07b6bd67ec StockMarketNet.exe Tuneladora STOCKSTAY.STOCKBROKER 34fcbe7e90fc87a4f3766469c19a64f24672d7adb99e0198f5ba10d58911368b StockMarketSystem.exe Backdoor STOCKSTAY.STOCKTRADER 0a545dd1b703cddfb3d582c8c70f65f556bbd580bfa836a387121eb837bda61b default.conf Archivo de configuración de STOCKSTAY 2623c6e3c1f5a7b5e735a64813bc0e1382ae45831f5fadffb08c0e7b096627f7 Enero de 2024: Ucrania GTIG realizó una revisión de una respuesta a incidentes llevada a cabo por Mandiant relacionada con una compromise a finales de 2023 de una organización ucraniana, en la que observamos a Turla desplegando una amplia gama de herramientas en la red de la víctima, incluyendo WILDDAY, DIAMONDBACK y KAZUAR, a través de la instalación maliciosa de GPO de un controlador de dominio comprometido. Esta actividad fue acompañada de otros scripts simples y backdoors para desplegar malware en múltiples máquinas de la organización infectada. Durante la revisión, GTIG identificó evidencia de ejecución de STOCKSTAY en uno de los hosts afectados por el controlador de dominio infectado. Se subieron múltiples archivos ZIP, cada uno conteniendo uno de los componentes principales de STOCKSTAY o su configuración, al controlador de dominio. Los archivos fueron encontrados en un directorio utilizado para la preparación de archivos de registro utilizados para instalar WILDDAY tanto antes como después de que STOCKSTAY apareciera en el host, así como para la preparación de salida de un backdoor de Powershell en otro caso desconocido (iclsClient.ps1) que también fue observado ejecutándose desde el controlador de dominio. Durante esta operación, se desplegó un archivo de configuración inicial de STOCKSTAY en el controlador de dominio junto con los ejecutables de los componentes centrales de STOCKSTAY, sin embargo, este archivo no pudo ser desencriptado usando ninguna contraseña conocida o identificadores ambientales. Poco después, Mandiant observó un segundo archivo de configuración siendo desplegado en el controlador de dominio, esta vez encriptado utilizando el nombre de dominio asociado con la red comprometida. GTIG evalúa con confianza moderada que el despliegue inicial del archivo de configuración fue un error por parte del actor de amenazas - posiblemente desplegando un archivo de configuración asociado con una víctima diferente - o el resultado de que un archivo de configuración por defecto o inválido fuera empaquetado con STOCKSTAY durante su despliegue inicial para prevenir que se capturaran detalles sensibles de C2 en caso de detección temprana del malware en el ambiente de la víctima. La configuración desencriptada con éxito definió una URL C2 de WebSocket STOCKSTAY de wss://wool-basalt-clock.glitch.me/ws. Adicionalmente, la configuración especificaba un marco temporal operativo de lunes a viernes entre las 9:00 y las 18:00 en el sistema de la víctima. Esta restricción basada en el tiempo probablemente está destinada a mezclar las comunicaciones de C2 con las operaciones comerciales normales en la red de la víctima. Este mismo marco de tiempo ha sido observado en la mayoría de los archivos de configuración de STOCKSTAY analizados por GTIG. Es de particular importancia, hacia el final de esta operación, Mandiant identificó detecciones de firewall relacionadas con uno de los puntos finales C2 de KAZUAR. GTIG evalúa, con baja a moderada confianza, que el actor de amenazas podría haber estado consciente de la sospecha en torno a su C2 y desplegó STOCKSTAY como una medida de seguridad por si KAZUAR era identificado y remediado, permitiendo así la reinfección en una fecha posterior, en caso de que STOCKSTAY permaneciera indetectado. Indicador Descripción wss://wool-basalt-clock.glitch.me/ws STOCKSTAY WebSocket C2 Febrero de 2024: Italia Un archivo MSI configurado para instalar STOCKSTAY fue subido a VirusTotal el 20 de febrero de 2024 a las 11:45:26 desde Italia, bajo el nombre de archivo “Copia.msi”. El MSI se disfrazaba como la aplicación ILSpy desarrollada por ICSharpCodeTeam, y contenía una gran cantidad de componentes benignos legítimos. El MSI instaló los componentes centrales de STOCKSTAY bajo %LOCALAPPDATA%/Programs/SMN/, y habilitó la ejecución persistente a través de claves de ejecución del registro. Las muestras de STOCKSTAY contenidas en el MSI fueron compiladas entre el 29 y el 31 de enero de 2024, con el archivo de configuración modificado por última vez el 13 de febrero de 2024, justo una semana antes de ser enviado a VirusTotal. Además de la instalación de STOCKSTAY, el archivo MSI contiene una acción MSI personalizada llamada “OpenUrl”. Esta acción tiene el número de secuencia 1 en la tabla InstallUISequence, lo que indica que debe ser ejecutada antes de cualquier otra acción. La acción personalizada está configurada para ejecutar el siguiente comando: viewer.exe https://circoloesteri.elezioni.idnet.it/admin-election/riepilogo.php Al ser visualizada, la URL contiene referencias a elecciones (“elezioni”) y la organización italiana “Circolo Degli Esteri”, que según su sitio web oficial, fue fundada para “representar al Ministerio de Relaciones Exteriores”. Actualmente no evaluamos que el actor estuviera apuntando directamente a las elecciones italianas, y en su lugar estaba utilizando señuelos relacionados con las elecciones para atacar a las víctimas. Aunque inconclusivo, esto parece indicar una intención de desplegar STOCKSTAY contra individuos u organizaciones de habla italiana, específicamente con un enfoque en relaciones exteriores. Siguiendo con las instancias anteriores de STOCKSTAY, esta muestra utilizó codificación ambiental para su archivo de configuración. GTIG pudo recuperar el nombre de dominio utilizado para desencriptar el archivo de configuración con el fin de identificar la dirección C2 de WebSocket wss://wool-basalt-clock.glitch.me/ws. Esto coincide con la dirección C2 utilizada en enero de 2024. Nombre del Archivo Descripción SHA-256 Copia.msi MSI que contiene los componentes de STOCKSTAY b064a3efb04ed77e6c57955089ce639e193d166c8ea2216c98c3e9b701ea2cff StockMarketView.exe Orquestador STOCKSTAY.STOCKMARKET 82707cfdf24dcb762f4615f01e1ba4d3dfdec4abe9cd588558d2634d7e6a5eeb StockMarketNet.exe Tuneladora STOCKSTAY.STOCKBROKER 249a4c7cacdd8e99a2a089a5c0ce904f2eff22e0e40fcfb10f7824dca6c51ecb StockMarketSystem.exe Backdoor STOCKSTAY.STOCKTRADER b728eba4f0d6d16602fbad05a591f14391594262d3584b2e249e97f86e4dcc5a default.conf Archivo de configuración de STOCKSTAY 40b1208dda0cd5dd95c6b57764b2cfe7145b3ed9457f498408b4aaa05bf3ef50 Indicador Descripción https://circoloesteri.elezioni.idnet.it/admin-election/riepilogo.php Señuelo en lengua italiana relacionado con la votación sobre asuntos relacionados con el Ministerio de Relaciones Exteriores italiano. wss://wool-basalt-clock.glitch.me/ws STOCKSTAY WebSocket C2 Marzo 18 – Abril 3, 2025: Ucrania El 2 de abril de 2025, GTIG identificó una cuenta de correo electrónico comprometida enviando un correo electrónico de phishing que contenía un mensaje que aparentaba originarse de una universidad ucraniana, relacionado con la prueba de un nuevo entorno de aprendizaje a distancia. El actor de amenazas adjuntó un archivo malicioso de Protocolo de Escritorio Remoto (RDP) al correo electrónico, que al abrirse resultó en el establecimiento de una conexión entre la víctima y un puerto RDP abierto (3389) alojado en el dominio registrado por el actor, elegido para imitar la misma institución académica. Una vez que la víctima se conectó a la infraestructura del actor, GTIG observó que el actor desplegaba STOCKSTAY.MARKETMAKER al cliente. STOCKSTAY.MARKETMAKER fue configurado para descargar un ZIP que contenía STOCKSTAY de un sitio web legítimo pero comprometido perteneciente al Servicio Estatal Regulador de Ucrania. A diferencia de la mayoría de las observaciones anteriores, el archivo de configuración observado durante esta operación estaba protegido con una contraseña codificada. Esto parece corresponderse con el enfoque de esta operación particular en el acceso inicial al ambiente de la víctima a través de spear-phishing, a través del cual es posible que el actor no conozca el nombre de dominio o host específico, y por lo tanto no puede ser utilizado para la codificación ambiental. GTIG pudo identificar el malware utilizando la URL C2 de WebSocket wss://weatherdataai.theworkpc.com/ws. Según los metadatos asociados con el archivo ZIP descargado por STOCKSTAY.MARKETMAKER, los componentes centrales de STOCKSTAY utilizados durante esta operación fueron modificados por última vez entre el 18 y el 26 de marzo, y el archivo de configuración fue modificado por última vez el 31 de marzo. Nombre del Archivo Descripción SHA-256 MicrosoftUpdateOneDrive.exe STOCKSTAY.MARKETMAKER Descargador da8a96bc74e265f945f1cc6992c6dc0f9ea36ed1991f7b8d312db79d9bf78c40 docs.zip Archivo ZIP que contiene componentes de STOCKSTAY 9fe944147c15a87963b06baf6473288d64c23655a0ba9369c35566272d8efc73 SMEditor.exe Backdoor STOCKSTAY.STOCKTRADER e1d16fb635060d23e889b0617d77f0cf06d00cc19b43a2c8b5ac53ac027ac722 SMNet.exe Tuneladora STOCKSTAY.STOCKBROKER dfd5cb91d06b9649d4cab500343af80ad1144a9e46641cc406f43dd169003c22 StockMarketView.exe Orquestador STOCKSTAY.STOCKMARKET 2af7b513c05e76d7da5f75bb0a223c894a706c99ef2c2ddfe4eae542f95a08e0 fonts Archivo de configuración de STOCKSTAY 40a3b969d81ef1ef35dd9ebcc6774e060b1b8949d3d74f38ca6b7d789c95cdb3 Indicador Descripción https://www.drs.gov.ua/wp-content/themes/twentytwentyfive/docs.zip Infraestructura del Servicio Estatal Regulador de Ucrania comprometida sirviendo archivo ZIP que contiene componentes de STOCKSTAY wss://weatherdataai.theworkpc.com/ws STOCKSTAY WebSocket C2 14 de mayo de 2025: Polonia GTIG identificó dos muestras de STOCKSTAY.STOCKBROKER siendo subidas a VirusTotal el 14 de mayo de 2025 desde Polonia. La primera muestra, llamada “ClientMNGR2.exe”, coincidía con versiones previamente observadas, sin embargo, la segunda muestra, llamada “GR3.exe”, estaba fuertemente ofuscada utilizando grandes cantidades de código basura, y un mecanismo de ofuscación de cadenas previamente desconocido. GTIG rastrea este mecanismo de ofuscación como K1MORPHER, y desde entonces hemos observado su inclusión en todos los componentes centrales de STOCKSTAY, y dentro de muestras selectas de KAZUAR; aumentando nuestra confianza de que STOCKSTAY existe dentro del mismo ecosistema de desarrollo que otro malware aprovechado por Turla. Nombre del Archivo Descripción SHA-256 ClientMNGR2.exe STOCKSTAY.STOCKBROKER tuneladora ofuscada con K1MORPHER d3fd32f915c239872c9e7ed9408b1f36dfcef03aa68f9a396d05c437667cdb43 GR3.exe STOCKSTAY.STOCKBROKER tuneladora ofuscada con K1MORPHER 98ce3c6e4dd05887ea619f2bbfeb2e2c2805ed07e85e119b79b828b7ef8be397 28 de mayo - 8 de agosto de 2025: Ucrania — Despliegue a través de HTA Maliciosos El 8 de agosto de 2025, GTIG identificó un archivo RAR, “calculator.rar”, siendo enviado a VirusTotal. El archivo había sido alojado en infraestructura comprometida perteneciente a una empresa de TI ucraniana desde al menos el 22 de julio de 2025. El archivo contenía un archivo HTA malicioso llamado “Калькулятор грошового забезпечення військовослужбовців 2025.hta” (traducción: "Calculadora de beneficios de efectivo para el personal militar 2025.hta"). El HTA estaba diseñado para ejecutar una variante del descargador STOCKSTAY.MARKETMAKER, que también se incluía en el archivo, utilizando el código mostrado. El ejecutable STOCKSTAY.MARKETMAKER recuperó un archivo ZIP, “EditorToolsPdf.zip”, que contiene los componentes centrales de STOCKSTAY de un segundo servidor comprometido localizado en Ucrania, esta vez alojando el archivo dentro de una instancia de WordPress comprometida. Análisis de los timestamps de modificación dentro del archivo de señuelo de la calculadora militar muestra que esta operación data desde al menos el 28 de mayo de 2025, cuando la mayoría de los contenidos de la carpeta “calculator_2025_files” fueron modificados por última vez. El ejecutable STOCKSTAY.MARKETMAKER fue modificado por última vez el 5 de junio de 2025, y el archivo HTA malicioso fue modificado el 10 de junio de 2025. Un examen similar del archivo de STOCKSTAY muestra que el archivo de configuración fue modificado el 4 de junio de 2025, mientras que el archivo comprimido en sí fue modificado por última vez en el servidor comprometido el 5 de junio de 2025. Esta serie de eventos muestra que el archivo ZIP completo de STOCKSTAY fue preparado en la infraestructura comprometida mientras se realizaban modificaciones a los engaños iniciales de phishing. GTIG ha podido confirmar a través de un tercero de confianza que la compromise original del servidor ucraniano utilizado para alojar el archivo de STOCKSTAY ocurrió en o antes del 13 de mayo de 2025. Nombre del Archivo Descripción SHA-256 calculator.rar Archivo RAR que contiene componentes de STOCKSTAY 6da0b4c1a5d0d3fb6e6a2990a82ba51db1f68a3bba818baa46526a29731e2342 Калькулятор грошового забезпечення військовослужбовців 2025.hta Señuelo HTA (nombre de archivo traducido: “Calculadora de beneficios de efectivo para el personal militar 2025.hta”) 0d6b083208097d5b3e189891338540f6c64faaaaf268b0bb0b085dd53d5857b4 styles.dat.exe STOCKSTAY.MARKETMAKER descargador 626330d22f77d9cbca9d40cc06568041703f194610c4c5a84bbb05a2e4ee7459 EditorToolsPdf.zip Archivo ZIP que contiene componentes de STOCKSTAY 447f430b46fad5a3f8e8c5aad1f8f7f79af069489c3d9c29224bb9f14f0c7bf4 ViewPdf.exe Orquestador STOCKSTAY.STOCKMARKET 45bb8d1ab2c13bf4354294e13d3c9be15de625d807301905b98462f43f93e893 ClientMNGR.exe STOCKSTAY.STOCKBROKER tuneladora 80f6c010fd260d0bcf18a4b6a8d62505adbed50d2e615ed9522c4bfd61c00661 ConverterDDSNet.exe STOCKSTAY.STOCKTRADER backdoor 55249f296b63a8bcf911b8bc96de43c1ac2b4a56c150a19d33d892a47e57352c fonts Archivo de configuración de STOCKSTAY e3364ee21cae6725451e8bc9ab9933df0000fd19814170bd132da68d1906d5ff Indicador Descripción https://basecon.com.ua/calculator.rar Archivo RAR que contiene señuelo HTA y descargador STOCKSTAY.MARKETMAKER https://online.zp.ua/wp-content/uploads/Tools/EditorToolsPdf.zip Infraestructura de WordPress comprometida alojando el archivo ZIP de STOCKSTAY wss://canal1zac1a.onrender.com/ws STOCKSTAY WebSocket C2 23 - 28 de julio de 2025: El Actor Utiliza GitHub para Alojar Archivos MSI de STOCKSTAY GTIG identificó una cuenta de GitHub que sospechamos está siendo utilizada por el actor de amenazas para probar o desplegar STOCKSTAY. La cuenta de GitHub, Roberto1983-ai, fue creada el 23 de julio de 2025 a las 12:01:03. El 24 de julio de 2025, la cuenta creó un repositorio público llamado msi_installer_test2, en el cual se subió un único archivo: DiplomacyEduAI.msi. Un segundo repositorio, esta vez llamado msi_installer_test3, fue creado por el mismo usuario el 28 de julio de 2025, y posteriormente poblado con otra versión de DiplomacyEduAI.msi. Ambas versiones de DiplomacyEduAI.msi contenían componentes esenciales de STOCKSTAY, junto con un archivo de configuración que contenía la URL C2 de WebSocket wss://canal1zac1a.onrender.com/ws. GTIG no ha podido identificar ninguna operación activa utilizando estos archivos MSI específicos. Nombre del Archivo Descripción SHA-256 DiplomacyEduAI.msi MSI que contiene componentes de STOCKSTAY 19e6ed42248f9d03beb343a7c09a864dcd3cd671c29e1e5eac93579225224ac9 DiplomacyEduAI.msi MSI que contiene componentes de STOCKSTAY 6298f3150ad94a242e649886d47c59c634a4d04b9af5ee15e3bf335c40b5e58e ClientMNGR.exe STOCKSTAY.STOCKBROKER tuneladora 80f6c010fd260d0bcf18a4b6a8d62505adbed50d2e615ed9522c4bfd61c00661 ViewPdf.exe Orquestador STOCKSTAY.STOCKMARKET 45bb8d1ab2c13bf4354294e13d3c9be15de625d807301905b98462f43f93e893 ConverterDDSNet.exe STOCKSTAY.STOCKTRADER backdoor d8fe8f3fe838d5b1a1043096f6f6bb6f524f5f1b0c9f83a081078a824daa0cf3 fonts Archivo de configuración STOCKSTAY 4e3bed10a8eff3e9205c1f37f647512464271d5ac65df7ae4709735621a38320 Indicador Descripción wss://canal1zac1a.onrender.com/ws STOCKSTAY WebSocket C2 14 de agosto de 2025: El Actor Usa GitHub para Alojar el Código del Servidor STOCKSTAY GTIG identificó una segunda cuenta de GitHub, que se observó alojando lo que evaluamos como código del lado del servidor para manejar las comunicaciones C2 de STOCKSTAY. La cuenta de GitHub, ChikenFresh, fue creada el 14 de agosto de 2025, luego casi inmediatamente creó un repositorio público llamado google-ai-labs-it, en el cual se subió el código del control de C2 sospechado. Nuestro análisis del controlador C2 se incluye en la sección de análisis del malware anterior en este informe. El nombre del repositorio de GitHub corresponde a un servidor C2 de STOCKSTAY identificado que se ejecuta en la plataforma Render, sin embargo, GTIG no ha observado ninguna operación activa utilizando esta infraestructura. Evaluamos que el actor de amenazas vinculó este repositorio de GitHub a su cuenta de Render para utilizar sus capacidades de alojamiento de WebSocket. Nombre del Archivo Descripción SHA-256 server.py Controlador C2 de STOCKSTAY en Python f04f43b6f7c2d86109c495179b497f7fb45fd95816623de1b77900f71b4f99ed models.py Definiciones de tabla de base de datos y modelos para uso por server.py 7615140f78d9a0ce31cc9fe8c54c60028a7439cb32526fd97b10afef7145dd78 wtools.py Funciones utilitarias para uso por server.py b55f3b8a7334af049ba3f70a9ad3fe78574b1e180c68baf9a7110d104387a636 Indicador Descripción wss://google-ai-labs-it.onrender.com/ws STOCKSTAY WebSocket C2 Noviembre de 2025: Ucrania — Engaños Relacionados con Drones y Despliegue a través de CVE-2025-8088 El 6 de noviembre de 2025, GTIG identificó un lote de correos electrónicos de phishing siendo enviados desde una cuenta de correo electrónico temática de drones de UKR.NET, a aproximadamente 20 objetivos basados en Ucrania, cada uno conteniendo un enlace único de archivo compartido ukr.net. Cada enlace conducía a un archivo RAR malicioso que explota una vulnerabilidad de traversal de ruta en WinRAR (CVE-2025-8088) para instalar los componentes centrales de STOCKSTAY. Se observaron continuaciones de esta actividad de phishing el 12 y 14 de noviembre de 2025. Identificamos que solo alrededor del 30% de los destinatarios de estos correos electrónicos de phishing abrieron los correos, sin embargo, no podemos confirmar cuántos de estos individuos descargaron o ejecutaron las cargas útiles maliciosas. Todas las cuentas de Google afectadas fueron marcadas para verificaciones adicionales de autenticación como medida preventiva contra posible compromiso de cuentas. Google también notificó a los usuarios afectados a través de nuestras notificaciones de Advertencia de Ataque Respaldadas por el Gobierno (GBAW). GTIG identificó dos tipos distintos de documentos de señuelo en lengua ucraniana dentro de los archivos RAR maliciosos, ambos pareciendo dirigidos al personal militar ucraniano. El primero, “Донесення БпЛА 06.11.2025.docx” (“Informe de UAV 06.11.2025.docx”), afirmaba ser “[A] Informe sobre la disponibilidad/necesidad de UAVs, su estado, la disponibilidad de tripulaciones para cada UAV en las unidades, su formación en la zona de defensa de la 1ª Brigada a partir del 06.11.2025”. El segundo señuelo, observado como “Товари(докладніше).docx” (“Productos (más detalles).docx”) y “Приклади товарів для листа (деталізовано).docx” (“Ejemplos de productos para la carta (detallado).docx”), predominaba en una lista de equipos mencionando: “Medicina táctica”; “Equipos de comunicación y vigilancia”; “Equipos y equipos de supervivencia”; y “Propiedad automovilística”. Cada uno de los documentos de señuelo contenía una referencia a una imagen externa que causaba que se estableciera una conexión desde la máquina de la víctima a un sitio probablemente monitorizado por el actor de amenazas, señalando que el documento ha sido abierto. GTIG cree que las URL referenciadas por los documentos de señuelo pueden estar alojadas en infraestructura comprometida. GTIG identificó que las instancias de STOCKSTAY observadas siendo desplegadas durante esta operación contenían mejoras destinadas a aumentar la resistencia a la detección, específicamente, dividiendo la funcionalidad en módulos externos. Estos módulos externos fueron nombrados para imitar bibliotecas legítimas de Windows, utilizando los nombres de archivo que se muestran. Componente Nombre de Archivo STOCKSTAY.STOCKMARKET MSViewer.exe Módulo central compartido de STOCKSTAY ms-lib-math-core.dll módulo principal STOCKSTAY.STOCKBROKER MSDriver.exe módulo principal STOCKSTAY.STOCKBROKER ms-api-wmcpdt.dll STOCKSTAY.STOCKTRADER MSRender.exe módulo principal STOCKSTAY.STOCKTRADER ms-api-win-render.dll Tabla de archivos de componentes STOCKSTAY observados en noviembre de 2025 GTIG observó dos distintas URL de WebSocket C2 de STOCKSTAY siendo utilizadas durante esta ola de phishing. La mayoría de las instancias utilizaron la URL wss://driverx86-adobe.onrender.com/ws; sin embargo, pudimos identificar al menos una instancia de STOCKSTAY utilizando wss://google-ai-labs-it.onrender.com/ws, correspondiente a la repositorio de GitHub previamente descrito asociado con el usuario ChikenFresh. Junto a los componentes centrales de STOCKSTAY, los archivos RAR maliciosos contenían archivos LNK, descritos como “Acceso Directo de Actualizador”, correspondientes a cada componente central de STOCKSTAY. La ruta de extracción del archivo fue configurada para intentar desplegarse en el directorio de programas de inicio. GTIG pudo identificar que el actor comenzó a crear los archivos LNK para esta operación aproximadamente seis horas antes de que se enviaran los primeros correos electrónicos de phishing, con los documentos de señuelo en lengua ucraniana siendo creados alrededor de cuatro horas antes. Nombre del Archivo Descripción SHA-256 MSViewer.exe Orquestador STOCKSTAY.STOCKMARKET a40bf9c75d1bfa6d66f1179f2321de6589f80d3089d992797a9cb0e84f6196ce MSViewer.exe Orquestador STOCKSTAY.STOCKMARKET e316b1e13154dc6115e1e0c023f6fe3d17861cae839d4a4a81779b6aad9a24f8 MSDriver.exe Tuneladora STOCKSTAY.STOCKBROKER c905cb512018cc55512c6a22677c3d6f389c47afd54d7c85797868fc4fcb90e9 MSRender.exe Backdoor STOCKSTAY.STOCKTRADER 667a8f568a611f2f3d84a366b7946b360e055bece9699c95aad619637ab72a38 ms-lib-math-core.dll Módulo que contiene funciones criptográficas y de ofuscación esenciales, históricamente encontrado dentro de los componentes centrales de STOCKSTAY b287347a5bff8af360ce0e6500c336b6fe6d97920abc26202c9d843ffebc5f89 ms-api-win-render.dll Módulo que contiene controladores de comandos de backdoor, históricamente encontrado dentro de STOCKSTAY.STOCKTRADER 1682e8d82016b3f10434d2ebac995fd3b6aa812f079bfd7888652e94a994d851 ms-api-wmcpdt.dll Módulo que contiene la lógica IPC de STOCKSTAY, históricamente encontrado dentro de cada componente de STOCKSTAY MSViewer.lnk Acceso directo destinado a ejecutar STOCKSTAY.STOCKMARKET 3627f582420ad2782d452fe6d13fae42658d1484296351d3916703e25dcadd14 MSRender.lnk Acceso directo destinado a ejecutar STOCKSTAY.STOCKTRADER 77417df21b4b4e8d86b8bda4afeef93fd36f355362586b2d1f51121a82244167 MSDriver.lnk Acceso directo destinado a ejecutar STOCKSTAY.STOCKBROKER 813c78b5b6ef28a9c0ed35f2c6cd88fc50880ab91f8777dfe7aaccb1c24b08d5 fonts Archivo de configuración de STOCKSTAY e83f274bf9914c6cfc0c6b3cdadf089565f49dace4aca93287c22 fonts Archivo de configuración de STOCKSTAY f964353b9ae4bedbe62de6c0d7eafa9fb8b87897bbaea483aedaa8ae191834da Indicador Descripción wss://driverx86-adobe.onrender.com/ws STOCKSTAY WebSocket C2 wss://google-ai-labs-it.onrender.com/ws STOCKSTAY WebSocket C2 Atribución GTIG atribuye el ecosistema STOCKSTAY y la actividad relacionada a clústeres de amenazas evaluados con alta confianza en vínculos con Turla, basado en lo siguiente: STOCKSTAY utiliza Windows-1251 durante el procesamiento de comandos - una codificación notablemente diseñada específicamente para soportar scripts en cirílico. Esto es indicativo de un entorno de desarrollo u operativo vinculado a Europa del Este, los Balcanes o Asia Central. STOCKSTAY tiene superposiciones de código con KAZUAR, un kit de herramientas propietario ampliamente atribuido a Turla, basado en la reciente introducción de la ofuscación de cadenas K1MORPHER en ambas familias de malware dentro de una ventana de tiempo similar. GTIG observó que STOCKSTAY se entregó desde infraestructura comprometida que también fue identificada como albergando parte de la infraestructura C2 orientada a la víctima de KAZUAR de Turla. Turla tiene un enfoque consistente en atacar organizaciones de defensa y militares ucranianas, y fue identificado dentro de una Respuesta a Incidentes de Mandiant desplegando STOCKSTAY junto con una variedad de otros malwares propietarios de Turla, como WILDDAY, DIAMONDBACK y KAZUAR. Detecciones Operaciones de Google (SecOps) Los clientes de SecOps tendrán acceso a las siguientes reglas pendientes de implementación. Una vez completamente desplegadas, estas reglas estarán disponibles bajo los conjuntos de reglas de Amenazas Frontline de Mandiant, Caza de Mandiant y Amenazas Emergentes de Inteligencia de Mandiant: Extracción de Archiver a la Clave de Registro de Inicio de Windows Escritura de Claves de Registro Escritura en la Clave de Registro de Ejecución Escritura Potencial de un Archivo RDP Desde el Archivos de Configuración de Phishing Conexión Iniciada desde Directorio de Preparación Dominio de Onrender Consulta DNS Sospechosa Reglas YARA regla G_Backdoor_STOCKSTAY_ConfigurationFile_2 { meta: author = "Google Threat Intelligence Group" description = "Detecta archivos de configuración encriptados asociados con STOCKSTAY." hash = "40a3b969d81ef1ef35dd9ebcc6774e060b1b8949d3d74f38ca6b7d789c95cdb3" strings: $s1 = "\"SystemConfiguration\"" $s2 = "Una aplicación para obtener información sobre eventos actuales en plataformas comerciales" $s3 = "Para establecer el tiempo de actualización de información, ingrese un valor en minutos en el campo `Interval`." $s4 = "El campo `SystemConfiguration` almacena la configuración del sistema de la aplicación." $s5 = "En el campo `services`, complete la lista de direcciones de los servicios que proporcionan el `protocolo WebSocket`." $s6 = "wss://" condition: uint16(0) == 0x227B // {" y 4 de ($s*) } regla G_Backdoor_STOCKSTAY_ConfigurationFile_3 { meta: author = "Google Threat Intelligence Group" description = "Detecta archivos de configuración temprana asociados a STOCKSTAY." hash = "1a2ca8b8e0344fe3d80da7352206a470245443e2349a237bc093df934ddc011f" strings: $key_required_1 = "\"List 1\"" $key_required_2 = "\"List 2\"" $key_required_3 = "\"List 3\"" $key_dummy_1 = "\"BinanceApi\"" $key_dummy_2 = "\"CoinbaseCloudApi\"" $key_dummy_3 = "\"CoinbaseCloudApi Sandbox\"" $key_dummy_4 = "\"ByBitApi Spot\"" $key_dummy_5 = "\"ByBitApi Linear\"" $key_dummy_6 = "\"Info level\"" $key_dummy_7 = "\"Rate info\"" $key_dummy_8 = "\"Info level\"" condition: uint8(0) == 0x7B // { y el tamaño del archivo > 500 y todos los $key_required_* y 3 de ($key_dummy*) } regla G_Backdoor_STOCKSTAY_ConfigurationFile_5 { meta: author = "Google Threat Intelligence Group" description = "Detecta archivos de configuración en texto plano utilizados por la familia de malware STOCKSTAY." hash = "6cee9e838792ac5e2098362d68ce93a9a2c095d476dc16b289fe8509c99b2b8b" strings: $internal_id_1 = "\"internal_id\"" $internal_id_2 = "\"i_id\"" $internal_key_1 = "\"internal_key\"" $internal_key_2 = "\"i_k\"" $interval_engine_1 = "\"interval_engine\"" $interval_engine_2 = "\"ie\"" $level_info_1 = "\"level_info\"" $level_info_2 = "\"li\"" $time_scale_1 = "\"time_scale\"" $time_scale_2 = "\"ts\"" $span_min_1 = "\"span_min\"" $span_min_2 = "\"mx1\"" $span_max_1 = "\"span_max\"" $span_max_2 = "\"my1\"" $rate_1 = "\"rate\"" $rate_2 = "\"rt_x_y\"" $rate_control_1 = "\"rate_control\"" $service_1 = "\"service\"" $service_2 = "\"srv\"" $days_not_work_1 = "\"days_not_work\"" $days_not_work_2 = "\"dnw\"" $system_properties_1 = "\"system_properties\"" $system_properties_2 = "\"sp\"" condition: cualquiera de ($internal_id*) y cualquiera de ($internal_key*) y cualquiera de ($interval_engine*) y cualquiera de ($level_info*) y cualquiera de ($time_scale*) y cualquiera de ($span_min*) y cualquiera de ($span_max*) y cualquiera de ($rate*) y cualquiera de ($service*) y cualquiera de ($days_not_work*) y cualquiera de ($system_properties*) } regla G_Backdoor_STOCKSTAY_CryptoContainer_1 { meta: author = "Google Threat Intelligence Group" description = "Detecta código para analizar contenedores criptográficos dentro de los componentes de STOCKSTAY." hash = "82707cfdf24dcb762f4615f01e1ba4d3dfdec4abe9cd588558d2634d7e6a5eeb" strings: $s1 = "BuildCryptoContainer" $s2 = "ParseCryptoContainer" $s3 = "Windows-1251" ancho $s4 = "AesCryptoServiceProvider" $s5 = "RSACryptoServiceProvider" condition: uint16(0) == 0x5a4d y todos ellos } regla G_Backdoor_STOCKSTAY_WindowNames_1 { meta: author = "Google Threat Intelligence Group" description = "Detecta nombres de ventana de STOCKSTAY." hash = "dfd5cb91d06b9649d4cab500343af80ad1144a9e46641cc406f43dd169003c22" strings: $import = "_CorExeMain" $s2 = "SMEditorPage" ancho $s3 = "SMNetPage" ancho $s4 = "StockMarketViewPage" ancho $s5 = "window_system32_x128" ancho $s6 = "window_system32_x64" ancho $s7 = "window_system32_x32" ancho condition: $import y cualquiera de ($s*) } regla G_Downloader_STOCKSTAY_MARKETMAKER_1 { meta: author = "Google Threat Intelligence Group" description = "Detecta el descargador STOCKSTAY.MARKETMAKER basado en nombres de métodos y nombres de archivos de carga." hash = "da8a96bc74e265f945f1cc6992c6dc0f9ea36ed1991f7b8d312db79d9bf78c40" strings: $f1 = "CheckAutoRun" $f2 = "SetupAutoRun" $f3 = "DownloadAndExtractZip" $f4 = "GetSystemProxy" $s0 = "_CorExeMain" $s1 = "Software\\Microsoft\\Windows\\CurrentVersion\\Run" ancho $s2 = "StockMarketView.exe" ancho $s3 = "SMNet.exe" ancho $s4 = "SMEditor.exe" ancho condition: todos ellos } regla G_Controller_STOCKSTAY_STOCKMARKET_1 { meta: author = "Google Threat Intelligence Group" description = "Detecta el controlador STOCKSTAY.STOCKMARKET basado en nombres de métodos y campos, y consultas SQL" hash = "2af7b513c05e76d7da5f75bb0a223c894a706c99ef2c2ddfe4eae542f95a08e0" strings: $f1 = "ProtocolMessageConnect" $f2 = "ProtocolMessageEnd" $f3 = "ProtocolMessagePing" $f4 = "ProtocolMessageRequestRecv" $f5 = "ProtocolMessageRequestSend" $f6 = "ProtocolMessageTask" $f7 = "ProtocolMessageTaskSysinfo" $f8 = "TMR_AppInit_Tick" $f9 = "TMR_Engine_Tick" $f10 = "TMR_KeepAlive_Tick" $f11 = "TMR_PingNet_Tick" $f12 = "TMR_PingSystem_Tick" $f13 = "GetDataTrade" $f14 = "GetDataNews" $f15 = "InsertDataTrade" $f16 = "InsertDataNews" $sql1 = "CREATE TABLE IF NOT EXISTS News (" ancho $sql2 = "CREATE TABLE IF NOT EXISTS Trade (" ancho $sql3 = "CREATE TABLE IF NOT EXISTS Market (" ancho $sql4 = "INSERT INTO Market ( Guid, Version, Config, Status, Launch, Type ) VALUES (@Guid, @Version, @Config, @Status, @Launch, @Type)" ancho $sql5 = "INSERT INTO News (Container) VALUES (@Container)" ancho $sql6 = "INSERT INTO Trade (Container) VALUES (@Container)" ancho condition: 8 de ($f*) y cualquiera de ($sql*) } regla G_Tunneler_STOCKSTAY_STOCKBROKER_1 { meta: author = "Google Threat Intelligence Group" description = "Detecta la tuneladora STOCKSTAY.STOCKBROKER basada en nombres de controladores de mensajes IPC conocidos y variables." hash = "dfd5cb91d06b9649d4cab500343af80ad1144a9e46641cc406f43dd169003c22" strings: $s1 = "_CorExeMain" $s2 = "ProtocolMessageStatusConnection" $s3 = "ProtocolMessageResult" $s4 = "ProtocolMessageEnd" $s5 = "OnGetDataFromServer" $s6 = "webSocket" $s7 = "wmCopyData" $s8 = "tempStorage" condition: todos ellos } regla G_Backdoor_STOCKSTAY_STOCKTRADER_3 { meta: author = "Google Threat Intelligence Group" description = "Detecta el backdoor STOCKSTAY.STOCKTRADER basado en controladores de comandos conocidos y hashes FNV1a." hash = "82707cfdf24dcb762f4615f01e1ba4d3dfdec4abe9cd588558d2634d7e6a5eeb" strings: $cmd_1 = "AppDel" $cmd_3 = "AppDeleteRegistryValue" $cmd_4 = "AppDir" $cmd_5 = "AppGet" $cmd_6 = "AppMkdir" $cmd_7 = "AppPut" $cmd_8 = "AppReadRegistryValue" $cmd_9 = "AppRegistryKeyExists" $cmd_10 = "AppRmdir" $cmd_11 = "AppRun" $cmd_12 = "AppWriteRegistryValue" $cmd_13 = "AppUnpackArchive" $cmd_14 = "ArchiveFiles" $cmd_15 = "GetFiles" $cmd_16 = "Sysinfo" $hash_1 = {ea8e5e34} $hash_2 = {3445694e} $hash_3 = {f73e97b6} $hash_4 = {9aa70c59} $hash_5 = {18b496c9} $hash_6 = {0f716ebc} $hash_7 = {8e2d79ce} $hash_8 = {3ae2a963} $hash_9 = {35d26840} $hash_10 = {6c41d6bc} $hash_11 = {1fdbbb2f} $hash_12 = {6ae6578d} $hash_13 = {66732be7} $hash_14 = {0b113b3d} condition: uint16(0) == 0x5a4d y ( 12 de ($cmd*) o 10 de ($hash*) ) } regla G_Hunting_K1MORPHER_1 { meta: author = "Google Threat Intelligence Group" description = "Detecta nombres de clases y métodos en texto plano asociados con la clase .NET K1.Morpher" hash = "45bb8d1ab2c13bf4354294e13d3c9be15de625d807301905b98462f43f93e893" strings: $plain_api_1 = "Squirrel3" $plain_api_2 = "DecryptArraySimple" $plain_api_3 = "DecryptIntSimple" $plain_api_4 = "DecryptLongSimple" $plain_api_5 = "DecryptFloatSimple" $plain_api_6 = "DecryptStringSimple" $plain_api_7 = "DecryptDoubleSimple" $plain_api_8 = "_squ_ui1" $plain_api_9 = "_squ_ui2" $plain_api_10 = "_squ_ui3" $plain_api_11 = "InjectedSeedCipher" condition: dotnet.is_dotnet y 5 de ($plain_api*) } regla G_Hunting_K1MORPHER_2 { meta: author = "Google Threat Intelligence Group" description = "Detecta el Squirrel3 RNG implementado dentro de K1.Morpher" hash = "45bb8d1ab2c13bf4354294e13d3c9be15de625d807301905b98462f43f93e893" strings: $squirrel3_code_1 = { 00 // nop 03 // ldarg.1 0A // stloc.0 06 // ldloc.0 7E ??????04 // ldsfld <token> 5A // mul 0A // stloc.0 06 // ldloc.0 02 // ldarg.0 58 // add 0A // stloc.0 06 // ldloc.0 06 // ldloc.0 1E // ldc.i4.8 64 // shr.un 61 // xor 0A // stloc.0 06 // ldloc.0 7E ??????04 // ldsfld <token> 58 // add 0A // stloc.0 06 // ldloc.0 06 // ldloc.0 1E // ldc.i4.8 62 // shl 61 // xor 0A // stloc.0 06 // ldloc.9 7E ??????04 // ldsfld <token> 5A // mul 0A // stloc.0 06 // ldloc.0 06 // ldloc.0 1E // ldc.i4.8 64 // shr.un 61 // xor 0A // stloc.0 06 // ldloc.0 0B // stloc.1 2B 00 // br.s 40 07 // ldloc.1 2A // ret } condition: dotnet.is_dotnet y todos ellos } regla G_Hunting_K1MORPHER_3 { meta: author = "Google Threat Intelligence Group" description = "Detecta el Squirrel3 RNG implementado dentro de K1.Morpher" hash = "391e51354118fb87dc57650cbbd94258c3f7c0a0d6868040b7a473ad626ff25e" strings: $squirrel3_code_1 = { 03 // ldarg.1 7E??????04 // ldsfld <token> 5A // mul 02 // ldarg.0 58 // add 25 // dup 1E // ldc.i4.8 64 // shr.un 61 // xor 7E??????04 // ldsfld <token> 58 // add 25 // dup 1E // ldc.i4.8 62 // shl 61 // xor 7E??????04 // ldsfld <token> 5A // mul 25 // dup 1E // ldc.i4.8 64 // shr.un 61 // xor 2A // ret } condition: dotnet.is_dotnet y todos ellos } Agradecimientos Este análisis no habría sido posible sin la asistencia de Gabby Roncone para la revisión técnica. También apreciamos a GitHub por su colaboración contra esta amenaza.

Leer el artículo completo en el sitio original

Enlace externo a cloudblog.withgoogle.com

Artículos relacionados