SOC Prime Bias: Crítico

19 Jan 2026 19:11

GlassWorm Vai para Mac: Nova Infraestrutura, Novos Truques

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
GlassWorm Vai para Mac: Nova Infraestrutura, Novos Truques
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

O ator da ameaça por trás do GlassWorm mudou de atividade focada no Windows para o macOS, distribuindo extensões maliciosas do VS Code que buscam cargas úteis criptografadas JavaScript através de ponteiros C2 derivados da blockchain Solana. Esta onda expande a capacidade ao adicionar uma trojanização de carteira de hardware enquanto continua o roubo amplo de credenciais em navegadores, ferramentas de desenvolvimento e o Keychain do macOS. A infraestrutura inclui um endereço de carteira Solana e um IP reutilizado de operações anteriores do GlassWorm, sugerindo continuidade nas ferramentas e hospedagem do operador. Pesquisadores observaram mais de 50.000 downloads antes que as extensões fossem removidas, indicando uma exposição significativa nos ambientes de desenvolvedores.

Investigação

A Koi Security identificou três extensões maliciosas do VS Code no mercado Open VSX e ligou seu fluxo de comando e controle a uma carteira Solana, além de um endereço IP compartilhado anteriormente ligado ao GlassWorm. Os implantes incorporam um atraso de execução de 15 minutos, depois decifram e executam uma carga útil JavaScript AES-256-CBC. No macOS, a persistência é estabelecida via LaunchAgents. Os alvos de coleta incluem carteiras de navegador e dados de carteiras de desktop, tokens de acesso de desenvolvedor, chaves SSH e material do Keychain do macOS. O malware armazena dados roubados em /tmp/ijewf/ antes da exfiltração para um caminho de servidor semelhante a /p2p. Ele também tenta substituir aplicativos companheiros legítimos de carteiras de hardware — como Ledger Live e Trezor Suite — por versões trojanizadas para capturar segredos e transações de alto valor.

Mitigação

Reforce os controles em torno das ferramentas de desenvolvedor exigindo a listagem permitida de extensões e a revisão de segurança para extensões do VS Code, especialmente aquelas provenientes de mercados abertos. Implemente detecções de tempo de execução para padrões de execução atrasada e criação ou modificação suspeita de LaunchAgents. Monitore e bloqueie atividades de saída suspeitas associadas a pesquisas C2 derivadas de Solana, e adicione detecções de rede para conexões incomuns ao IP reutilizado identificado. Exija MFA para contas de desenvolvedor e de nuvem e implemente verificações de integridade de carteiras de hardware (validação de editora, notificação/verificação de assinatura e canais de atualização de software controlados).

Resposta

Dispare alertas em novos LaunchAgents ou LaunchAgents modificados, acessos anômalos a repositórios Keychain e tentativas de recuperação de endpoints C2 referenciados pela Solana. Quarentena e remova as extensões do VS Code maliciosas, depois erradique qualquer persistência associada ao LaunchAgent. Realize análises forenses direcionadas em /tmp/ijewf/ para determinar a extensão da coleta de credenciais e confirmar quais dados foram coletados. Valide a integridade dos aplicativos de carteiras de hardware (Ledger Live, Trezor Suite) e reinstale de fontes confiáveis se houver suspeita de adulteração. Redefina credenciais impactadas, rotacione chaves SSH e tokens de desenvolvedor, invalide sessões e expanda a caça em endpoints para os mesmos IDs de extensão, caminhos de arquivos e artefatos de persistência.

“graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 classDef tool fill:#cccccc %% Nodes action_initial_access[“<b>Ação</b> – Acesso Inicial”] class action_initial_access action technique_vs_code_ext[“<b>Técnica</b> – T1176.002: Extensão Maliciosa do VS Code IDE<br /><b>Descrição</b>: Adversário entrega uma extensão maliciosa para o Visual Studio Code que executa código no sistema da vítima.”] class technique_vs_code_ext technique technique_delay[“<b>Técnica</b> – T1497.003: Atraso na Execução<br /><b>Descrição</b>: Malware espera por um período (por exemplo, 15 minutos) antes de executar sua carga útil para evitar análise.”] class technique_delay technique technique_decrypt[“<b>Técnica</b> – T1027.009/T1027.004: Descriptografar Carga Útil AESu2011256u2011CBC<br /><b>Descrição</b>: Carga útil criptografada é descriptografada na memória usando AESu2011CBC com uma chave de 256 bits.”] class technique_decrypt technique technique_c2_retrieve[“<b>Técnica</b> – T1573.001: Recuperar Endpoint do Blockchain Solana<br /><b>Descrição</b>: Endereço do servidor C2 é armazenado em um blockchain público e buscado pelo malware.”] class technique_c2_retrieve technique technique_c2_fetch[“<b>Técnica</b> – T1048.003: Transferência de Dados de Protocolo Não Criptografado<br /><b>Descrição</b>: Malware contata o endpoint C2 usando um protocolo não criptografado (por exemplo, HTTP).”] class technique_c2_fetch technique technique_persistence_agent[“<b>Técnica</b> – T1543.001: Instalar LaunchAgent<br /><b>Descrição</b>: Um plist de LaunchAgent é colocado no diretório LaunchAgents do usuário para persistência.”] class technique_persistence_agent technique technique_persistence_daemon[“<b>Técnica</b> – T1543.004: Instalar LaunchDaemon<br /><b>Descrição</b>: Um plist de LaunchDaemon é colocado no diretório LaunchDaemons do sistema para persistência.”] class technique_persistence_daemon technique technique_modify_plist[“<b>Técnica</b> – T1647: Modificar Arquivo PLIST<br /><b>Descrição</b>: Invasor edita o plist para alterar o comportamento de inicialização ou adicionar comandos maliciosos.”] class technique_modify_plist technique technique_dump_keychain[“<b>Técnica</b> – T1555.001/T1555.002: Dump de Chaveiro<br /><b>Descrição</b>: Material de credencial do Keychain do macOS é extraído.”] class technique_dump_keychain technique technique_steal_keys[“<b>Técnica</b> – T1552.001/T1552.004: Roubar Chaves Privadas e Tokens<br /><b>Descrição</b>: Chaves privadas de criptomoeda e tokens de autenticação são coletados.”] class technique_steal_keys technique technique_stage_data[“<b>Técnica</b> – T1074: Dados Preparados<br /><b>Descrição</b>: Arquivos coletados são copiados para /tmp/ijewf para exfiltração posterior.”] class technique_stage_data technique technique_archive[“<b>Técnica</b> – T1560.001/T1560.003: Arquivar Dados Coletados<br /><b>Descrição</b>: Dados são comprimidos em um formato de arquivo (por exemplo, zip).”] class technique_archive technique technique_exfil[“<b>Técnica</b> – T1048.003: Exfiltração por Canal Não Cifrado Não-C2<br /><b>Descrição</b>: Arquivo preparado é enviado através de um canal não criptografado não vinculado ao C2 primário.”] class technique_exfil technique technique_priv_esc[“<b>Técnica</b> – T1548.006: Manipulação TCC<br /><b>Descrição</b>: Banco de dados de Transparência, Consentimento e Controle do macOS é modificado para obter privilégios mais altos.”] class technique_priv_esc technique technique_impact[“<b>Técnica</b> – T1496.002: Substituir Ledger Live / Trezor Suite<br /><b>Descrição</b>: Aplicativos legítimos de carteira de criptomoeda são substituídos por versões trojanizadas para capturar ativos do usuário.”] class technique_impact technique %% Connections action_initial_access u002du002d>|usa| technique_vs_code_ext technique_vs_code_ext u002du002d>|dispara| technique_delay technique_delay u002du002d>|leva a| technique_decrypt technique_decrypt u002du002d>|estabelece| technique_c2_retrieve technique_c2_retrieve u002du002d>|contata| technique_c2_fetch technique_c2_fetch u002du002d>|instala| technique_persistence_agent technique_c2_fetch u002du002d>|instala| technique_persistence_daemon technique_persistence_agent u002du002d>|modifica| technique_modify_plist technique_persistence_daemon u002du002d>|modifica| technique_modify_plist technique_modify_plist u002du002d>|habilita| technique_dump_keychain technique_dump_keychain u002du002d>|habilita| technique_steal_keys technique_steal_keys u002du002d>|armazenar em| technique_stage_data technique_stage_data u002du002d>|arquiva| technique_archive technique_archive u002du002d>|exfiltrar via| technique_exfil technique_exfil u002du002d>|facilita| technique_priv_esc technique_priv_esc u002du002d>|habilita| technique_impact “

Fluxo de Ataque

Execução de Simulação

Pré-requisito: A Verificação de Pré-voo de Telemetria e Linha de Base deve ter sido aprovada.

Racional: Esta seção detalha a execução precisa da técnica adversária (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. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.

  • Narrativa e Comandos de Ataque:
    Um atacante que já comprometeu uma conta de usuário de baixo privilégio no macOS deseja capturar uma senha de conta de serviço armazenada no Keychain sob o rótulo pass_users_for_script. Para evitar deixar um binário separado, o atacante escreve um AppleScript de uma linha que invoca a ferramenta nativa security via do shell script. O script é executado diretamente na sessão do usuário, produzindo um evento de criação de processo com a linha de comando exata que a regra Sigma corresponde.

    # Crie um item de chaveiro de teste (apenas para demonstração; o verdadeiro atacante visaria um item existente)
    security add-generic-password -a attacker -s pass_users_for_script -w SuperSecret123
    
    # Execute o AppleScript que lê a senha
    osascript -e 'do shell script "security find-generic-password -s '''pass_users_for_script''' -w"'
  • Script de Teste de Regressão:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # Etapa 1: Certifique-se de que a entrada de chaveiro de destino exista (idempotente)
    if ! security find-generic-password -s pass_users_for_script -w >/dev/null 2>&1; then
        security add-generic-password -a attacker -s pass_users_for_script -w SuperSecret123
    fi
    
    # Etapa 2: Execute o AppleScript que aciona a regra de detecção
    echo "[+] Executando AppleScript para ler a entrada do chaveiro..."
    osascript -e 'do shell script "security find-generic-password -s '''pass_users_for_script''' -w"'
  • Comandos de Limpeza:

    # Remova o item do chaveiro de teste para deixar o sistema limpo
    security delete-generic-password -s pass_users_for_script
    echo "[+] Limpeza concluída: entrada de chaveiro de teste removida."