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.
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:
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.
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:
Più avanti è presente un elenco delle autorizzazioni richieste. L'elenco contiene diverse funzionalità critiche del browser, tra cui, ma non solo, le seguenti:
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.
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.
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.
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.
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.
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.
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.
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 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:
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.
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.
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.
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.
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.
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".
Cerca anche elementi span contenenti il testo "prelievo" per sostituire il contenuto dell'anteprima dell'e-mail.
Prima dell'iniezione:
Dopo l'iniezione:
Il corpo dell'e-mail si trova nel modo seguente:
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à.
Infine, il contenuto HTML dell'e-mail viene sovrascritto con contenuto codificato.
Contenuto originale:
Nuovi contenuti:
Questo meccanismo consente all'attore delle minacce di ritirare criptovalute senza avvisare l'utente dei prelievi.
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:
Esempio di codice Rilide:
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.
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.
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