Campagna macOS ClickFix: AppleScript Stealers & nuove protezioni del Terminale
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Netskope Threat Labs ha identificato una campagna ClickFix multipiattaforma che prende di mira gli utenti macOS con un infostealer basato su AppleScript. Il malware viene distribuito tramite una pagina di ingegneria sociale ingannevole che convince le vittime a copiare e incollare un comando dannoso nel Terminale. Una volta eseguito, lo script raccoglie i contenuti del portachiavi, i cookie del browser, i dati delle estensioni e i file dei portafogli di criptovalute, quindi invia le informazioni rubate tramite richieste HTTP POST. La campagna utilizza anche finte finestre di dialogo persistenti per ingannare gli utenti a inserire la loro password di sistema.
Indagine
Il rapporto spiega che la pagina di atterraggio dannosa filtra per primo i visitatori in base allo user agent prima di fornire un caricatore AppleScript specificamente adattato per i sistemi macOS. Dopo l’esecuzione, il malware crea una directory temporanea di staging, raccoglie credenziali e dati relativi ai portafogli, comprime i file raccolti con il comando ditto e carica l’archivio a un indirizzo di comando e controllo codificato. I ricercatori hanno anche documentato l’abuso dei Servizi Directory di macOS per convalidare la password della vittima in tempo reale, insieme alla vasta gamma di browser e applicazioni di portafogli di criptovalute prese di mira.
Mitigazione
Netskope consiglia agli utenti macOS di aggiornare alle versioni più recenti di macOS Tahoe 26.4 o macOS Sequoia, che introducono avvisi nativi nel Terminale per i comandi incollati. Gli utenti dovrebbero anche evitare di eseguire comandi copiati da siti web non attendibili, verificare attentamente tutte le richieste di credenziali e abilitare l’autenticazione multifattore ovunque possibile. Le organizzazioni sono incoraggiate a monitorare finestre di dialogo guidate da AppleScript sospette e traffico HTTP POST insolito diretto a infrastrutture sconosciute.
Risposta
I difensori dovrebbero rilevare e bloccare l’esecuzione di file AppleScript sconosciuti e osservare la creazione della directory di staging /tmp/xdivcmp/ . Dovrebbero essere configurati avvisi per l’attività HTTP POST dai sistemi macOS a domini o indirizzi IP non comuni. Qualsiasi finestra di dialogo ricorrente che richieda password di sistema dovrebbe essere trattata come sospetta, e gli endpoint interessati dovrebbero essere isolati prontamente per indagini forensi.
"graph TB %% Class definitions classDef technique fill:#ffcc99 %% Node definitions t_phish["<b>Technique</b> – <b>T1566 Phishing</b><br/><b>Description</b>: Invia email dannose contenenti un comando copia-incolla per attirare la vittima."] class t_phish technique t_userexec["<b>Technique</b> – <b>T1204.004 User Execution: Malicious Copy and Paste</b><br/><b>Description</b>: La vittima copia e incolla il comando dannoso in una sessione terminale."] class t_userexec technique t_unixshell["<b>Technique</b> – <b>T1059.004 Command and Scripting Interpreter: Unix Shell</b><br/><b>Description</b>: Esegui un comando shell che scarica ed esegue un payload AppleScript."] class t_unixshell technique t_obfusc["<b>Technique</b> – <b>T1027 Obfuscated Files or Information</b><br/><b>Description</b>: Codifica il comando shell per nascondere il suo intento dannoso."] class t_obfusc technique t_inputcap["<b>Technique</b> – <b>T1056 Input Capture</b><br/><b>Description</b>: La finestra di dialogo AppleScript persistente cattura la password dell’utente macOS."] class t_inputcap technique t_oscred["<b>Technique</b> – <b>T1003 OS Credential Dumping</b><br/><b>Description</b>: Utilizza la password catturata per decrittografare il portachiavi macOS."] class t_oscred technique t_passmgr["<b>Technique</b> – <b>T1555.005 Credentials from Password Stores: Password Managers</b><br/><b>Description</b>: Estrai i dati del vault memorizzati dai gestori di password installati."] class t_passmgr technique t_webbrowser["<b>Technique</b> – <b>T1555.003 Credentials from Password Stores: Web Browsers</b><br/><b>Description</b>: Ruba password salvate e dati di compilazione automatica dai negozi dei browser."] class t_webbrowser technique t_webcookie["<b>Technique</b> – <b>T1539 Steal Web Session Cookie</b><br/><b>Description</b>: Raccogli i cookie di sessione da dodici browser web."] class t_webcookie technique t_altauth["<b>Technique</b> – <b>T1550.004 Use Alternate Authentication Material: Web Session Cookie</b><br/><b>Description</b>: Riutilizza i cookie rubati per aggirare l’autenticazione multifattore."] class t_altauth technique t_browserdisc["<b>Technique</b> – <b>T1217 Browser Information Discovery</b><br/><b>Description</b>: Individua le directory dei profili del browser sul sistema host."] class t_browserdisc technique t_staging["<b>Technique</b> – <b>T1074.001 Data Staged: Local Data Staging</b><br/><b>Description</b>: Aggrega i dati raccolti in /tmp/xdivcmp."] class t_staging technique t_archive["<b>Technique</b> – <b>T1560 Archive Collected Data</b><br/><b>Description</b>: Comprime i dati di staging in un file zip utilizzando ditto."] class t_archive technique t_exfil["<b>Technique</b> – <b>T1041 Exfiltration Over C2 Channel</b><br/><b>Description</b>: Trasferisci l’archivio zip tramite HTTP POST a un server di comando e controllo."] class t_exfil technique t_filedel["<b>Technique</b> – <b>T1070.004 Indicator Removal: File Deletion</b><br/><b>Description</b>: Elimina la directory di staging dopo un’esfiltrazione riuscita."] class t_filedel technique t_diskwipe["<b>Technique</b> – <b>T1561 Disk Wipe</b><br/><b>Description</b>: Sovrascrivere i settori del disco per rimuovere le tracce forensi."] class t_diskwipe technique %% Connections showing flow t_phish –>|leads_to| t_userexec t_userexec –>|leads_to| t_unixshell t_unixshell –>|uses| t_obfusc t_unixshell –>|uses| t_inputcap t_unixshell –>|uses| t_browserdisc t_inputcap –>|enables| t_oscred t_inputcap –>|enables| t_passmgr t_inputcap –>|enables| t_webbrowser t_inputcap –>|enables| t_webcookie t_webcookie –>|enables| t_altauth t_browserdisc –>|provides| t_staging t_staging –>|creates| t_archive t_archive –>|exfiltrates| t_exfil t_exfil –>|triggers| t_filedel t_filedel –>|triggers| t_diskwipe "
Flusso di attacco
Rilevazioni
Possibile tentativo di scoperta password del browser MacOS (via cmdline)
Visualizza
Convalida delle credenziali MacOS tramite Dscl Authonly (via cmdline)
Visualizza
Tentativo di esecuzione Curl sospetto [MacOS] (via cmdline)
Visualizza
IOC (HashMd5) per individuare: campagna macOS ClickFix: Rubatori AppleScript e nuove protezioni Terminal
Visualizza
IOC (SourceIP) per individuare: campagna macOS ClickFix: Rubatori AppleScript e nuove protezioni Terminal
Visualizza
IOC (DestinationIP) per individuare: campagna macOS ClickFix: Rubatori AppleScript e nuove protezioni Terminal
Visualizza
Infostealer ClickFix macOS che prende di mira il portachiavi e la directory temporanea [Evento file Linux]
Visualizza
Rilevazione dell’infostealer macOS ClickFix [Creazione processo Linux]
Visualizza
Esecuzione della simulazione
Prerequisito: Il controllo pre-volo di telemetria e baseline deve essere superato.
-
Narrativa degli attacchi e comandi:
- Ricognizione: L’attaccante prima esegue un enumerazione del portachiavi dell’utente corrente per identificare gli oggetti memorizzati.
- Dump credenziali: Usando
security dump-keychain, l’attaccante estrae l’intero database del portachiavi in un file temporaneo. - Staging: Il dump viene copiato in una directory di staging nascosta
/tmp/.xdivcmp/(rispecchiando il percorso della regoladirectory di staging /tmp/xdivcmp/). - Offuscazione: La directory di staging viene marcata come nascosta (
chflags hidden). - Preparazione all’esfiltrazione: I file vengono compressi in
payload.zippronto per il trasferimento in uscita.
-
Script di test di regressione:
#!/bin/bash set -euo pipefail # 1. Crea directory di staging nascosta (corrisponde al percorso regola) STAGING_DIR="/tmp/.xdivcmp" mkdir -p "$STAGING_DIR" chflags hidden "$STAGING_DIR" # 2. Dump del portachiavi (richiede interazione dell'utente; simulato con una copia del DB) KEYCHAIN_SRC="/Users/$(whoami)/Library/Keychains/login.keychain-db" KEYCHAIN_DUMP="${STAGING_DIR}/login.keychain-db.dump" # Simula il dump copiando il DB (un attaccante reale userebbe `security dump-keychain`) cp "$KEYCHAIN_SRC" "$KEYCHAIN_DUMP" # 3. Comprimi per esfiltrazione zip -j "${STAGING_DIR}/payload.zip" "$KEYCHAIN_DUMP" echo "[+] Simulazione ClickFix completata – artefatti di staging posizionati in $STAGING_DIR" -
Comandi di pulizia:
#!/bin/bash set -euo pipefail STAGING_DIR="/tmp/.xdivcmp" if [[ -d "$STAGING_DIR" ]]; then rm -rf "$STAGING_DIR" echo "[+] Directory di staging pulita." else echo "[*] Nessuna directory di staging trovata; nulla da pulire." fi