Русский
Русский
English
Статистика
Реклама

Реверс-инжиниринг трафика на шине CAN


Необработанный сигнал шины CAN

Шина CAN (Controller Area Network) стала стандартом в автомобилестроении: все новые автомобили обязаны поддерживать CAN (с 2001 в Европе и с 2008 в США). Кроме автомобилей, CAN применяется и в широком ряде других устройств. Производители диагностического оборудования для CAN рекламируют его применение, кроме разнообразной автомобильной техники, в мотоциклах, автопогрузчиках, судах, шахтных поездах, батискафах, беспилотных самолетах и пр. Давайте разберемся, что из себя представляет CAN.

В автомобилях используется несколько CAN; например, в Ford Focus таких шин четыре три высокоскоростных (500 kbps) для управления мотором, тормозами, приборной панелью и т.п., и одна низкоскоростная (125 kbps) для управления дверьми, фарами, подушками безопасности, аудиосистемой, кондиционером и всем прочим. Подключившись к CAN, можно имитировать сигналы от любых устройств в автомобиле например, управлять кондиционером с приложения на телефоне или накручивать одометр без движения автомобиля. Подключив к шине Arduino и реле, можно управлять с приборной панели дополнительной парковочной камерой. Даже стартапы, работающие над беспилотными автомобилями, такие как Voyage, начинают создание прототипа с того, что в обычном серийном автомобиле подключаются к CAN и учатся имитировать сигналы от педалей и руля.

Для подключения к CAN в автомобиле обычно возле руля имеется разъем OBD-II (On-Board Diagnostics). https://commons.wikimedia.org/wiki/File:OBD_002.jpg Адаптеры OBD2-USB для подключения компьютера к CAN стоят от $5, и позволяют отслеживать весь трафик внутри автомобиля. Иногда разъем OBD-II защищен аппаратным фаерволом, позволяющим принимать пакеты от устройств, подключенных к CAN, но не позволяющим передавать пакеты обратно на шину. В этом случае достаточно вывинтить разъем, и подключиться к проводам CAN вместо него.



Каждый пакет, передаваемый по шине CAN, состоит из ID передающего устройства (11 либо 29 бит), и до 8 байт передаваемых данных. Трафик, проходящий по шине при включении зажигания, может выглядеть как-то так:



Для анализа трафика CAN существует большое число инструментов как коммерческих, так и OpenSource. Пакет can-utils для Linux включает утилиту cansniffer, которая отображает для каждого CAN ID только последний отправленный пакет, и тем самым позволяет отслеживать изменения показаний каждого датчика на шине:



Для реверс-инжиниринга трафика CAN сингапурские исследователи, из доклада которых я взял этот трейс, записали на видео приборную доску подопытного автомобиля, и затем соотнесли изменения на приборной доске с одновременными изменениями в трафике. Определив таким образом CAN ID датчика скорости и формат передаваемых им данных, они научились подделывать его пакеты, передавая на спидометр и на тахометр показания, не соответствующие действительности.

Надо понимать, что параллельно с передачей поддельных пакетов по шине продолжают передаваться и настоящие сигналы от датчика скорости. Чтобы тахометр показывал сфабрикованные показания, надо отслеживать передачу по шине настоящих показаний, и каким-либо образом их подавлять например, сразу после обнаружения передачи CAN ID датчика скорости физически глушить шину, закорачивая линии данных. Более простой, чисто программный метод подавления настоящих показаний сразу же после их передачи, пока тахометр еще не успел отреагировать, передавать поддельные пакеты. Например, следующий простой шелл-скрипт отслеживает передачу с CAN ID=0x0C9, и сразу же после нее передает сфабрикованный пакет при помощи утилиты cansend из состава все тех же can-utils:

candump can0 | grep " 0C9 " | while read line; do cansend can0 0C9#8021C0071B101000; done

Даже хотя все устройства в автомобиле подключены к CAN, далеко не все их функции управляются через CAN. Например, на CAN в Ford Escape передаются сигналы о степени нажатия педалей газа и тормоза но используются эти сигналы только блоком ABS, тогда как приводы дроссельной заслонки и тормозов соединены с педалями напрямую, минуя CAN.

C точки зрения безопасности ни о какой уязвимости в докладе сингапурцев речи не идет, потому что для передачи поддельных CAN-пакетов нужен физический доступ к шине. Кроме того, пакеты могут быть защищены контрольной суммой например, в автомобилях Toyota последний байт каждого пакета должен равняться сумме всех предыдущих (по модулю 256). Кроме этого, в Toyota для защиты от нежелательных пакетов используется фильтрация получателем например, игнорируются повороты руля более чем на 5% от текущего значения.

Тем не менее исследователям безопасности удавалось получить к CAN и удаленный доступ: вначале на небольшом расстоянии через уязвимости в Bluetooth-модуле, подключенном к той же самой шине; а затем через сотовую сеть Sprint, через которую внедорожники нескольких американских производителей получали данные о пробках на дорогах. Исследователи, продемонстрировавшие перехват управления Jeep Cherokee с расстояния в несколько миль, получили от Управления перспективных исследовательских проектов Министерства обороны США (DARPA) вознаграждение в 80 тысяч долларов. С тех пор многие автопроизводители объявили о собственных bounty-программах, обещающих выплаты от $1500 за каждую обнаруженную уязвимость. Таким образом, реверс-инжиниринг трафика на шине CAN может не только добавить вашему автомобилю новые возможности, но и существенно пополнить ваш кошелек.

Источник: habr.com
К списку статей
Опубликовано: 21.08.2020 12:12:17
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании ruvds.com

Лайфхаки для гиков

Автомобильные гаджеты

Ruvds_статьи

Автомобили

Прошивка

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru