Konference DEFCON 27. Vaše auto je moje auto. Část 2

Konference DEFCON 27. Vaše auto je moje auto. Část 1

Na konci videa jste slyšeli cvaknutí – jedná se o odemykání mechanického zámku volantu, který pomocí elektroniky neobejdeme. Musíte použít něco mechanického, ručně rozbít vložku zámku nebo udělat něco podobného, ​​což jsem nechtěl udělat jejímu autu. Veškerý firmware demonstrovaný v těchto videích bude po mém vystoupení k dispozici na GitHubu, takže stačí přejít na adresu URL na snímku a stáhnout soubor OpenRemoteStart.

Pojďme se bavit o tom, co se přesně stane, když do tohoto systému přidáme internet, protože to pro nás musí být dobré, ne? Jak jsem řekl, zakoupil jsem modul dálkového ovládání alarmu s názvem MyCar. Dodává se v různých modifikacích, já měl model Linkr LT-1.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

MyCar je jen značka a takové moduly se prodávají pod názvy Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6) atd. Jak se ukazuje, už nějakou dobu prodejci KIA v Kanadě instalují tento systém, nebo alespoň aplikaci s názvem MyCar KIA, do svých vozů. Zajímavé je, že tato aplikace již není k dispozici ke stažení na AppStore. Ještě chci poznamenat, že jsem si vybral produkty Fortin a MyCar, ale podle uživatelských recenzí na tématických fórech autoalarmů na volné noze se ostatní systémy nechovají o nic lépe a mají podobné problémy.

Mám důležitou otázku: Proč se na trhu autoalarmů s autoalarmy prodává produkt s bezpečnostními problémy a nikoho to nezajímá? Pokud se tedy někdo z vás zajímá o vzdálené startovací systémy, věnujte pozornost několika důležitým okolnostem. Za prvé, jak jsem již zmínil, pokud není systém DS správně nainstalován na autě s manuální převodovkou, je docela možné, že po nastartování motoru na dálku auto jednoduše pojede bez řidiče, pokud je v převodovce zařazen nějaký rychlostní stupeň . Je to opravdu nebezpečné. Druhým nebezpečím je, že pokud někdo zaparkuje auto v přistavěné garáži a náhodou na dálku zapne motor, mohl by se udusit nahromaděným oxidem uhelnatým. Takže pokud máte CO systém a připojenou garáž, určitě byste měli mít detektory oxidu uhelnatého.

Pokud používáte systémy DS, nikdy se nepokoušejte nastartovat motor svého vozu, aniž byste přesně věděli, kde se nachází, protože následky mohou být katastrofální.

Zařízení MyCar, malá černá krabička, z níž vycházejí dva dráty, má 8 portů, z nichž dva jsou vyhrazeny pro rozhraní debuggeru. Připojení k tomuto rozhraní ukázalo, že na zařízení běží Linux, o kterém výrobce mlčí. Do shellu firmwaru se snadno dostanete pomocí hesla oelinux 123, ale můžete bez přihlášení používat AE Engine, který umožňuje zadávat AT příkazy z příkazové řádky, včetně příkazu pro změnu IP adresy zařízení, se kterým se tento modul komunikuje.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Pokud se podíváme na řádky níže, vidíme IP adresu serveru, ze kterého modul MyCar přijímá aktualizace firmwaru. Zařízení je vybaveno L-portem, který umožňuje „naslouchat“ příkazům přijatým modulem. Pomocí AE Engine a změnou IP spárovaného zařízení se mi podařilo zjistit, že toto zařízení komunikuje s DS pomocí nešifrovaného protokolu UDP.

Příliš jsem se tím nezabýval, ale myslím si, že je to docela významný a zajímavý fakt. Pokud vás zajímá více informací o tomto zařízení, podívejte se na tento snímek - zobrazuje napájecí napětí 3,3V, rychlost přenosu dat 115200 baudů, adresu serveru pro aktualizaci firmwaru, root heslo a odkaz k uživatelské příručce.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Zařízení může „tolerovat“ vyšší napájecí napětí.

Jak říkám, je tu docela zima. Asi měsíc poté, co jsem tento systém daroval své přítelkyni, jsem se rozhodl vyndat jednotku z auta a dát jí pořádně zabrat. Faktem je, že celý tento měsíc jsem zapudil myšlenky o zranitelnosti tohoto zařízení. Na příští týden předpovídali teploty až -30F°, takže jsem si musel pospíšit. Připojil jsem se k shellu a zprovoznil jsem to, ale protože celulární příjem v mé domácí laboratoři není příliš dobrý, rozhodl jsem se pracovat s boxem na jiném počítači. Jednotka FTDI, kterou používám, má krátkou šňůru, tak jsem našel delší, zapojil do jednotky DS, zapojil do počítače a jakmile jsem zapnul napájení, začala se mi z jednotky kouřit!

Z toho plyne ponaučení: pokud hackujete hardware, mějte připravenou náhradní jednotku! Moje přítelkyně vyjádřila morálku příběhu takto: Pokud je vaše drahá polovička hacker, nenechte ji hrát si s vašimi vánočními dárky! Nyní se podíváme na software, myslím, že zde nebude nic kouřit.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Spustil jsem man-in-the-middle proxy, deaktivoval jsem ověřování SSL na svém telefonu a sledoval, jaký provoz aplikace posílá do backendu. Při registraci jsem si všiml, že systém vzal mou e-mailovou adresu a odeslal ji webové službě, aby se ujistil, že je adresa přidružena k existujícímu účtu. Zajímavé je, že systém používal Základní autentizaci, protože jsem ještě neměl vytvořený účet. Nevěděl jsem, co s touto informací dělat, a tak jsem si to jen zapsal do sešitu a pokračoval dál. Vytvořil jsem si účet a přihlásil se a první věc, kterou aplikace při přihlašování udělá, je zavolání webové služby pro ověření aktuálního uživatele. Jednoduše jsem tedy zavolal na tento webový server s přihlašovacími údaji, které jsem předtím viděl a které byly použity ke kontrole, zda moje e-mailová adresa existuje, a jako odpověď jsem dostal přístup k Mycar Admin.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Pochyboval jsem, že se jedná o skutečný účet správce systému, protože i když to znělo nahlas, měl nízká oprávnění. Ostatně všichni takové lidi známe.

Proto vytvořím další požadavek - příkaz EngineStart, pro nastartování auta z tohoto účtu klikněte na „Odeslat“, v odpovědi obdržím stav příkazu - „200 OK“ a asi po třech sekundách se moje auto rozjede.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Jak se ukázalo, účet Mycar Admin byl skutečně administrátorským účtem pevně zakódovaným do mobilní aplikace. Ale to není vše. Na jednom z předchozích snímků jste viděli něco jako API klíč. Opět, z monitorování mého falešného provozu proxy serveru jsem se dozvěděl, že tyto klíče API lze použít místo uživatelského jména a hesla. Pokud jako uživatelské jméno a jeden z těchto klíčů použijete "API", můžete uživatele ověřit.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Zkopíroval jsem tedy obsah řádku „APIKey“, vložil jej do řádku Password v aplikaci POST a klikl na tlačítko „Odeslat“.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Nicméně to nešlo a dlouhých 5 minut jsem nemohl přijít na to proč. Nakonec mi došlo, že jsem zapomněl odstranit uvozovky a čárky ve zkopírovaném klíči API, což mi bylo řečeno: „Udělali jste chybu v syntaxi SQL.“ Bylo mi jasné, že můžete jednoduše použít základní SQL injekci, abyste obešli celý přihlašovací proces a stali se správcem nebo jakýmkoli uživatelem, kterého chcete. Myslím, že se nikdy nikdo nepokusil ukrást auto pomocí SQL injection, tak to zkusme.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Obecně jsem se přihlásil ke svému účtu, kliknul na „Odeslat“ a jako odpověď obdržel stav „200 OK“. Tentokrát mě napadlo natočit video. Je trochu tma, protože jsem natáčel pozdě v noci z okna kanceláře. Zadávám tedy příkaz a vy oknem vidíte, že na dvoře dole blikají světlomety auta. Nejprve je jejich světlo slabé, ale pak začnou světlomety svítit na plný výkon - to je zapínání motoru. Takže jsem nastartoval auto pomocí SQL injection (potlesk publika).

Ale to není vše. SQL injection lze použít nejen k autorizaci, ale také k nahrazení dalších parametrů, jako jsou URL, parametry těla řetězce dotazu atd. Ve skutečnosti tento systém používá injekce SQL všude. Při pohledu na chybové zprávy vidíme, že to, co zadáme jako heslo, se přímo porovnává se sloupcem hesla v databázi.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

To znamená, že používají hesla ve formátu prostého textu v SQL injection. Jak se říká: "To není vůbec dobré a dokonce velmi špatné!" Ale dost o SQL, pojďme se podívat, co dalšího můžete udělat pro nastartování auta na dálku. Jednoduše odešlete příkaz „EngineStart“ a jako odpověď obdržíte celočíselný identifikátor představující identifikátor tohoto příkazu, v tomto případě je to ID = 3. Znáte-li tento identifikátor, můžete „vytáhnout“ službu, která bude hlásit stav tohoto příkazu. příkaz.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Takže zvýšením nebo snížením hodnoty ID "stahuji" stav jakéhokoli příkazu, který byl kdy odeslán na tento systém.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Není na tom ale nic zvlášť zajímavého a zajímalo by mě, jestli je zde přímý odkaz na nějaký předmět, který bych mohl použít k nastartování auta. Spustil jsem tedy příkaz „EngineStart“ jako legitimní uživatel ze svého účtu a poté jsem jej zkusil zavolat přes účet jiného uživatele, který by neměl mít přístup do systému. Jako odpověď jsem obdržel chybovou zprávu: „Tento účet není v kontextu hierarchie.“ Takže tento hack možná nebude fungovat. Pokud se však podíváte na toto API, uvidíte, že duplikuje informace – e-mailová adresa uživatele je namapována na ID jeho účtu.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Pokud vyvíjíte rozhraní API nebo hackujete rozhraní API, druh duplikace informací, které vidíme na této adrese URL, může být zdrojem chyb. V tomto případě se chyby API mohou projevit čtyřmi různými způsoby.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Pokud se podíváte na případy 2 a 3, vyznačené červeně, můžete vidět přímé odkazy na objekt. V obou případech systém nekontroluje, zda máte oprávnění provést příkaz. Zkoušel jsem případ 2 a nefungovalo to, co případ 3? Zde musíme pouze nahradit ID účtu USER_EMAIL v adrese URL, protože přímo souvisí s ID účtu ACCOUNT_ID. Dříve jsme používali ID účtu oběti, ale nyní používáme účet útočníka. Použil jsem tedy ID účtu hackera a ID zařízení oběti, odeslal příkaz a očekávaně obdržel stav příkazu „200 OK“ a získal kontrolu nad aplikací MyCar.
Se třemi různými útočnými vektory jsme tedy byli schopni udělat vše, co mohl udělat legitimní uživatel aplikace. To znamená, že si můžete najít jakékoli auto ve městě, v aplikaci nastavit jeho značku a model a následně auto na dálku odemknout a nastartovat. Můžeme vypnout nebo zapnout alarm, provést změny v servisním menu vozu a zkontrolovat stav libovolného příkazu. A to vše lze provést třemi různými způsoby.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Je zřejmé, že se vývojáři MyCar pokusili systémové chyby nějak opravit. Takže v případě pevně zakódovaných hesel jednoduše umístí před aplikaci reverzní proxy, aby skryly přihlašovací údaje, které se používají k autorizaci. Problém je v tom, že reverzní proxy nejsou kouzla a nedokážou vyřešit všechny problémy. Uložili SQL injekci do služby třetí strany, takže i bez hesla ji mohu stále používat prostřednictvím procedury ověření uživatele.

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Rozhodl jsem se blíže podívat na strukturu URL. Možná jste si všimli, že všechny adresy používané systémem obsahují m2m. Rozhodl jsem se, že se jedná o nějaký typ interní interakce pro autorizační mechanismus v aplikaci MyCar, zadal jsem tato písmena do Googlu a objevil jsem webovou stránku M2M Suite. Jediná věc, kterou můžete udělat, když uvidíte tento formulář, je vložit do něj několik jednoduchých uvozovek a uvidíte, co se stane. Stane se, že dostanete požadovanou SQL injekci (potlesk publika).

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Konference DEFCON 27. Vaše auto je moje auto. Část 2

A to přichází několik měsíců poté, co vývojáři ohlásili problém s SQL injection. Pokud má aplikace podobné problémy, je třeba to co nejdříve opravit, ale jak vidíte, vývojáři nic neudělali. Tento druh ignorování uživatelů považuji za urážlivý.

Modul MyCar má jednotku GPS, takže dokáže sledovat polohu vašeho vozu a zobrazovat ji v aplikaci. Jak se ale ukázalo, ukládají nejen aktuální polohu vozů. Ukládají sakra hodně informací, mnohem víc, než je potřeba ke sledování aktuální polohy auta. V mém případě za 13 dní používání aplikace nashromáždili o něco méně než dva tisíce geolokačních bodů míst, která moje auto navštívilo. V zásadách ochrany osobních údajů vývojářské společnosti MyCar se o takovém shromažďování informací nezmiňuje ani slovo.

Nicméně je to ještě horší. Můžete namítnout, že je to jen vedlejší efekt implementace polohové služby. Jde ale o to, že místo pouhého vytváření seznamu míst, kam vaše auto jezdí, používají jiné API, které tato data analyzuje a určuje místa, kam vaše auto jezdí nejčastěji. Opět, pokud je mi známo, v zásadách ochrany osobních údajů není žádný náznak takové funkce. Možná to není tak překvapivé, protože po tuně hledání jsem našel mateřskou společnost MyCar s názvem Procon Analytics, šel na jejich web a navštívil sekci FAQ. Zde jsem narazil na otázku: "Jak zajišťujete bezpečnost dat?" Odpověď společnosti byla: „Na rozdíl od veřejných cloudů, které soutěží o prioritu v ukládání dat, používá Procon Analytics svůj vlastní virtuální cloud, který slouží výhradně uživatelům naší aplikace a je chráněn před rušením ostatních uživatelů. Jedná se o speciální cloudové prostředí s vysokým stupněm zabezpečení, které zajišťuje snadnou dostupnost a rychlost dodání služeb. Díky partnerství s Procon Analytics si můžete být jisti, že vaše data jsou bezpečně chráněna.“ Ani nevím co na tohle říct...

Konference DEFCON 27. Vaše auto je moje auto. Část 2

Pokud půjdete na jejich facebookovou stránku, můžete se dozvědět ještě další zajímavosti. Zde jednoduše napíšou: „Ochrana informací o vašem vozidle je životně důležitá! No, s takovým tvrzením mohu jen souhlasit.

Takže zpět k otázce, kterou jsem začal: „Jak se to stane a jak se tomu lze vyhnout“? A co je důležitější, jak můžeme jako komunita tomu zabránit?

Tím moje zpráva končí, ale přesto budu moci odpovědět na několik otázek (potlesk publika).

Ptáte se, zda vše opravili? V tuto chvíli si myslím, že opravili všechny chyby, které jsem jim nahlásil, s výjimkou nedostatků v zásadách ochrany osobních údajů, které jsem zmínil na konci přednášky. Když jsem to naposledy kontroloval, vše se nezměnilo. Na otázku, zda mohu podobným způsobem upravovat parametry elektronické řídicí jednotky motoru (ECU) vozu, odpovím, že mým úkolem bylo upravovat parametry vozu pouze v aplikaci MyCar. Uchovává digitální reprezentaci vozidla, která je upravována prostřednictvím přímého přístupu k objektu, SQL injection nebo jiného útočného vektoru.

Poslední otázka zní: mám v autě systém bezklíčového startování motoru s tlačítkem “Start” a jak je to v tomto případě se zámkem volantu? Moje odpověď je, že MyCar má takové tlačítko, takže tento systém nemá zámek volantu. Tuším, že pokud si tento systém nainstalujete, na zámek volantu se rozhodně spolehnout nebudete.

Nějaké inzeráty 🙂

Děkujeme, že s námi zůstáváte. Líbí se vám naše články? Chcete vidět více zajímavého obsahu? Podpořte nás objednávkou nebo doporučením přátelům, cloud VPS pro vývojáře od 4.99 $, jedinečný analog serverů základní úrovně, který jsme pro vás vymysleli: Celá pravda o VPS (KVM) E5-2697 v3 (6 jader) 10GB DDR4 480GB SSD 1Gbps od 19 $ nebo jak sdílet server? (k dispozici s RAID1 a RAID10, až 24 jader a až 40 GB DDR4).

Dell R730xd 2krát levnější v datovém centru Equinix Tier IV v Amsterdamu? Pouze zde 2 x Intel TetraDeca-Core Xeon 2 x E5-2697v3 2.6 GHz 14C 64 GB DDR4 4 x 960 GB SSD 1 Gbps 100 TV od 199 USD V Nizozemsku! Dell R420 – 2x E5-2430 2.2 GHz 6C 128 GB DDR3 2 x 960 GB SSD 1 Gb/s 100 TB – od 99 $! Číst o Jak budovat infrastrukturu corp. třídy s využitím serverů Dell R730xd E5-2650 v4 v hodnotě 9000 XNUMX eur za cent?

Zdroj: www.habr.com

Přidat komentář