GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
GlassWorm abusa de pacotes npm, PyPI, GitHub e OpenVSX comprometidos para distribuir uma plataforma de malware em múltiplas etapas. Sua primeira etapa lança um carregador que consulta um memo de blockchain Solana para obter endereços de comando e controle, depois baixa uma carga encriptada. A segunda etapa rouba credenciais, arquivos de carteiras de criptomoeda e detalhes do host, enquanto a terceira etapa implanta um RTA persistente baseado em WebSocket junto com uma extensão maliciosa do Chrome projetada para capturar dados do navegador. A operação é direcionada principalmente a desenvolvedores e detentores de criptomoeda.
Investigação
Os analistas vincularam a violação inicial a scripts de pré-instalação maliciosos e carregadores baseados em Unicode incorporados em pacotes que, de outra forma, seriam legítimos. Eles descobriram dois endereços de carteira Solana atuando como locais de armazenamento temporário para URLs de C2 e observaram o carregador consultar vários endpoints RPC da Solana. O RAT da terceira etapa depende de nós de bootstrap DHT e recorre à recuperação baseada em Solana se a resolução do DHT falhar. Os pesquisadores também identificaram a infraestrutura de exfiltração e mapearam a extensão maliciosa do Chrome usada na campanha.
Mitigação
As organizações devem impor varreduras na cadeia de suprimentos para npm e outros ecossistemas de pacotes, verificar a integridade do pacote e a confiança do editor, e bloquear IPs e domínios conhecidos como maliciosos. As defesas de endpoint devem monitorar tempos de execução do Node.js desonestos, tarefas agendadas inesperadas e chaves de execução de registro suspeitas. Os armazenamentos de credenciais do navegador devem ser reforçados, e os usuários de criptomoeda devem adotar a verificação por carteira de hardware sempre que possível.
Resposta
Se GlassWorm for detectado, isole o endpoint afetado, interrompa os processos maliciosos e remova quaisquer arquivos ou mecanismos de persistência, como tarefas agendadas. Revogue os tokens npm comprometidos, gire as credenciais de carteiras de criptomoeda e redefina as senhas armazenadas no navegador. Conclua uma revisão forense completa dos logs do host para rastrear a execução do carregador e atualize os controles de segurança para reduzir o risco de futuras violações na cadeia de suprimentos.
"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>Technique</b> – <b>T1195.001 Comprometimento da Cadeia de Suprimentos</b><br/>Pacotes npm/pyPI maliciosos e repositórios GitHub comprometidos entregam um carregador."] class step1_initial_access technique step2_obfuscation["<b>Technique</b> – <b>T1027 Arquivos ou Informações Ofuscadas</b><br/>O código do carregador é ofuscado e compilado após a entrega (T1027.004)."] class step2_obfuscation execution step3_guardrails["<b>Technique</b> – <b>T1480 Mecanismos de Proteção à Execução</b><br/>O carregador verifica localidade, idioma e fuso horário e aborta a execução fora de regiões russas alvo."] class step3_guardrails execution step4_dead_drop["<b>Technique</b> – <b>T1102.001 Resolvedor de Dead Drop</b><br/>O carregador consulta memos de transações na blockchain Solana para obter o URL de C2."] class step4_dead_drop command step5_cred_files["<b>Technique</b> – <b>T1552.001 Credenciais em Arquivos</b><br/>Colhe .npmrc, NPM_TOKEN, configurações do provedor de nuvem e chaves privadas SSH."] class step5_cred_files credential step6_browser_creds["<b>Technique</b> – <b>T1555.003 Credenciais de Navegadores Web</b><br/>Extrai senhas, cookies, dados de preenchimento automático e cartões de pagamento do Chrome, Edge, Firefox; contorna encriptação ligada ao aplicativo."] class step6_browser_creds credential step7_private_keys["<b>Technique</b> – <b>T1552.004 Chaves Privadas</b><br/>Copia arquivos de carteiras de criptomoeda e capturas de tela de frases-semente."] class step7_private_keys credential step8_exfil_webhook["<b>Technique</b> – <b>T1567.004 Exfiltração via Webhook</b><br/>Compacta dados preparados e faz POST para endpoints HTTP controlados pelo atacante."] class step8_exfil_webhook exfil step9_persistence_rc["<b>Technique</b> – <b>T1037.004 Scripts RC</b><br/>Cria entrada HKCUSoftwareMicrosoftWindowsCurrentVersionRun e tarefa agendada para lançar o carregador PowerShell na inicialização."] class step9_persistence_rc persistence step10_wmi_event["<b>Technique</b> – <b>T1546.003 Assinatura de Evento WMI</b><br/>Registra evento WMI para detectar carteiras de hardware USB e lançar UI de phishing."] class step10_wmi_event persistence step11_ps_profile["<b>Technique</b> – <b>T1546.013 Perfil PowerShell</b><br/>Adiciona persistência via script de perfil PowerShell."] class step11_ps_profile persistence step12_vnc["<b>Technique</b> – <b>T1021.005 VNC</b><br/>Carrega módulo nativo VNC oculto (HVNC) para área de trabalho remota invisível."] class step12_vnc command step13_multi_stage["<b>Technique</b> – <b>T1104 Canais Multi-Estágio</b><br/>Estabelece um canal bidirecional Socket.IO WebSocket para comandos C2."] class step13_multi_stage command step14_input_injection["<b>Technique</b> – <b>T1674 Injeção de Entrada</b><br/>Executa JavaScript fornecido pelo atacante via eval() dentro do RAT."] class step14_input_injection execution step15_keylog_clip["<b>Technique</b> – <b>T1056.001 Registro de Teclas</b> & <b>T1115 Dados da Área de Transferência</b><br/>A extensão maliciosa do Chrome registra pressionamentos de teclas, captura texto da área de transferência e tira capturas de tela."] class step15_keylog_clip collection step16_browser_hijack["<b>Technique</b> – <b>T1185 Sequestro de Sessão do Navegador</b><br/>A extensão coleta cookies e tokens de sessão e pode redirecionar abas ativas para URLs controlados pelo atacante."] class step16_browser_hijack collection %% Connections u2013 Attack Flow step1_initial_access –>|leva a| step2_obfuscation step2_obfuscation –>|leva a| step3_guardrails step3_guardrails –>|leva a| step4_dead_drop step4_dead_drop –>|leva a| step5_cred_files step5_cred_files –>|leva a| step6_browser_creds step6_browser_creds –>|leva a| step7_private_keys step7_private_keys –>|leva a| step8_exfil_webhook step8_exfil_webhook –>|leva a| step9_persistence_rc step9_persistence_rc –>|leva a| step10_wmi_event step10_wmi_event –>|leva a| step11_ps_profile step11_ps_profile –>|leva a| step12_vnc step12_vnc –>|leva a| step13_multi_stage step13_multi_stage –>|leva a| step14_input_injection step14_input_injection –>|leva a| step15_keylog_clip step15_keylog_clip –>|leva a| step16_browser_hijack "
Fluxo de Ataque
Detecções
Binário NodeJS Executando de Localização Incomum (via linha de comando)
Possível Tentativa de Comunicação com Domínio de Consulta de IP (via DNS)
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via evento de registro)
Possível Tentativa de Abuso de Ethereum Publicnode como Canal de C2 (via consulta DNS)
IOCs (DestinationIP) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
IOCs (HashMd5) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
IOCs (HashSha256) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
IOCs (HashSha1) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
IOCs (SourceIP) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
IOCs (Emails) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
Detecção de RAT e Exfiltração de Dados do GlassWorm [Conexão de Rede do Windows]
Detecção de Execução de Binário de Phishing Ledger/Trezor [Criação de Processo do Windows]
Execução de Simulação
Pré-requisito: O Check Preliminar de Telemetria & Baseline deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica de adversário (TTP) projetada para acionar 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 obteve um binário malicioso que finge ser o cliente da carteira Ledger Live/Trezor. O binário está nomeadoAssaac.exepara imitar um executável legítimo. É descartado no diretório%APPDATA%do usuário, e um arquivo JavaScript acompanhante (index.js) é colocado em uma subpasta ocultaQtCvyfVWKH. O atacante então executa o binário, fazendo com que o Windows registre um evento de criação de processo com o nome exato da imagem e caminho de linha de comando que a regra Sigma monitora.Passo a passo:
- Crie a pasta oculta e coloque o script malicioso.
- Copie o executável malicioso (
Assaac.exe) para o AppData do usuário. - Inicie o executável, que lê
index.jse começa as rotinas de roubo de credenciais.
-
Script de Teste de Regressão:
# ------------------------------------------------------------ # Configurar arquivos maliciosos # ------------------------------------------------------------ $appData = $env:APPDATA $folder = Join-Path $appData "QtCvyfVWKH" $exePath = Join-Path $appData "Assaac.exe" $jsPath = Join-Path $folder "index.js" # Assegurar que a pasta oculta existe New-Item -ItemType Directory -Path $folder -Force | Out-Null # Ocultar a pasta (opcional) (Get-Item $folder).Attributes += 'Hidden' # Implementar um executável malicioso de demonstração (para demonstração usamos uma cópia do calc.exe) Copy-Item -Path "$env:SystemRootSystem32calc.exe" -Destination $exePath -Force # Implementar uma carga útil JavaScript de demonstração (o conteúdo é irrelevante para a detecção) @" // espaço reservado de carga útil maliciosa console.log('Roubo de carteira cripto executado'); "@ | Set-Content -Path $jsPath -Encoding UTF8 # ------------------------------------------------------------ # Executar o binário malicioso (isto deve acionar a regra Sigma) # ------------------------------------------------------------ & $exePath "$jsPath" # ------------------------------------------------------------ # Fim do script – deixe artefatos para limpeza manual # ------------------------------------------------------------ -
Comandos de Limpeza:
# Terminar o processo malicioso se ainda estiver em execução Get-Process -Name "Assaac" -ErrorAction SilentlyContinue | Stop-Process -Force # Remover os arquivos e pastas criadas Remove-Item -Path $exePath -Force -ErrorAction SilentlyContinue Remove-Item -Path $jsPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $folder -Recurse -Force -ErrorAction SilentlyContinue