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

1 часть ЗДЕСЬ 2 часть ЗДЕСЬ
2 Глава отведена чисто теории, готовтесь к скучному,но дико полезному материалу.Обещаю,что 3 глава и последующие главы будут куда интереснее.Некий спойлер,даннай книга подойдет тем,кто знаком с ассемблером и языком Си

Протокол шины
В этой главе мы обсудим различные протоколы шины, общие для транспортных средств. У вашего транспортного средства может быть только один из них, или если он был построен раньше 2000 года, у него может не быть ни одного. Протоколы шины управляют передачей пакетов через сеть вашего автомобиля. Несколько сетей и сотни датчиков общаются в этих шинных системах, отправляя сообщения, которые контролируют поведение автомобиля и какую информацию знает сеть в любой момент времени. Каждый производитель решает, какая шина и какие протоколы имеют наибольшее значение для своего автомобиля. Один протокол, CAN-шина, существует в стандартном месте на всех автомобилях: на разъеме OBD-II. Тем не менее, сами пакеты, которые путешествуют по CAN-шине транспортного средства, не стандартизированы. Транспортная критическая связь, такая как управление RPM и торможение, происходит на высокоскоростных линиях шины, в то время как некритическая связь, такая как блокировка двери и контроль A / C, происходит на линиях средней и низкой скорости.Мы подробно расскажем о различных шинах и протоколах, которые вы можете использовать на своем автомобиле. Чтобы определить шины для вашего конкретного автомобиля, проверьте его разводку OBD-II онлайн.


CAN шина
CAN - это простой протокол, используемый в производстве и в автомобильной промышленности. Современные автомобили полны небольших встроенных систем и электронных блоков управления (ECU), которые могут осуществлять связь с использованием протокола CAN. CAN была стандартом для автомобилей США и легких грузовиков с 1996 года, но она не была обязательной до 2008 года (2001 год для европейских автомобилей). Если ваш автомобиль старше 1996 года, у него все еще может быть CAN, но вам нужно будет проверить. CAN работает на двух проводах: CAN high (CANH) и CAN low (CANL). CAN использует дифференциальную сигнализацию (за исключением низкоскоростного CAN, описанного в «Шине GMLAN» на стр. 20), что означает, что когда поступает сигнал, CAN повышает напряжение на одной линии и понижает другую линию на равную сумму (см. рис. 2-1). Дифференциальная сигнализация используется в средах, которые должны быть устойчивыми к шуму, например, в автомобильных системах и производстве.
Рисунок 2-1.jpg

На рисунке 2-1 показан сигнал, захваченный с использованием PicoScope, который прослушивает как CANH (более темные линии в верхней части графика), так и CANL (более светлые линии внизу диаграммы). Обратите внимание, что когда бит передается по шине CAN, сигнал будет одновременно транслироваться как на 1V выше, так и ниже. Датчики и ЭБУ имеют трансивер, который проверяет, чтобы оба сигнала были инициированы; если это не так, приемопередатчик отклоняет пакет как шум. Два витых пары проводов составляют шину и требуют, чтобы шина заканчивалась на каждом конце. На концах концов на обоих проводах имеется резистор на 120 Ом. Если модуль не находится на конце шины, ему не нужно беспокоиться о завершении. Как кто-то, кто может подключиться к линиям, единственный раз, когда вам нужно беспокоиться о завершении, вы должны удалить завершающее устройство, чтобы снифить провода.

Разъем OBD-II
Многие транспортные средства оснащены разъемом OBD-II, также известным как разъем диагностического соединения(DLC), который взаимодействует с внутренней сетью автомобиля. Обычно вы найдете этот разъем под рулевой колонкой или скрытый в другом месте на тире в относительно доступном месте. Возможно, вам придется охотиться за ней, но ее схема похожа на ту, что показана на рисунке 2-2.

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

В некоторых автомобилях вы найдете эти разъемы за небольшими панелями доступа. Обычно они будут либо черными, либо белыми. Некоторые из них легко доступны, а другие - под пластиком. Ищите, и вы найдете!

Поиск CAN-соединения
CAN легко найти при охоте через кабели, потому что его напряжение покоя составляет 2,5 В. Когда поступает сигнал, он будет добавлять или вычитать 1 В (3,5 В или 1,5 В). Провода CAN проходят через транспортное средство и соединяются между ЭБУ и другими датчиками, и они всегда находятся в двухпроводных парах. Если вы подключите мультиметр и проверьте напряжение проводов в своем автомобиле, вы обнаружите, что они будут находиться в состоянии покоя при 2.5 В или колебаться на 1 В. Если вы обнаружите провод, передающий на 2,5 В, это почти наверняка CAN. Вы должны найти CANH и CANL соединения на контактах 6 и 14 вашего разъема OBD-II, как показано на рисунке 2-3.
Рисунок 2-3.jpg

На рисунке контакты 6 и 14 предназначены для стандартных высокоскоростных линий CAN (HS-CAN). Среднескоростная и низкоскоростная связь происходит на других контактах. Некоторые автомобили используют CAN для средних скоростей (MS-CAN) и Lowspeed (LS-CAN), но многие транспортные средства используют разные протоколы для этих сообщений. Вы обнаружите, что не все шины открыты через разъем OBD-II. Вы можете использовать монтажные схемы, чтобы помочь найти дополнительные «внутренние» шины.

Платформа пакетов шин CAN
Существует два типа CAN-пакетов: стандартный и расширенный. Расширенные пакеты похожи на стандартные, но с большим объемом для хранения идентификаторов.

Стандартные пакеты

Каждый пакет CAN-шины содержит четыре ключевых элемента:

Идентификатор арбитража

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

Расширение идентификатора (IDE) Этот бит всегда равен 0 для стандартного CAN.

Код длины данных (DLC). Это размер данных, который колеблется от 0 до 8 байтов.

Данные Это сами данные. Максимальный размер данных, передаваемых стандартным пакетом CAN-шины, может быть до 8 байтов, но некоторые системы вынуждают 8 байтов путем заполнения пакета. На рисунке 2-4 показан формат стандартных CAN-пакетов.
Рисунок 2-4.jpg

Поскольку передаются пакеты шины CAN, все контроллеры в одной сети видят каждый пакет, вроде UDP в сетях Ethernet. Пакеты не содержат информацию о том, какой контроллер (или злоумышленник) отправил то, что. Поскольку любое устройство может видеть и передавать пакеты, для любого устройства на шине тривиально имитировать любое другое устройство.

Расширенные пакеты

Расширенные пакеты похожи на стандартные, за исключением того, что они могут быть соединены вместе для создания более длинных идентификаторов. Расширенные пакеты предназначены для установки внутри стандартного форматирования CAN, чтобы поддерживать обратную совместимость. Поэтому, если у датчика нет поддержки расширенных пакетов, он не будет прерываться, если другой пакет передает расширенные CAN-пакеты в одну и ту же сеть. Стандартные пакеты также отличаются от расширенных при использовании флагов. Рассматривая расширенные пакеты в дампе сети, вы увидите, что в отличие от стандартных пакетов расширенные пакеты используют вместо удаленных запросов (SRR) вместо удаленного запроса на передачу (RTR) с SSR, установленным в 1. Они также будут иметь IDE установлена в 1, а их пакеты будут иметь 18-битный идентификатор, который является второй частью стандартного 11-битного идентификатора. Существуют дополнительные протоколы CAN-стиля, характерные для некоторых производителей, и они также обратно совместимы со стандартным CAN-интерфейсом так же, как и расширенный CAN.



Протокол ISO-TP
ISO 15765-2, также известный как ISO-TP, является стандартом для отправки пакетов по шине CAN, которая расширяет 8-байтовое ограничение CAN для поддержки до 4095 байт путем объединения CAN-пакетов вместе. Наиболее частое использование ISO-TP для диагностики и KWP-сообщений (альтернативный протокол CAN), но также может использоваться в любое время, когда необходимо передавать большие объемы данных CAN. Программа can-utils включает в себя isotptun, средство туннелирования доказательной концепции для SocketCAN, которое позволяет двум устройствам туннелировать IP через CAN. (Подробное объяснение того, как устанавливать и использовать can-utils, будет в 3 главе.) Чтобы инкапсулировать ISO-TP в CAN, первый байт используется для расширенных адресация, оставляя только 7 байтов для данных на пакет. Передача большого количества информации по ISO-TP может легко затопить шину, поэтому будьте осторожны при использовании этого стандарта для больших передач на активной шине.


Протокол CANopen
Другим примером расширения протокола CAN является протокол CANopen. CANopen разбивает 11-битный идентификатор на 4-битный функциональный код и 7-битный идентификатор узла - комбинацию, известную как идентификатор объекта связи (COB-ID). Широковещательное сообщение в этой системе имеет 0x как для кода функции, так и для идентификатора узла. CANopen больше виден в промышленных условиях, чем в автомобильных. Если вы видите кучу идентификаторов арбитража 0x0, вы нашли хороший индикатор того, что система использует CANopen для связи. CANopen очень похож на обычную CAN, но имеет определенную структуру вокруг идентификаторов арбитража. Например, сообщения сердцебиения находятся в формате 0x700 + идентификатор узла. Сети CANopen немного легче отформатировать и документировать, чем стандартная CAN-шина.GMLAN Bus GMLAN - это реализация шины CAN от General Motors. Он основан на ISO 15765-2 ISO-TP, как UDS . Шина GMLAN состоит из однопроводной низкоскоростной и двухскоростной высокоскоростной шины. Низкоскоростная шина, однопроводная CAN-шина, которая работает со скоростью 33,33 Кбит / с с максимум 32 узлами, была принята для снижения стоимости связи и проводки. Он используется для транспортировки некритической информации для таких вещей, как информационно-развлекательный центр, системы ОВК, дверные замки, иммобилайзеры и т. Д. Напротив, высокоскоростная шина работает со скоростью 500 Кбит / с с максимум 16 узлами. Узлы в сети GMLAN относятся к датчикам на этой шине.


Протокол Sae J1850
Протокол SAE J1850 был первоначально принят в 1994 году и все еще может быть найден в некоторых современных транспортных средствах, например, в некоторых транспортных средствах General Motors и Chrysler. Эти шинные системы старше и медленнее, чем CAN, но дешевле в реализации. Существует два типа протоколов J1850: широтно-импульсная модуляция (PWM) и переменная ширина импульса (VPW). На рисунке 2-5 показано, где найти штырьки ШИМ на разъеме OBD-II. VPW использует только штырь 2.
Рисунок 2-5.jpg

Скорость группируется в три класса: A, B и C. Скорости PWM и VPW со скоростью 10,4 Кбит / с считаются классом А, что означает, что они являются устройствами, предназначенными исключительно для использования в бизнесе, промышленности и коммерческой среде. (Шина J1850 VPW 10,4 Кбит / с соответствует требованиям к автомобильной промышленности для излучения с низким уровнем излучения.) Приборы класса B продаются для использования в любом месте, включая жилые помещения, и имеют вторую стандартную реализацию SAE, которая может поддерживать связь со скоростью 100 Кбит / с, но она немного дороже. Окончательная реализация может работать со скоростью до 1 Мбит / с, и она используется в устройствах класса С. Как и следовало ожидать, эта третья реализация является самой дорогостоящей и используется в основном в критических системах реального времени и в медиа-сетях.

Протокол PWM
использует дифференциальную сигнализацию на контактах 2 и 10 и в основном используется Ford. Он работает с высоким напряжением 5 В и 41,6 Кбит / с, и он использует двухпроводную дифференциальную сигнализацию, например CAN. PMW имеет сигнал с фиксированным битом, поэтому 1 всегда является высоким сигналом, а 0 всегда является низким сигналом. Кроме того, протокол связи идентичен протоколу VPW. Различия - это скорость, напряжение и количество проводов, используемых для создания шины.


Протокол VPW
VPW, однопроводная шинная система, использует только контакт 2 и обычно используется General Motors и Chrysler. VPW имеет высокое напряжение 7 В и скорость 10,4 Кбит / с. По сравнению с CAN, существуют некоторые ключевые различия в том, как VPW интерпретирует данные. Во-первых, поскольку VPW использует зависящую от времени сигнализацию, прием 1 бит не определяется только высоким потенциалом на шине. Бит должен оставаться высоким или низким в течение установленного времени, чтобы считаться одним 1 бит или 0 бит. Потянув автобус на высокое положение, он будет стоять около 7 В, а посылая низкий сигнал, он поднимет его на землю или около земли. Эта шина также находится на стадии покоя или без пересадки на уровне земли (до 3 В). Пакеты VPW используют формат на рисунке 2-6.
Рисунок 2-6.jpg

Секция данных представляет собой заданный размер - всегда 11 бит, за которым следует 1-битная проверка достоверности CRC. Таблица 2-1 показывает значение бит заголовка.
Таблицы 2-1.jpg

Данные по кадрам (IFR) могут следовать сразу после этого сообщения. Как правило, сигнал конца данных (EOD), состоящий из низкопотенциального сигнала длиной 200 мкс, будет иметь место сразу после CRC, и если данные IFR будут включены, он начнется сразу после EOD. Если IFR не используется, EOD будет расширяться до 280 мкс, вызывая сигнал конца кадра (EOF).


The keyword Protocol и Iso 9141-2
Ключевой протокол 2000 (ISO 14230), также известный как KWP2000, использует контакт 7 и распространен в автомобилях США, сделанных после 2003 года. Сообщения, отправленные с использованием KWP2000, могут содержать до 255 байт.Протокол KWP2000 имеет два варианта, которые отличаются главным образом при инициализации бода. Возможны следующие варианты:
• ISO 14230-4 KWP (5-бод. Init, 10,4 Kbaud)
• ISO 14230-4 KWP (быстрый запуск, 10,4 Кбод)
ISO 9141-2 или K-Line - это вариант KWP2000, который чаще всего встречается в европейских транспортных средствах. K-Line использует контакт 7 и, необязательно, контакт 15, как показано на рисунке 2-7.
Рисунок 2-7.jpg

K-Line - это протокол UART, похожий на последовательный. UART используют стартовые биты и могут включать бит четности и стоповый бит. (Если вы когда-либо устанавливали модем, вы должны признать эту терминологию.)На рисунке 2-8 показана компоновка пакета протокола.
Рисунок 2-8.jpg

В отличие от CAN-пакетов, пакеты K-Line имеют источник (передатчик) и адрес получателя (получателя). K-Line может использовать такую же или аналогичную структуру запросов ID (PID) как CAN.


Локальный сетевой протокол межсетевого соединения
Локальная сеть межсоединений (LIN) является самым дешевым протоколом транспортного средства. Он был разработан для дополнения CAN. У него нет арбитражного или приоритетного кода; вместо этого один главный узел выполняет всю передачу. LIN может поддерживать до 16 подчиненных узлов, которые в основном просто прослушивают главный узел. Им нужно иногда реагировать, но это не их основная функция. Часто главный узел LIN подключается к CAN-шине. Максимальная скорость LIN составляет 20 Кбит / с. LIN - это однопроводная шина, работающая при напряжении 12 В. Вы не увидите LIN, вырвавшегося на разъем OBD, но он часто используется вместо прямых CAN-пакетов для управления элементами управления на простых устройствах, поэтому имейте в виду его существование. Кадр сообщения LIN включает в себя заголовок, который всегда отправляется мастером, и секцию ответа, которая может быть отправлена ведущим или ведомым (см. Рис. 2-9).

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

Поле SYNC используется для синхронизации часов. Идентификатор представляет собой содержимое сообщения, то есть тип передаваемых данных. Идентификатор может содержать до 64 возможностей. ID 60 и 61 используются для передачи диагностической информации. При чтении диагностической информации мастер отправляет с идентификатором 60, а подчиненный отвечает идентификатором 61. Все 8 байтов используются в диагностике. Первый байт называется адресом узла для диагностики (NAD). Первая половина диапазона байтов (то есть 1-127) определена для ISO-совместимой диагностики, а 128-255 может быть специфичной для этого устройства.

Протокол MOST
Протокол Media Oriented Systems Transport (MOST) предназначен для мультимедийных устройств. Как правило, MOST размещается в кольцевой топологии или виртуальной звезде, которая поддерживает максимум 64 устройства MOST. Одно MOST-устройство действует как мастер синхронизации, который непрерывно подает кадры в кольцо. MOST работает примерно на 23 Мбод и поддерживает до 15 несжатых аудио компакт-дисков или аудио / видеоканалов MPEG1. Отдельный канал управления работает на скорости 768 Кбод и отправляет сообщения конфигурации устройствам MOST. MOST поставляется с тремя скоростями: MOST25, MOST50 и MOST150. Стандарт MOST или MOST25 работает на пластмассовом оптическом волокне (POF). Транс-миссия выполняется через длину волны красного света при 650 нм с использованием светодиода. Аналогичный протокол MOST50 удваивает пропускную способность и увеличивает длину кадра до 1025 бит. Трафик MOST50 обычно переносится на неэкранированные кабели с витой парой (UTP) вместо оптического волокна. Наконец, MOST150 реализует Ethernet и увеличивает частоту кадров до 3072 бит или 150 Мбит / с - примерно в шесть раз большую пропускную способность MOST25. Каждый кадр MOST имеет три канала: Синхронные потоковые данные (аудио / видео)
Асинхронные пакетные распределенные данные (TCP / IP)
Управление и низкоскоростные данные (HMI)
В дополнение к ведущему устройству синхронизации мастер сети MOST автоматически назначает адреса устройствам , что позволяет создавать плагиновую структуру. Еще одна уникальная особенность MOST заключается в том, что, в отличие от других автобусов, она маршрутизирует пакеты через отдельные порты inport и outport.




Сетевые уровни MOST
Если ваша цель - взломать видео или аудиопоток автомобиля, возможно, вам не интересен протокол MOST. Тем не менее, MOST разрешает доступ к автомобильному микрофону или системе сотовой связи, а также информацию о трафике, которая может представлять интерес для авторов вредоносных программ. На рисунке 2-10 показано, как MOST разделяется между семью слоями модели Open Systems Interconnection (OSI), которая стандартизирует связь по сетям. Если вы знакомы с другими сетевыми протоколами на основе мультимедиа, MOST может выглядеть знакомым.
Рисунок 2-10.jpg





Блоки управления MOST
В MOST25 блок состоит из 16 кадров. Кадр имеет 512 бит и выглядит как иллюстрация на рисунке 2-11.

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

Синхронные данные содержат от 6 до 15 квадратов(каждый квадрат 4 байта), а асинхронные данные содержат от 0 до 9 квадратов. Кадр управления равен 2 байтам, но после объединения полного блока или 16 кадров вы получите 32 байт данных управления. Смонтированный блок управления выложен, как показано на рисунке 2-12.
Рисунок 2-12.jpg

Область данных содержит FblockID, InstID, FktID, тип OP, Tel ID, Tel Len и 12 байтов данных. FblockID - это идентификаторы основных компонентов или функциональные блоки. Например, FblockID 0x52 может быть навигационной системой. InstID - это экземпляр функционального блока. Может быть более одной основной функции, такой как наличие двух изменений CD. InstID отличает, к какому ядру говорить. FktID используется для запроса функциональных блоков более высокого уровня. Например, FktID 0x0 запрашивает список идентификаторов функций, поддерживаемых функциональным блоком. Тип OP - это тип операции для выполнения, получения, установки, увеличения, уменьшения и т. Д. Tel ID и Len являются типом телеграммы и длины соответственно. Типы телеграмм представляют собой единую передачу или передачу мультипакетов и длину самой телеграммы. MOST50 имеет аналогичную компоновку для MOST25, но с большей секцией данных. MOST150 обеспечивает два дополнительных канала: Ethernet и изохронный. Ethernet работает как обычные настройки TCP / IP и Appletalk. Изохронный имеет три механизма: пакетный режим, постоянную скорость и потоковое вещание пакетов.

Взлом MOT
MOST можно взломать с устройства, которое уже поддерживает его, например, через информационно-развлекательный блок транспортного средства или через встроенный контроллер MOST. Linux-проект most4linux предоставляет драйвер ядра для устройств MOST PCI и, на момент написания этой статьи, поддерживает карты Siemens CT SE 2 и OASIS Silicon Systems или SMSC PCI. Драйвер most4linux позволяет осуществлять связь между пользователями через сеть MOST и связывается с инфраструктурой звуковой архитектуры Advanced Linux (ALSA) для чтения и записи аудиоданных. В настоящий момент most4linux следует рассматривать как альфа-качество, но оно включает в себя некоторые утилиты, которые вы можете использовать, а именно:

Код:
most_aplay    ; запускает .wav файл
ctrl_tx        ; Отправляет сообщение управления широковещательной передачей и проверяет состояние
sync_tx        ; Постоянно передавать
sync_rx        ; Постоянно получать
Текущий драйвер most4linux был написан для 2.6 ядер Linux, поэтому вы можете, если хотите, сделать общий сниффер. MOST довольно дорого реализуется, поэтому общий снифер не будет дешевым.


В следующей части будут рассмотрены: Шина FlexRay(Циклы,сниффинг сети,её части) и OBD -III стандарт,соединение.А дальше после полезной, но соглашусь, скучной теории,отправимся кодить
Не успел замутить в pdf файле,думаю 2 часть напишу еще так,а 3 главу скринам из pdf (Начал переводить 4 главу,но выпускать нет времени,ибо изучение С++ дается тяжеловато(Я не про основы,а про advenced уровень(сети,сокеты,я еще тему с указателями немного не допер))
 
Мы в соцсетях:

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