Come ingannare i sensori del traffico

È stato riferito in maniera dettagliata, riguardo a tale ricerca, nel corso della conferenza RSA US 2016; la presentazione può essere visualizzata qui.

I sensori del traffico hanno iniziato a comparire in modo massiccio, lungo le arterie delle città russe, proprio in questi ultimi due anni. Inizialmente, le “scatole bianche” presenti sui pali sono state notate, in particolar modo, dai conducenti che fanno uso di antiradar. Infatti, i loro dispositivi, in grado di segnalare il rilevamento della velocità, reagivano alle emissioni dei nuovi sensori così come fanno, abitualmente, nei confronti dei radar posizionati dalla polizia stradale. Le autorità cittadine, tuttavia, non hanno di certo provveduto ad installare i sensori per produrre questo singolare effetto collaterale, peraltro gradito agli autisti. Tali dispositivi, in sostanza, eseguono il conteggio del numero dei veicoli che transitano su ognuna delle corsie riservate al traffico stradale, riuscendo a determinare anche le specifiche dimensioni di questi ultimi; i sensori sono inoltre in grado di stabilire la velocità media di autovetture e mezzi pesanti, per poi trasmettere tutte le informazioni raccolte ad un unico centro operativo.

Come ingannare i sensori del traffico

Ecco l’aspetto dei sensori del traffico sulle strade di Mosca

Il risultato di tutto ciò è che, in pratica, la città riesce ad ottenere i dati riguardanti i carichi stradali che la interessano; sulla base dei dati raccolti risulta poi possibile, ad esempio, programmare le modalità di funzionamento dei semafori, oppure pianificare lo sviluppo delle infrastrutture stradali stesse. Di fatto, nel report stilato settimanalmente dalle autorità che si occupano della gestione dei flussi relativi alla circolazione stradale nella capitale russa, è possibile vedere quali siano le arterie moscovite più veloci o più lente, sia a livello di informazioni emanate dall’ente denominato TSODD (Centro adibito alla gestione del traffico stradale), sia attraverso i dati e le mappe elaborati da Yandex, il noto motore di ricerca russo. Mentre la seconda colonna (Yandex) presente nella grafica qui di seguito riportata viene creata in base al lavoro svolto dalle applicazioni installate negli smartphone, non sarebbe invece possibile ottenere la prima colonna (TSODD) senza ricorrere all’infrastruttura stradale della quale stiamo parlando.

Come ingannare i sensori del traffico

Ogni settimana, le autorità della capitale russa pubblicano i dati relativi alle strade cittadine che si rivelano più veloci o più lente

I sensori, di fatto, rappresentano il livello inferiore delle infrastrutture che caratterizzano le cosiddette “smart city”, o “città intelligenti”; essi forniscono dati “grezzi”, non ancora elaborati, relativi ai flussi di traffico, senza i quali non si rivela possibile alcuna analisi, così come una corretta configurazione e un’ideale messa a punto dei sistemi. Le informazioni provenienti dai sensori debbono pertanto essere esatte ed accurate. Ma è davvero così? Un estraneo potrebbe influire sul lavoro svolto da tali sensori e sulle informazioni da essi raccolte? Proveremo quindi a rispondere a queste domande e a comprendere cosa sia possibile migliorare nelle infrastrutture IT urbane.

Come ricercare i dispositivi e i dati ad essi relativi

Qualsiasi ricerca, incluso quelle inerenti ai sistemi incorporati (embedded), ai quali sono riconducibili i sensori del traffico, inizia dalla raccolta di tutti i dati disponibili. Non è sicuramente possibile conoscere “di persona” tutti i modelli di sensore, nemmeno a livello di mercato di nicchia, se non si ha a che fare con gli stessi quotidianamente, per ragioni professionali; questo significa che, molto probabilmente, non riusciremo ad individuare immediatamente il produttore in base all’aspetto esteriore del dispositivo. Nella circostanza, si rivelano particolarmente preziosi sia i loghi posizionati sugli apparecchi, sia le etichette aggiuntive apposte dagli installatori.

Se, infine, riusciamo a determinare, più o meno, il modello in base a come esso appare alla nostra vista, potremo in seguito trovare, sui siti web dei vendor, o delle società che collaborano con questi ultimi (ci riferiamo, in particolar modo, ai “system integrator”, ovvero le imprese che si occupano dell’integrazione dei sistemi), documentazione di vario genere e, se siamo fortunati, persino un software già pronto per poter operare con i dispositivi. Quasi certamente, poi, otterremo un depliant pubblicitario del prodotto e, molto probabilmente, entreremo in possesso di ulteriore documentazione, ancor più dettagliata, riguardo all’articolo venduto. La documentazione relativa alle procedure di installazione non è, anch’essa, merce rara; l’exploit più grande, e non comune, tuttavia, è quello di poter individuare una descrizione tecnica completa, comprendente il sistema di comando del dispositivo.

È inoltre particolarmente conveniente automatizzare il processo di lavoro con i sensori; in pratica, non occorre sedersi sotto ogni palo con un notebook in mano, né cercare di scovare l’effettiva presenza dei dispositivi installati, e nemmeno sostare nei loro pressi. Adesso, tutto questo è possibile: ormai, non è affatto raro, per gli elementi che compongono la “città intelligente”, disporre di connessioni operanti tramite protocollo wireless. Per quel che riguarda l’automatizzazione, ad ogni caso, occorre comprendere, in primo luogo, quale sia esattamente il protocollo in grado di comunicare con il sensore, per poter di fatto ottenere risposta da parte di quest’ultimo; in secondo luogo, bisogna capire come sia possibile distinguere i dispositivi a noi occorrenti da tutti gli altri.

Per far questo, può rivelarsi utile qualsiasi peculiarità a livello di risposta, qualsiasi identificatore. La stragrande maggioranza degli indirizzi MAC, ad esempio, risulta essere registrata in base agli specifici produttori (non tutti, ad ogni caso; ne esistono anche di anonimi). Oltre agli identificativi numerici, i dispositivi, in genere, sono provvisti di appositi nomi in lettere alfabetiche, i quali possono risultare, anch’essi, tipici; ci riferiamo, ad esempio, alla denominazione del modello associata all’indice incrementale.

Tutto questo offre l’opportunità di poter compilare lo scanner in grado di effettuare la ricerca dei dispositivi che sono di nostro interesse. Uno dei modelli installati lungo le strade di Mosca utilizza la connessione tramite Bluetooth. Nella fattispecie, sia gli indirizzi MAC, sia i nomi descrittivi che contraddistinguono tali dispositivi, risultano peculiari, e consentono quindi di poter aggiungere al database soltanto i sensori del traffico, escludendo, ad esempio, gli smartphone e i televisori che si trovano nei paraggi. L’effettivo livello di sicurezza del sistema Bluetooth esula dai contenuti di questo articolo; in questa occasione, quindi, non parleremo della possibile compromissione dei dispositivi BT. Il governo della città di Mosca è stato messo al corrente, nel mese di novembre 2015, riguardo alle carenze manifestatesi a livello di configurazione.

Come ingannare i sensori del traffico

Record relativi ai sensori del traffico, custoditi nell’apposito database

Ho utilizzato Python, PostgreSQL e un po’ di linguaggio C. In tempo reale, ovvero mentre si effettua il passaggio accanto al sensore, lo scanner determina l’indirizzo MAC, il “friendly name” e le coordinate. Il campo “produttore” e l’indirizzo rappresentano un passaggio ben distinto a livello di record del database, poiché tutti i dati necessari risultano già salvati. Ottenere l’indirizzo in base alle coordinate è una procedura relativamente dispendiosa in termini di tempo; non occorre, quindi, eseguire la stessa contemporaneamente alla ricerca dei dispositivi. Allo stesso modo, non è un processo rapido stabilire la connessione Bluetooth; pertanto, se desideriamo individuare i sensori, è meglio non spingere troppo sull’acceleratore: bisogna, piuttosto, procedere senza fretta.

Cosa è possibile fare con il firmware

L’apertura e la “trasparenza” dimostrate dal produttore nei confronti dei tecnici installatori, ai quali si intende fornire un facile accesso sia agli strumenti che alla documentazione, significano, allo stesso tempo, apertura e disponibilità, da parte del vendor, nei confronti dei ricercatori. (Per quel che mi riguarda, rispetto molto un simile approccio: a mio parere, un’apertura del genere, abbinata ad un programma bug bounty, può indubbiamente fornire migliori risultati rispetto ad un atteggiamento di “segretezza”). Dopo aver scelto uno qualsiasi dei sensori individuati, possiamo installare sul notebook il software del produttore, già pronto all’uso, adibito alla configurazione di questi ultimi; possiamo poi recarci all’indirizzo memorizzato in precedenza, e connetterci, infine, con il dispositivo.

Così come nell’ambito di qualsiasi ricerca relativa alla sicurezza dei sistemi embedded, verifichiamo, innanzitutto, se risulta possibile effettuare il reflash del firmware di cui è provvisto il dispositivo.

Come ingannare i sensori del traffico

Il software di configurazione permette di cambiare il firmware del sensore

Sì, tramite la tecnologia wireless è possibile eseguire il reflash del dispositivo. Ottenere il firmware del produttore non è quindi più difficile di quanto lo sia entrare in possesso del software sviluppato dallo stesso vendor. A livello di formato, esso ricorda Intel iHex o Motorola SREC; in realtà, non si tratta di tali formati, bensì di uno sviluppo proprietario del vendor. Dopo aver messo da parte le informazioni di servizio (“:” – comando relativo ai record, numeri di serie, indirizzi di memoria e checksum), ricavate dai blocchi per il DSP (Digital Signal Processor, processore di segnali digitali) e la MPU (Main Processing Unit, unità di processo centrale), otterremo direttamente il codice. Non conosciamo, però, l’architettura dei controller a bordo del dispositivo; non sarà quindi possibile aprire semplicemente il file tramite un disassembler.

Come ingannare i sensori del traffico

Come ingannare i sensori del traffico

Firmware relativo al sensore del traffico

Qui, per quanto possa sembrare strano, viene in aiuto LinkedIn, utile non soltanto per coloro che intendono fare carriera o per gli uffici del personale. Talvolta, l’architettura dei dispositivi non è un segreto, e gli ingegneri che hanno in precedenza lavorato presso la società produttrice sono disposti a parlarne. Adesso abbiamo a disposizione, oltre al file, anche la cognizione di quale sia l’architettura per la quale è stato compilato il firmware. Questo, tuttavia, non ci farà gioire per molto; soltanto fino all’avvio dell’IDA.

Come ingannare i sensori del traffico

Anche se nella documentazione tecnica non vengono specificati i tipi di controller, è comunque possibile arrivare a conoscere gli stessi

Ad ogni caso, anche conoscendo l’architettura, il firmware continua a rimanere un insieme di byte privo di apparente significato. Tuttavia, sempre dallo stesso ingegnere si può venire a sapere il modo esatto con cui è stato codificato il firmware, e ricevere informazioni precise su tabella delle chiavi e algoritmi utilizzati. Non avendo a disposizione l’apparecchio, a questo punto ho accantonato l’idea relativa alla modifica del firmware in modalità black box, ritenendola poco promettente. Dobbiamo riconoscere che, nel caso specifico, gli ingegneri esperti di microelettronica sanno bene come proteggere il firmware. Questo significa, in pratica, la conclusione dell’indagine sui sensori? Niente affatto.

Soltanto i camion viaggiano di notte…

La modifica del firmware si rivela valida per il fatto che, attraverso di essa, risulta possibile aggiungere nuove funzioni. Le funzionalità, tuttavia, non mancano di certo nel software standard sviluppato dal vendor. Ad esempio, a bordo del dispositivo troviamo circa 8 MB di memoria, all’interno della quale, finché la stessa non si riempie, viene custodita una copia dei dati relativi al traffico stradale. E tale memoria è accessibile. Il firmware consente di cambiare la classificazione dei veicoli in transito in base alla lunghezza degli stessi, così come il numero delle corsie previste per la circolazione degli automezzi. Desiderate avere una copia delle informazioni raccolte sul traffico? Bene. È necessario, per qualche motivo, “trasformare” tutte le autovetture in camion e TIR che procedono sulla corsia di destra della carreggiata? Anche questo è possibile. Il risultato finale è che verrà penalizzata l’accuratezza delle statistiche relative al traffico cittadino, con tutte le conseguenze che possono derivare da tali alterazioni.

Come ingannare i sensori del traffico

Ecco cosa raccolgono, e poi trasmettono, i sensori del traffico.
Questi stessi dati vengono custoditi anche a bordo del dispositivo.

Chi intende ottenere una copia delle statistiche riguardanti il traffico della capitale, oppure vuole, in qualche modo, influenzare le stesse, dovrà ovviamente recarsi in prossimità di tutti i sensori; non si rivela comunque necessario, nella circostanza, eseguire il programma su ciascuno delle migliaia di sensori installati, né procedere alla configurazione dei dispositivi manualmente. Nel caso specifico, viene descritto il sistema proprietario dei comandi previsti per tali apparecchi. Non possiamo certo dire che questo si incontri di frequente, nel momento in cui vengono condotte ricerche riguardo ai sistemi embedded; ad ogni caso, una volta stabilita la connessione con il sensore attraverso il software del vendor, i comandi non sono più un segreto; essi risultano in effetti visibili ad uno sniffer. Oltretutto, la descrizione in inglese permette di non dover effettuare l’analisi del protocollo di comunicazione con il dispositivo, in linguaggio macchina.

Come ingannare i sensori del traffico

I comandi del dispositivo, documentati, consentono di evitare l’analisi del traffico

Sul sensore, in realtà, i servizi Bluetooth non risultano implementati; il protocollo wireless, in tal caso, è solo un mezzo per la trasmissione dei dati, realizzata attraverso una comune porta seriale. Le operazioni condotte tramite tali porte non si differenziano in alcun modo dalla normale lettura e scrittura dei file; il codice utilizzato per l’invio dei comandi, inoltre, è piuttosto banale. Per simili scopi, non occorre nemmeno implementare un’ordinaria attività multi-flusso con la porta seriale; risulta infatti sufficiente inviare i byte e ricevere la relativa risposta mediante un unico flusso.

Riassumendo: un’auto che si sposta lentamente attraverso la città; un notebook provvisto di trasmettitore bluetooth sufficientemente potente, con un programma scanner in esecuzione, che rileva l’ubicazione dei sensori e provvede a raccogliere, da questi ultimi, i dati relativi al traffico, modificando, qualora lo si desideri, le impostazioni del dispositivi. Non definirei di certo “altamente segrete” le informazioni riguardanti il traffico stradale; tuttavia, cambiando tali impostazioni, può essere seriamente compromessa l’attendibilità dei dati forniti. E proprio su questi dati, di fatto, si possono basare i semafori “intelligenti”, così come altre apparecchiature installate lungo le strade urbane.

Come ingannare i sensori del traffico

Il sensore ci ha risposto, il comando è stato ricevuto. Conoscendo il set dei comandi, non è difficile “tradurre” la risposta

Cosa fare, quindi?

Traspare in tutta evidenza come le risposte alle domande che ci siamo posti all’inizio, riguardo all’attendibilità dei dati relativi al traffico stradale, e al livello di protezione adottato nei confronti degli stessi – siano, in pratica, negative. Quali sono, effettivamente, le ragioni di tutto ciò? In primo luogo, non abbiamo rilevato alcuna autorizzazione, oltre a quella prevista a livello di Bluetooth; anche quest’ultima, a dire il vero, non è apparsa configurata nella maniera migliore. Il vendor si dimostra particolarmente generoso nei confronti dei tecnici; tra l’altro, una considerevole quantità di dati inerenti ai dispositivi da esso prodotti risulta pubblicamente accessibile, anche attraverso il sito web ufficiale. Personalmente, simpatizzo con il produttore, e lo rispetto molto per tutto questo, in quanto ritengo che, attualmente, il concetto “security through obscurity” non abbia poi molto senso: in effetti, il sistema utilizzato per i comandi da impartire può essere comunque individuato; da parte sua, anche il software appositamente elaborato dagli ingegneri può essere reperito. A mio parere, se possibile, è molto meglio combinare apertura e trasparenza con programmi di tipo “bug bounty” ed una rapida reazione nei confronti delle vulnerabilità individuate. Anche per il solo motivo che il numero dei ricercatori di terze parti che si occupano di hardware e software particolarmente diffusi sul mercato tecnologico sarà in ogni caso sempre superiore al numero degli esperti che operano in qualsiasi divisione aziendale specializzata in sicurezza IT.

Al momento dell’installazione, è consigliabile evitare l’utilizzo di qualsiasi genere di identificatore standard. Per i vendor, ovviamente, si rivela necessario reclamizzare i propri prodotti, mentre per le squadre dei tecnici addetti al servizio e alla manutenzione è indispensabile ottenere, tramite le apposite etichette, informazioni aggiuntive riguardo ai dispositivi; al di là della convenienza e della comodità esistono, però, importanti questioni e problematiche legate al tema della sicurezza informatica. Non bisogna, inoltre, basarsi esclusivamente su sistemi di identificazione standard, implementati attraverso protocolli ormai ben noti ed accuratamente analizzati. È quanto mai opportuno, infine, adottare qualsiasi protezione proprietaria supplementare, purché sapientemente realizzata; essa permetterà di innalzare in maniera significativa il livello di complessità, aumentando di molto le difficoltà che si debbono necessariamente presentare nel momento in cui un eventuale malintenzionato volesse tentare di penetrare all’interno del sistema.

È stato riferito in maniera dettagliata, riguardo alla specifica ricerca condotta, nel corso della RSA US 2016; la relativa presentazione può essere visualizzata sul sito web della conferenza.

Post correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *