Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 1

У канцы відэа вы пачулі пстрычку гэта спрацавала разблакіроўка механічнага замка рулявога кола, якую мы не можам абыйсці з дапамогай электронікі. Трэба выкарыстоўваць нешта механічнае, зламаць цыліндр замка ўручную ці прарабіць нешта падобнае, чаго я не збіраўся рабіць з яе машынай. Усе прашыўкі, прадэманстраваныя ў гэтых відэа, будуць даступныя на GitHub пасля майго выступу, так што вы проста заходзіце па адрасе, паказанаму на слайдзе, і спампоўваеце файл OpenRemoteStart.

Давайце пагаворым аб тым, што менавіта адбываецца, калі мы дадаем інтэрнэт у гэтую сістэму, таму што гэта павінна пайсці на карысць, ці не так? Як я ўжо сказаў, я набыў модуль дыстанцыйнага кіравання сігналізацыяй пад назовам MyCar. Ён выпускаецца ў розных мадыфікацыях, у мяне была мадэль Linkr LT-1.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

MyCar - усяго толькі брэнд, і такія модулі прадаюцца пад назовамі Linkr LT-1, MyCar KIA, Visions MyCar, Carlink (CL6) і г.д. Як апынулася, нейкі час дылерскія цэнтры KIA у Канадзе ўсталёўвалі на аўтамабілі гэтую сістэму або, прынамсі, прыкладанне пад назовам MyCar KIA. Цікава, што гэта дадатак больш не даступна для запампоўкі ў AppStore. Я таксама жадаю адзначыць, што спыніў свой выбар на прадукцыі Fortin і MyCar, але паводле водгукаў карыстачоў на тэматычных форумах пазаштатнай аўтасігналізацыі, іншыя сістэмы паводзяць сябе не лепш і маюць аналагічныя праблемы.

У мяне ўзнікла важнае пытанне: чаму на другасным рынку аўтамабільнай сігналізацыі прадаецца прадукт з праблемамі бяспекі, і гэта нікога не хвалюе? Таму калі каго-небудзь з вас зацікавяць сістэмы дыстанцыйнага стартара, звернеце ўвагу на пару важных абставін. Па-першае, як я ўжо згадваў раней, калі сістэма ДС няправільна ўсталявана на аўтамабіль з механічнай трансмісіяй, суцэль магчыма, што пасля дыстанцыйнага запуску рухавіка аўтамабіль проста паедзе без кіроўцы, калі ў скрынцы ўключаная нейкая перадача. Гэта сапраўды небясьпечна. Другая небяспека складаецца ў тым, што калі хтосьці запаркаваў аўтамабіль у прыбудаваным да хаты гаражы і ў яго выпадкова дыстанцыйна ўлучыўся рухавік, можна задыхнуцца ад назапашанага ўгарнага газу. Так што калі ў вас ёсць сістэма ДС і прыбудаваны гараж, вы вызначана павінны мець дэтэктары ўгарнага газу.

Калі вы карыстаецеся сістэмы ДС, ніколі не спрабуйце запусціць рухавік машыны, не ведаючы дакладна, дзе яна знаходзіцца, таму што наступствы могуць быць катастрафічнымі.

Прылада MyCar, маленькая чорная скрыначка з двума якія выходзяць з яе праводкамі, мае 8 партоў, два з якіх прызначаны для інтэрфейсу адладчыка. Падлучэнне да гэтага інтэрфейсу паказала, што прылада працуе пад кіраваннем Linux, аб чым вытворца замоўчвае. Патрапіць у абалонку прашыўкі элементарна з дапамогай пароля oelinux 123, але вы можаце і без уваходу ў сістэму выкарыстоўваць АЕ Engine, які дазваляе ўводзіць AT-каманды з каманднага радка, у тым ліку каманду змяніць IP-адрас прылады, з якім звязваецца дадзены модуль.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Калі мы паглядзім на радкі ўнізе, можна ўбачыць IP-адрас сервера, з якога модуль MyCar атрымлівае абнаўленні прашыўкі. Прылада забяспечана L-портам, які дазваляе "праслухоўваць" каманды, якія атрымліваюцца модулем. Выкарыстоўваючы АЕ Engine і змяняючы IP спалучанай прылады, я змог вызначыць, што гэтая прылада мае зносіны з ДС па незашыфраваным пратаколе UDP.

Я не асабліва ў гэта ўнікаў, але думаю, што гэта даволі значны і цікавы факт. Калі вас цікавіць дадатковая інфармацыя аб гэтай прыладзе, зірніце на гэты слайд - тут паказана напруга сілкавання 3,3В, хуткасць перадачы дадзеных 115200 бод, адрас сервера для абнаўлення прашыўкі, root-пароль і спасылка на кіраўніцтва карыстача.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Прылада можа «цярпіма» ставіцца і да больш высокай напругі сілкавання.

Як я ўжо сказаў, у нас бывае даволі холадна. Прыкладна праз месяц пасля таго, як я падарыў гэтую сістэму сваёй сяброўцы, я вырашыў выцягнуць блок з машыны і папрацаваць з ім як след. Справа ў тым, што ўвесь гэты месяц я турыў ад сябе думкі аб уразлівасці гэтай прылады. На наступны тыдзень абяцалі мароз да -30F°, так што мне прыйшлося спяшацца. Я падлучыўся да абалонкі і прымусіў яе працаваць, але паколькі сотавая сувязь у маёй хатняй лабараторыі не занадта добрая, я вырашыў папрацаваць з блокам на іншым кампутары. Прылада FTDI, якое я выкарыстоўваю, мае кароткі шнур, таму я знайшоў іншы, большай даўжыні, падлучыў яго да блока ДС, падлучыў да кампутара, і як толькі ўключыў харчаванне, мой модуль задыміў!

З гэтага можна атрымаць такі ўрок: калі вы займаецеся апаратным узломам, майце напагатове запасны блок! Мая дзяўчына сфармулявала мараль гэтай гісторыі так: калі твая другая палоўка - хакер, не дазваляй яму гуляць з тваімі каляднымі падарункамі! А зараз давайце паглядзім на праграмнае забеспячэнне, думаю, тут нічога дыміць не стане.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Я запусціў проксі-сервер тыпу "чалавек пасярэдзіне", адключыў праверку SSL на сваім тэлефоне і стаў глядзець, які трафік адпраўляецца дадаткам на серверную частку. Пры рэгістрацыі я заўважыў, што сістэма бярэ мой адрас электроннай пошты і адпраўляе яго вэб-сэрвісу, каб пераканацца, што гэты адрас прывязаны да існуючага ўліковага запісу. Цікава, што пры гэтым сістэма выкарыстоўвала базавую аўтэнтыфікацыю, таму што я яшчэ не стварыў уліковы запіс. Я не ведаў, што мне рабіць з гэтай інфармацыяй, таму проста запісаў яе ў блакнот і рушыў далей. Я стварыў свой уліковы запіс і ўвайшоў у сістэму, а першае, што робіць прыкладанне пры аўтарызацыі - гэта выклікае вэб-сэрвіс для праверкі бягучага карыстальніка. Таму я проста выклікаў гэты вэб-сервер з дапамогай уліковых дадзеных, якія бачыў раней, і якія былі скарыстаны для праверкі таго, ці існуе мой адрас электроннай пошты, і ў адказ атрымаў доступ Mycar Admin.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Я сумняваўся, што гэта быў уліковы запіс сапраўднага адміністратара сістэмы, таму што, нягледзячы на ​​гучнае гучанне, ён валодаў нізкімі прывілеямі. У рэшце рэшт, усе мы ведаем такіх людзей.

Таму я ствараю яшчэ адзін запыт каманду EngineStart, каб завесці з гэтага акаўнта машыну, націскаю Send , атрымліваю ў адказ статут каманды 200 ОК, і прыкладна праз тры секунды мая машына чапаецца з месца.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Як аказалася, уліковы запіс Mycar Admin сапраўды была акаўнтам адміністратара, жорстка закадаваным ў мабільнае прыкладанне. Але гэта яшчэ ня ўсё. На адным з папярэдніх слайдаў вы бачылі такую ​​штуку як API key. Ізноў жа з маніторынгу трафіку майго фальшывага проксі-сервера я пазнаў, што гэтыя ключы API можна выкарыстаць замест імя карыстача і пароля. Калі выкарыстоўваць у якасці імя карыстальніка "API" і адзін з гэтых ключоў, вы можаце аўтэнтыфікаваць карыстальніка.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Таму я скапіяваў змесціва радка "APIKey", уставіў яго ў радок Password прыкладання POST і націснуў кнопку "Send".

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Аднак гэта не спрацавала, і я цягам доўгіх 5 хвілін не мог зразумець, чаму. Нарэшце, да мяне дайшло, што я забыўся выразаць двукоссі і коску ў скапіяваным ключы API, пра што мне і было паведамлена: "Вы зрабілі памылку ў сінтаксісе SQL". Мне стала ясна, што можна проста выкарыстоўваць базавую SQL-ін'екцыю для абыходу ўсяго працэсу ўваходу ў сістэму і стаць адміністратарам ці любым карыстачом, якім захочаце. Не думаю, што хто-небудзь спрабаваў сагнаць аўтамабіль з дапамогай SQL-ін'екцыі, так што давайце паспрабуем гэта зрабіць.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Увогуле, я зайшоў пад сваім уліковым запісам, націснуў «Send» і атрымаў у адказ статут «200 ОК». На гэты раз я зразумеў запісаць відэа. Яно крыху цёмнае, таму што я здымаў познім вечарам з акна майго офіса. Такім чынам, я ўводжу каманду, і вы бачыце праз акно, што ўнізе ў двары ў машыны ўспыхваюць фары. Спачатку іх святло слабы, але потым фары пачынаюць свяціць на поўную магутнасць гэта ўлучыўся рухавік. Такім чынам, я завёў аўтамабіль з дапамогай SQL-ін'екцыі (апладысменты аўдыторыі).

Але гэта яшчэ ня ўсё. SQL-ін'екцыю можна выкарыстоўваць не толькі для аўтарызацыі, але і для замены іншых параметраў, такіх як URL, параметры цела радка запыту і т.д. Фактычна гэтая сістэма ўсюды выкарыстоўвае SQL-ін'екцыі. Гледзячы на ​​паведамленні пра памылкі можна ўбачыць, што тое, што мы ўводзім у якасці пароля, параўноўваецца непасрэдна са слупком password у базе дадзеных.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Гэта значыць, што ў іх выкарыстоўваюцца простыя тэкставыя паролі ў SQL-ін'екцыі. Як гаворыцца, "гэта зусім не добра, а нават вельмі дрэнна!". Але хопіць пра SQL, давайце паглядзім, што яшчэ можна зрабіць, каб дыстанцыйна завесці аўтамабіль. Вы проста адпраўляеце каманду «EngineStart» і ў адказ атрымліваеце цэлы ідэнтыфікатар, які ўяўляе сабой ідэнтыфікатар дадзенай каманды, у дадзеным выпадку гэта ID = 3. Ведаючы ідэнтыфікатар, можна «выцягнуць» службу, якая паведаміць статут дадзенай каманды.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Такім чынам, павялічваючы або памяншаючы значэнне ID, я "выцягваю" статут любой каманды, якая калі-небудзь была адпраўлена ў гэтай сістэме.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Аднак у гэтым няма нічога асабліва цікавага, і я задумваюся, а ці няма тут прамога ўказання на аб'ект, якое я магу выкарыстоўваць, каб завесці сваю машыну. Таму я запусціў каманду «EngineStart» ад імя законнага карыстальніка з майго акаўнта, а затым паспрабаваў выклікаць яе праз уліковы запіс іншага карыстальніка, які не павінен мець доступу да сістэмы. У адказ я атрымаў паведамленне пра памылку: «Гэты акаўнт знаходзіцца па-за кантэкстам іерархіі». Так што, магчыма, гэты спосаб узлому не спрацуе. Аднак калі вы паглядзіце на гэты API, то ўбачыце, што ён дублюе інфармацыю - адрас электроннай пошты карыстальніка супастаўны з ID яго ўліковага запісу.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Калі вы распрацоўваеце API або ўзломваеце API, падобнае дубляванне інфармацыі, якое мы бачым у гэтым URL, можа стаць крыніцай памылак. У гэтым выпадку багі API могуць выявіць сябе гэта чатырма рознымі спосабамі.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Калі разгледзець выпадкі 2 і 3, абведзеныя чырвонай рамкай, можна ўбачыць прамыя спасылкі на аб'ект. У абодвух выпадках сістэма не правярае, ці ўпаўнаважаны вы выконваць дадзеную каманду. Я паспрабаваў выпадак 2, і ен не спрацаваў, а як наконт выпадку 3? Тут мы проста павінны замяніць ідэнтыфікатар уліковага запісу USER_EMAIL у URL-адрасе, бо ён напроста злучаны з ідэнтыфікатарам акаўнта ACCOUNT_ID. Раней мы выкарыстоўвалі ідэнтыфікатар уліковага запісу ахвяры, а зараз выкарыстоўваем уліковы запіс зламысніка. Таму я выкарыстаў ідэнтыфікатар уліковага запісу хакера і ідэнтыфікатар прылады ахвяры, адправіў каманду і чакана атрымаў статут каманды "200 ОК" і атрымаў кантроль над дадаткам MyCar.
Такім чынам, з дапамогай трох розных вектараў нападу мы змаглі зрабіць усё тое, што можа зрабіць законны карыстач прыкладання. Гэта значыць, што можна знайсці ў горадзе любую машыну, задаць у дадатку яе марку і мадэль, а затым дыстанцыйна разблакаваць аўтамабіль і завесці яго. Мы можам выключыць ці ўключыць сігналізацыю, унесці змены ў сэрвіснае меню аўтамабіля і праверыць статут любой каманды. І ўсё гэта можна зрабіць трыма рознымі спосабамі.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Відавочна, што распрацоўшчыкі MyCar паспрабавалі нейкім чынам пафіксіць багі сістэмы. Так, у выпадку з жорстка закадаванымі паролямі яны проста паставілі зваротны проксі-сервер перад дадаткам, каб схаваць уліковыя дадзеныя, якія выкарыстоўваюцца для аўтарызацыі. Праблема ў тым, што проксі зваротныя не з'яўляюцца магіяй і не здольныя выправіць усе праблемы. Яны захавалі SQL-ін'екцыю ў іншай службе, так што нават без пароля я ўсё роўна магу выкарыстоўваць яе праз працэдуру праверкі карыстальніка.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Я вырашыў больш уважліва разгледзець структуру URL. Магчыма, вы заўважылі, што ўсе выкарыстоўваныя сістэмай адраса ўтрымоўваюць m2m. Вырашыўшы, што гэта нейкі тып унутранага ўзаемадзеяння для механізму аўтарызацыі ў дадатку MyCar, я ўвёў гэтыя літары ў Google і выявіў сайт M2M Suite. Адзінае што вам застаецца зрабіць, убачыўшы гэтую форму - гэта ўставіць туды пару адзіночных двукоссяў і паглядзець, што адбудзецца. А адбудзецца тое, што вы атрымаеце патрэбную SQL-ін'екцыю (апладысменты аўдыторыі).

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

І гэта адбываецца праз некалькі месяцаў пасля таго, як распрацоўшчыкі паведамілі аб узнікненні праблемы з SQL-ін'екцыяй. Калі ў дадатку маюцца падобныя праблемы, іх неабходна выправіць як мага хутчэй, але, як бачыце, распрацоўшчыкі нічога не зрабілі. Такое наплявацельскае стаўленне да карыстачоў я лічу абразлівым.

Модуль MyCar мае блок GPS, так што можа адсочваць месцазнаходжанне вашага аўтамабіля і адлюстроўваць яго ў дадатку. Але, як высветлілася, яны захоўваюць не толькі бягучае месцазнаходжанне аўтамабіляў. Яны захоўваюць страшэнна шмат інфармацыі, нашмат больш, чым трэба для таго, каб адсочваць бягучае месцазнаходжанне машыны. У маім выпадку за 13 дзён выкарыстання прыкладання яны назапасілі крыху менш за дзве тысячы кропак геолокации месцаў, у якіх пабываў мой аўтамабіль. У палітыцы прыватнасці кампаніі-распрацоўніка MyCar аб такім зборы інфармацыі не гаворыцца ні слова.

Аднак далей робіцца яшчэ горш. Вы можаце запярэчыць, што гэта ўсяго толькі пабочны эфект рэалізацыі службы геолокации. Але справа ў тым, што замест простага стварэння спісу месцаў, у якіх бывае ваш аўтамабіль, яны выкарыстаюць яшчэ адзін API, які аналізуе гэтыя дадзеныя і вызначальны месцы, у якіх ваша машына бывае часцей за ўсё. Ізноў жа, наколькі мне вядома, у палітыцы канфідэнцыйнасці няма ніякага намёку на падобную функцыю. Магчыма, гэта не так ужо дзіўна, таму што пасля кучы пошукаў я знайшоў матчыну кампанію MyCar пад назовам Procon Analytics, зайшоў на іх сайт і наведаў падзел FAQ. Тут я натыкнуўся на пытанне: "Як вы забяспечваеце бяспеку дадзеных?". Адказ кампаніі быў наступным: «У адрозненне ад агульнадаступных хмарных асяроддзяў, якія ваююць за прыярытэт у вобласці захоўвання дадзеных, Procon Analytics выкарыстоўвае ўласнае віртуальнае воблака, якое выкарыстоўваецца выключна для карыстальнікаў нашага прыкладання і абаронена ад умяшання іншых карыстальнікаў. Гэта асаблівае хмарнае асяроддзе з высокай ступенню абароны, якая забяспечвае лёгкую даступнасць і хуткасць дастаўкі паслуг. Супрацоўнічаючы з Procon Analytics, вы можаце быць упэўнены, што вашыя дадзеныя надзейна абаронены». Нават не ведаю, што сказаць.

Канферэнцыя DEFCON 27. Твой аўтамабіль - мой аўтамабіль. Частка 2

Калі зайсці на іх старонку на Facebook, можна даведацца яшчэ больш цікавага. Тут яны прама так і пішуць: "Абарона звестак аб вашым транспартным сродку жыццёва важная!". Што ж, мне застаецца толькі пагадзіцца з такім выказваннем.

Такім чынам, вернемся да пытання, з якога я пачаў: "Як такое адбываецца і як гэтага можна пазбегнуць"? І што важнейшае, якім чынам мы, як супольнасць, можам прадухіліць падобнае?

На гэтым мой даклад скончаны, але я яшчэ змагу адказаць на пару пытанняў (апладысменты аўдыторыі).

Вы пытаецеся, ці ўсе яны выправілі? На дадзены момант я думаю, што яны пафіксілі ўсе багі, пра якія я ім паведаміў, за выключэннем недахопаў палітыкі прыватнасці, пра якія я згадаў у канцы выступу. У апошні раз, калі я яе правяраў, усё было без змен. На пытанне, ці магу я рэдагаваць падобнай выявай параметры электроннага блока кіравання рухавіком аўтамабіля ECU, адкажу, што маёй задачай было рэдагаванне параметраў аўтамабіля толькі ў дадатку MyCar. У ім захоўваецца лічбавае ўяўленне аўтамабіля, якое рэдагуецца з дапамогай прамога звароту да аб'екта, SQL-ін'екцыі ці іншага вектара нападу.

Апошняе пытанне гучыць так: ці ёсць у мяне ў аўтамабілі бясключавая сістэма запуску рухавіка кнопкай Start і як у гэтым выпадку ідзе справу з блакаваннем рулявога кола? Адкажу, што MyCar мае такую ​​кнопку, таму ў гэтай сістэмы адсутнічае блакіроўка руля. Я падазраю, што калі вы ўсталюеце гэтую сістэму, то вызначана не зможаце спадзявацца на замак, які блакуе рулявое кола.

Крыху рэкламы 🙂

Дзякуй, што застаяцеся з намі. Вам падабаюцца нашыя артыкулы? Жадаеце бачыць больш цікавых матэрыялаў? Падтрымайце нас, аформіўшы замову ці парэкамендаваўшы знаёмым, хмарныя VPS для распрацоўшчыкаў ад $4.99, унікальны аналаг entry-level сервераў, які быў прыдуманы намі для Вас: Уся праўда аб VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ад $19 ці як правільна дзяліць сервер? (даступныя варыянты з RAID1 і RAID10, да 24 ядраў і да 40GB DDR4).

Dell R730xd у 2 разы танней у дата-цэнтры Equinix Tier IV у Амстэрдаме? Толькі ў нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТБ ад $199 у Нідэрландах! Dell R420 – 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB – ад $99! Чытайце аб тым Як пабудаваць інфраструктуру корп. класа c ужываннем сервераў Dell R730xd Е5-2650 v4 коштам 9000 еўра за капейкі?

Крыніца: habr.com

Дадаць каментар