Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 1

В конце видео вы услышали щелчок – это сработала разблокировка механического замка рулевого колеса, которую мы не можем обойти с помощью электроники. Нужно использовать что-то механическое, сломать цилиндр замка вручную или проделать нечто подобное, чего я не собирался делать с ее машиной. Все прошивки, продемонстрированные в этих видео, будут доступны на GitHub после моего выступления, так что вы просто заходите по адресу, указанному на слайде, и скачиваете файл OpenRemoteStart.

Давайте поговорим о том, что именно происходит, когда мы добавляем интернет в эту систему, потому что это должно пойти на пользу, не так ли? Как я уже сказал, я приобрел модуль дистанционного управления сигнализацией под названием MyCar. Он выпускается в различных модификациях, у меня была модель Linkr LT-1.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 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-адрес устройства, с которым связывается данный модуль.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Если мы посмотрим на строки внизу, можно увидеть IP-адрес сервера, с которого модуль MyCar получает обновления прошивки. Устройство снабжено L-портом, который позволяет «прослушивать» команды, получаемые модулем. Используя АЕ Engine и меняя IP сопряженного устройства, я смог определить, что это устройство общается с ДС по незашифрованному протоколу UDP.

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

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Устройство может «терпимо» относиться и к более высокому напряжению питания.

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

Из этого можно извлечь такой урок: если вы занимаетесь аппаратным взломом, имейте наготове запасной блок! Моя девушка сформулировала мораль этой истории так: если твоя вторая половинка – хакер, не позволяй ему играть с твоими рождественскими подарками! А теперь давайте посмотрим на программное обеспечение, думаю, здесь ничего дымить не станет.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Я запустил прокси-сервер типа «человек посередине», отключил проверку SSL на своем телефоне и стал смотреть, какой трафик отправляется приложением на серверную часть. При регистрации я заметил, что система берет мой адрес электронной почты и отправляет его веб-сервису, чтобы удостовериться, что этот адрес привязан к существующей учетной записи. Интересно, что при этом система использовала базовую аутентификацию, потому что я еще не создал учетную запись. Я не знал, что мне делать с этой информацией, поэтому просто записал ее в блокнот и двинулся дальше. Я создал свою учетную запись и вошел в систему, а первое, что делает приложение при авторизации – это вызывает веб-сервис для проверки текущего пользователя. Поэтому я просто вызвал этот веб-сервер с помощью учетных данных, которые видел раньше, и которые были использованы для проверки того, существует ли мой адрес электронной почты, и в ответ получил доступ Mycar Admin.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Я сомневался, что это была учетная запись настоящего администратора системы, потому что, несмотря на громкое звучание, она обладала низкими привилегиями. В конце концов, все мы знаем таких людей.

Поэтому я создаю еще один запрос – команду EngineStart, чтобы завести с этого аккаунта машину, нажимаю «Send», получаю в ответ статус команды — «200 ОК», и примерно через три секунды моя машина трогается с места.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Как оказалось, учетная запись Mycar Admin действительно была аккаунтом администратора, жестко закодированным в мобильное приложение. Но это еще не все. На одном из предыдущих слайдов вы видели такую штуку, как API key. Опять же из мониторинга трафика моего фальшивого прокси-сервера я узнал, что эти ключи API можно использовать вместо имени пользователя и пароля. Если использовать в качестве имени пользователя «API» и один из этих ключей, вы можете аутентифицировать пользователя.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Поэтому я скопировал содержимое строки “APIKey”, вставил его в строку Password приложения POST и нажал кнопку «Send».

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Однако это не сработало, и я в течение долгих 5 минут не мог понять, почему. Наконец, до меня дошло, что я забыл вырезать кавычки и запятую в скопированном ключе API, о чем мне и было сообщено: «Вы сделали ошибку в синтаксисе SQL». Мне стало ясно, что можно просто использовать базовую SQL-инъекцию для обхода всего процесса входа в систему и стать администратором или любым пользователем, каким захотите. Не думаю, что кто-либо пытался угнать автомобиль с помощью SQL-инъекции, так что давайте попробуем это сделать.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

В общем, я зашел под своей учетной записью, нажал «Send» и получил в ответ статус «200 ОК». На этот раз я сообразил записать видео. Оно немного темное, потому что я снимал поздним вечером из окна моего офиса. Итак, я ввожу команду, и вы видите через окно, что внизу во дворе у машины вспыхивают фары. Сначала их свет слабый, но потом фары начинают светить на полную мощность – это включился двигатель. Итак, я завел автомобиль с помощью SQL-инъекции (аплодисменты аудитории).

Но это еще не все. SQL-инъекцию можно использовать не только для авторизации, но и для замены других параметров, таких как URL, параметры тела строки запроса и т.д. Фактически эта система везде использует SQL-инъекции. Глядя на сообщения об ошибках можно увидеть, что то, что мы вводим в качестве пароля, сравнивается непосредственно со столбцом password в базе данных.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Это значит, что у них используются простые текстовые пароли в SQL-инъекции. Как говорится, «это совсем не хорошо, а даже очень плохо!». Но хватит про SQL, давайте посмотрим, что еще можно сделать, чтобы дистанционно завести автомобиль. Вы просто отправляете команду «EngineStart» и в ответ получаете целочисленный идентификатор, представляющий собой идентификатор данной команды, в данном случае это ID = 3. Зная идентификатор, можно «вытянуть» службу, которая сообщит статус данной команды.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

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

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Однако в этом нет ничего особо интересного, и я задумываюсь, а нет ли здесь прямого указания на объект, которое я могу использовать, чтобы завести свою машину. Поэтому я запустил команду «EngineStart» от имени законного пользователя с моего аккаунта, а затем попробовал вызвать ее через учетную запись другого пользователя, которая не должна иметь доступа к системе. В ответ я получил сообщение об ошибке: «Данный аккаунт находится вне контекста иерархии». Так что, возможно, данный способ взлома не сработает. Однако если вы посмотрите на этот API, то увидите, что он дублирует информацию — адрес электронной почты пользователя сопоставим с ID его учетной записи.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Если вы разрабатываете API или взламываете API, подобное дублирование информации, которое мы видим в этом URL, может стать источником ошибок. В этом случае баги API могут проявить себя это четырьмя различными способами.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Если рассмотреть случаи 2 и 3, обведенные красной рамкой, можно увидеть прямые ссылки на объект. В обоих случаях система не проверяет, уполномочены ли вы выполнять данную команду. Я попробовал случай 2, и он не сработал, а как насчет случая 3? Здесь мы просто должны заменить идентификатор учетной записи USER_EMAIL в URL- адресе, так как он напрямую связан с идентификатором аккаунта ACCOUNT_ID. Ранее мы использовали идентификатор учетной записи жертвы, а теперь используем учетную запись злоумышленника. Поэтому я использовал идентификатор учетной записи хакера и идентификатор устройства жертвы, отправил команду и ожидаемо получил статус команды «200 ОК» и получил контроль над приложением MyCar.
Таким образом, с помощью трех различных векторов атаки мы смогли сделать все то, что может сделать законный пользователь приложения. Это значит, что можно найти в городе любую машину, задать в приложении ее марку и модель, а затем дистанционно разблокировать автомобиль и завести его. Мы можем выключить или включить сигнализацию, внести изменения в сервисное меню автомобиля и проверить статус любой команды. И все это можно сделать тремя разными способами.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Очевидно, что разработчики MyCar попытались каким-то образом пофиксить баги системы. Так, в случае с жестко закодированными паролями они просто поставили обратный прокси-сервер перед приложением, чтобы скрыть учетные данные, которые используются для авторизации. Проблема в том, что обратные прокси не являются магией и не способны исправить все проблемы. Они сохранили SQL-инъекцию в сторонней службе, так что даже без пароля я все равно могу использовать ее через процедуру проверки пользователя.

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

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

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

И это происходит через несколько месяцев после того, как разработчики сообщили о возникновении проблемы с SQL-инъекцией. Если в приложении имеются подобные проблемы, их необходимо исправить как можно скорее, но, как видите, разработчики ничего не сделали. Такое наплевательское отношение к пользователям я считаю оскорбительным.

Модуль MyCar имеет блок GPS, так что может отслеживать местоположение вашего автомобиля и отображать его в приложении. Но, как выяснилось, они хранят не только текущее местоположение автомобилей. Они хранят чертовски много информации, намного больше, чем нужно для того, чтобы отслеживать текущее местоположение машины. В моем случае за 13 дней использования приложения они накопили чуть меньше двух тысяч точек геолокации мест, в которых побывал мой автомобиль. В политике конфиденциальности компании-разработчика MyCar о таком сборе информации не говориться ни слова.

Однако дальше становится еще хуже. Вы можете возразить, что это всего лишь побочный эффект реализации службы геолокации. Но дело в том, что вместо простого создания списка мест, в которых бывает ваш автомобиль, они используют еще один API, анализирующий эти данные и определяющий места, в которых ваша машина бывает чаще всего. Опять же, насколько мне известно, в политике конфиденциальности нет никакого намека на подобную функцию. Возможно, это не так уж удивительно, потому что после кучи поисков я нашел материнскую компанию MyCar под названием Procon Analytics, зашел на их сайт и посетил раздел FAQ. Здесь я наткнулся на вопрос: «Как вы обеспечиваете безопасность данных?». Ответ компании был следующим: «В отличие от общедоступных облачных сред, которые сражаются за приоритет в области хранения данных, Procon Analytics использует собственное виртуальное облако, которое используется исключительно для пользователей нашего приложения и защищено от вмешательства других пользователей. Это особая облачная среда с высокой степенью защиты, которая обеспечивает легкую доступность и быстроту доставки услуг. Сотрудничая с Procon Analytics, вы можете быть уверены, что ваши данные надежно защищены». Даже не знаю, что на это сказать…

Konferenz DEFCON 27. Dein Auto ist mein Auto. Teil 2

Если зайти на их страницу на Facebook, можно узнать еще больше интересного. Здесь они прямо так и пишут: «Защита сведений о вашем транспортном средстве жизненно важна!». Что же, мне остается только согласиться с подобным высказыванием.

Итак, вернемся к вопросу, с которого я начал: «Как такое происходит и как этого можно избежать»? И что более важно, каким образом мы, как сообщество, можем предотвратить подобное?

На этом мой доклад окончен, но я еще смогу ответить на пару вопросов (аплодисменты аудитории).

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

Последний вопрос звучит так: есть ли у меня в автомобиле бесключевая система запуска двигателя кнопкой «Start» и как в этом случае обстоит дело с блокировкой рулевого колеса? Отвечу, что MyCar имеет такую кнопку, поэтому у этой системы отсутствует блокировка руля. Я подозреваю, что если вы установите эту систему, то определенно не сможете полагаться на замок, блокирующий рулевое колесо.

Einige Anzeigen 🙂

Vielen Dank, dass Sie bei uns geblieben sind. Gefallen Ihnen unsere Artikel? Möchten Sie weitere interessante Inhalte sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder an Freunde weiterempfehlen. Cloud-VPS für Entwickler ab 4.99 $, ein einzigartiges Analogon von Einstiegsservern, das von uns für Sie erfunden wurde: Die ganze Wahrheit über VPS (KVM) E5-2697 v3 (6 Kerne) 10 GB DDR4 480 GB SSD 1 Gbit/s ab 19 $ oder wie teilt man sich einen Server? (verfügbar mit RAID1 und RAID10, bis zu 24 Kerne und bis zu 40 GB DDR4).

Dell R730xd 2-mal günstiger im Equinix Tier IV-Rechenzentrum in Amsterdam? Nur hier 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6 GHz 14C 64 GB DDR4 4 x 960 GB SSD 1 Gbit/s 100 TV ab 199 $ in den Niederlanden! Dell R420 – 2x E5-2430 2.2 GHz 6C 128 GB DDR3 2 x 960 GB SSD 1 Gbit/s 100 TB – ab 99 $! Lesen über Wie baut man ein Infrastrukturunternehmen auf? Klasse mit dem Einsatz von Dell R730xd E5-2650 v4 Servern im Wert von 9000 Euro für einen Cent?

Source: habr.com

Kommentar hinzufügen