Jak przechytrzy膰 czujniki ruchu drogowego

W ci膮gu ostatnich dw贸ch lat czujniki ruchu drogowego wyros艂y w rosyjskich miastach jak grzyby po deszczu. Pierwszymi, kt贸rzy zauwa偶yli bia艂e skrzynki zamontowane na s艂upach przy drodze, byli kierowcy wyposa偶eni w wykrywacze fotoradar贸w. Urz膮dzenia te, s艂u偶膮ce do ostrzegania kierowc贸w przed fotoradarami, reaguj膮 na sygna艂y emitowane przez czujniki tak samo jak na wykorzystywane przez drog贸wk臋 radary. Jednak to, 偶e pomagaj膮 w wyegzekwowaniu ograniczenia pr臋dko艣ci, stanowi jedynie pozytywny skutek uboczny ich dzia艂ania; w艂adze miasta zainstalowa艂y te czujniki z zupe艂nie innego powodu. Urz膮dzenia te rejestruj膮 liczb臋 samochod贸w r贸偶nego rozmiaru na ka偶dym pasie, okre艣laj膮 ich 艣redni膮 pr臋dko艣膰 i wysy艂aj膮 te dane do ujednoliconego centrum kontroli ruchu drogowego.

road_sensors_en_1_auto.jpg

Czujnik ruchu drogowego w Moskwie

Dzi臋ki czujnikom w艂adze miasta otrzymuj膮 informacje dotycz膮ce intensywno艣ci ruchu drogowego, co pozwala im dostosowa膰 organizacj臋 sygnalizacji 艣wietlnej lub planowa膰 dalsz膮 infrastruktur臋 drogow膮. Tygodniowe raporty publikowane przez moskiewskie w艂adze odpowiedzialne za ruch drogowy zawieraj膮 informacje dotycz膮ce najwolniejszych i najszybszych autostrad oparte o dane pochodz膮ce zar贸wno z Centrum zarz膮dzania ruchem drogowym jak i wyszukiwarki Yandex. O ile informacje z drugiego 藕r贸d艂a pochodz膮 z aplikacji dzia艂aj膮cych na smartfonach u偶ytkownik贸w, Centrum zarz膮dzania ruchem drogowym nie mog艂aby gromadzi膰 swoich danych bez infrastruktury drogowej, kt贸ra zostanie om贸wiona w tym tek艣cie.      

road_sensors_en_2_auto.png

Co tydzie艅 moskiewskie w艂adze miasta publikuj膮 dane dotycz膮ce najszybszych i najwolniejszych autostrad

Czujniki te stanowi膮 najni偶sz膮 warstw臋 infrastruktury "inteligentnego miasta" - gromadz膮 surowe dane dotycz膮ce ruchu drogowego i przesy艂aj膮 je dalej; bez tych danych nie mo偶na przeprowadzi膰 偶adnej analizy ani poprawnie skonfigurowa膰 systemu. Dlatego informacje pochodz膮ce z takich czujnik贸w musz膮 by膰 dok艂adne. Czy tak jest w rzeczywisto艣ci? Czy osoba z zewn膮trz mo偶e manipulowa膰 dzia艂aniem czujnik贸w i gromadzonymi przez nie informacjami? Postaramy si臋 odpowiedzie膰 na te pytania i wskaza膰 wszelkie usprawnienia, jakie mo偶na wprowadzi膰 do miejskiej infrastruktury IT.

Jak wyszukiwa膰 urz膮dzenia i informacje na ich temat

Ka偶de badanie rozpoczyna si臋 od zbierania wszelkich dost臋pnych danych, a badanie system贸w osadzonych, do kt贸rych nale偶膮 czujniki ruchu drogowego, nie jest tutaj wyj膮tkiem. Nawet w w膮skim segmencie rynkowym nie spos贸b zna膰 wszystkich rodzaj贸w i modeli czujnik贸w z wygl膮du, je艣li na co dzie艅 nie ma si臋 z nimi do czynienia zawodowo. Istnieje du偶e prawdopodobie艅stwo, 偶e nie b臋dziesz w stanie od razu zidentyfikowa膰 producenta urz膮dzenia jedynie na podstawie ogl臋dzin. Tym bardziej nieocenione okazuj膮 si臋 wszelkie logotypy i etykietki producent贸w, jakie mo偶na znale藕膰 na urz膮dzeniach.  

Je艣li uda ci si臋 rozpozna膰 model czujnika ruchu drogowego ogl膮daj膮c go jedynie, dotrzesz do niezb臋dnej dokumentacji na stronie producenta (lub integratora), a przy odrobinie szcz臋艣cia - tak偶e oprogramowanie wykorzystywane w pracy z takimi urz膮dzeniami. Bez trudu znajdziesz ulotk臋 marketingow膮 na temat tego urz膮dzenia, a mo偶e nawet trafisz na obszerniejszy dokument sprzeda偶owy. Natkni臋cie si臋 na dokumentacj臋 to nie 偶aden fart, ale potrzeba ju偶 du偶ego szcz臋艣cia, 偶eby znale藕膰 pe艂ny opis technologiczny wraz z systemem kontroli urz膮dzenia.   

Praktycznym podej艣ciem jest zautomatyzowanie procesu pracy z czujnikami, tak aby nie trzeba by艂o siedzie膰 pod ka偶dym takim urz膮dzeniem z laptopem. Dzisiaj taka automatyzacja jest zupe艂nie normalna - po艂膮czenia bezprzewodowe nie stanowi膮 ju偶 rzadko艣ci w przypadku komponent贸w "inteligentnego miasta". Jednak aby automatyzacja by艂a mo偶liwa, nale偶y najpierw dowiedzie膰 si臋, jaki protok贸艂 komunikacyjny jest wykorzystywany przez ka偶dy czujnik i jak oddzieli膰 urz膮dzenia, kt贸re nas interesuj膮, od wszystkich innych.   

W tym celu mo偶na wykorzysta膰 wszelkie identyfikatory, 艂膮cznie z niuansami dotycz膮cymi sposobu przekazywania danych przez urz膮dzenia. Na przyk艂ad, wi臋kszo艣膰 adres贸w MAC jest zarezerwowanych dla okre艣lonych producent贸w (istniej膮 jednak r贸wnie偶 anonimowe adresy MAC). Opr贸cz identyfikator贸w numerycznych urz膮dzenia zwykle posiadaj膮 r贸wnie偶 nazwy alfabetyczne, kt贸re r贸wnie偶 mog膮 by艣 zgodne ze standardem okre艣lonego typu, tj. model urz膮dzenia plus indeks przyrostowy. 

Wszystko to pozwala napisa膰 skaner umo偶liwiaj膮cy wyszukiwanie interesuj膮cych nas urz膮dze艅. Jeden z modeli czujnik贸w zainstalowanych w Moskwie wykorzystuje technologi臋 Bluetooth w celu przesy艂ania danych. Urz膮dzenia te posiadaj膮 zar贸wno adresy MAC jak i "przyjazne nazwy", kt贸re s膮 do艣膰 charakterystyczne, przez co wystarczy jedynie doda膰 te czujniki ruchu drogowego do listy i odfiltrowa膰 wszystkie pobliskie smartfony i odbiorniki telewizyjne. Dyskusja na temat bezpiecze艅stwa technologii Bluetooth wykracza poza zakres tego tematu, dlatego nie b臋dziemy tutaj rozwodzili si臋 na temat w艂amywania si臋 do urz膮dze艅 z technologi膮 Bluetooth. W listopadzie 2015 r. poinformowali艣my w艂adze miasta Moskwy o b艂臋dach w konfiguracji.      

road_sensors_en_3_auto.png

Zapisane w bazie danych informacje z czujnika ruchu drogowego

Korzysta艂em z systemu Python, PostgreSQL i troch臋 C. W czasie rzeczywistym, gdy przeje偶d偶am obok ka偶dego czujnika ruchu drogowego, skaner identyfikuje adres MAC ka偶dego urz膮dzenia, jego przyjazn膮 nazw臋 oraz wsp贸艂rz臋dne. Pola dotycz膮ce nazwy producenta i adresu fizycznego zostaj膮 wype艂nione p贸藕niej w oparciu o zebrane ju偶 dane. Okre艣lenie fizycznego adresu urz膮dzenia na podstawie wsp贸艂rz臋dnych jest czasoch艂onnym procesem, dlatego nie nale偶y go wykonywa膰 r贸wnocze艣nie z wyszukiwaniem urz膮dze艅. Nawi膮zanie po艂膮czenia za po艣rednictwem technologii Bluetooth r贸wnie偶 nie przebiega szybko, dlatego je艣li chce si臋 znale藕膰 czujniki ruchu drogowego, trzeba jecha膰 powoli. 

Co mo偶na zrobi膰 z firmware'm

Otwarto艣膰, jak膮 producenci okazuj膮 in偶ynierom zajmuj膮cym si臋 instalacj膮, oraz ich gotowo艣膰 zapewnienia dost臋pu do narz臋dzi i dokumentacji, automatycznie poci膮ga za sob膮 otwarto艣膰 wobec badaczy (Szanuj臋 tego rodzaju podej艣cie; w mojej opinii taka otwarto艣膰 w po艂膮czeniu z podej艣ciem "bug bounty" daje lepsze rezultaty ni偶 tajno艣膰 informacji). Wybrawszy dowolny spo艣r贸d zidentyfikowanych czujnik贸w, mo偶na zainstalowa膰 na laptopie oprogramowanie konfiguracji urz膮dzenia dostarczone przez producenta, pojecha膰 na miejsce (adres fizyczny zapisany w bazie danych) i po艂膮czy膰 si臋 z urz膮dzeniem.

Jak w przypadku ka偶dego badania dotycz膮cego bezpiecze艅stwa systemu osadzonego, przede wszystkim sprawdzamy, czy jest mo偶liwe przeinstalowanie firmware'u na urz膮dzeniu.

road_sensors_en_4.png

Oprogramowanie konfiguracyjne pozwala zmieni膰 firmware na czujniku ruchu drogowego

Tak, mo偶emy zainstalowa膰 nowy firmware na urz膮dzeniu za po艣rednictwem tego bezprzewodowego po艂膮czenia przeznaczonego do cel贸w konserwacji. Znalezienie firmware'u producenta jest r贸wnie 艂atwe jak znalezienie jego oprogramowania. Firmware przypomina Intel iHex lub Motorola SREC, jednak jest to produkt w艂asny producenta. Je艣li usuniemy informacje umieszczone na g贸rze (?:? ? instrukcje zapisu, numery seryjne, adresy pami臋ci i sumy kontrolne) z blok贸w danych dla procesora DSP oraz mikroprocesora, uzyskamy czysty kod. Jednak nie znamy architektury kontroler贸w w urz膮dzeniu, dlatego nie mo偶emy po prostu otworzy膰 pliku przy u偶yciu deasemblera.  

road_sensors_en_5_auto.png

road_sensors_en_5a_auto.png
Firmware czujnika ruchu drogowego

Co ciekawe, z pomoc膮 przyszed艂 nam portal LinkedIn - okazuje si臋, 偶e nie jest to zas贸b przydany jedynie dla os贸b nastawionych na karier臋 i dzia艂贸w HR. Czasami architektura urz膮dzenia nie stanowi tajemnicy, a in偶ynierowie, kt贸rzy kiedy艣 pracowali dla producenta, mog膮 chcie膰 podzieli膰 si臋 swoj膮 wiedz膮. Teraz rozumiemy nie tylko plik, ale r贸wnie偶 architektur臋, dla kt贸rej zosta艂 skompilowany firmware. Jednak szcz臋艣cie nam sprzyja tylko do momentu uruchomienia IDA. 

road_sensors_en_6.png

Mo偶na znale藕膰 typy kontrolera, nawet je艣li nie zosta艂y okre艣lone w dokumentacji

Chocia偶 znamy architektur臋, firmware pozostaje nic nieznacz膮cym zestawem bajt贸w. Jednak od tego samego in偶yniera mogliby艣my dowiedzie膰 si臋, jak firmware zosta艂 zaszyfrowany, oraz jakie s膮 algorytmy szyfrowania i tabele kluczy. Nie mia艂em pod r臋k膮 urz膮dzenia, dlatego na tym etapie stwierdzi艂em, 偶e ten tryb czarnej skrzynki modyfikacji firmware'u nie jest zbyt obiecuj膮cy i zrezygnowa艂em. Nale偶y przyzna膰, 偶e w tym konkretnym przypadku in偶ynierowie mikroelektroniki wiedz膮, jak zabezpieczy膰 firmware. Nie oznacza艂o to jednak ko艅ca naszego badania czujnik贸w.    

Tylko ci臋偶ar贸wki podr贸偶uj膮 noc膮

Modyfikacja firmware'u jest "w porz膮dku" pod tym wzgl臋dem, 偶e umo偶liwia dodanie nowych mo偶liwo艣ci funkcjonalnych. Jednak standardowe oprogramowanie producenta zawiera wystarczaj膮c膮 funkcjonalno艣膰. Na przyk艂ad, urz膮dzenie posiada oko艂o 8 MB pami臋ci, kt贸ra jest wykorzystywana do utrzymywania kopii danych dotycz膮cych ruchu drogowego do czasu zape艂nienia pami臋ci. Do tej pami臋ci mo偶na uzyska膰 dost臋p. Firmware pozwala zmieni膰 spos贸b klasyfikacji przeje偶d偶aj膮cych pojazd贸w wed艂ug ich d艂ugo艣ci lub zmieni膰 liczb臋 pas贸w. Chcesz mie膰 kopi臋 zgromadzonych informacji na temat ruchu drogowego? Nie ma problemu. Chcesz sklasyfikowa膰 wszystkie pojazdy jako ci臋偶ar贸wki poruszaj膮ce si臋 na prawym pasie? To r贸wnie偶 jest do zrobienia. Naturalnie wp艂ynie to na dok艂adno艣膰 gromadzonych statystyk ze wszystkimi konsekwencjami, jakie poci膮ga to za sob膮.          

road_sensors_en_7.png

Pr贸bka danych gromadzonych i przekazywanych przez czujniki. Te same dane s膮 przechowywane na urz膮dzeniu

Je艣li kto艣 chce zdoby膰 kopi臋 statystyk dotycz膮cych moskiewskiego ruchu ulicznego lub manipulowa膰 tymi danymi, b臋dzie musia艂 przespacerowa膰 si臋 lub przejecha膰 obok wszystkich czujnik贸w ruchu drogowego; jednak nie ma potrzeby uruchamiania oprogramowania dla ka偶dego z tysi臋cy czujnik贸w ani r臋cznego modyfikowania ustawie艅. W tym konkretnym przypadku, istnieje opis systemu polece艅 dla urz膮dze艅. Co艣 takiego nie zdarza si臋 cz臋sto podczas badania system贸w osadzonych. W ka偶dym razie po ustanowieniu po艂膮czenia z czujnikiem ruchu drogowego przy u偶yciu oprogramowania producenta polecenia nie stanowi膮 ju偶 tajemnicy - wystarczy u偶y膰 narz臋dzia do nas艂uchiwania (sniffer), aby by艂y widoczne. Istnieje ponadto opis w j臋zyku angielskim, kt贸ry oszcz臋dza nam wysi艂ku zwi膮zanego z analiz膮 protoko艂u komunikacji j臋zyka maszynowego. 

road_sensors_en_8_auto.png

Uj臋te w dokumencie polecenia urz膮dzenia sprawiaj膮, 偶e analiza ruchu drogowego jest niepotrzebna 

Us艂ugi Bluetooth w rzeczywisto艣ci nie s膮 implementowane w czujniku ruchu drogowego; w tym przypadku protok贸艂 bezprzewodowy stanowi jedynie 艣rodowisko komunikacji danych. Dane s膮 przesy艂ane za po艣rednictwem zwyk艂ego portu szeregowego. Obs艂uga takich port贸w przez oprogramowanie nie r贸偶ni si臋 od odczytu czy zapisu do plik贸w, a kod wysy艂ania polece艅 jest banalny. W tym celu nie jest nawet konieczne implementowanie zwyk艂ej obs艂ugi portu wielow膮tkowego - wystarczy wys艂a膰 bajty i dosta膰 odpowied藕 w jednym w膮tku.  

Podsumowuj膮c, wystarczy pojazd jad膮cy wolno przez miasto, laptop z silnym nadajnikiem Bluetooth oraz oprogramowanie skanera, aby zarejestrowa膰 lokalizacje czujnik贸w ruchu drogowego, pobieraj膮c z nich informacje dotycz膮ce ruchu drogowego i, je艣li taki jest nasz cel, zmieniaj膮c ich konfiguracj臋. Nie twierdz臋, 偶e statystyki dotycz膮ce ruchu drogowego stanowi膮 wielk膮 tajemnic臋, ale majstrowanie przy konfiguracji takich czujnik贸w mog艂oby wp艂yn膮膰 na ich wiarygodno艣膰. Ponadto, dane te mog艂yby stanowi膰 podstaw臋 kontrolowania "inteligentnej" sygnalizacji 艣wietlnej i innego sprz臋tu wykorzystywanego w ruchu drogowym.   

road_sensors_en_9_auto.png

Czujnik wys艂a艂 odpowied藕, polecenie zosta艂o przyj臋te. Poniewa偶 znamy system polece艅, 艂atwo jest "przet艂umaczy膰" odpowied藕  

Co mo偶na zrobi膰?

 

Okazuje si臋, 偶e odpowiedzi na obydwa pytania postawione na pocz膮tku s膮 negatywne: dane dotycz膮ce ruchu drogowego nie s膮 zabezpieczone i mo偶na nimi manipulowa膰. Dlaczego tak jest? Ot贸偶, nie istnia艂o 偶adne uwierzytelnienie z wyj膮tkiem tego wymaganego dla technologii Bluetooth, jednak ono r贸wnie偶 nie zosta艂o odpowiednio skonfigurowane. Producent zbadanych przez nas czujnik贸w ruchu drogowego jest bardzo szczodry je艣li chodzi o technik贸w serwisowych, udost臋pniaj膮c publicznie wiele informacji dotycz膮cych tych urz膮dze艅 na swojej oficjalnej stronie i w innych miejscach. Osobi艣cie, zgadzam si臋 z producentem i szanuj臋 go za to, uwa偶aj膮c, 偶e podej艣cie "bezpiecze艅stwo poprzez ukrywanie" nie sprawdza si臋 dzisiaj; ka偶dy, kto jest wystarczaj膮co zdeterminowany, odkryje system polece艅 i uzyska dost臋p do oprogramowania in偶ynieryjnego. Wed艂ug mnie, bardziej sensowne jest po艂膮czenie otwarto艣ci, szerokich program贸w premiowania oraz szybkiej reakcji na wszelkie zidentyfikowane luki w zabezpieczeniach, chocia偶by z takiego powodu, 偶e liczba badaczy zawsze b臋dzie wi臋ksza ni偶 liczba pracownik贸w w dowolnym dziale bezpiecze艅stwa informacji.       

Na etapie instalacji uzasadnione jest unikanie wykorzystywania wszelkich standardowych identyfikator贸w. Naturalnie, producenci musz膮 reklamowa膰 swoje produkty, a zespo艂y serwisowe czasem musz膮 zebra膰 dodatkowe informacje z nalepek na urz膮dzeniu, jednak opr贸cz wygody nale偶y uwzgl臋dni膰 kwestie bezpiecze艅stwa informacji. Na koniec nie mniej istotna sprawa: nie warto polega膰 wy艂膮cznie na standardowej identyfikacji zaimplementowanej w znanych protoko艂ach. Ka偶de dodatkowe zabezpieczenie w艂asne, kt贸re zosta艂o odpowiednio zaimplementowane, b臋dzie mia艂o znaczenie i utrudni penetracj臋.   

殴ród艂o: Kaspersky Lab