Malware Rilide: come le estensioni del browser stanno cambiando gli attacchi informatici

Uno schermo di un computer che mostra un triangolo rosso che indica la presenza di malware

Introduzione a Rilide

Rilide, noto anche come LumaC2 e CookieGenesis, è un sofisticato malware che prende di mira i browser basati su Chromium per dirottare l'attività degli utenti e rubare dati sensibili. Scoperto nel 2023, Rilide opera sfruttando le estensioni del browser per portare a termine i suoi attacchi. Rilide abusa del suo componente di estensione del browser per iniettare script dannosi nelle pagine web. Oltre alle sue capacità di esfiltrazione dei dati, presenta anche funzionalità avanzate del furto di criptovalute, con manipolazione dell'autenticazione a due fattori (2FA) per wallet popolari e client di posta.

Dall'inizio del 2025, il laboratorio di ricerca Trusteer ha registrato più di 50.000 sessioni di utenti infetti, il che indica l'entità dell'attività delle minacce. Rilide ha una campagna mondiale in corso, rilevata dal laboratorio Trusteer, che attacca Nord America, Sud America, Europa e Giappone.

In questo articolo esploreremo come Rilide opera all'interno del browser attraverso la sua estensione ed esamineremo le tecniche che utilizza per effettuare i suoi attacchi, in particolare il suo impatto sulle piattaforme finanziarie.

Le funzionalità di Rilide evidenziano il cambiamento nel landscape dalle tradizionali iniezioni web che utilizzano un singolo codice JavaScript nella pagina alle estensioni del browser. Le estensioni del browser semplificano molte funzioni che altrimenti sarebbero piuttosto difficili da realizzare. L'analisi seguente mostra quanto sia potente un'estensione e perché il malware moderno tende a usarla.

Man-in-the-browser: ieri e oggi

In passato, la maggior parte degli attacchi "man-in-the-browser" veniva eseguita tramite malware che scansionava la memoria del browser per identificare specifici pattern HTML e iniettava un tag <script> direttamente nel contenuto in memoria della pagina. Nonostante l'intento malevolo, questi script erano comunque soggetti ai meccanismi di sicurezza del browser, come operare in un ambiente sandbox, aderire alla politica della stessa origine e essere legati al ciclo di vita della pagina in cui erano stati inseriti.

Ad esempio, gli script iniettati non potevano accedere a cookie o risorse da altre fonti, né potevano persistere o eseguirsi una volta chiusa la pagina.

Al contrario, gli attacchi moderni che utilizzano estensioni del browser dannose superano la maggior parte di queste limitazioni. Le estensioni funzionano indipendentemente da una specifica pagina web, il che consente loro di essere eseguite in modo persistente in background. Inoltre, dispongono di privilegi elevati, che consentono loro di aggirare le restrizioni di origine identica, di accedere alle risorse del browser, come i cookie o lo storage e di rimanere attivi anche quando non ci sono pagine aperte. Questo cambiamento ha reso le estensioni del browser uno strumento potente per gli aggressori, garantendo un livello di persistenza e controllo ben superiore ai tradizionali metodi di iniezione web.

Le estensioni hanno anche introdotto un cambiamento nel contesto di esecuzione di JavaScript, che ha i suoi benefici dannosi. Le iniezioni web tradizionali venivano eseguite nello stesso contesto del codice dell'applicazione web, compresi gli strumenti di sicurezza. Qualsiasi prova lasciata sul posto (come elementi di script, richieste di rete, variabili js, ecc.) poteva rendere il malware rilevabile.

Ora, oltre al contesto della pagina, ci sono due diversi ambienti JavaScript:

  1. Innanzitutto, c'è il contesto dello script del contenuto, che ha accesso al documento della pagina, ma è parzialmente isolato dall'ambiente principale della pagina.
  2. Inoltre, esiste un contesto di codice in background (un service worker), che non ha accesso al content script e all'ambiente della pagina principale.

Tutte le comunicazioni tra questi contesti avvengono attraverso interfacce definite del browser che non sono visibili alla pagina o ai suoi sviluppatori. La maggior parte dei comportamenti e delle prove di estensione sono isolati per progettazione e il rilevamento è particolarmente difficile se non vi è alcuna modifica al documento principale.

Oltre a offrire una maggiore evasione, lo sviluppo di estensioni del browser è anche semplice, grazie alle ampie funzionalità integrate e alle autorizzazioni fornite dalle moderne API del browser. L'analisi seguente dimostra come le estensioni rendano più facile sviluppare attacchi complessi.

Dato l'aumento del controllo, della persistenza, delle funzionalità e della facilità di sviluppo offerte dalle estensioni, il passaggio dalle tradizionali tecniche di "man-in-the-browser" agli attacchi basati sulle estensioni non è solo comprensibile, ma anche inevitabile, nell'evoluzione delle minacce basate sul browser.

Uomo che guarda il computer

Rafforza la tua intelligence sulla sicurezza 


Rimani al passo con le minacce con notizie e insight su sicurezza, AI e altro ancora, ogni settimana con la newsletter Think. 


Approfondisci l'estensione browser Rilide

Analisi del manifesto

Inizieremo la nostra analisi di Rilide con il file manifest, un componente fondamentale che delinea le funzionalità e i livelli di accesso dell'estensione, fornendo i primi indizi per comprendere le capacità dannose di Rilide.

Una delle varianti analizzate si presenta come un'estensione di Google Drive:

Codice per la descrizione dell'estensione del manifesto
Figura 1: descrizione dell'estensione Manifest

Più avanti è presente un elenco delle autorizzazioni richieste. L'elenco contiene diverse funzionalità critiche del browser, tra cui, ma non solo, le seguenti:

  • “Scripting”: consente di iniettare ed eseguire codice JavaScript nelle pagine web
  • “Cookie”: consente di leggere, modificare o eliminare i cookie del browser
  • “WebRequest”: osservazione e modifica delle richieste di rete effettuate dal browser
  • “ClipboardRead/Write”: lettura e modifica del contenuto degli appunti dell’utente
  • “ActiveTab”: accede temporaneamente al contenuto della scheda attualmente attiva

In “host_permission”, l’estensione può accedere e interagire con , ovvero qualsiasi schema, dominio, percorso e porta supportati dal browser.

Gli "script di contenuto" sono inoltre impostati per essere eseguiti su tutti gli URL in document_start, il che significa che vengono eseguiti non appena il browser inizia a caricare la pagina, prima che il contenuto venga completamente visualizzato.

Codice che mostra la configurazione dello script manifest
Figura 2: configurazione dello script manifest

Lo script main.js include funzionalità generali di rubo di informazioni, mentre gmail.js mira alla pagina del client di posta Gmail. Tuttavia, tutti gli script vengono inseriti in ogni pagina.

In "declarative_net_request", l'estensione configura le regole per rimuovere più intestazioni di Content Security Policy (CSP). Ciò consente a Rilide di aggirare le restrizioni di sicurezza e di iniettare contenuti in linea.

In "background" viene configurato il service worker dell'estensione. Qui il malware monitora gli eventi del browser e stabilisce la comunicazione con il server C2. Successivamente, approfondiremo l'analisi degli script di background per comprendere meglio come il malware ascolti gli eventi del browser ed esegua la sua strategia di attacco.

Analisi dello script Background.js
Inizializzazione

Background.js contiene un codice di inizializzazione che è configurato per essere eseguito al momento dell'evento di installazione dell'estensione. Recupera le informazioni sul dispositivo, come i dettagli della CPU e dello storage, utilizzando le chiamate chrome.system e i dati delle estensioni installate utilizzando chrome.mangement. L'ID univoco viene generato utilizzando il modulo uuid npm (importato tramite jspm) e salvato nello storage locale. Infine, tutti i cookie vengono recuperati usando chrome.cookies.getAll con un parametro di filtro vuoto.

Codice di inizializzazione
Figura 3: codice di inizializzazione

Questi dati vengono inviati al server C2 e la risposta può abilitare le funzionalità dell'estensione. Iniezioni, comandi e impostazioni malware vengono inoltre recuperati durante l'inizializzazione dell'estensione.

La parte finale dell'inizializzazione consiste nell'abilitare le regole di rimozione CSP, dopodiché il malware è pronto per configurare e monitorare gli eventi del browser. Ancora una volta, possiamo vedere chiaramente il beneficio dell'utilizzo di un'estensione del browser rispetto alle tradizionali tecniche di web-injecting, rendendo tutte queste informazioni facilmente acquisibili.

Nuovi metodi di estrazione del dominio

Le versioni precedenti di Rilide avevano domini C2 codificati direttamente nei file JavaScript. Altre varianti estraevano i domini recuperando i dettagli delle transazioni da un portafoglio Bitcoin specificato.

La nuova variante analizzata qui include codice progettato per recuperare domini da un bot di Telegram. Le chiamate periodiche per recuperare i domini sono impostate per essere eseguite ogni minuto tramite gli allarmi di Google Chrome.

Questo approccio consente al malware di cambiare facilmente dominio se uno di essi viene rilevato e bloccato.

Sebbene questa variante non contenesse i token Telegram, è probabile che questo metodo appaia nelle versioni future.

codice per l'estrazione del dominio dal bot di Telegram
Figura 4: estrazione del dominio da un bot di Telegram

Pronto per l'esfiltrazione dei dati

Lo script di contenuto invia tutti i valori degli elementi di input della pagina utilizzando chrome.runtime.sendMessage con il tipo di messaggio "new-grabber-info".

Il seguente listener è impostato in background.js per passare i dati al server C2.

codice per il listener dei dati di input
Figura 5: listener dei dati di input

Inoltre, lo sfondo è in attesa dei messaggi "set-screenshot-result".

Questi messaggi attivano la schermata usando chrome.tabs.captureVisibleTab e inviando i dati al C2.

codice per acquisire una schermata e inoltrare i dati
Figura 6: acquisizione di una schermata e inoltro dei dati

Utilizzando questi metodi, se l'utente accede a un sito bancario, può essere rubata una serie di dati sensibili. Tra questi rientrano nomi utente e password, numeri di conto, codici PIN, dati della carta di credito, risposte alle domande di sicurezza e informazioni sul destinatario del trasferimento.

Nell'ultima parte degli script in background, le chiamate periodiche per il fetch dei comandi e i controlli del proxy sono impostati utilizzando "chrome.alarms". Gli allarmi di comando recuperano un elenco di comandi da C2 e li eseguono uno per uno.

L'allarme di controllo proxy verifica lo stato della connessione proxy e ne avvia una nuova, se necessario. Una volta impostati i listener, l'esecuzione sincrona dello script di sfondo termina.

cmds.js, cosa può fare il malware?

cmds.js contiene codice che facilita la ricezione di un comando (da un elenco predefinito) insieme ai parametri del C2 e la restituzione di eventuali risultati, se applicabile.

Alcuni comandi interessanti includono:

  • “Extension”: abilita un’estensione in base a uno specifico ID
  • “Push”: crea una notifica del browser con il contenuto recuperato e apre una nuova scheda al clic sulla notifica
  • “Screenshot”: cattura il contenuto della scheda visibile utilizzando “chrome.tab.captureVisibleTab”
  • “History”: fornisce la cronologia di navigazione
  • “Cookie”: recupera tutti i cookie del browser, come nel codice di inizializzazione
  • “URL”: apre una nuova scheda con l’URL specificato

Altri comandi permettono di cambiare la configurazione dell'estensione, recuperare le informazioni sui dispositivi, l'URL corrente e così via. Questo insieme di comandi consente cambiamenti dinamici nel workflow e nell'esecuzione del malware, rendendolo più capace di attirare l'interazione degli utenti. La maggior parte di questi comandi utilizza le funzioni integrate dell'estensione di Chrome, il che rende facile lo sviluppo per gli autori di malware.

main.js content script: injection su misura e furto di dati

Lo script del contenuto main.js inizia con la libreria jQuery inizializzata all'interno di una funzione anonima, incorporata interamente in linea senza importazioni esterne. Segue il codice offuscato che esegue funzioni dannose.

L'architettura delle estensioni di Chromium consente alle estensioni di separare le responsabilità dell'iniezione e di renderla più difficile da rilevare. Il service worker scarica e memorizza le iniezioni durante la fase di inizializzazione, mentre lo script del contenuto le legge e le esegue. Non sono state inviate richieste web nel contesto della pagina, il che aiuta a mantenere il malware non rilevato. main.js itera tutte le iniezioni recuperate e se l'URL corrente corrisponde all'URL di iniezione, lo inietta.

Rilide usa un modo intelligente per iniettare script nel DOM.

codice per l'iniezione di script
Figura 7: iniezione di script

Crea un attributo del documento "onreset" con l'iniezione come gestore dell'evento. Quindi invia immediatamente un evento "ripristino" personalizzato, che esegue l'iniezione e infine rimuove l'attributo.

Questo attributo viene impostato in un momento specifico tra la chiamata "setAttribute" e quella "removeAttribute", il che rende difficile il rilevamento da parte degli strumenti di sicurezza.

L'ultima chiamata di funzione configura il listener generico per il furto di dati.

Listener di input dello script di contenuto (dopo il deoffuscamento e la ridenominazione delle variabili)
Figura 8: input listener del content script (dopo la deobfuscation e dopo avere rinominato le variabili)

Utilizzando un selettore jQuery, vengono selezionati tutti gli elementi di input e viene impostato il listener di eventi "change".

L'evento di "modifica" si verifica ogni volta che il valore di un campo di input viene modificato e perde il focus (l'utente clicca su un altro elemento). Ad esempio, quando una vittima accede al proprio conto bancario, il suo nome utente viene raccolto quando clicca sul campo della password e la password inserita viene rubata quando l'utente invia il modulo. I dati vengono inviati al service worker tramite chrome.runtime.sendMessage, che poi li inoltra ai server C2.

Script di contenuto gmail.js: nascondere il furto di criptovalute

L'obiettivo di questo script è quello di sostituire la richiesta di autorizzazione 2FA ritirata con una nuova richiesta di autorizzazione del dispositivo. Ipotizziamo che questo approccio tenga i clienti all'oscuro dei prelievi non autorizzati, poiché è più probabile che percepiscano la nuova autorizzazione del dispositivo come meno sospetta rispetto ai prelievi.

Lo script parte con un'inizializzazione in linea della libreria jQuery e una verifica che la posizione corrente contenga "mail.google" prima di avviare l'esecuzione. L'iniezione controlla periodicamente la presenza di e-mail provenienti da portafogli di criptovalute molto diffusi e, se le trova, attiva la funzione corrispondente del wallet.

codice per cercare indirizzi e-mail di wallet di criptovalute
Figura 9: ricerca di indirizzi e-mail di wallet di criptovalute

I selettori jQuery sono piuttosto semplici e utilizzano dei "div" che contengono i nomi dei wallet nel testo.

Dimostreremo l'iniezione personalizzata di un fornitore specifico, anche se tutti si comportano in modo simile.

Il codice cerca tutti gli elementi contenenti il testo "Richiesta di prelievo" e lo sostituisce con "Autorizza nuovo dispositivo".

codice per modificare il testo della notifica di prelievo
Figura 10: modifica del testo della notifica di prelievo

Cerca anche elementi span contenenti il testo "prelievo" per sostituire il contenuto dell'anteprima dell'e-mail.

Prima dell'iniezione:

E-mail originale di notifica del prelievo
Figura 11: e-mail di notifica di prelievo originale

Dopo l'iniezione:

E-mail di notifica del nuovo dispositivo
Figura 12: e-mail di notifica del nuovo dispositivo

Il corpo dell'e-mail si trova nel modo seguente:

codice per modificare il contenuto del corpo della e-mail
Figura 13: modifica del contenuto del corpo dell'e-mail

In parole povere, lo script trova tutti gli elementi con la classe CSS "ii" che hanno un elemento discendente "div" con il testo "controllare attentamente l'indirizzo". Estrae inoltre il codice di autorizzazione in base all'elemento e allo stile del testo del codice di autorizzazione. Questo metodo per identificare gli elementi non è molto stabile, poiché piccoli cambiamenti nello stile, nel testo o nella struttura possono comprometterne la stabilità.

Contenuto HTML dell'e-mail di prelievo
Figura 14: contenuti HTML dell'e-mail di prelievo

Infine, il contenuto HTML dell'e-mail viene sovrascritto con contenuto codificato.

Contenuto originale:

notifica di prelievo originale redatta
Figura 15: notifica di prelievo originale

Nuovi contenuti:

nuovi contenuti e-mail iniettati
Figura 16: Contenuto di e-mail iniettato

Questo meccanismo consente all'attore delle minacce di ritirare criptovalute senza avvisare l'utente dei prelievi.

Codice proxy: dalla prova di concetto al malware reale

Un'altra caratteristica di rilievo, implementata senza sforzo tramite estensioni, è la funzionalità di proxy. Rilide consente di convertire il browser della vittima in un proxy HTTP, inoltrando tutte le richieste utilizzando le credenziali e i dati della vittima.

Questa funzionalità è particolarmente pericolosa per le frodi finanziarie, poiché gli attaccanti possono accedere a portali bancari, conti di trading e piattaforme di pagamento senza attivare controlli di autenticazione aggiuntivi. Possono avviare transazioni, modificare le impostazioni del conto o sottrarre fondi sotto la copertura di attività legittima degli utenti, bypassando misure di sicurezza tradizionali come il tracciamento degli indirizzi IP. Impersonando efficacemente la vittima, gli aggressori possono utilizzare meccanismi basati sulla fiducia per commettere frodi senza problemi.

Questa funzionalità era sorprendentemente semplice da implementare, poiché era stata copiata direttamente da CursedChrome, un progetto educativo che dimostrava una prova di concetto per questo tipo di attacco.

Il proxy funziona utilizzando il service worker delle estensioni per impostare una connessione WebSocket con il server C2 dell'attaccante. Questa connessione permette al service worker di ricevere i comandi inviati dall'attaccante. Questi comandi dettano le azioni del proxy, come fare richieste o navigare sui siti web. Le richieste vengono effettuate utilizzando i cookie raccolti dalla vittima e le risposte vengono inviate al C2.

Esempio di codice CursedChrome:

CursedChrome inizializza il codice della funzione
Figura 17: CursedChrome inizializza il codice della funzione

Esempio di codice Rilide:

Codice funzione Rilide StartProxy
Figura 18: Codice funzione Rilide startProxy

A parte alcune differenze di denominazione e la posizione della definizione della funzione, il codice è lo stesso. Questo progetto include anche codice backend e un'interfaccia utente di gestione (UI), facilitando la vita agli attaccanti.

Rimanere al sicuro con le estensioni

Rilide è un esempio di come le estensioni del browser abbiano trasformato il landscape delle minacce per gli attacchi man-in-the-browser. Sfruttando le funzionalità intrinseche delle estensioni, gli attaccanti ottengono un controllo senza precedenti sul browser, permettendo un sfruttamento sofisticato e persistente che supera di gran lunga i limiti delle tradizionali iniezioni web in-page. Questo cambiamento evidenzia la crescente necessità di vigilanza e di difese robuste, poiché la semplicità e la potenza degli attacchi basati sulle estensioni li rendono un vettore interessante per i criminali informatici.

Per proteggersi, gli utenti dovrebbero controllare regolarmente le estensioni del browser installate, rimuovendo prontamente quelle sconosciute o sospette.

Inoltre, è fondamentale monitorare gli account e-mail per attività insolite, come tentativi di accesso inaspettati, e tenere d'occhio i portafogli di criptovalute per transazioni non autorizzate o azioni sconosciute. Rimanere proattivi e cauti può aiutare a mitigare i rischi posti da questo paradigma di attacco in evoluzione.

IBM Trusteer aiuta a rilevare frodi e malware, ad autenticare gli utenti e a stabilire l'attendibilità delle identità lungo il percorso multicanale del cliente. Oltre 500 organizzazioni leader si affidano a Trusteer per proteggere i percorsi digitali dei clienti e supportare la crescita aziendale.

Indicatori di compromesso

File

historytab.js

 2b72cc2c0c53321a472471c5189fdb56

notif.js

 8679a34885a02e94189c8fec5132245a

config.js

 408d8fa7eade661e9a02b6065b792fca

ico.png

 40de419c81de274c26c63e0f23d91a3f

scrrule.js

 9db73e9a3a24070de075da13fdea01ab

exts.js

 868eb23af363b5790d16103d2dd94178

regole.json

 6c1f6ab3492a615404a70161303de746

manifest.json

 fd7d90a5e31cd19bbc65095d722c1525

utils.js

 bd14616118af50f6e0b886bd90144845

content-scripts-register-polyfill.4.0.0.js

 5bf61a91e003afb1e169e3e3be336cac

app.html

 08785f3794a7ae9aab6b3fa669646794

sfondo.js

 1de94fff2cb80f44d82d69f816139974

main.js

 6c19e1bf9a7eac2c9b44f5e5c0b76d39

gmail.js

 49c851c025506d0a570d75bc00c7605a

csp.js

 15606d8d8d6ca797c2c98c20114619b4

exchangeSettings.js

 2dcf7f099c08f9d074994a0a4f996720

screen.js

 7d0defc1a08d5a58d95f5ca38509c8ef

domain.js

 bb0bc698eb64447a3ab581517273487b

inj.js

 3d67fa8a26390e8819d6bd36a2c5959f

set.js

 8049e7bd36a88f7a393b7ff0746a04db

proxing.js

 b4b2510d7ec41711ef29ddddd4cab09a

cmds.js

 0ebb9b78c38ae45884b85632fe087e49

machine.js

 c43644bed7d94e3ec880af3195e4c906

extFiles.zip

 3113c21ee9704b14437edb5c6f29634

Dominio:
statbrwsr.digital 

Mixture of Experts | 12 dicembre, episodio 85

Decoding AI: Weekly News Roundup

Unisciti al nostro gruppo di livello mondiale di ingegneri, ricercatori, leader di prodotto e molti altri mentre si fanno strada nell'enorme quantità di informazioni sull'AI per darti le ultime notizie e gli ultimi insight sull'argomento.

Soluzioni correlate
Servizi di risposta agli incidenti

Migliora il programma di risposta agli incidenti della tua organizzazione, minimizza l'impatto delle violazioni e ottieni una risposta rapida agli incidenti di cybersecurity.

Esplora i servizi di risposta agli incidenti
Soluzioni di rilevamento e risposta alle minacce

Utilizza le soluzioni IBM per il rilevamento e la risposta alle minacce per rafforzare la sicurezza e accelerare il rilevamento delle minacce.

Esplora le soluzioni di rilevamento delle minacce
Soluzioni IBM QRadar SOAR

Ottimizza i processi decisionali, migliora l'efficienza del SOC e accelera la risposta agli incidenti con una soluzione di orchestrazione e automazione intelligente.

Scopri QRadar SOAR
Prossimi passi

Migliora il programma di risposta agli incidenti della tua organizzazione, minimizza l'impatto delle violazioni e ottieni una risposta rapida agli incidenti di cybersecurity.

Esplora i servizi di risposta agli incidenti Scopri di più su IBM X-Force