GlassWorm Nasconde un RAT All’interno di un’ Estensione Maligna per Chrome
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
GlassWorm sfrutta pacchetti npm, PyPI, GitHub e OpenVSX compromessi per distribuire una piattaforma malware a più stadi. Il primo stadio lancia un loader che interroga una memoria blockchain Solana per ottenere indirizzi di comando e controllo, quindi scarica un payload criptato. Il secondo stadio ruba credenziali, file di portafogli di criptovaluta e dettagli dell’host, mentre il terzo stadio distribuisce un RAT persistente basato su WebSocket insieme a un’estensione di Chrome dannosa progettata per catturare dati del browser. L’operazione è rivolta principalmente a sviluppatori e possessori di criptovaluta.
Indagine
Gli analisti hanno collegato il compromesso iniziale a script di pre-installazione malevoli e loader basati su Unicode incorporati in pacchetti altrimenti legittimi. Hanno scoperto due indirizzi Solana wallet che agiscono come luoghi di rilascio per gli URL C2 e hanno visto il loader interrogare diversi endpoint RPC di Solana. Il RAT del terzo stadio si basa su nodi bootstrap DHT e si ritorna al recupero basato su Solana se il DHT non riesce a risolverlo. I ricercatori hanno anche identificato l’infrastruttura di esfiltrazione e mappato l’estensione di Chrome malevola utilizzata nella campagna.
Mitigazione
Le organizzazioni dovrebbero applicare la scansione della catena di fornitura per npm e altri ecosistemi di pacchetti, verificare l’integrità del pacchetto e la fiducia del pubblico editore, e bloccare gli IP e i domini maliziosi noti. Le difese degli endpoint dovrebbero monitorare i runtime Node.js rogue, compiti programmati inattesi e chiavi Run di registro sospette. I depositi di credenziali del browser dovrebbero essere rafforzati e gli utenti di criptovaluta dovrebbero adottare la verifica hardware del portafoglio ove possibile.
Risposta
Se GlassWorm viene rilevato, isolare l’endpoint interessato, interrompere i processi dannosi e rimuovere eventuali file scaricati e meccanismi di persistenza come i compiti programmati. Revocare i token npm compromessi, ruotare le credenziali dei portafogli di criptovaluta e resettare le password memorizzate nel browser. Completare una revisione forense completa dei log dell’host per tracciare l’esecuzione del loader e aggiornare i controlli di sicurezza per ridurre il rischio di compromessi futuri della catena di fornitura.
"graph TB %% Definizioni delle classi classDef technique fill:#ffcc99 classDef persistence fill:#99ffcc classDef exfil fill:#ff9999 classDef credential fill:#ccccff classDef execution fill:#ffdb4d classDef collection fill:#c2f0c2 classDef command fill:#ffd699 %% Nodi – Step di Attacco step1_initial_access["<b>Tecnica</b> – <b>T1195.001 Compromesso della Catena di Fornitura</b><br/>Pacchetti npm/pyPI malevoli e repository GitHub compromessi consegnano un loader."] class step1_initial_access technique step2_obfuscation["<b>Tecnica</b> – <b>T1027 File o Informazioni Offuscate</b><br/>Il codice del loader è offuscato e compilato dopo la consegna (T1027.004)."] class step2_obfuscation execution step3_guardrails["<b>Tecnica</b> – <b>T1480 Barriere di Esecuzione</b><br/>Il loader controlla localizzazione, lingua e fuso orario e abbandona l’esecuzione al di fuori delle regioni russe mirate."] class step3_guardrails execution step4_dead_drop["<b>Tecnica</b> – <b>T1102.001 Risolutore Dead Drop</b><br/>Il loader interroga i memo di transazione blockchain di Solana per ottenere l’URL C2."] class step4_dead_drop command step5_cred_files["<b>Tecnica</b> – <b>T1552.001 Credenziali nei File</b><br/>Raccoglie .npmrc, NPM_TOKEN, configurazioni del provider cloud e chiavi private SSH."] class step5_cred_files credential step6_browser_creds["<b>Tecnica</b> – <b>T1555.003 Credenziali dai Browser Web</b><br/>Estrae password, cookie, dati di riempimento automatico e carte di pagamento da Chrome, Edge, Firefox; elude la crittografia vincolata allu2011app."] class step6_browser_creds credential step7_private_keys["<b>Tecnica</b> – <b>T1552.004 Chiavi Private</b><br/>Copia i file dei portafogli di criptovaluta e schermate delle seed phrase."] class step7_private_keys credential step8_exfil_webhook["<b>Tecnica</b> – <b>T1567.004 Esfiltrazione tramite Webhook</b><br/>Comprime i dati messi in scena e invia con POST a endpoint HTTP controllati dall’attaccante."] class step8_exfil_webhook exfil step9_persistence_rc["<b>Tecnica</b> – <b>T1037.004 Script RC</b><br/>Crea l’entrata HKCUSoftwareMicrosoftWindowsCurrentVersionRun e i compiti programmati per lanciare il lanciatore PowerShell all’avvio."] class step9_persistence_rc persistence step10_wmi_event["<b>Tecnica</b> – <b>T1546.003 Sottoscrizione Evento WMI</b><br/>Registra eventi WMI per rilevare portafogli hardware USB e lanciare un’interfaccia di phishing."] class step10_wmi_event persistence step11_ps_profile["<b>Tecnica</b> – <b>T1546.013 Profilo PowerShell</b><br/>Aggiunge persistenza tramite script del profilo di PowerShell."] class step11_ps_profile persistence step12_vnc["<b>Tecnica</b> – <b>T1021.005 VNC</b><br/>Carica un modulo nativo VNC nascosto (HVNC) per l’accesso remoto invisibile."] class step12_vnc command step13_multi_stage["<b>Tecnica</b> – <b>T1104 Canali a piùu2011stadi</b><br/>Stabilisce un canale WebSocket Socket.IO bidirezionale per comandi C2."] class step13_multi_stage command step14_input_injection["<b>Tecnica</b> – <b>T1674 Iniezione di Input</b><br/>Esegue JavaScript fornito dall’attaccante via eval() all’interno del RAT."] class step14_input_injection execution step15_keylog_clip["<b>Tecnica</b> – <b>T1056.001 Keylogging</b> & <b>T1115 Dati degli Appunti</b><br/>L’estensione malevola di Chrome registra i tasti, cattura testo dagli appunti e scatta schermate."] class step15_keylog_clip collection step16_browser_hijack["<b>Tecnica</b> – <b>T1185 Hijacking della Sessione del Browser</b><br/>L’estensione raccoglie cookie e token di sessione e può reindirizzare le schede attive a URL controllati dall’attaccante."] class step16_browser_hijack collection %% Connessioni – Flusso di Attacco step1_initial_access –>|porta a| step2_obfuscation step2_obfuscation –>|porta a| step3_guardrails step3_guardrails –>|porta a| step4_dead_drop step4_dead_drop –>|porta a| step5_cred_files step5_cred_files –>|porta a| step6_browser_creds step6_browser_creds –>|porta a| step7_private_keys step7_private_keys –>|porta a| step8_exfil_webhook step8_exfil_webhook –>|porta a| step9_persistence_rc step9_persistence_rc –>|porta a| step10_wmi_event step10_wmi_event –>|porta a| step11_ps_profile step11_ps_profile –>|porta a| step12_vnc step12_vnc –>|porta a| step13_multi_stage step13_multi_stage –>|porta a| step14_input_injection step14_input_injection –>|porta a| step15_keylog_clip step15_keylog_clip –>|porta a| step16_browser_hijack "
Flusso di Attacco
Rilevamenti
Esecuzione binaria NodeJS da posizione insolita (tramite cmdline)
Visualizza
Possibile tentativo di comunicazioni di ricerca dominio IP (via dns)
Visualizza
Possibili Punti di Persistenza [ASEPs – Software/NTUSER Hive] (tramite registry_event)
Visualizza
Possibile tentativo di abuso di Publicnode Ethereum come canale C2 (tramite dns_query)
Visualizza
IOC (DestinationIP) per rilevare: GlassWorm Nasconde un RAT all’interno di un’estensione Chrome dannosa
Visualizza
IOC (HashMd5) per rilevare: GlassWorm Nasconde un RAT all’interno di un’estensione Chrome dannosa
Visualizza
IOC (HashSha256) per rilevare: GlassWorm Nasconde un RAT all’interno di un’estensione Chrome dannosa
Visualizza
IOC (HashSha1) per rilevare: GlassWorm Nasconde un RAT all’interno di un’estensione Chrome dannosa
Visualizza
IOC (SourceIP) per rilevare: GlassWorm Nasconde un RAT all’interno di un’estensione Chrome dannosa
Visualizza
IOC (Email) per rilevare: GlassWorm Nasconde un RAT all’interno di un’estensione Chrome dannosa
Visualizza
Rilevazione del RAT GlassWorm ed Esfiltrazione Dati [Connessione di Rete Windows]
Visualizza
Rilevamento dell’esecuzione del binario di phishing Ledger/Trezor [Creazione Processo Windows]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il Controllo Pre-volo di Telemetria e Baseline deve essere passato.
Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTP identificate e mirano a generare l’esatta telemetria prevista dalla logica di rilevamento.
-
Narrare l’Attacco e Comandi:
Un attaccante ha ottenuto un binario maligno che finge di essere il client del portafoglio Ledger Live/Trezor. Il binario è chiamatoAssaac.exeper imitare un eseguibile legittimo. Viene inserito nella directory%APPDATA%dell’utente, e un file JavaScript di compagnia (index.js) è posizionato in una sottocartella nascostaQtCvyfVWKH. L’attaccante quindi esegue il binario, causando a Windows di registrare un evento di creazione di processo con l’esatto nome dell’immagine e il percorso della riga di comando che la regola Sigma osserva.Passo dopo Passo:
- Crea la cartella nascosta e posiziona lo script malevolo.
- Copia l’eseguibile malevolo (
Assaac.exe) nella AppData dell’utente. - Avvia l’eseguibile, che legge
index.jse inizia le routine di furto delle credenziali.
-
Script di Test di Regressione:
# ------------------------------------------------------------ # Setup file malevoli # ------------------------------------------------------------ $appData = $env:APPDATA $folder = Join-Path $appData "QtCvyfVWKH" $exePath = Join-Path $appData "Assaac.exe" $jsPath = Join-Path $folder "index.js" # Assicurati che la cartella nascosta esista New-Item -ItemType Directory -Path $folder -Force | Out-Null # Nascondi la cartella (opzionale) (Get-Item $folder).Attributes += 'Hidden' # Distribuisci un eseguibile malevolo fittizio (per demo usiamo una copia di calc.exe) Copy-Item -Path "$env:SystemRootSystem32calc.exe" -Destination $exePath -Force # Distribuisci un payload JavaScript fittizio (il contenuto è irrilevante per il rilevamento) @" // segnaposto payload malevolo console.log('Furto di portafoglio Crypto eseguito'); "@ | Set-Content -Path $jsPath -Encoding UTF8 # ------------------------------------------------------------ # Esegui il binario malevolo (questo dovrebbe attivare la regola Sigma) # ------------------------------------------------------------ & $exePath "$jsPath" # ------------------------------------------------------------ # Fine dello script – lasciano gli artefatti per la pulizia manuale # ------------------------------------------------------------ -
Comandi di Pulizia:
# Termina il processo malevolo se ancora in esecuzione Get-Process -Name "Assaac" -ErrorAction SilentlyContinue | Stop-Process -Force # Rimuovi i file creati e la cartella Remove-Item -Path $exePath -Force -ErrorAction SilentlyContinue Remove-Item -Path $jsPath -Force -ErrorAction SilentlyContinue Remove-Item -Path $folder -Recurse -Force -ErrorAction SilentlyContinue