SOC Prime Bias: Critico

19 Gen 2026 19:11

GlassWorm Attacca Mac: Nuova Infrastruttura, Nuovi Trucchi

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
GlassWorm Attacca Mac: Nuova Infrastruttura, Nuovi Trucchi
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riassunto

L’attore malevolo dietro GlassWorm si è spostato da attività focalizzate su Windows a macOS, distribuendo estensioni VS Code maligne che estraggono payload JavaScript crittografati attraverso puntatori C2 derivati dalla blockchain Solana. Questa ondata amplia la capacità aggiungendo la trojanizzazione dei portafogli hardware mentre continua il furto ampio di credenziali tra browser, strumenti di sviluppo e il Portachiavi di macOS. L’infrastruttura include un indirizzo del portafoglio Solana e un IP riutilizzato da operazioni precedenti di GlassWorm, suggerendo continuità negli strumenti dell’operatore e nell’hosting. I ricercatori hanno osservato oltre 50.000 download prima che le estensioni venissero rimosse, indicando un’esposizione significativa negli ambienti degli sviluppatori.

Indagine

Koi Security ha identificato tre estensioni VS Code maligne sul marketplace Open VSX e collegato il loro flusso di comando e controllo a un portafoglio Solana e a un indirizzo IP condiviso precedentemente legato a GlassWorm. Gli impianti incorporano un ritardo di esecuzione di 15 minuti, quindi decrittano e eseguono un payload JavaScript AES-256-CBC. Su macOS, la persistenza è stabilita tramite LaunchAgents. Gli obiettivi della raccolta includono portafogli del browser e dati del portafoglio desktop, token di accesso degli sviluppatori, chiavi SSH e materiale del Portachiavi di macOS. Il malware prepara i dati rubati sotto /tmp/ijewf/ prima dell’esfiltrazione a un percorso del server simile a /p2p. Tenta anche di sostituire le app companion legittime dei portafogli hardware—come Ledger Live e Trezor Suite—con imitazioni trojanizzate per catturare segreti di alto valore e transazioni.

Mitigazione

Stringere i controlli sugli strumenti di sviluppo applicando una lista bianca delle estensioni e richiedendo una revisione della sicurezza per le estensioni VS Code, in particolare quelle provenienti da marketplace aperti. Distribuire rilevamenti runtime per schemi di esecuzione ritardati e creazioni o modifiche sospette di LaunchAgents. Monitorare e bloccare attività in uscita sospette associate a ricerche C2 derivate da Solana e aggiungere rilevamenti di rete per connessioni insolite all’IP riutilizzato identificato. Richiedere MFA per gli account sviluppatore e cloud e implementare controlli di integrità dei portafogli hardware (convalida del publisher, notarizzazione/verifica della firma e canali di aggiornamento del software controllati).

Risposta

Innescare avvisi su LaunchAgents nuovi o modificati, accesso anomalo ai registri del Portachiavi e tentativi di recupero da endpoint C2 riferiti a Solana. Mettere in quarantena e rimuovere le estensioni VS Code maligni, quindi eradicare qualsiasi persistenza associata a LaunchAgent. Eseguire indagini forensi mirate su /tmp/ijewf/ per delimitare la preparazione delle credenziali e confermare quali dati sono stati raccolti. Validare l’integrità delle applicazioni di portafoglio hardware (Ledger Live, Trezor Suite) e reinstallare da fonti affidabili se si sospetta un manomissione. Resettare le credenziali impattate, ruotare le chiavi SSH e i token degli sviluppatori, invalidare le sessioni ed espandere la ricerca su endpoint per gli stessi ID estensione, percorsi file e artefatti di persistenza.

"graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 classDef tool fill:#cccccc %% Nodes action_initial_access["<b>Azione</b> – Accesso Iniziale"] class action_initial_access action technique_vs_code_ext["<b>Tecnica</b> – T1176.002: Estensione IDE VS Code Maligna<br/><b>Descrizione</b>: L’avversario distribuisce un’estensione maligna per Visual Studio Code che esegue codice sul sistema vittima."] class technique_vs_code_ext technique technique_delay["<b>Tecnica</b> – T1497.003: Ritardo di Esecuzione<br/><b>Descrizione</b>: Il malware attende un periodo (es. 15 minuti) prima di eseguire il suo payload per eludere l’analisi."] class technique_delay technique technique_decrypt["<b>Tecnica</b> – T1027.009 / T1027.004: Decrittografia Payload AESu2011256u2011CBC<br/><b>Descrizione</b>: Il payload crittografato viene decifrato in memoria usando AESu2011CBC con una chiave a 256 bit."] class technique_decrypt technique technique_c2_retrieve["<b>Tecnica</b> – T1573.001: Recupero Endpoint dalla Blockchain di Solana<br/><b>Descrizione</b>: L’indirizzo del server C2 è memorizzato su una blockchain pubblica e recuperato dal malware."] class technique_c2_retrieve technique technique_c2_fetch["<b>Tecnica</b> – T1048.003: Trasferimento Dati Protocollo Non Criptatou<br/><b>Descrizione</b>: Il malware contatta l’endpoint C2 usando un protocollo non criptato (es. HTTP)."] class technique_c2_fetch technique technique_persistence_agent["<b>Tecnica</b> – T1543.001: Installazione di LaunchAgent<br/><b>Descrizione</b>: Un plist di LaunchAgent è posizionato nella directory LaunchAgents dell’utente per la persistenza."] class technique_persistence_agent technique technique_persistence_daemon["<b>Tecnica</b> – T1543.004: Installazione di LaunchDaemon<br/><b>Descrizione</b>: Un plist di LaunchDaemon è posizionato nella directory LaunchDaemons del sistema per la persistenza."] class technique_persistence_daemon technique technique_modify_plist["<b>Tecnica</b> – T1647: Modifica File PLIST<br/><b>Descrizione</b>: L’attaccante modifica il plist per alterare il comportamento di avvio o aggiungere comandi maligni."] class technique_modify_plist technique technique_dump_keychain["<b>Tecnica</b> – T1555.001 / T1555.002: Dump Portachiavi<br/><b>Descrizione</b>: Il materiale di credenziali dal Portachiavi di macOS è estratto."] class technique_dump_keychain technique technique_steal_keys["<b>Tecnica</b> – T1552.001 / T1552.004: Furto di Chiavi Private e Token<br/><b>Descrizione</b>: Le chiavi private di criptovalute e i token di autenticazione sono raccolti."] class technique_steal_keys technique technique_stage_data["<b>Tecnica</b> – T1074: Allestimento Dati<br/><b>Descrizione</b>: I file raccolti sono copiati in /tmp/ijewf per l’esfiltrazione successiva."] class technique_stage_data technique technique_archive["<b>Tecnica</b> – T1560.001 / T1560.003: Archiviazione Dati Raccolti<br/><b>Descrizione</b>: I dati sono compressi in un formato di archivio (es. zip)."] class technique_archive technique technique_exfil["<b>Tecnica</b> – T1048.003: Esfiltrazione Tramite Canale Non Criptatou Non C2<br/><b>Descrizione</b>: L’archivio pronto è inviato tramite un canale non criptato non legato al C2 principale."] class technique_exfil technique technique_priv_esc["<b>Tecnica</b> – T1548.006: Manipolazione TCC<br/><b>Descrizione</b>: Il database Trasparenza, Consenso e Controllo di macOS è modificato per ottenere privilegi superiori."] class technique_priv_esc technique technique_impact["<b>Tecnica</b> – T1496.002: Sostituire Ledger Live / Trezor Suite<br/><b>Descrizione</b>: Le applicazioni di portafoglio criptovalute legittime sono sostituite con versioni trojanizzate per catturare gli asset degli utenti."] class technique_impact technique %% Connections action_initial_access –>|uses| technique_vs_code_ext technique_vs_code_ext –>|triggers| technique_delay technique_delay –>|leads to| technique_decrypt technique_decrypt –>|establishes| technique_c2_retrieve technique_c2_retrieve –>|contacts| technique_c2_fetch technique_c2_fetch –>|installs| technique_persistence_agent technique_c2_fetch –>|installs| technique_persistence_daemon technique_persistence_agent –>|modifies| technique_modify_plist technique_persistence_daemon –>|modifies| technique_modify_plist technique_modify_plist –>|enables| technique_dump_keychain technique_dump_keychain –>|enables| technique_steal_keys technique_steal_keys –>|stores in| technique_stage_data technique_stage_data –>|archives| technique_archive technique_archive –>|exfiltrates via| technique_exfil technique_exfil –>|facilitates| technique_priv_esc technique_priv_esc –>|enables| technique_impact "

Flusso di Attacco

Esecuzione Simulazione

Prerequisito: Il Controllo Pre-volo di Telemetria & Baseline deve essere superato.

Motivo: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrazione & Comandi di Attacco:
    Un attaccante che ha già compromesso un account utente macOS a basso privilegio desidera raccogliere una password di account di servizio memorizzata nel Portachiavi sotto l’etichetta pass_users_for_script. Per evitare di rilasciare un binario separato, l’attaccante scrive un one-liner AppleScript che richiama lo strumento security integrato tramite do shell script. Lo script è eseguito direttamente nella sessione dell’utente, producendo un evento di creazione del processo con la linea di comando esatta a cui la regola Sigma corrisponde.

    # Creare un elemento di portachiavi di prova (solo per dimostrazione; un vero attaccante si rivolgerebbe a un elemento esistente)
    security add-generic-password -a attacker -s pass_users_for_script -w SuperSecret123
    
    # Eseguire lo AppleScript che legge la password
    osascript -e 'do shell script "security find-generic-password -s '''pass_users_for_script''' -w"'
  • Script di Test di Regressione:

    #!/usr/bin/env bash
    set -euo pipefail
    
    # Passo 1: Verificare che l'elemento del portachiavi di destinazione esista (idempotente)
    if ! security find-generic-password -s pass_users_for_script -w >/dev/null 2>&1; then
        security add-generic-password -a attacker -s pass_users_for_script -w SuperSecret123
    fi
    
    # Passo 2: Eseguire lo AppleScript che attiva la regola di rilevamento
    echo "[+] Esecuzione AppleScript per leggere l'elemento del portachiavi..."
    osascript -e 'do shell script "security find-generic-password -s '''pass_users_for_script''' -w"'
  • Comandi di Pulizia:

    # Rimuovere l'elemento di portachiavi di prova per lasciare il sistema pulito
    security delete-generic-password -s pass_users_for_script
    echo "[+] Pulizia completata: elemento di portachiavi di prova rimosso."