• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья The Car Hacker's Handbook: A Guide For Penetration Testing - Глава 2, Часть 2

1 часть ЗДЕСЬ 2 часть ЗДЕСЬ
1 часть ЗДЕСЬ

Шина Flexray

FlexRay - это высокоскоростная шина, которая может поддерживать связь со скоростью до 10 Мбит / с. Он ориентирован на чувствительную по времени связь, такую как проезд, провод по проводам, тормоз-за-провод и т. Д. FlexRay дороже, чем CAN, поэтому большинство реализаций используют FlexRay для high-end систем, CAN для среднего уровня и LIN для недорогих устройств.

Аппаратное обеспечение

FlexRay использует витую пару, но может также поддерживать двухканальную настройку, которая может увеличить отказоустойчивость и пропускную способность. Однако в большинстве реализаций FlexRay используется только одна пара проводки, аналогичная реализациям шины CAN.

Сетевая топология

FlexRay поддерживает стандартную топологию шины, такую как CAN-шина, где многие ECU работают от шины с витой парой. Он также поддерживает звездную топологию, такую как Ethernet, которая может работать с более длинными сегментами. Когда он реализован в топологии звезды, концентратор FlexRay является центральным активным устройством FlexRay, которое взаимодействует с другими узлами. В макете шины FlexRay требует надлежащего завершения резистора, как в стандартной CAN-шине. Топологии шины и звезды могут быть объединены для создания гибридного макета, если это необходимо.

Реализация

При создании сети FlexRay производитель должен сообщить устройствам о настройке сети. Напомним, что в CAN-сети каждое устройство просто должно знать скорость передачи и какие идентификаторы, о которых он заботится (если они есть). В макете шины только одно устройство может разговаривать по шине одновременно. В случае шины CAN заказчик, который сначала говорит о столкновении, определяется идентификатором арбитража. В отличие от этого, когда FlexRay настроен говорить на шине, он использует что-то, называемое схемой множественного доступа с временным разделением (TDMA), чтобы гарантировать детерминизм: скорость всегда одна и та же (детерминированная), и система полагается на передатчики для заполнения данные по мере того, как пакеты проходят по проводам, аналогично тому, как работают сотовые сети, такие как GSM. Устройства FlexRay не автоматически обнаруживают сеть или адреса в сети, поэтому они должны иметь информацию, запрограммированную во время производства. Хотя этот подход статической адресации снижает затраты во время производства, для тестирующего устройства может оказаться сложным участвовать в шине, не зная, как настроена сеть, поскольку устройство, добавленное в вашу сеть FlexRay, не будет знать, какие данные предназначены для пойдите в какие слоты. Для решения этой проблемы в ходе разработки FlexRay были разработаны специальные форматы обмена данными, такие как формат обмена полевой шиной (FIBEX). FIBEX - это формат XML, используемый для описания сетей FlexRay, а также сетевых настроек CAN, LIN и MOST. Карты топологии FIBEX записывают ECU и как они связаны по каналам, и они могут реализовать шлюзы для определения поведения маршрутизации между шинами. Эти карты также могут включать в себя все сигналы и способы их интерпретации. Данные FIBEX используются во время компиляции встроенного ПО и позволяют разработчикам ссылаться на известные сетевые сигналы в своем коде; компилятор обрабатывает все размещение и настройку. Чтобы просмотреть FIBEX, загрузите FIBEX Explorer из





Циклы FlexRay

Цикл FlexRay можно рассматривать как пакет. Длина каждого цикла определяется во время разработки и должна состоять из четырех частей, как показано на рисунке 2-13.
Рисунок 2-13.jpg

Статический сегмент содержит зарезервированные слоты для данных, которые всегда представляют одно и то же значение. Слоты динамического сегмента содержат данные, которые могут иметь разные представления. Окно символа используется сетью для сигнализации, а для синхронизации используется сегмент бездействия (тихое время). Самая маленькая единица времени на FlexRay называется макротипом, который обычно составляет одну миллисекунду. Все узлы синхронизируются во времени, и они одновременно запускают свои макротипные данные. Статический раздел цикла FlexRay содержит заданное количество слотов для хранения данных, вроде пустых вагонов. Когда ECU необходимо обновить статический блок данных, он заполняет свой определенный слот или автомобиль; каждый ECU знает, какой автомобиль определен для него. Эта система работает, потому что все участники шины FlexRay синхронизируются по времени. Динамический раздел разбивается на мини-слоты, обычно один макротип длинный. Динамический участок обычно используется для менее важных, прерывистых данных, таких как внутренняя температура воздуха. По мере прохождения мини-шины ECU может выбрать заполнение мини-столбца данными. Если все мини-ячейки заполнены, ECU должен ждать следующего цикла. На рисунке 2-14 циклы FlexRay представлены в качестве вагонов поезда. Передатчики, ответственные за заполнение информации для статических слотов, делают это при прохождении цикла, но динамические слоты заполняются на основе первого, первого. Все вагоны-вагоны имеют одинаковый размер и представляют собой временные детерминированные свойства FlexRay.
Рисунок 2-14.jpg

Окно символа обычно не используется напрямую большинством устройств FlexRay, а это значит, что, думая, как хакер, вы обязательно должны столкнуться с этим разделом. Кластеры FlexRay работают в состояниях, которые контролируются менеджером состояния FlexRay. Согласно стандарту AUTOSAR 4.2.1, эти состояния выглядят следующим образом: готовность, пробуждение, запуск, остановка, онлайн, онлайн-пассив, только ключи и низкий уровень холодоснабжения. Хотя большинство государств очевидны, некоторые нуждаются в дальнейшем объяснении. В частности, онлайн - это нормальное состояние связи, тогда как онлайн-переход должен происходить только при наличии ошибок синхронизации. В режиме онлайн-передачи данные не отправляются и не принимаются. Keyslot-only означает, что данные могут передаваться только в ключевых слотах. Низкий уровень холодоустойчивости означает, что шина все еще работает в полном режиме связи, но использует только кадры синхронизации. Существуют также дополнительные операционные состояния, такие как конфигурация, спящий режим, только прием и резервное копирование.



Макет пакета

Фактический пакет, который использует FlexRay, содержит несколько полей и вписывается в цикл в статическом или динамическом слоте (см. Рис. 2-15).
Рисунок 2-15.jpg

Битами состояния являются:

• Зарезервированный бит

• Индикатор преамбулы полезной нагрузки

• Индикатор NULL-кадра

• Индикатор синхронизации кадра

• Индикатор начальной загрузки

Идентификатор кадра - это слот, который пакет должен быть передан при использовании для статических слотов. Когда пакет предназначен для динамического слота (1-2047), идентификатор кадра представляет приоритет этого пакета. Если два пакета имеют один и тот же сигнал, выигрывает тот, который имеет наивысший приоритет. Длина полезной нагрузки - это число в словах (2 байта) и может содержать до 127 слов, что означает, что пакет FlexRay может нести 254 байта данных - более чем в 30 раз больше, чем для CAN-пакета. Заголовок CRC должен быть очевиден, а количество циклов используется как счетчик связи, который увеличивается каждый раз, когда начинается цикл связи. Одна из очень аккуратных вещей о статических слотах заключается в том, что ECU может читать ранее статические слоты и выводить значение на основе этих входов в одном цикле. Например, скажем, у вас есть компонент, который должен знать положение каждого колеса, прежде чем он сможет вывести любые необходимые настройки. Если первые четыре слота в статическом цикле содержат каждое положение колеса, электронный блок калибровки может читать их и все еще иметь время, чтобы заполнить более поздний слот с любыми настройками.


Снифинг сети FlexRay.
На момент написания этой статьи Linux не имеет официальной поддержки FlexRay, но есть некоторые исправления от разных производителей, которые добавляют поддержку определенным ядрам и архитектурам. (Linux поддерживает FlexCAN, но FlexCAN - это сеть CAN-шин, вдохновленная FlexRay.) В настоящее время нет стандартных инструментов с открытым исходным кодом для снифинга сети FlexRay. Если вам нужен универсальный инструмент для снифинга трафика FlexRay, вам в настоящее время нужно приобрести проприетарный продукт, который будет стоить дорого. Если вы хотите отслеживать сеть FlexRay без файла FIBEX, вам, по крайней мере, нужно будет знать скорость передачи данных на шине. В идеале вы также знаете длину цикла (в миллисекундах) и, если возможно, размер разбиения кластеров (отношение статики к динамике). Технически кластер FlexRay может иметь до 1048 конфигураций с 74 параметрами. Вы найдете подход к определению этих параметров, подробно описанный в статье «Автоматическая идентификация параметров в автомобильных коммуникационных сетях FlexRay» (IEEE, 2006) Эрика Арменго, Андреаса Штайнингера и Мартина Хоуауэра. При спуфинге пакетов в сети FlexRay с двумя каналами вам необходимо одновременно обманывать оба. Кроме того, вы столкнетесь с реализациями FlexRay, называемыми Bus Guardian, которые предназначены для предотвращения наводнений или монополизации шины каким-либо одним устройством. Bus Guardian работает на аппаратном уровне с помощью штыря на чипе FlexRay, который обычно называется Bus Guardian Enable (BGE). Этот штырь часто обозначается как необязательный, но Bus Guardian может управлять этим выводом слишком высоко, чтобы отключить устройство с неправильным управлением.



Автомобильный ethernet

Поскольку MOST и FlexRay стоят дорого и теряют поддержку (консорциум FlexRay, похоже, расформирован), большинство новых автомобилей переходят на Ethernet. Реализации Ethernet различаются, но они в основном одинаковы как то, что вы найдете в стандартной компьютерной сети. Часто CAN-пакеты инкапсулируются как UDP, а аудио передается как голос поверх IP (VoIP). Ethernet может передавать данные со скоростью до 10 Гбит / с, используя непатентованные протоколы и любую выбранную топологию. Несмотря на отсутствие общего стандарта для трафика CAN, производители начинают использовать стандарт IEEE 802.1AS Audio Video Bridging (AVB). Этот стандарт поддерживает качество обслуживания (QoS) и формирование трафика, и он использует синхронизированные по времени UDP-пакеты. Для достижения этой синхронизации узлы следуют лучшим алгоритмом мастер-часов, чтобы определить, какой узел должен быть мастером синхронизации. Главный узел обычно синхронизируется с внешним источником синхронизации, таким как GPS или (в худшем случае) встроенным осциллятором. Мастер синхронизирует с другими узлами путем отправки временных пакетов (10 миллисекунд), подчиненный отвечает запросом на задержку, а смещение по времени рассчитывается из этого обмена. С точки зрения исследователя, единственная проблема с транспортным Ethernet-сетью заключается в выяснении того, как разговаривать с Ethernet. Возможно, вам понадобится сделать или купить собственный кабель для связи с кабелями Ethernet для транспортных средств, потому что они не будут выглядеть как обычные витые пары, которые вы найдете в сетевом шкафу. Как правило, разъем будет просто проводом, подобным тому, который вы подключили к ECU. Не ожидайте, что у разъемов будет свой собственный штекер, но если они это сделают, он не будет похож на разъем RJ-45. Некоторые разомкнутые соединители на самом деле круглые, как показано на рисунке 2-16.
Рисунок 2-16.jpg


Карты вывода OBD-II.

Остальные контакты в выводе OBD-II являются специфическими для изготовителя. Сопоставления отличаются от производителя, и это всего лишь рекомендации. Ваша распиновка может отличаться в зависимости от вашей марки и модели. Например, на рисунке 2-17 показана разводка General Motors.

Рисунок 2-17.jpg

Обратите внимание, что разъем OBD может иметь более одной линии CAN, например, низкоскоростную линию (LS-CAN) или среднюю скорость (MS-CAN). Низкая скорость работает около 33 Кбит / с, средняя скорость составляет около 128 Кбит / с, а высокоскоростная (HS-CAN) - около 500 Кбит / с. Часто вы используете соединитель DB9-OBDII при подключении вашего сниффера к разъему OBD-II вашего автомобиля. На рисунке 2-18 показан вид вилки, а не кабель.
Рисунок 2-18.jpg

Эта распиновка является общей разводкой в Соединенном Королевстве, и если вы сами создаете кабель, этот самый простой в использовании. Однако некоторые снифферы, такие как многие щиты Arduino, ожидают разъем DB9 в американском стиле (см. Рис. 2-19).
Рисунок 2-19.jpg

Американская версия имеет больше возможностей и дает вам больше доступа к другим разъемам OBD, кроме CAN. К счастью, питание - это штырь 9 на обоих соединителях типа, поэтому вы не должны жарить своего сниффера, если вам удастся захватить неправильный кабель. Некоторые снифферы, такие как CANtact, имеют перемычки, которые вы можете установить в зависимости от того, какой кабель стиля вы используете.



OBD-III

OBD-III - довольно спорная эволюция стандарта OBD-II. OBD-II первоначально был спроектирован так, чтобы быть совместимым с испытаниями на выбросы (по крайней мере, с точки зрения регуляторов), но теперь, когда модуль управления силовой трансмиссией (PCM) знает, находится ли транспортное средство в пределах руководящих принципов, нам по-прежнему остается неудобство владелец транспортного средства должен пойти для тестирования через год. Стандарт OBD-III позволяет PCM передавать свой статус удаленно без взаимодействия владельца. Это сообщение обычно осуществляется через придорожный транспондер, но также работают сотовые телефоны и спутниковая связь. Калифорнийский совет по воздушным ресурсам (CARB) начал тестировать придорожные считыватели для OBD-III в 1994 году и способен считывать данные о транспортных средствах с восьми полос движения со скоростью 100 миль в час. Если в системе обнаружена неисправность, она передаст диагностические коды неисправностей (DTC) и идентификационные номера автомобиля (VIN) в соседний транспондер. Идея состоит в том, чтобы система сообщала, что загрязняющие вещества попадают в атмосферу, не дожидаясь двух лет для проверки выбросов. Большинство реализаций OBD-III являются конкретными производителями. Автомобиль отправляется домой к производителю с ошибками, а затем связывается с владельцем, чтобы сообщить им о необходимости ремонта. Как вы можете себе представить, в этой системе есть некоторые очевидные юридические вопросы, на которые еще нужно ответить, включая риск массового наблюдения за частной собственностью. Разумеется, есть много возможностей для злоупотреблений со стороны правоохранительных органов, включая скоростные ловушки, отслеживание, иммобилизацию и т. Д. Некоторые из представленных заявок на включение OBD-III в транспортные средства утверждают, что используют транспондеры для хранения следующей информации:

• Дата и время текущего запроса

• Дата и время последнего запроса

• VIN

• Статус, например «ОК», «Проблема, »Или« Нет ответа »

• Сохраненные коды (DTC)

• Номер приемной станции

Важно отметить, что даже если OBD-III отправляет только коды DTC и VIN, тривиально добавлять дополнительные метаданные, такие как местоположение, время и история транспортного средства передавая транспондер. По большей части, OBD-III является призраком под кроватью. На момент написания этой статьи он еще не был развернут с использованием приемоответчика, хотя системы домашнего телефона, такие как OnStar, развертываются, чтобы уведомить автодилера о различных проблемах безопасности или безопасности.

Резюме

При работе с целевым транспортным средством вы можете столкнуться с несколькими различными автобусами и протоколами. Когда вы это сделаете, изучите штыри, которые ваш разъем OBD-II использует для вашего конкретного автомобиля, чтобы помочь вам определить, какие инструменты вам понадобятся, и что ожидать при обращении в сеть вашего автомобиля. Я сосредоточен в этой главе на легкодоступных шинах через разъем OBD-II, но вы также должны посмотреть на электрические схемы вашего автомобиля, чтобы определить, где найти другие линии шины между датчиками. Не все шинные линии открыты через разъем OBD-II, и при поиске определенного пакета может оказаться проще найти модуль и шины, выходящие из определенного модуля, чтобы отменить определенный пакет. (Подробнее о том, как читать схемы соединений будет в 7 Главе).

Итак,мы закончили скучную,но полезную 2 главу.Обещаю,кодинг будет в 3 главе,а дебагинг в 4.
Wait,dudes.
Надеюсь, после 2 главы никто не потерял интерес к данной теме
 
Последнее редактирование модератором:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!