Na kraju videa čuo se škljocaj - radi se o otključavanju mehaničke brave upravljača koju ne možemo zaobići elektronikom. Morate upotrijebiti nešto mehanički, rukom razbiti cilindar brave ili učiniti nešto slično, što nisam namjeravao učiniti njezinom autu. Sav firmware prikazan u ovim videozapisima bit će dostupan na GitHubu nakon mog govora, stoga samo idite na URL na slajdu i preuzmite datoteku OpenRemoteStart.
Razgovarajmo o tome što se točno događa kada ovom sustavu dodamo Internet, jer on mora biti dobar za nas, zar ne? Kao što sam rekao, kupio sam modul daljinske kontrole alarma koji se zove MyCar. Dolazi u raznim modifikacijama, ja sam imao model Linkr LT-1.

MyCar je samo brend i takvi se moduli prodaju pod imenima Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6) itd. Kako se ispostavilo, već neko vrijeme KIA zastupstva u Kanadi instaliraju ovaj sustav, ili barem aplikaciju pod nazivom MyCar KIA, na svoje automobile. Zanimljivo, ova aplikacija više nije dostupna za preuzimanje na AppStoreu. Također želim napomenuti da sam odabrao proizvode Fortin i MyCar, ali prema recenzijama korisnika na tematskim forumima slobodnih auto alarma, drugi sustavi se ne ponašaju bolje i imaju slične probleme.
Imam važno pitanje: Zašto tržište naknadnih auto alarma prodaje proizvod sa sigurnosnim problemima, a nikoga nije briga? Stoga, ako nekoga od vas zanimaju sustavi daljinskog pokretanja, obratite pozornost na nekoliko važnih okolnosti. Prvo, kao što sam ranije spomenuo, ako DS sustav nije ispravno instaliran na automobilu s ručnim mjenjačem, vrlo je moguće da će nakon daljinskog pokretanja motora automobil jednostavno voziti bez vozača ako je u mjenjaču uključen neki stupanj prijenosa. . Stvarno je opasno. Druga opasnost je da ako netko parkira automobil u pripadajućoj garaži i slučajno daljinski upali motor, može se ugušiti od nakupljenog ugljičnog monoksida. Dakle, ako imate CO sustav i pripadajuću garažu, svakako biste trebali imati detektore ugljičnog monoksida.
Ako koristite DS sustave, nikada ne pokušavajte upaliti motor svog automobila, a da ne znate gdje se točno nalazi, jer posljedice mogu biti katastrofalne.
Uređaj MyCar, mala crna kutija iz koje izlaze dvije žice, ima osam priključaka, od kojih su dva namijenjena sučelju za ispravljanje pogrešaka. Spajanje na ovo sučelje pokazalo je da uređaj radi pod Linux, o čemu proizvođač šuti. Pristup ljusci firmwarea jednostavan je lozinkom "oelinux 123", ali možete koristiti i AE Engine bez prijave, što vam omogućuje unos AT naredbi iz naredbenog retka, uključujući naredbu za promjenu IP adrese uređaja s kojim ovaj modul komunicira.

Ako pogledamo donje retke, možemo vidjeti IP adresu poslužitelja s kojeg MyCar modul prima ažuriranja firmvera. Uređaj je opremljen L-priključkom koji vam omogućuje "slušanje" naredbi koje prima modul. Koristeći AE Engine i mijenjajući IP uparenog uređaja, uspio sam utvrditi da ovaj uređaj komunicira s DS-om pomoću nekriptiranog UDP protokola.
Nisam se previše bavio time, ali mislim da je to prilično značajna i zanimljiva činjenica. Ako vas zanima više informacija o ovom uređaju, pogledajte ovaj slajd - prikazuje napon napajanja od 3,3V, brzinu prijenosa podataka od 115200 bauda, adresu poslužitelja za ažuriranje firmware-a, root lozinku i poveznicu korisničkom priručniku.

Uređaj može "tolerirati" više napone napajanja.
Kao što rekoh, ovdje je prilično hladno. Otprilike mjesec dana nakon što sam poklonio ovaj sustav svojoj djevojci, odlučio sam izvaditi jedinicu iz auta i dobro je isprobati. Činjenica je da sam cijeli ovaj mjesec tjerao misli o ranjivosti ovog uređaja. Predviđali su temperature do -30F° za sljedeći tjedan, pa sam morao požuriti. Spojio sam se na školjku i natjerao je da radi, ali budući da mobilni prijem u mom kućnom laboratoriju nije baš dobar, odlučio sam raditi s kutijom na drugom računalu. FTDI jedinica koju koristim ima kratak kabel, pa sam našao duži, utaknuo ga u DS jedinicu, uključio u računalo i čim sam uključio struju, jedinica mi se počela dimiti!
Lekcija koju treba naučiti iz ovoga je: ako hakirate hardver, pripremite rezervnu jedinicu! Moja je djevojka moral priče ovako formulirala: Ako je vaša draga osoba haker, ne dopustite mu da se igra s vašim božićnim darovima! Sada pogledajmo softver, mislim da ovdje ništa neće dimiti.

Pokrenuo sam proxy tipa "čovjek u sredini", onemogućio SSL provjeru na svom telefonu i pratio kakav promet aplikacija šalje u pozadinu. Prilikom registracije primijetio sam da je sustav uzeo moju adresu e-pošte i poslao je web servisu kako bi provjerio je li adresa povezana s postojećim računom. Zanimljivo je da je sustav koristio osnovnu autentifikaciju jer još nisam kreirao račun. Nisam znao što bih s tim podacima, pa sam ih samo zapisao u bilježnicu i krenuo dalje. Kreirao sam svoj račun i ulogirao se, a prva stvar koju aplikacija napravi prilikom prijave je pozivanje web servisa za provjeru trenutnog korisnika. Stoga sam jednostavno nazvao ovaj web-poslužitelj s vjerodajnicama koje sam prije vidio, a koje su korištene za provjeru postoji li moja adresa e-pošte, i kao odgovor dobio Mycar administratorski pristup.

Sumnjao sam da je ovo pravi račun administratora sustava jer, unatoč tome što je zvučao glasno, imao je niske privilegije. Uostalom, svi znamo ovakve ljude.
Stoga stvaram još jedan zahtjev - naredbu EngineStart, da pokrenem automobil s ovog računa, kliknem "Pošalji", kao odgovor primam status naredbe - "200 OK" i nakon otprilike tri sekunde moj se automobil kreće.

Kako se ispostavilo, Mycar Admin račun je doista bio administratorski račun tvrdo kodiran u mobilnoj aplikaciji. Ali to nije sve. Na jednom od prethodnih slajdova vidjeli ste nešto poput API ključa. Opet, praćenjem prometa mog lažnog proxy poslužitelja, saznao sam da se ovi API ključevi mogu koristiti umjesto korisničkog imena i lozinke. Ako koristite "API" kao korisničko ime i jedan od ovih ključeva, možete autentificirati korisnika.

Stoga sam kopirao sadržaj retka "APIKey", zalijepio ga u redak Password aplikacije POST i kliknuo gumb "Pošalji".

Međutim, nije išlo i nisam mogao shvatiti zašto dugih 5 minuta. Napokon mi je sinulo da sam zaboravio ukloniti navodnike i zarez u kopiranom API ključu, što mi je rečeno: “Pogriješili ste u SQL sintaksi.” Postalo mi je jasno da jednostavno možete koristiti osnovnu SQL injekciju da zaobiđete cijeli proces prijave i postanete administrator ili bilo koji korisnik kojeg želite. Mislim da nitko nikada nije pokušao ukrasti auto pomoću SQL injekcije, pa pokušajmo.


Općenito, prijavio sam se na svoj račun, kliknuo "Pošalji" i kao odgovor dobio status "200 OK". Ovaj put sam mislio snimiti video. Malo je mračno jer sam kasno navečer snimao s prozora ureda. Dakle, ulazim u komandu, a ti vidiš kroz prozor kako bljeskaju farovi auta u dvorištu ispod. Isprva je njihovo svjetlo slabo, ali onda prednja svjetla počinju svijetliti punom snagom - to je motor koji se uključuje. Dakle, upalio sam auto pomoću SQL injekcije (pljesak publike).
Ali to nije sve. SQL injekcija se može koristiti ne samo za autorizaciju, već i za zamjenu drugih parametara kao što su URL, parametri tijela niza upita itd. Zapravo, ovaj sustav posvuda koristi SQL injekcije. Gledajući poruke o pogrešci, možemo vidjeti da se ono što unesemo kao lozinku izravno uspoređuje sa stupcem zaporke u bazi podataka.

To znači da koriste obične tekstualne lozinke u SQL injekciji. Kako kažu, "ovo uopće nije dobro, pa čak i vrlo loše!" Ali dosta o SQL-u, da vidimo što još možete učiniti da daljinski pokrenete svoj automobil. Jednostavno pošaljete naredbu “EngineStart” i kao odgovor dobijete cjelobrojni identifikator koji predstavlja identifikator ove naredbe, u ovom slučaju to je ID = 3. Znajući identifikator, možete “povući” servis koji će prijaviti status ovog naredba.

Dakle, povećanjem ili smanjenjem ID vrijednosti, ja "povlačim" status bilo koje naredbe koja je ikada poslana na tom sustavu.

Nema ništa posebno zanimljivo u vezi s tim, i pitam se postoji li ovdje izravna referenca na predmet koji mogu koristiti za pokretanje svog automobila. Tako sam pokrenuo naredbu "EngineStart" kao legitimni korisnik sa svog računa, a zatim sam je pokušao pozvati preko računa drugog korisnika, koji ne bi trebao imati pristup sustavu. Kao odgovor, primio sam poruku pogreške: "Ovaj račun nije u kontekstu hijerarhije." Dakle, možda ova metoda hakiranja neće raditi. Međutim, ako pogledate ovaj API, vidjet ćete da duplicira informacije - adresa e-pošte korisnika preslikana je na ID njegovog računa.

Ako razvijate API ili hakirate API, vrsta umnožavanja informacija koje vidimo u ovom URL-u može biti izvor pogrešaka. U ovom slučaju API bugovi se mogu manifestirati na četiri različita načina.

Ako pogledate slučajeve 2 i 3, označene crvenom bojom, možete vidjeti izravne reference na objekt. U oba slučaja sustav ne provjerava jeste li ovlašteni izvršiti naredbu. Pokušao sam sa slučajem 2 i nije upalilo, što je sa slučajem 3? Ovdje samo moramo zamijeniti ID računa USER_EMAIL u URL-u jer je izravno povezan s ID-om računa ACCOUNT_ID. Prije smo koristili ID računa žrtve, ali sada koristimo račun napadača. Stoga sam upotrijebio ID hakerskog računa i ID žrtvinog uređaja, poslao naredbu i očekivano primio status naredbe "200 OK" i stekao kontrolu nad aplikacijom MyCar.
Dakle, s tri različita vektora napada uspjeli smo učiniti sve što može i legitimni korisnik aplikacije. To znači da možete pronaći bilo koji automobil u gradu, postaviti njegovu marku i model u aplikaciji, a zatim ga daljinski otključati i pokrenuti. Možemo isključiti ili uključiti alarm, napraviti promjene u servisnom meniju automobila i provjeriti status bilo koje naredbe. A sve se to može učiniti na tri različita načina.

Očito je da su MyCar programeri pokušali nekako popraviti greške u sustavu. Dakle, u slučaju tvrdo kodiranih lozinki, oni jednostavno stavljaju obrnuti proxy ispred aplikacije kako bi sakrili vjerodajnice koje se koriste za autorizaciju. Problem je u tome što obrnuti proxyji nisu magija i ne mogu riješiti sve probleme. Pohranili su SQL injekciju u uslugu treće strane tako da je mogu koristiti čak i bez lozinke kroz postupak verifikacije korisnika.

Odlučio sam pobliže pogledati strukturu URL-a. Možda ste primijetili da sve adrese koje koristi sustav sadrže m2m. Odlučivši da je ovo neka vrsta interne interakcije za mehanizam autorizacije u aplikaciji MyCar, unio sam ova slova u Google i otkrio web stranicu M2M Suite. Jedina stvar koju možete učiniti kada vidite ovaj obrazac je staviti nekoliko pojedinačnih navodnika unutra i vidjeti što će se dogoditi. Ono što će se dogoditi jest da ćete dobiti željenu SQL injekciju (pljesak publike).


I to se događa nekoliko mjeseci nakon što su programeri prijavili problem s ubacivanjem SQL-a. Ako neka aplikacija ima ovakvih problema, potrebno ih je što prije riješiti, ali kao što vidite, programeri nisu učinili ništa. Smatram da je ovakva vrsta zanemarivanja korisnika uvredljiva.
MyCar modul ima GPS jedinicu tako da može pratiti lokaciju vašeg automobila i prikazati je u aplikaciji. Ali, kako se pokazalo, oni ne pohranjuju samo trenutnu lokaciju automobila. Pohranjuju jako puno informacija, puno više nego što je potrebno za praćenje trenutne lokacije automobila. U mom slučaju, kroz 13 dana korištenja aplikacije, nakupilo se nešto manje od dvije tisuće geolokacijskih točaka mjesta koja je moj auto posjetio. Politika privatnosti razvojne tvrtke MyCar ne govori ni riječi o takvom prikupljanju podataka.
Međutim, postaje još gore. Mogli biste tvrditi da je to samo nuspojava implementacije usluge lokacije. Ali stvar je u tome što umjesto da samo naprave popis mjesta na koja vaš automobil ide, oni koriste drugi API koji analizira te podatke i određuje mjesta na koja vaš automobil najčešće ide. Opet, koliko ja znam, nema naznake takve značajke u politici privatnosti. Možda to i nije toliko iznenađujuće jer sam nakon tone pretraživanja pronašao matičnu tvrtku MyCara pod nazivom Procon Analytics, otišao na njihovu web stranicu i posjetio odjeljak s često postavljanim pitanjima. Ovdje sam naišao na pitanje: "Kako osigurati sigurnost podataka?" Odgovor tvrtke je bio: „Za razliku od javnih oblaka koji se natječu za prioritet u pohrani podataka, Procon Analytics koristi vlastiti virtualni oblak koji se koristi isključivo za korisnike naše aplikacije i zaštićen je od uplitanja drugih korisnika. Riječ je o posebnom cloud okruženju s visokim stupnjem sigurnosti, koje osigurava laku dostupnost i brzinu isporuke usluge. Partnerstvom s Procon Analyticsom možete biti sigurni da su vaši podaci sigurno zaštićeni.” Ne znam ni sta da kazem na ovo...

Ako odete na njihovu Facebook stranicu, možete saznati još zanimljivosti. Ovdje jednostavno pišu: "Zaštita podataka o vašem vozilu je od vitalnog značaja!" Eto, mogu se samo složiti s takvom tvrdnjom.
Dakle, da se vratim na pitanje s kojim sam započeo: "Kako se to događa i kako se može izbjeći"? I još važnije, kako mi kao zajednica možemo spriječiti da se to dogodi?
Ovim završavam svoje izvješće, ali još ću moći odgovoriti na par pitanja (pljesak publike).
Pitate jesu li sve popravili? U ovom trenutku, mislim da su popravili sve pogreške koje sam im prijavio, s izuzetkom nedostataka u politici privatnosti koje sam spomenuo na kraju razgovora. Zadnji put kad sam ga provjerio, sve je bilo nepromijenjeno. Na pitanje mogu li na sličan način uređivati parametre elektroničke upravljačke jedinice motora (ECU) automobila, odgovorit ću da je moj zadatak bio uređivati parametre automobila samo u aplikaciji MyCar. Pohranjuje digitalni prikaz vozila koji se uređuje izravnim pristupom objektu, ubacivanjem SQL-a ili drugim vektorom napada.
Posljednje pitanje je: imam li u svom automobilu sustav pokretanja motora bez ključa s gumbom "Start" i kakva je situacija s bravom upravljača u tom slučaju? Moj odgovor je da MyCar ima takvu tipku, pa ovaj sustav nema zaključavanje upravljača. Pretpostavljam da se, ako ugradite ovaj sustav, sigurno nećete moći pouzdati u zaključavanje upravljača.

Neki oglasi 🙂
Hvala što ste ostali s nama. Sviđaju li vam se naši članci? Želite li vidjeti više zanimljivog sadržaja? Podržite nas narudžbom ili preporukom prijateljima, , jedinstveni analog poslužitelja početne razine, koji smo izmislili za vas: (dostupno s RAID1 i RAID10, do 24 jezgre i do 40 GB DDR4).
Dell R730xd 2 puta jeftiniji u Equinix Tier IV podatkovnom centru u Amsterdamu? Samo ovdje u Nizozemskoj! Dell R420 - 2x E5-2430 2.2 Ghz 6C 128 GB DDR3 2x960 GB SSD 1 Gbps 100 TB - od 99 USD! Pročitaj o
Izvor: www.habr.com
