GammaSteel: Dentro de la Evolución de la Cadena de Malware de Gamaredon
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El informe describe GammaSteel, una nueva cadena de intrusión de Gamaredon (UAC-0010) construida alrededor de un robador sin archivos de PowerShell. El malware almacena 71 funciones encriptadas en la clave del registro HKCUPrinters y las protege con Windows DPAPI. Recoge documentos de unidades locales, medios USB y archivos que están siendo editados activamente, luego desduplicó los datos con MD5 antes de exfiltrarlos al servicio legítimo compatible con S3 Tebi.io, con respaldo en dominios rusos codificados. La infraestructura más amplia también depende de resolutores desechables hospedados en plataformas públicas como Telegram, Telegra.ph, Write.as, Rentry.co, y Mastodon, junto con servicios DNS dinámicos. La campaña sigue apuntando a entornos del gobierno y la infraestructura crítica de Ucrania.
Investigación
Sekoia.io analizó más de 70 artefactos, reconstruyó el instalador completo de PowerShell, e identificó persistencia basada en el registro, un mutex, ejecución programada escondida de PowerShell, y un esquema de exfiltración en múltiples capas. Los investigadores mapearon la infraestructura de resolutores, catalogaron 115 direcciones IP, cuatro dominios, y varios conjuntos de credenciales S3, y observaron actualizaciones automáticas hechas a través de publicaciones en Mastodon. También notaron similitudes con la actividad InvisiMole de 2020, particularmente el uso de cargas encriptadas con DPAPI almacenadas en el registro.
Mitigación
Las organizaciones deben monitorear escrituras inusuales a clave del registro HKCUPrinters, creación de procesos ocultos de PowerShell, y el uso del mutex Globalassembly307 . El tráfico saliente al punto final S3 identificado s3.tebi.io y la infraestructura de respaldo como justsstop.ru and 165.22.170.129 debe ser bloqueado. Los defensores también deben desplegar detecciones para la cadena de agente de usuario estilo iPhone específica y para las entradas de Registry Run que invocan scripts de PowerShell.
Respuesta
Si se detecta actividad de GammaSteel, aísle el host afectado, recolecte la clave del registro HKCUPrinters colmena del registro, extraiga las cargas protegidas con DPAPI y descífrelo usando la clave maestra de la víctima cuando sea posible. Busque a lo largo del entorno artefactos relacionados, bloquee las URLs y dominios de comando y control identificados, restablezca cualquier credencial comprometida, y realice una revisión forense completa para identificar módulos maliciosos adicionales.
"graph TB %% Definiciones de clase classDef technique fill:#e6f7ff classDef process fill:#ffebcc classDef action fill:#c2f0c2 classDef tool fill:#dddddd classDef storage fill:#ffe6e6 classDef network fill:#d9d9ff classDef data fill:#f0e68c %% Nodos – técnicas tech_T1027_009["<b>Técnica</b> – <b>T1027.009 Cargas Incrustadas</b><br/>Ofusca la carga dentro de otro archivo"] class tech_T1027_009 technique tech_T1027_007["<b>Técnica</b> – <b>T1027.007 Resolución Dinámica de API</b><br/>Resuelve APIs en tiempo de ejecución para evitar el análisis estático"] class tech_T1027_007 technique tech_T1027_002["<b>Técnica</b> – <b>T1027.002 Empaquetado de Software</b><br/>Empaqueta código malicioso para ocultar su verdadera naturaleza"] class tech_T1027_002 technique tech_T1027_013["<b>Técnica</b> – <b>T1027.013 Archivo Encriptado/Codificado</b><br/>Encripta datos usando DPAPI antes del almacenamiento"] class tech_T1027_013 technique tech_T1547_001["<b>Técnica</b> – <b>T1547.001 Claves Run del Registro / Carpeta de Inicio</b><br/>Agrega una clave Run para lograr persistencia"] class tech_T1547_001 technique tech_T1037_005["<b>Técnica</b> – <b>T1037.005 Elementos de Inicio</b><br/>Usa elementos de inicio para persistencia"] class tech_T1037_005 technique tech_T1680["<b>Técnica</b> – <b>T1680 Descubrimiento de Almacenamiento Local</b><br/>Descubre unidades locales y perfiles de usuario"] class tech_T1680 technique tech_T1135["<b>Técnica</b> – <b>T1135 Descubrimiento de Comparticiones de Red</b><br/>Encuentra ubicaciones de red compartidas"] class tech_T1135 technique tech_T1006["<b>Técnica</b> – <b>T1006 Acceso Directo al Volumen</b><br/>Accede directamente a medios removibles"] class tech_T1006 technique tech_T1025["<b>Técnica</b> – <b>T1025 Datos de Medios Removibles</b><br/>Recoge datos de dispositivos USB"] class tech_T1025 technique tech_T1564_005["<b>Técnica</b> – <b>T1564.005 Sistema de Archivos Ocultos</b><br/>Almacena archivos en ubicaciones ocultas"] class tech_T1564_005 technique tech_T1005["<b>Técnica</b> – <b>T1005 Datos del Sistema Local</b><br/>Recoge archivos de la máquina local"] class tech_T1005 technique tech_T1537["<b>Técnica</b> – <b>T1537 Transferir Datos a Cuenta en la Nube</b><br/>Carga datos robados a almacenamiento en la nube"] class tech_T1537 technique tech_T1538["<b>Técnica</b> – <b>T1538 Tablero del Servicio en la Nube</b><br/>Usa interfaces del servicio en la nube para exfiltración de datos"] class tech_T1538 technique tech_T1102_001["<b>Técnica</b> – <b>T1102.001 Servicio Web: Resolver de Gotero Oculto</b><br/>Recupera comandos y configuración de servicios web públicos"] class tech_T1102_001 technique tech_T1620["<b>Técnica</b> – <b>T1620 Carga de Código Reflejado</b><br/>Carga y ejecuta código recibido en tiempo de ejecución"] class tech_T1620 technique %% Nodos – acciones y componentes malware_dropper["<b>Malware</b> – <b>Nombre</b>: Instalador Inicial<br/><b>Descripción</b>: Ejecuta script de PowerShell ofuscado"] class malware_dropper process process_powershell["<b>Proceso</b> – <b>Nombre</b>: PowerShell<br/><b>Rol</b>: Ejecuta script codificado"] class process_powershell process storage_dpapi["<b>Almacenamiento</b> – <b>Ubicación</b>: HKCUPrinters<br/><b>Contenido</b>: 71 funciones encriptadas con DPAPI"] class storage_dpapi storage persistence_runkey["<b>Acción</b> – <b>Persistencia</b>: Clave Run del Registro<br/><b>Clave</b>: HKCUSoftwareMicrosoftWindowsCurrentVersionRun"] class persistence_runkey action process_hidden_ps["<b>Proceso</b> – <b>Nombre</b>: PowerShell Oculto<br/><b>Propósito</b>: Lee el orquestador del registro"] class process_hidden_ps process orchestrator["<b>Acción</b> – <b>Orquestador</b>: Enumera recursos y coordina la colección"] class orchestrator action enumeration["<b>Acción</b> – <b>Enumeración</b>: Unidades, perfiles, comparticiones de red"] class enumeration action collection["<b>Acción</b> – <b>Colección</b>: Recoge archivos de ubicaciones locales y de red"] class collection action monitor_usb["<b>Acción</b> – <b>Monitoreo USB</b>: Suscripción de eventos WMI para medios removibles"] class monitor_usb action staging_folder["<b>Almacenamiento</b> – <b>Carpeta Oculta</b>: Área de preparación para archivos copiados"] class staging_folder storage fs_watcher["<b>Proceso</b> – <b>Nombre</b>: FileSystemWatcher<br/><b>Función</b>: Monitorea cambios en unidades no-USB"] class fs_watcher process deduplication["<b>Acción</b> – <b>Deduplicación</b>: Elimina archivos duplicados antes de la exfiltración"] class deduplication action upload_s3["<b>Acción</b> – <b>Subida</b>: Envía datos a un bucket compatible con S3 (tebi.io)"] class upload_s3 network fallback_post["<b>Acción</b> – <b>Exfiltración de Respaldo</b>: POST a dominios C2 imitando UA de iPhone"] class fallback_post network dead_drop["<b>Acción</b> – <b>Resolver de Gotero Oculto</b>: Recupera configuración de Telegram, Telegra.ph, Write.as, Rentry.co, Mastodon"] class dead_drop action vbscript_backdoor["<b>Acción</b> – <b>Puerta Trasera Secundaria</b>: Ejecuta VBScript arbitrario desde respuesta HTTP"] class vbscript_backdoor action %% Conexiones – flujo malware_dropper –>|usa| tech_T1027_009 malware_dropper –>|usa| tech_T1027_007 malware_dropper –>|usa| tech_T1027_002 malware_dropper –>|almacena datos encriptados en| tech_T1027_013 malware_dropper –>|lanza| process_powershell process_powershell –>|escribe funciones encriptadas en| storage_dpapi storage_dpapi –>|habilita| persistence_runkey persistence_runkey –>|crea| tech_T1547_001 persistence_runkey –>|crea| tech_T1037_005 persistence_runkey –>|inicia| process_hidden_ps process_hidden_ps –>|carga orquestador desde el registro| orchestrator orchestrator –>|realiza| enumeration enumeration –>|cubre| tech_T1680 enumeration –>|cubre| tech_T1135 orchestrator –>|recoge datos usando| collection collection –>|usa| tech_T1005 collection –>|incluye medios removibles vía| tech_T1025 collection –>|incluye acceso directo al volumen vía| tech_T1006 collection –>|dispara| monitor_usb monitor_usb –>|copia archivos a| staging_folder staging_folder –>|está oculto por| tech_T1564_005 staging_folder –>|monitoreado por| fs_watcher fs_watcher –>|detecta cambios y dispara| deduplication deduplication –>|sube a la nube vía| upload_s3 upload_s3 –>|depende de| tech_T1537 upload_s3 –>|respaldo a| fallback_post fallback_post –>|depende de| tech_T1538 orchestrator –>|obtiene actualizaciones de| dead_drop dead_drop –>|usa| tech_T1102_001 dead_drop –>|entrega| vbscript_backdoor vbscript_backdoor –>|aprovecha| tech_T1620 %% Asignaciones de estilo class malware_dropper,process_powershell,process_hidden_ps,fs_watcher,orchestrator,monitor_usb,vbscript_backdoor builtin class storage_dpapi,staging_folder builtin class persistence_runkey,enumeration,collection,deduplication,upload_s3,fallback_post,dead_drop action class tech_T1027_009,tech_T1027_007,tech_T1027_002,tech_T1027_013,tech_T1547_001,tech_T1037_005,tech_T1680,tech_T1135,tech_T1006,tech_T1025,tech_T1564_005,tech_T1005,tech_T1537,tech_T1538,tech_T1102_001,tech_T1620 technique "
Flujo de Ataque
Detecciones
Puntos de Persistencia Posibles [ASEPs – Hive de Software/NTUSER] (vía evento_registro)
Ver
La Posibilidad de Ejecución a Través de Líneas de Comando de PowerShell Ocultas (vía cmdline)
Ver
LOLBAS WScript / CScript (vía creación_proceso)
Ver
Posible Descubrimiento de Información del Sistema Usando Módulo Wmi Powershell (vía powershell)
Ver
Consulta DNS de Proceso Sospechoso a Web Services Conocidos Abusivos (vía conexión_red)
Ver
Posible Abuso del Dominio de Desarrollo de Cloudflare (vía dns)
Ver
IOC (SourceIP) para detectar: la matrioshka #3/3 del FSB – regalos de Gamaredon que siguen desentrañándose – GammaSteel
Ver
IOC (DestinationIP) para detectar: la matrioshka #3/3 del FSB – regalos de Gamaredon que siguen desentrañándose – GammaSteel
Ver
Detección de Ejecución Oculta de PowerShell para Operaciones de Gamaredon [Windows Powershell]
Ver
Detección de la Técnica de Staging de PowerShell en el Registro de Gamaredon [Evento de Registro de Windows]
Ver
Ejecución de Simulación
Prerrequisito: El chequeo pre‑vuelo de Telemetría y Línea Base debe haber pasado.
Justificación: Esta sección detalla la ejecución precisa de la técnica adversaria (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTP identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa de Ataque & Comandos:
El atacante, habiendo comprometido una cuenta de usuario de bajo privilegio, quiere preparar una carga de PowerShell encriptada sin tocar el sistema de archivos. Escriben la carga codificada en Base64 en laRunclave para que se ejecute en el próximo inicio de sesión. Para evitar la única exclusión de la regla, deliberadamente usan una sub‑clave bajoHKCUPrintersque es not el valor excluido, imitando el patrón de «staging de impresoras» observado en muestras de Gamaredon. -
Script de Prueba de Regresión:
# -------------------------------------------------------------- # Simular el Staging de PowerShell en el Registro de Gamaredon (TC-20260608-A1B2C) # -------------------------------------------------------------- # 1. Definir un comando PowerShell encriptado en Base64, inofensivo (por ejemplo, escribir un archivo) $payload = 'Write-Host "Ejecución de simulación de Gamaredon"' $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload)) # 2. Persistir la carga a través de la clave Run (persistencia) $runKey = 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun' New-ItemProperty -Path $runKey -Name 'GamaredonStager' -Value "powershell -enc $b64" -PropertyType String -Force # 3. Preparar la misma carga en una clave "printer" (staging sin archivo) $printerKey = 'HKCU:PrintersYxwHku2chu0bznt3kkyAD' # Nota: sufijo diferente para evitar exclusión New-Item -Path $printerKey -Force | Out-Null Set-ItemProperty -Path $printerKey -Name 'EncryptedPS' -Value $b64 -Force Write-Host "Simulación completa – entradas del registro creadas." -
Comandos de Limpieza:
# Remover entrada de clave Run Remove-ItemProperty -Path 'HKCU:SOFTWAREMicrosoftWindowsCurrentVersionRun' -Name 'GamaredonStager' -ErrorAction SilentlyContinue # Remover clave de staging de impresora Remove-Item -Path 'HKCU:PrintersYxwHku2chu0bznt3kkyAD' -Recurse -Force -ErrorAction SilentlyContinue Write-Host "Limpieza completa – artefactos del registro removidos."