Car hacking etico via interfaccia OBD-II

Car hacking etico via interfaccia OBD-II

La seconda versione dell’interfaccia OBD (OnBoard Diagnostic), nota anche come OBD-II, è uno strumento fondamentale per monitorare lo stato di funzionamento dei veicoli, supportando il riparatore nella diagnosi e individuazione di eventuali anomalie. La stessa interfaccia è potenzialmente utilizzabile, come dimostreremo nell’articolo, per eseguire il reverse engineering dei messaggi che viaggiano sul CAN bus, riuscendo in alcuni casi ad emulare via software il comportamento di un dispositivo fisico.

Introduzione

Come abbiamo visto in un precedente articolo, l’interfaccia di bordo diagnostica è diventata obbligatoria su tutti i veicoli prodotti negli Stati Uniti a partire dal primo gennaio 1996. La sua utilità, nonché la necessità di monitorare per legge le emissioni prodotte dai veicoli, ne ha decretato la rapida diffusione anche sui veicoli prodotti in Europa e negli altri paesi mondiali. Prima della sua introduzione, erano già apparse sul mercato delle interfacce proprietarie in grado di decodificare alcuni tipi di anomalie ma non esisteva uno standard univoco, complicando enormemente il compito di meccanici ed elettrauto. L’interfaccia OBD-II, le cui specifiche sono state redatte dalla massima autorità in campo automotive, ovvero la Society of Automotive Engineers (SAE), ha permesso di uniformare il tipo e il contenuto dei messaggi diagnostici, assegnando una codifica universalmente valida a ogni codice di errore.

Il can bus

L’ISO 15765 Controller Area Network, più comunemente noto come CAN bus, è attualmente lo standard maggiormente diffuso nel settore automotive. Introdotto inizialmente sui veicoli di fabbricazione europea, lo standard equipaggia tutti i veicoli prodotti negli USA a partire dal primo gennaio 2008. Anche se il CAN bus può funzionare fino a 1 Mbps, le velocità più comunemente utilizzate sono 125 e 250 kbps. Si noti come, al crescere della velocità, diminuisca la massima lunghezza percorribile dai cavi elettrici e pertanto occorre trovare il giusto compromesso tra velocità e copertura del veicolo. Per quanto riguarda il tipo di indirizzamento, il CAN supporta sia la modalità a 11 bit sia quella a 29 bit, detta anche modalità estesa (extended mode). Per gestire la sincronizzazione, lo standard CAN utilizza una particolare tecnica nota come “bit stuffing”. Questa procedura aggiunge, in trasmissione, un bit di valore opposto ogni volta che il bus assume lo stesso valore per cinque periodi di bit consecutivi. Lato ricezione, il bit stuff viene automaticamente rimosso ogni volta che si ricevono cinque bit identici. Il CAN bus utilizza per la trasmissione dati un segnale di tipo differenziale, sulla coppia di fili CANH (CAN High) e CANL (CAN Low). Come evidenziato nel precedente articolo sull’interfaccia OBD-II, i segnali CANH e CANL sono mappati, rispettivamente, sui pin 6 e 14 del connettore. La linea CANH ha, nello stato attivo, una tensione compresa tra 3,5V e 5V (tipicamente 3,75V), mentre per la linea CANL la tensione nello stato attivo è compresa tra 0V e 2V (tipicamente 1,25V, corrispondente a una tensione differenziale di 2,5V rispetto al segnale CANH). Per entrambi i segnali, la tensione nello stato passivo corrisponde invece al valore di 2,5V. In Figura 1 possiamo osservare i livelli di tensione assunti dai segnali CANH e CANL durante una sequenza di trasmissione di 0 e 1.

Figura 1. Rappresentazione dei livelli di tensione CANH e CANL

La comunicazione su CAN bus utilizza la tecnica NRZ (Non Return to Zero) sia per la codifica, sia per la decodifica dei bit. La condizione idle del bus corrisponde allo stato logico 1 e, conseguentemente, lo stato logico 0 identifica l’inizio della trasmissione di un messaggio, indicato con il termine SOF (Start Of Frame). In Figura 2 possiamo invece osservare la tipica struttura di un data frame su CAN bus. Il campo indirizzo (Identifier Field) può essere composto da 11 bit come nel caso mostrato in Figura 2, oppure 29 bit nel caso della modalità estesa. Il payload del messaggio (Data Field) può contenere fino a 64 bit.

Figura 2. Struttura di un tipico data frame per CAN bus

Scanner per interfaccia OBD-II

Per operare con l’interfaccia OBD-II è necessario disporre anzitutto di uno strumento che sia in grado di collegarsi fisicamente alla porta diagnostica presente sul veicolo, scambiando messaggi con il particolare protocollo scelto dal costruttore. ELM Electronics, ad esempio, offre diversi chip già programmati che consentono un interfacciamento agevole con il sistema OBD-II, diventando lo standard de facto nel settore degli scanner e degli strumenti diagnostici. Gli scanner con interfaccia Bluetooth hanno il vantaggio di essere molto economici e di non richiedere alcun collegamento elettrico: è infatti sufficiente inserire lo scanner nella porta diagnostica e fare il pairing con una delle numerose app disponibili per Android o iOS. Tuttavia, se si vuole fare car-hacking, è preferibile orientarsi verso uno scanner con interfaccia USB, gestita come una normale porta seriale dal programma applicativo in esecuzione su un PC portatile. Un esempio di scanner diagnostico con interfaccia USB è visibile in Figura 3.

Figura 3. Esempio comune di scanner OBD-II con interfaccia USB

Strumenti per il car-hacking etico

L’hacker etico, noto anche con il termine “white hat”, è uno specialista in informatica che ha il compito di testare e verificare un’applicazione software, non tanto dal punto di vista funzionale, quanto piuttosto dal punto di vista della sicurezza. L’hacker etico cerca quindi di trovare potenziali falle in un sistema informatico, falle che potrebbero provocare gravi conseguenze se sfruttate dai più temuti “black hat” hacker. Relativamente al contesto automotive, l’hacker etico si avvale di alcuni strumenti software (in massima parte derivati da progetti open source), come ad esempio la distribuzione Kali Linux e i pacchetti software can-utils, ICSim, ScanTool, Wireshark, e tcpdump. Utilizzando questi strumenti è possibile realizzare un simulatore di CAN bus con un cruscotto simile a quello di un veicolo reale. Una delle tecniche preferite dai car-hacker etici è sicuramente il “replay attack”: i pacchetti che transitano sul CAN bus vengono prima registrati, per poi essere nuovamente iniettati (o replicati, da cui il nome della tecnica) al fine di modificare in modo artificiale il funzionamento del veicolo agendo su sensori, attuatori e impostazioni dei parametri di configurazione. Il car-hacking etico è una disciplina relativamente recente, la sua nascita viene infatti fatta risalire al 2011, quando un gruppo di ricercatori dell’Università della California riuscì ad azionare remotamente i freni di un veicolo di produzione mentre stava viaggiando. Lo studio sfruttò debolezze presenti in alcune interfacce del veicolo, come quella verso il cellulare, le porte di rete utilizzate per la manutenzione e l’aggiornamento di alcuni dispositivi e persino il lettore CD. Il primo strumento che prenderemo in considerazione è sicuramente l’applicazione ICSim sviluppata da OpenGarages, un progetto open source liberamente scaricabile da GitHub [1]. ICSim, acronimo di Instrument Cluster Simulator, è un completo e versatile simulatore di cruscotto digitale in grado di offrire le medesime funzionalità di un cruscotto reale. L’applicazione ICSim è stata sviluppata da Craig Smith, autore del libro “The Car Hacker’s Handbook: A Guide for the Penetration Tester”, una pietra miliare del car-hacking etico. Nella sua opera, Craig Smith mette in luce le vulnerabilità dei moderni autoveicoli, dimostrando come sia possibile intercettare i dati che transitano sul bus, portando poi degli attacchi replay in grado, ad esempio, di comandare portiere, alzacristalli, o simulare un numero di giri anche a motore spento. ICSim include un simulatore di cruscotto con tachimetro, indicatori di portiere aperte e indicatori di direzione, oltre a un pannello di controllo che consente all’utente di interagire con la rete di dispositivi simulata, modulando l’acceleratore e azionando sia la chiusura delle porte che gli indicatori di direzione. Trattandosi di strumenti open source, l’ambiente di riferimento su cui eseguire l’installazione è ovviamente Linux, in particolare la distribuzione Kali Linux precedentemente menzionata. ICSim si appoggia inoltre ad altri strumenti Linux, inclusi i programmi di utilità per il CAN bus (o can-utils), disponibili nel gestore dei pacchetti di installazione della maggior parte delle distribuzioni Linux. In Figura 4 possiamo osservare una schermata tratta da ICSim con in evidenza, nella parte bassa, il cruscotto completo di tachimetro, indicatori di direzione e stato di chiusura delle portiere. Nella parte superiore è invece visibile una finestra terminale con il trace di messaggi acquisiti (e/o replicati) sul CAN bus.

Figura 4. Una schermata tratta dall’applicazione ICSim

In Figura 5 è invece mostrato il pannello di controllo di ICSim (assimilabile a un joypad virtuale) con i vari tasti e controlli per comandare acceleratore, indicatori di direzione e apertura/chiusura delle portiere. Tramite un’opportuna combinazione di tasti è inoltre possibile eseguire il blocco/sblocco simultaneo di tutte le portiere. Si può subito osservare come il pannello di controllo abbia una disposizione dei tasti analoga a quella del controller di una nota console per videogiochi: non è un caso, in quanto ICSim supporta, in alternativa a quello virtuale realizzato a livello software, il collegamento di un controller fisico reale.

Figura 5. Layout del pannello di controllo software di ICSim

In Tabella 1 sono riassunte [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2801 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

2 Commenti

  1. Avatar photo Alessandro 26 Febbraio 2020
  2. Avatar photo Michele Tiglio 28 Febbraio 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend