SOC Prime Bias: Critico

19 Gen 2026 19:11

GlassWorm Attacca Mac: Nuova Infrastruttura, Nuovi Trucchi

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso 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 Maligna VS Code IDE<br /><b>Descrizione</b>: L’avversario fornisce 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 (ad es., 15 minuti) prima di eseguire il suo payload per evitare l’analisi.”] class technique_delay technique technique_decrypt[“<b>Tecnica</b> – T1027.009 / T1027.004: Decrittazione del Payload AES-256-CBC<br /><b>Descrizione</b>: Il payload crittografato è decriptato in memoria utilizzando AES-CBC con una chiave a 256 bit.”] class technique_decrypt technique technique_c2_retrieve[“<b>Tecnica</b> – T1573.001: Recuperare Endpoint dalla Blockchain 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 Crittografato<br /><b>Descrizione</b>: Il malware contatta l’endpoint C2 utilizzando un protocollo non crittografato (ad es., HTTP).”] class technique_c2_fetch technique technique_persistence_agent[“<b>Tecnica</b> – T1543.001: Installare LaunchAgent<br /><b>Descrizione</b>: Un plist LaunchAgent è posizionato nella directory LaunchAgents dell’utente per la persistenza.”] class technique_persistence_agent technique technique_persistence_daemon[“<b>Tecnica</b> – T1543.004: Installare LaunchDaemon<br /><b>Descrizione</b>: Un plist LaunchDaemon è posizionato nella directory LaunchDaemons di sistema per la persistenza.”] class technique_persistence_daemon technique technique_modify_plist[“<b>Tecnica</b> – T1647: Modificare il 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 Keychain<br /><b>Descrizione</b>: Il materiale delle credenziali dalla Keychain di macOS è estratto.”] class technique_dump_keychain technique technique_steal_keys[“<b>Tecnica</b> – T1552.001 / T1552.004: Rubare Chiavi Private e Token<br /><b>Descrizione</b>: Le chiavi criptovalute private e i token di autenticazione vengono raccolti.”] class technique_steal_keys technique technique_stage_data[“<b>Tecnica</b> – T1074: Dati Preparati<br /><b>Descrizione</b>: I file raccolti sono copiati in /tmp/ijewf per una successiva esfiltrazione.”] class technique_stage_data technique technique_archive[“<b>Tecnica</b> – T1560.001 / T1560.003: Archiviare Dati Raccolti<br /><b>Descrizione</b>: I dati sono compressi in un formato di archivio (ad es., zip).”] class technique_archive technique technique_exfil[“<b>Tecnica</b> – T1048.003: Esfiltrazione Tramite Canale Non Crittografato Non-C2<br /><b>Descrizione</b>: L’archivio preparato è inviato tramite un canale non crittografato non legato al C2 primario.”] class technique_exfil technique technique_priv_esc[“<b>Tecnica</b> – T1548.006: Manipolazione TCC<br /><b>Descrizione</b>: Il database di Trasparenza, Consenso e Controllo di macOS è modificato per ottenere privilegi più elevati.”] class technique_priv_esc technique technique_impact[“<b>Tecnica</b> – T1496.002: Sostituire Ledger Live / Trezor Suite<br /><b>Descrizione</b>: Applicazioni di portafoglio di criptovaluta legittime sono sostituite con versioni trojanizzate per catturare gli asset dell’utente.”] class technique_impact technique %% Connections action_initial_access u002du002d>|utilizza| technique_vs_code_ext technique_vs_code_ext u002du002d>|attiva| technique_delay technique_delay u002du002d>|porta a| technique_decrypt technique_decrypt u002du002d>|stabilisce| technique_c2_retrieve technique_c2_retrieve u002du002d>|contatta| technique_c2_fetch technique_c2_fetch u002du002d>|installa| technique_persistence_agent technique_c2_fetch u002du002d>|installa| technique_persistence_daemon technique_persistence_agent u002du002d>|modifica| technique_modify_plist technique_persistence_daemon u002du002d>|modifica| technique_modify_plist technique_modify_plist u002du002d>|abilita| technique_dump_keychain technique_dump_keychain u002du002d>|abilita| technique_steal_keys technique_steal_keys u002du002d>|memorizza in| technique_stage_data technique_stage_data u002du002d>|archivia| technique_archive technique_archive u002du002d>|esfiltra via| technique_exfil technique_exfil u002du002d>|facilita| technique_priv_esc technique_priv_esc u002du002d>|abilita| 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."