GlassWorm Vai para Mac: Nova Infraestrutura, Novos Truques
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>Action</b> – Initial Access"] class action_initial_access action technique_vs_code_ext["<b>Technique</b> – T1176.002: Malicious VS Code IDE Extension<br/><b>Description</b>: Adversary delivers a malicious extension for Visual Studio Code that executes code on the victim system."] class technique_vs_code_ext technique technique_delay["<b>Technique</b> – T1497.003: Execution Delay<br/><b>Description</b>: Malware waits for a period (e.g., 15 minutes) before executing its payload to evade analysis."] class technique_delay technique technique_decrypt["<b>Technique</b> – T1027.009 / T1027.004: Decrypt AESu2011256u2011CBC Payload<br/><b>Description</b>: Encrypted payload is decrypted inu2011memory using AESu2011CBC with a 256u2011bit key."] class technique_decrypt technique technique_c2_retrieve["<b>Technique</b> – T1573.001: Retrieve Endpoint from Solana Blockchain<br/><b>Description</b>: C2 server address is stored on a public blockchain and fetched by the malware."] class technique_c2_retrieve technique technique_c2_fetch["<b>Technique</b> – T1048.003: Unencrypted Protocol Data Transfer<br/><b>Description</b>: Malware contacts the C2 endpoint using an unencrypted protocol (e.g., HTTP)."] class technique_c2_fetch technique technique_persistence_agent["<b>Technique</b> – T1543.001: Install LaunchAgent<br/><b>Description</b>: A LaunchAgent plist is placed in the useru2019s LaunchAgents directory for persistence."] class technique_persistence_agent technique technique_persistence_daemon["<b>Technique</b> – T1543.004: Install LaunchDaemon<br/><b>Description</b>: A LaunchDaemon plist is placed in the system LaunchDaemons directory for persistence."] class technique_persistence_daemon technique technique_modify_plist["<b>Technique</b> – T1647: Modify PLIST File<br/><b>Description</b>: Attacker edits the plist to alter launch behavior or add malicious commands."] class technique_modify_plist technique technique_dump_keychain["<b>Technique</b> – T1555.001 / T1555.002: Dump Keychain<br/><b>Description</b>: Credential material from macOS Keychain is extracted."] class technique_dump_keychain technique technique_steal_keys["<b>Technique</b> – T1552.001 / T1552.004: Steal Private Keys and Tokens<br/><b>Description</b>: Private cryptocurrency keys and authentication tokens are harvested."] class technique_steal_keys technique technique_stage_data["<b>Technique</b> – T1074: Data Staged<br/><b>Description</b>: Collected files are copied to /tmp/ijewf for later exfiltration."] class technique_stage_data technique technique_archive["<b>Technique</b> – T1560.001 / T1560.003: Archive Collected Data<br/><b>Description</b>: Data is compressed into an archive format (e.g., zip)."] class technique_archive technique technique_exfil["<b>Technique</b> – T1048.003: Exfiltration Over Unencrypted Nonu2011C2 Channel<br/><b>Description</b>: Staged archive is sent out via an unencrypted channel not tied to the primary C2."] class technique_exfil technique technique_priv_esc["<b>Technique</b> – T1548.006: TCC Manipulation<br/><b>Description</b>: macOS Transparency, Consent, and Control database is modified to gain higher privileges."] class technique_priv_esc technique technique_impact["<b>Technique</b> – T1496.002: Replace Ledger Live / Trezor Suite<br/><b>Description</b>: Legitimate cryptocurrency wallet applications are swapped with trojanized versions to capture user assets."] class technique_impact technique %% Connections action_initial_access –>|uses| technique_vs_code_ext technique_vs_code_ext –>|triggers| technique_delay technique_delay –>|leads to| technique_decrypt technique_decrypt –>|establishes| technique_c2_retrieve technique_c2_retrieve –>|contacts| technique_c2_fetch technique_c2_fetch –>|installs| technique_persistence_agent technique_c2_fetch –>|installs| technique_persistence_daemon technique_persistence_agent –>|modifies| technique_modify_plist technique_persistence_daemon –>|modifies| technique_modify_plist technique_modify_plist –>|enables| technique_dump_keychain technique_dump_keychain –>|enables| technique_steal_keys technique_steal_keys –>|stores in| technique_stage_data technique_stage_data –>|archives| technique_archive technique_archive –>|exfiltrates via| technique_exfil technique_exfil –>|facilitates| technique_priv_esc technique_priv_esc –>|enables| technique_impact "
Fluxo de Ataque
Detecções
Tentativa Possível de Descoberta de Senha de Navegador no MacOS (via linha de comando)
Visualizar
IOCs (SourceIP) para detectar: GlassWorm vai para Mac: Nova Infraestrutura, Novos Truques
Visualizar
IOCs (DestinationIP) para detectar: GlassWorm vai para Mac: Nova Infraestrutura, Novos Truques
Visualizar
IOCs (Emails) para detectar: GlassWorm vai para Mac: Nova Infraestrutura, Novos Truques
Visualizar
Detecção de Acesso ao Keychain do macOS pelo GlassWorm [Criação de Processo Linux]
Visualizar
Execução Potencial de AppleScript para Acesso ao Keychain no macOS [Criação de Processo Linux]
Visualizar
Detecção de Comunicação C2 de Blockchain Solana pelo GlassWorm [Proxy]
Visualizar
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ótulopass_users_for_script. Para evitar deixar um binário separado, o atacante escreve um AppleScript de uma linha que invoca a ferramenta nativasecurityviado 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."