TL;DR Una delle funzioni che ho trovato più interessanti del Flipper Zero è la possibilità di ricevere e trasmettere, entro un raggio di poche decine di metri, segnali nelle bande subghz usate da telecomandi, apricancello e via dicendo. Questa funzione permette di sperimentare attacchi replay, brute force o analisi dei rolling-code implementati dai vari costruttori.
Una delle funzioni a mio parere più interessanti di Flipper Zero (se non sapete di cosa si parla, leggetevi questo articolo) è il Sub-Ghz Frequency Analyzer.
Questa funzione, che si trova dentro la sezione Sub-GHz, permette di esplorare la gamma di frequenze libere comunemente usate, ad esempio, da telecomandi per i cancelli e altri oggetti tecnologici presenti in giro, compresi allarmi, antifurti e altro. Parliamo delle frequenze dei c.d. LPD, Low Power Device, ovvero da 433.050 MHz a 434.790 MHz per l’Europa. Altri Paesi usano frequenze diverse e, quindi, non è inusuale captare segnali provenienti su bande non europee, magari perché relative a dispositivi sviluppati per il mercato USA.
Il chip TI CC1101, presente dentro il FlipperZero, è capace di ricevere e trasmettere sulle bande 300-348Mhz, 387-464Mhz e 779-928Mhz ma, per ovvie questioni normative, il FlipperZero viene “bloccato” in trasmissione sulle frequenze concesse per uso libero a seconda del Paese dove viene spedito[1]. La distanza in cui è possibile ricevere e trasmettere è comunque limitata, generalmente non più di 30-50 mt in situazioni ottimali.
Based on a TI CC1101 transceiver chip, the Flipper Zero has a sub 1-GHz radio capable of doing things like emulating a garage door remote, transmitting digital signals like OOK/ASK/FSK/GFSK/MSK at 315/433/866 MHz, analyzing and decoding popular remote control algorithms like Keeloq, and reading and emulating 125 kHz RFID tags.
Flipper Zero Crowdfunding: An Open Source RF Pen Testing Tool For Hackers, RTL-SDR.COM
Questa funzione è molto interessante per sperimentare attacchi di tipo replay, ovvero attraverso la ripetizione del segnale: dispositivi meno recenti o molto economici, che non implementano tecniche di protezione come il rolling code (o che lo implementano male, come descritto nell’articolo “Hackers Can Clone Millions of Toyota, Hyundai, and Kia Keys” su Wired nel 2020) sono potenzialmente vulnerabili a questo tipo di attacco.
Brevemente, la differenza tra rolling-code e fixed-code sta nella tipologia di segnale inviato via radio: se ricordate, i primi apricancello avevano un dip-switch al loro interno, con cui selezionare una “chiave” univoca (e fissa) da impostare sia sui telecomandi che nella centralina. Questa chiave veniva usata per far riconoscere il segnale emesso dal telecomando e, se coincidente con quella impostata nella centralina, aprire. Questo è un esempio di fixed-code, poiché il segnale trasmesso è sempre il medesimo.
Questa tecnologia, però, permetteva a chiunque fosse stato in ascolto di ricevere il segnale e, se replicato, poteva effettuare con successo l’attacco. Per ovviare, si usa un generatore di numeri pseudo-casuali, basati su un seme che viene codificato in modo univoco in ogni coppia di trasmettitore-ricevente. In questo caso, ogni codice inviato è unico e un attacco di tipo replay non può funzionare.
Tuttavia, anche in caso di dispositivi con rolling-code, sono possibili attacchi: Kaiju, ad esempio, è un “online rolling code analyzer & generator” che ora supporta anche i file .sub generati dal FlipperZero.
Vediamo quindi come procedere per divertirsi a fare hacking sul proprio (e sottolineo: proprio) apricancello!
Una volta attivata la funzione, suggerisco di aumentare immediatamente la soglia di potenza del segnale, ovvero RSSI “Received Signal Strength Indicator“, per evitare interferenze o segnali troppo deboli. Per farlo, premete il pulsante destro sul joypad (T+) e fate scorrere il segno verso destra di qualche pixel.
A questo punto, i primi segnali non tarderanno ad arrivare. Per avviare la lettura del segnale, però, è necessario spostarsi sulla funzione di “Read“. Per farlo, tenere premuto per qualche secondo il pulsante centrale nel joypad.
E’ possibile cambiare le impostazioni di ricezione, come la frequenza e modulazione, accedendo alla sezione “Config” attraverso il pulsante sinistro del joypad. Come indicato anche sul manuale, è possibile indicare 4 modalità di modulazione del segnale:
- AM270 — modulazione in ampiezza con banda 270 kHz
- AM650 — modulazione in ampiezza con banda 650 kHz ( default)
- FM238 — modulazione di frequenza con banda 270 kHz e deviazione di 2.380371 kHz
- FM476 — modulazione di frequenza con banda 270 kHz e deviazione di 47.60742 kHz
Il segnale ricevuto sarà decodificato basandosi su protocolli conosciuti. Nel caso non sia possibile la decodifica, il segnale non sarà salvato. In questo caso consiglio, per ricevere anche segnali non riconosciuti dai protocolli inclusi in FlipperZero, di attivare il “Detect Raw“:
A questo punto non resta che attendere un segnale 😉
Se andate di fretta o volete sperimentare un attacco a forza bruta, su GitHub sono già disponibili script per generare file .sub (da caricare con l’apposito software) sulla sdcard del FlipperZero.
Sul tema, uno degli attacchi più in voga al momento è quello ai “danni” delle auto Tesla, a causa di una “peculiarità” di queste automobili. Infatti, quando una Tesla si avvicina a una colonnina di ricarica, un segnale emesso da quest’ultima a 315Mhz fa aprire lo sportellino del connettore per la ricarica delle batterie: questo significa, in sostanza, che con un banale FlipperZero, “emulando” il segnale delle colonnine (il file .sub, che contiene le specifiche del segnale, è già disponibile su GitHub…) vicino a una Tesla ne farà aprire lo sportellino della ricarica.
Su Youtube sono presenti diversi video che mostrano questo attacco, che personalmente ritengo poco più che una stupidaggine.
[1] Esistono anche firmware alternativi che rimuovono questo “blocco”, disponibili liberamente su GitHub. Chiaramente, l’uso è a vostro rischio e pericolo.