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)
Ver
Possível Tentativa de Comunicação com Domínio de Consulta de IP (via DNS)
Ver
Possíveis Pontos de Persistência [ASEPs – Software/NTUSER Hive] (via evento de registro)
Ver
Possível Tentativa de Abuso de Ethereum Publicnode como Canal de C2 (via consulta DNS)
Ver
IOCs (DestinationIP) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
Ver
IOCs (HashMd5) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
Ver
IOCs (HashSha256) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
Ver
IOCs (HashSha1) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
Ver
IOCs (SourceIP) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
Ver
IOCs (Emails) para detectar: GlassWorm Esconde um RAT Dentro de uma Extensão Maliciosa do Chrome
Ver
Detecção de RAT e Exfiltração de Dados do GlassWorm [Conexão de Rede do Windows]
Ver
Detecção de Execução de Binário de Phishing Ledger/Trezor [Criação de Processo do Windows]
Ver
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