Il progetto di Ben riguarda il reverse engineering del protocollo del monopattino elettrico Egret GT e la riscrittura del suo firmware in Rust. L’obiettivo e’ eliminare la possibilita’ di entrare in modalita’ operativa senza il PIN di sicurezza passando dalla modalita’ di aggiornamento firmware. Lo schermo del monopattino mostra le solite statistiche del cruscotto, ma consente di entrare accidentalmente in modalita’ aggiornamento e da li’ in modalita’ operativa senza PIN. E’ un breakdown molto dettagliato di un flusso di reverse engineering, con strumenti e tecniche riutilizzabili su altri progetti.
Il primo passo e’ stato l’analisi dell’app mobile. Lo sniffing Bluetooth e’ risultato abbastanza semplice e l’analisi del codice dell’app piuttosto diretta. Cosi’ Ben ha scoperto dati che non compaiono sul display e ha verificato che diverse informazioni vengono inviate a un server remoto, taggate con l’ID univoco del monopattino. Quindi il lavoro si e’ spostato sull’hardware.
Il CAN Bus sui pin dati della porta USB-C
Internamente il monopattino usa il CAN Bus. Per analizzarlo, Ben ha usato un oscilloscopio e un decoder CAN autocostruito. Il CAN Bus e’ accessibile sui pin dati della porta USB-C, che ufficialmente serve solo a caricare i telefoni. Inoltre, per chi vuole replicare la parte di analisi del segnale, uno shield oscilloscopio e analizzatore logico per Raspberry Pi abbinato a un Raspberry Pi copre proprio questo tipo di misura sui canali digitali.
- Analisi dell’app mobile con sniffing Bluetooth e lettura del codice
- Individuazione dei dati inviati al server remoto, taggati con l’ID univoco del monopattino
- Analisi del CAN Bus con oscilloscopio e decoder CAN autocostruito
- Accesso al CAN Bus tramite i pin dati della porta USB-C
- Reverse engineering del processo di aggiornamento firmware
- Riscrittura del firmware in Rust
Tre firmware da aggiornare: display, pannello di input e controller
Gli aggiornamenti firmware del monopattino arrivano in almeno tre versioni: display, pannello di input e controller principale. Percio’ il reverse engineering del processo di aggiornamento e’ stato cruciale per installare il nuovo firmware. Senza capire come il monopattino accetta e verifica i pacchetti di aggiornamento, non si va da nessuna parte. Infatti e’ proprio da quel processo che passa la falla: la modalita’ di aggiornamento consente di arrivare a quella operativa senza il PIN di sicurezza.
Il nuovo firmware e’ scritto in Rust. La scelta del linguaggio non e’ casuale: si tratta di codice che gira su un controller che gestisce un mezzo su cui sale una persona, quindi la gestione della memoria e degli errori conta. Inoltre il firmware riscritto deve convivere con il resto dell’elettronica, display e pannello di input compresi, che restano sulle loro versioni. Chi vuole seguire lo stesso percorso trova nella pagina del progetto di Ben su Hackaday.io il racconto completo del flusso di lavoro.
Per chi lavora su banchi con piu’ strumenti e protocolli diversi, un convertitore USB a RS232, RS485, RS422 e TTL con isolamento digitale puo’ tornare utile quando si collegano interfacce seriali di laboratorio. Non e’ il componente del progetto, ma e’ il tipo di adattatore che finisce spesso accanto a un oscilloscopio in queste analisi.
Fonte: https://hackaday.io/contests
