GlassWorm Esconde un RAT Dentro de una Extensión Malintencionada de Chrome
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
GlassWorm abusa de paquetes npm, PyPI, GitHub y OpenVSX comprometidos para distribuir una plataforma de malware de varias etapas. Su primera etapa lanza un cargador que consulta un memo de blockchain de Solana para obtener direcciones de comando y control, luego descarga una carga útil encriptada. La segunda etapa roba credenciales, archivos de billetera de criptomonedas y detalles del host, mientras que la tercera etapa despliega un RAT persistente basado en WebSocket junto con una extensión maliciosa de Chrome diseñada para capturar datos del navegador. La operación está dirigida principalmente a desarrolladores y poseedores de criptomonedas.
Investigación
Los analistas vincularon el compromiso inicial a scripts de preinstalación maliciosos y cargadores basados en Unicode incrustados en paquetes que de otra manera serían legítimos. Descubrieron dos direcciones de billeteras de Solana actuando como ubicaciones de depósito para las URL de C2 y vieron cómo el cargador sondeaba varios endpoints RPC de Solana. El RAT de la tercera etapa depende de nodos de arranque DHT y recurre a la recuperación basada en Solana si falla la resolución DHT. Los investigadores también identificaron la infraestructura de exfiltración y trazaron el mapa de la extensión maliciosa de Chrome utilizada en la campaña.
Mitigación
Las organizaciones deben imponer el escaneo de la cadena de suministro para npm y otros ecosistemas de paquetes, verificar la integridad de los paquetes y la confianza del editor, y bloquear IPs y dominios maliciosos conocidos. Las defensas de endpoints deben monitorear las ejecuciones no autorizadas de Node.js, tareas programadas inesperadas y claves de ejecución del registro sospechosas. Los almacenes de credenciales del navegador deben fortalecerse, y los usuarios de criptomonedas deben adoptar la verificación con billeteras de hardware siempre que sea posible.
Respuesta
Si se detecta GlassWorm, aísle el endpoint afectado, detenga los procesos maliciosos y elimine cualquier archivo descargado y mecanismos de persistencia como tareas programadas. Revoque tokens npm comprometidos, rote las credenciales de las billeteras de criptomonedas y restablezca las contraseñas almacenadas en el navegador. Complete una revisión forense completa de los registros del host para rastrear la ejecución del cargador y actualice los controles de seguridad para reducir el riesgo de futuros compromisos de la cadena de suministro.
"graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef persistence fill:#99ffcc classDef exfil fill:#ff9999 classDef credential fill:#ccccff classDef execution fill:#ffdb4d classDef collection fill:#c2f0c2 classDef command fill:#ffd699 %% Nodes u2013 Attack Steps step1_initial_access["<b>Técnica</b> – <b>T1195.001 Compromiso de la Cadena de Suministro</b><br/>Paquetes de npm/pyPI maliciosos y repositorios de GitHub comprometidos entregan un cargador."] class step1_initial_access technique step2_obfuscation["<b>Técnica</b> – <b>T1027 Archivos o Información Ofuscados</b><br/>El código del cargador está ofuscado y compilado después de la entrega (T1027.004)."] class step2_obfuscation execution step3_guardrails["<b>Técnica</b> – <b>T1480 Guardas de Ejecución</b><br/>El cargador verifica el entorno local, el idioma y la zona horaria, y aborta la ejecución fuera de las regiones rusas objetivo."] class step3_guardrails execution step4_dead_drop["<b>Técnica</b> – <b>T1102.001 Resolvedor de Depósito Muerto</b><br/>El cargador consulta memos de transacciones de la blockchain de Solana para obtener la URL de C2."] class step4_dead_drop command step5_cred_files["<b>Técnica</b> – <b>T1552.001 Credenciales en Archivos</b><br/>Recopila .npmrc, NPM_TOKEN, configuraciones de proveedores de nube y claves privadas de SSH."] class step5_cred_files credential step6_browser_creds["<b>Técnica</b> – <b>T1555.003 Credenciales de Navegadores Web</b><br/>Extrae contraseñas, cookies, datos de autocompletar y tarjetas de pago de Chrome, Edge, Firefox; elude la encriptación específica de la aplicación."] class step6_browser_creds credential step7_private_keys["<b>Técnica</b> – <b>T1552.004 Claves Privadas</b><br/>Copia archivos de billeteras de criptomonedas y capturas de pantalla de frases semilla."] class step7_private_keys credential step8_exfil_webhook["<b>Técnica</b> – <b>T1567.004 Exfiltración a Través de Webhook</b><br/>Comprime datos preliminares y los envía mediante POST a endpoints HTTP controlados por el atacante."] class step8_exfil_webhook exfil step9_persistence_rc["<b>Técnica</b> – <b>T1037.004 Scripts RC</b><br/>Crea una entrada en HKCUSoftwareMicrosoftWindowsCurrentVersionRun y tarea programada para lanzar PowerShell al iniciar."] class step9_persistence_rc persistence step10_wmi_event["<b>Técnica</b> – <b>T1546.003 Suscripción de Eventos WMI</b><br/>Registra un evento WMI para detectar billeteras de hardware USB y lanzar una interfaz de suplantación de identidad."] class step10_wmi_event persistence step11_ps_profile["<b>Técnica</b> – <b>T1546.013 Perfil de PowerShell</b><br/>Agrega persistencia a través de un script de perfil de PowerShell."] class step11_ps_profile persistence step12_vnc["<b>Técnica</b> – <b>T1021.005 VNC</b><br/>Carga un módulo nativo oculto de VNC (HVNC) para un escritorio remoto invisible."] class step12_vnc command step13_multi_stage["<b>Técnica</b> – <b>T1104 Canales de Múltiples Etapas</b><br/>Establece un canal bidireccional de WebSocket Socket.IO para comandos C2."] class step13_multi_stage command step14_input_injection["<b>Técnica</b> – <b>T1674 Inyección de Entrada</b><br/>Ejecuta JavaScript suministrado por el atacante a través de eval() dentro del RAT."] class step14_input_injection execution step15_keylog_clip["<b>Técnica</b> – <b>T1056.001 Keylogging</b> & <b>T1115 Datos del Portapapeles</b><br/>La extensión maliciosa de Chrome registra pulsaciones de teclas, captura texto del portapapeles y toma capturas de pantalla."] class step15_keylog_clip collection step16_browser_hijack["<b>Técnica</b> – <b>T1185 Secuestro de Sesiones del Navegador</b><br/>La extensión recolecta cookies y tokens de sesión y puede redirigir pestañas activas a URLs controladas por el atacante."] class step16_browser_hijack collection %% Connections u2013 Attack Flow step1_initial_access –>|leads to| step2_obfuscation step2_obfuscation –>|leads to| step3_guardrails step3_guardrails –>|leads to| step4_dead_drop step4_dead_drop –>|leads to| step5_cred_files step5_cred_files –>|leads to| step6_browser_creds step6_browser_creds –>|leads to| step7_private_keys step7_private_keys –>|leads to| step8_exfil_webhook step8_exfil_webhook –>|leads to| step9_persistence_rc step9_persistence_rc –>|leads to| step10_wmi_event step10_wmi_event –>|leads to| step11_ps_profile step11_ps_profile –>|leads to| step12_vnc step12_vnc –>|leads to| step13_multi_stage step13_multi_stage –>|leads to| step14_input_injection step14_input_injection –>|leads to| step15_keylog_clip step15_keylog_clip –>|leads to| step16_browser_hijack "
Flujo de Ataque
Detecciones
Ejecución de Binario NodeJS desde Ubicación No Común (vía cmdline)
Ver
Intento de Comunicación de Búsqueda de Dominio de IP Posible (vía dns)
Ver
Puntos de Persistencia Posibles [ASEPs – Software/Colmena NTUSER] (vía evento_registro)
Ver
Posible Abuso de Ethereum Publicnode Como Canal C2 (vía consulta_dns)
Ver
IOCs (DestinationIP) para detectar: GlassWorm Esconde un RAT Dentro de una Extensión Maliciosa de Chrome
Ver
IOCs (HashMd5) para detectar: GlassWorm Esconde un RAT Dentro de una Extensión Maliciosa de Chrome
Ver
IOCs (HashSha256) para detectar: GlassWorm Esconde un RAT Dentro de una Extensión Maliciosa de Chrome
Ver
IOCs (HashSha1) para detectar: GlassWorm Esconde un RAT Dentro de una Extensión Maliciosa de Chrome
Ver
IOCs (SourceIP) para detectar: GlassWorm Esconde un RAT Dentro de una Extensión Maliciosa de Chrome
Ver
IOCs (Emails) para detectar: GlassWorm Esconde un RAT Dentro de una Extensión Maliciosa de Chrome
Ver
Detección de Exfiltración de Datos y RAT GlassWorm [Conexión de Red Windows]
Ver
Detección de Ejecución de Binario de Phishing Ledger/Trezor [Creación de Proceso Windows]
Ver
Ejecución de Simulación
Requisito previo: El Chequeo Previo de Telemetría & Línea de Base debe haber pasado.
Rationale: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narración DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa de Ataque & Comandos:
Un atacante ha obtenido un binario malicioso que pretende ser el cliente de billetera Ledger Live/Trezor. El binario se llamaAssaac.exepara imitar un ejecutable legítimo. Se coloca en el directorio%APPDATA%del usuario, y un archivo JavaScript complementario (index.js) se coloca en una subcarpeta ocultaQtCvyfVWKH. Luego, el atacante ejecuta el binario, lo que provoca que Windows registre un evento de creación de proceso con el nombre exacto de la imagen y la ruta de la línea de comando que observa la regla Sigma.Paso a paso:
- Crea la carpeta oculta y coloca el script malicioso.
- Copia el ejecutable malicioso (
Assaac.exe) en el AppData del usuario. - Inicia el ejecutable, que lee
index.jsy comienza las rutinas de robo de credenciales.
-
Script de Prueba de Regresión:
# ------------------------------------------------------------ # Configurar archivos maliciosos # ------------------------------------------------------------ $appData = $env:APPDATA $folder = Join-Path $appData "QtCvyfVWKH" $exePath = Join-Path $appData "Assaac.exe" $jsPath = Join-Path $folder "index.js" # Asegúrese de que la carpeta oculta exista New-Item -ItemType Directory -Path $folder -Force | Out-Null # Ocultar la carpeta (opcional) (Get-Item $folder).Attributes += 'Hidden' # Desplegar un ejecutable malicioso de prueba (para demo utilizamos una copia de calc.exe) Copy-Item -Path "$env:SystemRootSystem32calc.exe" -Destination $exePath -Force # Desplegar una carga útil JavaScript de prueba (el contenido es irrelevante para la detección) @" // marcador de carga maliciosa console.log('Robo de billetera de criptomonedas ejecutado'); "@ | Set-Content -Path $jsPath -Encoding UTF8 # ------------------------------------------------------------ # Ejecutar el binario malicioso (esto debería activar la regla Sigma) # ------------------------------------------------------------ & $exePath "$jsPath" # ------------------------------------------------------------ # Fin del script – deje artefactos para la limpieza manual # ------------------------------------------------------------ -
Comandos de Limpieza:
# Terminar el proceso malicioso si aún está en ejecución Get-Process -Name "Assaac" -ErrorAction SilentlyContinue | Stop-Process -Force # Eliminar los archivos y carpetas creados Remove-Item -Path $exePath -Force -ErrorAction SilentlyContinue Remove-Item -Path $jsPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $folder -Recurse -Force -ErrorAction SilentlyContinue