Краткое содержание выступления: Для многих из нас автомобиль — одна из самых дорогих покупок, которые мы когда-либо совершаем.
В мире, где все взаимосвязано, естественно хотеть управлять автомобилем удаленно: получать напоминания о том, где мы его припарковали, проверять, не забыли ли мы запереть двери, или удаленно запускать двигатель, чтобы предварительно прогреть или охладить салон.
в зависимости от времени года.
Многие производители предлагают дополнительные системы сигнализации, обеспечивающие это удобство и спокойствие.
Но насколько мы можем доверять поставщикам этих систем в защите доступа к нашим автомобилям в цифровой сфере? В этом докладе Jmaxxz расскажет о том, что он обнаружил, изучив одну из таких систем.
Jmaxxz известен своей работой с системами умного дома August Smart Lock (презентация на DEFCON 24 «Backdooring The Frontdoor»).
В последние годы его внимание было сосредоточено на устройствах Интернета вещей.
Он участвовал в разделах «Деревня нулевого дня IoT» на DEFCON 24 и DEFCON 25 и наконец решил, что пришло время изучить продукт вторичного автомобильного рынка — дистанционный стартер (далее РС).
Итак, меня зовут Джей-Макс, я программист по профессии и хакер по призванию.
Я занимаюсь всем, что связано с замками, и на протяжении всего разговора вы услышите множество высказываний, которые выражают исключительно мое мнение и не имеют никакого отношения к мнению моих прошлых, настоящих и будущих работодателей.
Как вы наверное поняли, речь пойдет об автомобилях, а именно о дистанционных пускателях и сигнализациях.
Начнем с некоторой предыстории, которая важна в этом контексте, поскольку многие считают такие системы ненужной роскошью.
Там, где я живу, довольно холодно, а мой друг страдает синдромом Рейно.
Холод вызывает спазм сосудов рук, резко снижается приток крови к пальцам, появляются признаки отморожения, в том числе некроз тканей.
На слайде показано, как это обычно выглядит.
В ноябре прошлого года я еще не решил, что подарю ей на Рождество.
Поэтому она возвращается домой из аэропорта расстроенная, потому что по дороге домой ее машина так и не прогрелась.
В тот момент я понял, что подарю ей систему дистанционного запуска двигателя и начал искать лучший вариант. Оказывается, рынок дистанционного пускателя довольно велик, и многие производители не предоставляют достаточной информации о своей продукции.
Они не говорят вам, как установить систему или какие инструменты использовать для программирования устройства.
Для меня это проблема, потому что это моя машина, мой дистанционный запуск, и мне нужно иметь доступ к этим инструментам.
Поэтому я поискал еще немного и нашел компанию из Канады Fortin, которая производит такие стартеры и охотно предоставляет всю необходимую документацию.
Я остановился на этом продукте и начал поиск подходящего пульта дистанционного управления.
Дело в том, что если использовать стандартный пульт с дистанционным стартером, то дальность его действия будет ограничена радиусом действия штатного пульта.
На вторичном рынке предлагаются пульты дистанционного управления, работающие в радиусе от полумили до полутора миль.
По отзывам потребителей, это рекламный ход, ведь на самом деле расстояние гораздо короче.
В этом и проблема, потому что моей подруге нужно завести двигатель своей машины на стоянке аэропорта, как только она выйдет из самолета, а это примерно полмили.
Было бы здорово, если бы она могла просто вытащить телефон, открыть приложение и нажать «Старт».
Я нашел продукт стороннего производителя под названием MyCar, который полностью совместим со стартером Fortin. Это небольшой брелок с SIM-картой и GPS-приемником, который можно поставить в машину и подключить к пульту дистанционного запуска.
Затем с помощью мобильного приложения можно удаленно запустить двигатель, разблокировать замки и тому подобное.
Я подумал, что это было бы здорово: сразу после приземления самолета моя подруга сможет завести двигатель, и к тому времени, как она доберется до машины, в салоне уже будет тепло.
Итак, давайте немного поговорим о том, как работают дистанционные пускатели.
Для этого сначала нужно понять, как запускается двигатель автомобиля.
Примерно до середины девяностых годов автомобильный стартер представлял собой традиционный механический замок с комбинацией ключа и переключателя.
Вам нужно было вставить ключ и повернуть его, чтобы замкнуть электрическую цепь.
Затем в США стали популярны замки с надписью «иммобилайзер».
Звучит сложно, но это всего лишь электронный замок.
Итак, у вас есть механический замок, который является ключом к электронному замку, который, в свою очередь, является транспондером и содержит некоторую информацию, которую можно прочитать.
И пока вы не откроете электронный замок, ваша машина не заведется.
В правой части слайда вы видите 2 ключа: левый от иммобилайзера, а правый от штатного замка зажигания.
Он просто управляет механическими компонентами замка, а левый ключ отпирает электронный замок, который запускает двигатель автомобиля.
Почему я говорю вам об этом? Дистанционный запуск работает через иммобилайзер.
На следующем слайде вы видите схему подключения устройства Fortin EVO One к иммобилайзеру – слева внизу вы видите пару контактов, обозначенных как IMO. В правом верхнем углу диаграммы вы видите две линии: CAN LOW и CAN HIGH. Это контакты для подключения к автомобильной CAN-шине.
Причина, по которой дистанционные пускатели подключаются к шине CAN, заключается в снижении затрат на установку, поскольку во время установки используется меньше соединений.
Если дистанционный стартер может считывать данные с CAN-шины или отправлять команды через CAN-шину, это сокращает время установки системы дистанционного запуска двигателя.
В левом верхнем углу схемы находится целая куча GPIO, которые связаны с управлением или чтением информации о машине.
Например, вы хотите, чтобы при нажатии кнопки блокировки мигал свет или звучал звуковой сигнал.
Подобными вещами можно управлять с помощью этих GPIO. В левом нижнем углу схемы вы видите большой неуклюжий разъем — это интерфейс, позволяющий обойти механическую блокировку.
То есть вам не нужно вставлять и поворачивать ключ в замке зажигания, поскольку этот интерфейс позволяет реле системы дистанционного запуска напрямую взаимодействовать с электрическим замком.
На следующих слайдах показаны этапы установки дистанционного пускателя.
В основном он состоит из снятия кожуха рулевой колонки, установки и подключения блока DS. Выглядит это довольно страшно, но сделать это легко.
Сами пульты дистанционного управления подключаются к тому, что Fortin называет каналом передачи данных.
В системе используется фирменный физический протокол передачи данных UART — универсальный асинхронный передатчик, обменивающийся данными со скоростью 9600 бод. Дистанционный пускатель Fortin просто подключается через шину UART к двум пультам дистанционного управления, которые вы видите на слайде.
Установив ДС, я задумался о том, как такие устройства могут повлиять на безопасность автомобиля.
Очевидно, что ДС должна обходить иммобилайзер, так насколько это безопасно с точки зрения возможности угона или перехвата управления автомобилем? Это касается не только передачи данных по сотовой сети, но и самого сигнала дистанционного запуска.
Поэтому я начал искать в Интернете информацию производителя об используемом протоколе передачи данных и попал на форумы, где люди писали, что Фортин отказался предоставить этот протокол.
Одна из причин: «Мы не распространяем такую информацию, поскольку EVO — не игрушка для любителей, она предназначена для использования профессионалами.
Будучи в некотором роде профессионалом, я решил построить свою собственную настольную машину.
Я раздобыл второй системный блок EVO, собрал плату, изображающую автомобиль, добавил переключатели для имитации зажигания, кнопку педали тормоза и целую кучу светодиодов для отображения различных состояний.
Собрав все это воедино, я подключил устройство мониторинга каналов передачи данных FTI и начал собирать эти данные.
На первый взгляд это похоже на слайд, и не совсем понятно, что здесь происходит. Но если присмотреться, то можно сказать, что какая-то структура здесь определенно есть.
Обратите внимание, что всякий раз, когда я нажимаю кнопку на пульте дистанционного управления, сообщение, которое антенна отправляет на мой DS, всегда начинается с 0C и заканчивается 0D. Итак, если мы просто разделим то, что получим, предполагая, что 0C — это начало, а 0D — конец, в итоге мы получим что-то вроде этого.
Здесь уже хорошо видна какая-то структура, так что можно разобраться, что происходит. Потратив время на отслеживание того, какое сообщение появляется после нажатия определенной кнопки, я смог создать таблицу команд, каждая из которых соответствовала определенному действию.
То есть при нажатии кнопки на пульте антенна отправляет команду модулю дистанционного запуска, которая выглядит вот так.
Вот как выглядит типичная структура команды.
При нажатии кнопки на пульте антенна передает такую команду на дистанционный пускатель.
Его пробуждает байт 0C, за которым следуют 2 байта, которые, я думаю, представляют направление передачи.
Это интересно, потому что у UART уже есть направление сигнала, поэтому я пометил эти байты как «мусор», просто относитесь к ним как к константе.
За ним следует один байт, указывающий команду, которую пользователь хотел бы выполнить.
Это может быть запирание дверей или их открытие, выключение сигнализации и т. д. В общем, все, что вы хотите сделать удаленно, связано с этой командой.
Полезная нагрузка FF FF F1 — это адрес или идентификатор, который идентифицирует удаленную антенну, от которой пришло сообщение.
Если блок DS не распознает идентификатор, команда игнорируется.
Если ДС принимает идентификатор, начинается многоэтапная процедура, включающая проверку наличия ключа в замке зажигания, включение или выключение двигателя, нажатие педали тормоза и т. д. На самом деле этот процесс не имеет особого значения.
значение, просто устройство в этот момент изучает идентификатор.
В конце сообщения идет байт с контрольной суммой и байт, указывающий на окончание команды.
Теперь, когда мы понимаем, как работает протокол, что мы можем с этим поделать? У меня есть пара видео на эту тему.
К сожалению, видео почему-то без звука, поэтому расскажу, что происходит на экране.
Слева от рулевой колонки на корпусе панели приборов расположен белый ящик, в котором находится электроника с прошивкой Particle.IO, понимающая протокол Fortin. Провод с синим наконечником — это антенна.
Эта штука позволяет мне взаимодействовать с устройством дистанционного запуска изнутри автомобиля и видеть на экране ноутбука, что происходит.
Итак, я отправляю команду разблокировки замка на машину, но она не работает, потому что DS не знает об этой антенне.
Как я уже упоминал, это всего лишь UART, свойством которого является поддержка так называемой двусторонней связи, благодаря которой можно удаленно получать информацию о состоянии автомобиля.
Например, если двигатель был физически запущен или остановлен, блок DS отправит соответствующее сообщение на антенну дистанционного управления.
В этом случае в сообщении будет указан адрес этой самой антенны.
Проблема в том, что связь осуществляется по протоколу UART, и любой, кто подключится к шине UART, может увидеть адрес, куда отправляется заданное сообщение, поэтому в моей прошивке есть возможность клонировать адрес существующей антенны, что я и делаю.
с помощью соответствующей команды.
Чтобы сгенерировать сообщение, вам достаточно открыть дверь автомобиля.
Как видите, ДС посылает на антенну сообщение о том, что дверь была открыта, и тут же включается сигнализация.
Для выключения сигнализации я посылаю команду «разблокировать», после чего звук сигнализации выключается и автомобиль разблокируется.
Вам придется поверить мне на слово, поскольку нам не удалось воспроизвести это видео со звуком.
Давайте попробуем воспроизвести видео еще раз.
Ну и звук появился (примечание переводчика: на экране воспроизводится одно и то же видео со звуком).
Итак, вы видели, как я подал команду ДС и включил сигнализацию, и все это без ключа.
Теперь попробуем таким же образом завести машину; для этого посмотрите следующее видео.
Обычно, если вы просто наберете «старт» и попытаетесь запустить двигатель, ничего не получится.
Причина в том, что это автомобиль с механической коробкой передач, и для систем дистанционного запуска для таких автомобилей предусмотрена особая процедура.
В этом случае необходимо нажать кнопку дистанционного запуска, когда ключ находится в замке зажигания и работает двигатель.
Тогда можно вынуть ключ, выйти из машины, закрыть дверь, после чего ДС заглушит двигатель и заблокирует дверь.
Это сделано для того, чтобы автомобиль не реагировал на дистанционный запуск двигателя во время движения, ведь это опасно.
Однако это не полная функция безопасности.
В этом довольно легко убедиться, взглянув на блок дистанционного запуска EVO. Вы видите этот желтый провод, предназначенный для работы с механической коробкой передач.
Если его разрезать, то этот блок можно использовать для автомобиля с автоматической коробкой передач.
Такая конструкция блока позволяет не использовать какие-либо специальные настройки при установке ДС на автомобили с разными типами трансмиссии.
Итак, система не отреагировала на команду «пуск», поэтому я собираюсь вернуть эту колодку на место и просто перерезать этот провод, чтобы разорвать соединение.
Теперь, если повторить команду «пуск», раздастся звуковой сигнал и на панели приборов загорятся индикаторы состояния систем автомобиля, как это происходит при вставке ключа в замок.
На данный момент у нас есть машина, которую можно завести дистанционно, без ключа в замке зажигания, но модуль DS — это не все, что нам нужно.
В обычных условиях уехать на дистанционно заведенной машине все равно не получится, но все же попробуем.
Чтобы отключить блокировку руля, необходимо вставить в замок зажигания обычный ключ, на котором нет транспондера.
Как видите, достаточно перевести ключ в положение перед запуском двигателя, и руль Субару Импреза начинает вращаться совершенно свободно.
Однако если у вас нет ключа, то при нажатии на педаль тормоза машина заглохнет. Обойти это ограничение довольно легко.
Вам необходимо разобраться, как автомобиль сообщает дистанционному стартёру о том, что тормоз наложен.
В задней части корпуса модуля EVO вы видите несколько разноцветных портов — сюда будет подключаться кабель от CAN-шины.
Достаточно просто снять этот трос с блока DS после дистанционного запуска автомобиля, и он не будет реагировать на нажатие педали тормоза.
Так как этот блок находится под кожухом рулевой колонки, то даю через ноутбук команду «старт», машина заводится, открываю дверь, выхожу из машины и снимаю разъем CAN-шины с блока EVO. Как видите, двигатель автомобиля работает, но ключа в зажигании у нас по-прежнему нет. Теперь, если вы нажмете педаль тормоза, ничего не произойдет, потому что EVO не знает, что она была нажата.
После этого я могу сесть за руль, нажать на тормоз, перевести рычаг коробки передач в положение «Драйв», и машина начинает движение.
Все это делается без какого-либо ключа.
21:40 Конференция DEFCON 27. Твоя машина – моя машина.
Часть 2
Немного рекламы :)
Спасибо, что остаетесь с нами.Вам нравятся наши статьи? Хотите увидеть больше интересных материалов? Поддержите нас, разместив заказ или порекомендовав друзьям, облачный VPS для разработчиков от $4,99 , уникальный аналог серверов начального уровня, который мы придумали для вас: Вся правда о VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps от 19$ или как правильно раздать сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40 ГБ DDR4).
Dell R730xd в 2 раза дешевле в дата-центре Equinix Tier IV в Амстердаме? Только здесь 2 x Intel TetraDeca-Core Xeon, 2 x E5-2697v3, 2,6 ГГц, 14C, 64 ГБ DDR4, 4 твердотельных накопителя по 960 ГБ, 1 Гбит/с, 100 ТВ от 199 долларов США в Нидерландах! Dell R420 — 2x E5-2430, 2,2 ГГц, 6C, 128 ГБ DDR3, 2 твердотельных накопителя по 960 ГБ, 1 Гбит/с, 100 ТБ — от 99 долларов США! Прочтите об этом Как построить корпоративную инфраструктуру класса, используя серверы Dell R730xd E5-2650 v4 стоимостью 9000 евро за копейки? Теги: #информационная безопасность #ИТ-инфраструктура #Конференции #безопасность
-
О Работе С Людьми
19 Oct, 24 -
Объявление Valuehost
19 Oct, 24 -
Усилитель Wi-Fi
19 Oct, 24