Caso reale: falso portafoglio hardware per criptovalute

Analisi completa di un incidente che ha colpito un falso cryptowallet. Sembrava un normale wallet Trezor e invece trasferiva gli investimenti in criptovalute nelle mani dei cybercriminali.

Facili da rubare e da riscuotere, le criptovalute sono uno degli asset digitali più appetitosi degli cybercriminali. Per questo motivo, per proteggere i propri investimenti in criptovalute, gli investitori più consapevoli ricorrono spesso a hardware wallet (o portafogli hardware) per criptovalute. Questi portafogli mantengono le chiavi private lontane da computer e smartphone vulnerabili e rendono molto più sicura la firma delle transazioni. Purtroppo, però, come uno dei nostri clienti ha imparato a sue spese, possedere un hardware wallet non garantisce che i vostri fondi siano al sicuro.

I primi segni dell’hackeraggio

Per raggiungere il loro obiettivo, i cybercriminali hanno lavorato silenziosamente. Un giorno funestro, appare nella cronologia delle transazioni del cryptowallet un’operazione che mostra il trasferimento di un’ingente somma di denaro a un’altra persona. Tuttavia, quel giorno, la vittima non aveva effettuato nessuna transazione. Inoltre, il cryptowallet non era stato nemmeno collegato al computer!

Spariti!

Spariti!

Dissezionando il wallet

La vittima aveva acquistato il popolare wallet hardware Trezor Model T. Questo portafoglio hardware utilizza un codice completamente open-source, sia a livello di software che di hardware, ed è basato sul popolare microcontrollore STM32F427.

Il fornitore di Trezor Model T ha adottato una serie di misure di sicurezza che, in teoria, dovrebbero proteggere il dispositivo in modo affidabile e mantenerlo lontano dagli hacker. Sia la scatola che il vano dove si trova l’unità sono sigillati con adesivi olografici; il microcontrollore è in modalità di protezione dalla lettura della memoria flash (RDP 2). Il bootloader controlla la firma digitale del firmware e, se viene rilevata un’anomalia, mostra un messaggio di firmware non originale e cancella tutti i dati del wallet. L’accesso al dispositivo e la conferma delle transazioni richiedono un codice PIN che, pur non proteggendo la chiave di accesso master (la base per la generazione della seed phrase), viene utilizzato per criptare la memoria in cui è conservato. In aggiunta al PIN, è possibile proteggere la chiave d’accesso principale con una password, come previsto dallo standard BIP-39.

Non usatemi, non sono sicuro!

Non usatemi, non sono sicuro! (Fonte)

A prima vista, il portafoglio che abbiamo esaminato sembrava esattamente identico a uno vero e non mostrava segni di manipolazione. L’unità è stata acquistata da un venditore affidabile attraverso un noto sito di annunci e gli adesivi olografici sulla scatola e il wallet stesso erano in perfette condizioni. Una volta avviato in modalità “aggiornamento”, il portafoglio mostrava la versione 2.4.3 del firmware e la versione 2.0.4 del bootloader.

Schermata della falsa modalità di aggiornamento del wallet

Schermata della falsa modalità di aggiornamento del wallet

Durante l’utilizzo del portafoglio, non viene osservato nulla di sospetto: tutte le funzionalità funzionano come previsto e l’interfaccia utente non è diversa da quella originale. Tuttavia, consapevoli del fatto che c’era stato un furto, abbiamo approfondito la questione. Ed è qui che sono iniziate le nostre interessanti scoperte.

Abbiamo scoperto subito che il fornitore non aveva mai distribuito la versione 2.0.4 del bootloader. La cronologia delle modifiche apportate al progetto su GitHub indica brevemente che lo sviluppo di tale versione è “saltata a causa di dispositivi falsi”. Dopo un’affermazione così intrigante, ovviamente, non potevamo che impugnare il bisturi e iniziare la nostra dissezione…

Che diavolo è la versione 2.0.4?

Che diavolo è la versione 2.0.4?

Il vano era difficile da aprire: le sue due metà erano tenute insieme con grandi quantità di colla e nastro biadesivo invece che con la tecnica a ultrasuoni usata nei Trezor realizzati in fabbrica. Ancora più curioso è che all’interno c’era un microcontrollore completamente diverso che presentava tracce di saldatura! Al posto dell’STM32F427 originale, l’unità aveva un STM32F429 con meccanismi di protezione della lettura della memoria flash del microcontrollore disattivati (RDP 0 invece di RDP 2 nei Trezor originali).

Sembrava perfettamente autentico dall'esterno, invece... a sinistra l'originale e a destra il falso

Sembrava perfettamente autentico dall’esterno, invece… a sinistra l’originale e a destra il falso

Così, la teoria del falso cryptowallet si è rivelata vera: si trattava di un classico attacco alla supply-chain in cui un’ignara vittima acquista un dispositivo già hackerato. Ma il vero meccanismo attraverso il quale vengono rubate le criptovalute non era ancora chiaro…

Un firmware trojan

Non vogliamo ripetere gli avvertimenti e le grandi verità sui cryptowallet che spesso condividiamo in questo blog, ma permetteteci di ricordarvi una cosa: un cryptowallet contiene la vostra chiave privata e chiunque conosca quella chiave può firmare qualsiasi transazione e spendere il vostro denaro. Il fatto che gli hacker siano stati in grado di realizzare una transazione mentre il portafoglio offline era nascosto nella cassaforte del proprietario significa che o hanno copiato la chiave privata dopo averla generata, oppure… l’hanno sempre saputa!

Grazie alla protezione disattivata per la lettura della memoria flash, che i nostri malintenzionati hanno deciso di non attivare dopo aver saldato il nuovo microcontrollore, abbiamo facilmente estratto il firmware del wallet e, ricostruendone il codice, abbiamo scoperto che i criminali erano già a conoscenza della chiave privata. Come?

Il bootloader originale e il firmware del portafoglio hanno ricevuto solo tre modifiche:

In primo luogo, sono stati rimossi i controlli del bootloader relativi ai meccanismi di protezione e alle firme digitali, eliminando così il problema della “schermata rossa” durante il controllo dell’originalità del firmware all’avvio.

In secondo luogo, nella fase di inizializzazione o quando si resetta il wallet, la seed phrase generata casualmente è stata sostituita con una delle 20 seed phrase pre-generate salvate nel firmware hackerato. Il proprietario avrebbe iniziato a usare questa frase invece di una nuova e unica.

In terzo luogo, se l’utente sceglieva di impostare un’ulteriore password di protezione del master-seed, veniva utilizzato solo il primo simbolo (a…z, A…Z, 0…9 o ! per qualsiasi carattere speciale) che, insieme all’opzione senza password, forniva solo 64 combinazioni possibili. Pertanto, per decifrare un determinato wallet falso, si dovevano considerare solo 64*20=1280 varianti.

Il falso cryptowallet funzionava normalmente, ma gli hacker ne avevano il pieno controllo fin dall’inizio. In base alla cronologia delle transazioni, hanno fatto le cose con calma, aspettando un mese intero dopo il primo accredito del wallet prima di prelevare il denaro. Il proprietario non aveva alcuna protezione: la partita era persa dal momento stesso in cui il denaro è arrivato per la prima volta nel portafoglio Trojan.

La risposta del produttore

Dopo la pubblicazione della nostra inchiesta, sul suo account ufficiale di Twitter, Trezor (il produttore di questo modello di cryptowallet) ha fatto notare che questo incidente si è verificato in realtà nel 2022, quando diversi cryptowallet falsi provenienti da un rivenditore russo non autorizzato hanno colpito il mercato, sottolineando che dopo quel caso non sono stati segnalati altri incidenti simili.

Risposta di Trezor alla nostra indagine

Risposta di Trezor alla nostra indagine (Fonte)

Come prevenire la minaccia dei dispositivi falsi

Non è facile distinguere un falso cryptowallet da uno vero senza esperienza e conoscenze specifiche. La principale precauzione consiste nell’acquistare il wallet direttamente dal vendor ufficiale e scegliere modelli con versioni speciali di microcontrollori protetti (anche i Trezor originali non sono perfetti in questo senso: esistono wallet di altre marche con chip più protetti e meccanismi di protezione aggiuntivi).

Va ricordato che anche un portafoglio autentico e non modificato può essere vulnerabile a una serie di minacce. Le misure più importanti sono usare una password (se supportata dal portafoglio) e, naturalmente, proteggere tutti i computer e gli smartphone

Consigli