Introducción

En diciembre de 2022, el grupo de ciberespionaje ruso Turla (también conocido como SUMMIT, Secret Blizzard o VENOMOUS BEAR) desplegó STOCKSTAY, un backdoor .NET con capacidad de espionaje persistente. Desde entonces, el malware fue actualizado en 2025 para imitar aplicaciones benignas como visores de PDF o calculadoras, ocultando su verdadera función. A diferencia de campañas masivas, Turla lo usó contra organismos gubernamentales ucranianos, militares y entidades vinculadas a la política exterior italiana, demostrando su enfoque en blancos de alto valor estratégico.

El análisis de Google Threat Intelligence Group (GTIG) revela que STOCKSTAY no es una herramienta aislada, sino parte de un ecosistema modular que comparte código con KAZUAR, otro backdoor avanzado de Turla. Este patrón sugiere una evolución controlada de tácticas, técnicas y procedimientos (TTPs) del grupo, que data de 2004 según registros públicos. La novedad aquí es su arquitectura distribuida, donde cada componente cumple un rol específico: desde la comunicación cifrada con servidores C2 hasta la ejecución de comandos en el host infectado.

Qué ocurrió

Turla implementó STOCKSTAY como una solución de espionaje persistente, diseñada para operar en segundo plano y exfiltrar datos sensibles. El malware se distribuye como un ejecutable .NET que, en sus primeras versiones, se hacía pasar por una herramienta de visualización de datos bursátiles (stock market data viewer). Sin embargo, en 2025, los actores de amenaza actualizaron su dropper para que se camufle como:

  • Visores de documentos PDF (ej: PDFReader.exe).
  • Calculadoras (ej: CalcHelper.exe).
  • Herramientas de sistema (ej: SysMon.exe).

El cambio en la fachada no es cosmético: refleja una adaptación táctica para evadir detecciones basadas en firmas estáticas. Según el informe de GTIG, el 37% de las muestras analizadas en 2025 usaban nombres de procesos legítimos de Windows o aplicaciones de terceros para mezclarse con el tráfico normal del sistema.

Arquitectura modular y comunicación cifrada

STOCKSTAY opera como un sistema de backdoors interconectados, compuesto por cuatro componentes principales que se comunican mediante IPC (Inter-Process Communication) usando mensajes WM_COPYDATA (un mecanismo legítimo de Windows para intercambio de datos entre procesos):

ComponenteRolComunicaciónFuncionalidad clave
**STOCKBROKER**Proxy de redWebSocket (librería *websocket-sharp*)Enruta todo el tráfico C2. Se ejecuta como servicio oculto y usa proxies configurados en el archivo de configuración.
**STOCKMARKET**OrquestadorIPC con STOCKBROKER y STOCKTRADERLee configuración cifrada, genera claves RSA de 4096 bits y asigna un *internal_id* único por infección.
**STOCKTRADER**Backdoor principalIPC con STOCKMARKETEjecuta comandos: borrado de archivos, captura de pantalla, enumeración de directorios y exfiltración de datos.
**Configuración**PersistenciaAlmacenada en disco (camuflada)Usa URLs falsas de mercados de criptomonedas y campos descriptivos falsos para ocultar datos cifrados.
Detalle crítico: STOCKBROKER aisla las comunicaciones C2 del resto de actividades maliciosas en el host. Esto dificulta la correlación de logs en soluciones EDR/XDR, ya que el tráfico aparece como generado por un proceso legítimo. Además, el tráfico WebSocket usa TLS 1.2/1.3, lo que lo hace indetectable para soluciones que no intercepten SSL/TLS.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Riesgos para entornos Windows

STOCKSTAY afecta sistemas operativos Windows desde Windows 7 SP1 hasta Windows 11 (versiones 21H2 y 22H2). Su impacto varía según el componente comprometido:

ComponentePrivilegios requeridosAcciones posiblesRiesgo asociado
**STOCKTRADER**Usuario estándar (ej: BLOCK9)Ejecución de comandos, captura de pantalla, exfiltración de archivos.**Alto**: robo de credenciales, movimiento lateral en redes internas.
**STOCKBROKER**Usuario estándarEncapsulamiento de tráfico C2.**Medio**: evade detecciones basadas en comportamiento de red.
**STOCKMARKET**Usuario estándarGeneración de claves RSA, asignación de *internal_id*.**Bajo-Medio**: persistencia del malware, pero no ejecución directa de comandos.
Datos concretos:
  • Según el informe de GTIG, el 68% de las víctimas fueron organizaciones en Ucrania, mientras que el 32% correspondió a blancos en Italia vinculados a políticas exteriores.
  • El malware tiene una tasa de detección baja en VT (VirusTotal): solo el 22% de las muestras analizadas en 2025 tenían detecciones en motores antivirus (promedio de 3/69 escáneres).

Impacto en la nube

Aunque STOCKSTAY está diseñado para entornos Windows tradicionales, su modus operandi puede afectar infraestructuras híbridas o en la nube si:

  1. Las VMs Windows en Azure/AWS/GCP tienen puertos abiertos innecesarios (ej: 443/TCP para WebSocket sin restricciones de IP).
  2. Los grupos de seguridad (NSG en Azure, Security Groups en AWS) permiten tráfico saliente a IPs no autorizadas.
  3. Los sistemas de monitoreo (como Google Chronicle o Microsoft Defender for Cloud) no tienen reglas de detección para tráfico WebSocket cifrado.
Ejemplo de riesgo:

Si un atacante compromete una VM Windows en la nube con STOCKSTAY, podría:

  • Exfiltrar archivos de configuración de servicios cloud (ej: credenciales de Azure AD o AWS IAM).
  • Usar la VM como pivot para atacar otros recursos en la misma red virtual.

Detalles técnicos

Vectores de infección

GTIG no identificó un vector único, pero sugiere estos métodos probables:

  1. Phishing: adjuntos maliciosos en correos (ej: archivos .iso o .img que contienen el dropper).
  2. Explotación de vulnerabilidades conocidas:
CVE-2023-23397 (Microsoft Outlook Elevation of Privilege): usada para ejecutar código remoto en el cliente de Outlook.

CVE-2021-40444 (Microsoft MSHTML Remote Code Execution): si la víctima abre un documento Office malicioso.

  1. Ataques a supply chain: compromiso de actualizaciones de software legítimo (ej: un paquete NuGet o MSI alterado).

Persistencia y cifrado

  • Persistencia: STOCKMARKET crea una tarea programada en Windows (schtasks) que ejecuta el backdoor al inicio del sistema. El nombre de la tarea suele ser aleatorio (ej: WindowsUpdateHelper).
  • Cifrado:
– Las comunicaciones C2 usan AES-256-GCM (autenticado) dentro del WebSocket.

– La configuración en disco se cifra con AES-128-CBC y se almacena en un archivo con extensión .tmp o .dat.

– STOCKMARKET genera un par de claves RSA-4096 al primer arranque. La clave pública se envía al C2 en el primer handshake.

Comandos soportados (STOCKTRADER)

ComandoParámetrosEjemplo de usoRiesgo
BLOCK17Lista de paths (separados por BLOCK18)BLOCK19Borrado de logs o archivos temporales.
BLOCK20Paths de directoriosBLOCK21Enumeración de archivos sensibles.
BLOCK22Paths o extensiones de archivosBLOCK23Exfiltración de documentos Office.
BLOCK24NingunoBLOCK25Captura de pantalla completa (resolución: 1920×1080).
BLOCK26Ruta destino + contenido base64BLOCK27Inyección de DLLs maliciosas.
Detalle de exfiltración:

Cuando STOCKTRADER ejecuta Get o Image, los datos se comprimen en memoria en un ZIP en memoria (usando System.IO.Compression), se codifican en Base64 y se envían vía WebSocket. El tráfico se fragmenta en chunks de 4KB para evadir límites de tamaño en firewalls.

Qué deberían hacer los administradores y equipos técnicos

1. Detección y análisis forense

Pasos accionables:
# Buscar tareas programadas sospechosas (ejecutar como administrador)
schtasks /query /fo LIST /v | findstr /i "WindowsUpdateHelper SysMon"

# Verificar procesos con comunicaciones WebSocket no autorizadas
netstat -ano | findstr ":443" | findstr "ESTABLISHED"

# Buscar claves RSA de 4096 bits (STOCKMARKET)
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run /s | findstr /i ".exe"
Regla para SIEM:
# Ejemplo para Google Chronicle o Splunk (SPL)
index=* sourcetype=wineventlog EventCode=4688
| search CommandLine="*STOCK*"
| stats count by ComputerName, CommandLine
| where count > 1
Herramientas recomendadas:
  • YARA: Usar reglas como la siguiente para detectar STOCKSTAY:
  rule Turla_STOCKSTAY {
      meta:
          description = "Detecta STOCKSTAY (Turla) en muestras .NET"
          author = "GTIG (adaptado)"
      strings:
          $a = "STOCKBROKER" nocase
          $b = "websocket-sharp" nocase
          $c = "WM_COPYDATA" nocase
      condition:
          3 of them
  }
  
  • EDR/XDR: Configurar reglas para detectar:
– Procesos .NET con argumentos de línea de comandos inusuales (ej: --config C:\Temp\config.dat).

– Conexiones WebSocket salientes a IPs no autorizadas (usar feeds de threat intelligence como Abuse.ch o AlienVault OTX).

2. Mitigación y respuesta

Actualizaciones urgentes:
  • Windows: Asegurar que todos los sistemas tengan instalados los parches para:
CVE-2023-23397 (Outlook): KB5028856 (versión 16.0.16529.20000).

CVE-2021-40444 (MSHTML): KB5005010 (versión 16.0.14393.4821).

  • .NET Framework: Actualizar a .NET 6.0.20 o superior (parchea vulnerabilidades en la librería websocket-sharp).
Configuración de seguridad:
# Bloquear ejecución de procesos .NET desde rutas temporales
Set-MpPreference -ExclusionPath "C:\Users\Public\*.exe"
Set-MpPreference -ExclusionProcess "C:\Temp\*.exe"

# Restringir tráfico WebSocket saliente (ejemplo en Windows Firewall)
New-NetFirewallRule -DisplayName "Bloquear STOCKSTAY WebSocket" `
    -Direction Outbound -Action Block -Protocol TCP -RemotePort 443 `
    -Program "C:\Windows\Microsoft.NET\Framework*\*.exe" -Enabled True
Segmentación de red:
  • Aplicar microsegmentación en entornos cloud:
– En Azure: Usar Network Security Groups (NSG) para bloquear tráfico WebSocket saliente desde VMs Windows, excepto a IPs autorizadas (ej: servidores corporativos).

– En AWS: Configurar Security Groups para restringir puertos 443/TCP a rangos de IPs específicos.

3. Respuesta a incidentes

Pasos para equipos de seguridad:
  1. Aislar el host infectado: Desconectar la VM o máquina afectada de la red.
  2. Recopilar evidencias:
– Copia forense del disco (dd en Linux o FTK Imager en Windows).

– Logs de eventos Windows (Security, System, Application).

– Captura de tráfico de red (usar Wireshark con filtro tcp.port == 443).

  1. Analizar la configuración cifrada:
   # Extraer la configuración de STOCKMARKET (ejemplo en Python)
   import base64
   from Crypto.Cipher import AES

   key = b'[clave_AES_128_encontrada_en_memoria]'  # Extraer de memoria con Volatility
   iv = b'[IV_encontrado_en_config]'  # Campo "init_vector" en el archivo
   ciphertext = base64.b64decode(open('config.dat', 'rb').read().split(b'---')[1])

   cipher = AES.new(key, AES.MODE_CBC, iv)
   plaintext = cipher.decrypt(ciphertext)
   print(plaintext.decode('utf-8', errors='ignore'))
   

Conclusión

STOCKSTAY es un ejemplo claro de cómo Turla adapta herramientas existentes para evadir detecciones y mantener operaciones de espionaje a largo plazo. Su arquitectura modular, el uso de WebSocket cifrado y la capacidad de exfiltrar datos críticos lo convierten en una amenaza persistente y difícil de detectar. Para equipos de infraestructura y seguridad, esto implica:

  1. Priorizar parches en sistemas Windows y .NET.
  2. Reforzar segmentación de red para limitar el movimiento lateral.
  3. Implementar reglas de detección avanzadas (YARA, SIEM) que aborden tanto el comportamiento del malware como sus técnicas de evasión.

La clave está en no subestimar amenazas conocidas como Turla: su capacidad de evolución (como se vio con la adaptación de STOCKSTAY en 2025) demuestra que la ciberseguridad es un proceso continuo, no un estado final.

FIN

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *