Car Hacking: так ли безопасны системы безопасности автомобиля? / Журнал Хакер / Хабр
Car Hacking: так ли безопасны системы безопасности автомобиля?
Автомобили обросли огромным количеством электроники, начиная со спидометра и заканчивая контроллером тормозной системы. Все эти устройства связаны в единую локальную сеть, что дает простор для попыток влезть в нее и немного там обжиться. В этой статье я расскажу, как устроен среднестатистический автомобиль, и постараюсь посеять в тебе паранойю и страх (смайл).
Зачем?
Вопрос на самом деле достаточно актуальный. В интернете полно материалов на тему «взломать автомобиль», есть даже четкие мануалы по исследованию своего авто. Некоторые энтузиасты на вопрос «зачем?» отвечают: «потому что я могу», но забывают упомянуть, что это очень опасно. Бортовая система автомобиля достаточно хрупкая вещь, несмотря на всю возложенную на нее ответственность. Сбои в бортовой системе могут привести как к бытовым и юридическим проблемам, так и к человеческим жертвам. Если ты не уверен в своих действиях, ни в коем случае не пытайся вмешаться в работу автомобиля. В мировых СМИ достаточно много примеров сбоев бортовой системы авто, которые приводят к отказу тормозов (почему-то самая уязвимая часть, если судить по СМИ, а возможно, просто самая лакомая пища для журналистов), и это без каких-либо (а так ли это?) вмешательств со стороны хакеров.
Будь бдителен
Главное, что движет злоумышленником, — жажда захватить твое имущество: от ценностей, находящихся внутри авто, до самого авто. Для воплощения этой затеи необходимо либо проникнуть в автомобиль, пока он пуст, либо заставить владельца покинуть свой автомобиль в укромном месте, где и провернуть свое грязное дело. Как заставить водителя выйти из авто? Например, сообщить бортовому компьютеру, что давление в шинах намного ниже нормы. В обычной ситуации 99% автовладельцев остановятся, чтобы выйти и посмотреть, в чем дело. Однако встречались и проницательные водители, которые, прокатившись по «ежам» на трассе посреди леса, проехали на дисках еще несколько километров, сохранив себе жизнь и авто. Будь бдителен и осторожен, если вдруг твой автомобиль сломался именно в глухом месте. Возможно, это неспроста.
Введение
Автомобили за ничтожно малое время прошли огромный по масштабам технологического прогресса путь. Сегодня практически любой автомобиль напичкан электроникой настолько, что для привычных «аналоговых» механизмов, соединяющих непосредственно водителя и автомобиль, почти не осталось места. Все эти «электронные» усилители руля, антипробуксовочная система, тормозная система, педаль акселератора — все это управляется компьютером.
Автомобили постепенно обрастают различными плюшками и примочками для комфорта водителя и пассажиров, что создает новые опасности проникновения в сеть бортовой электроники. С появлением беспроводных каналов связи с авто (гарнитура Bluetooth, Wi-Fi) полигон для хакеров расширился в разы. В этой статье мы не будем прямо затрагивать варианты проникновения по беспроводным каналам, а посмотрим в сторону проводных технологий.
Для автомобильной промышленности производители микроконтроллеров выпускают отдельные специальные линейки своих продуктов. Причем делают это тихо, по особым заказам, и для широкой общественности (да и узкой тоже) такие продукты недоступны. Основные особенности таких контроллеров:
- специфический набор периферии;
- шифрование прошивки и расшифровка кода на лету при выполнении;
- многоядерность со встроенным механизмом общей памяти и разделением доступа к этой памяти.
Код прошивки пытаются защитить от дизассемблирования, реверс-инжиниринга и, в итоге, перепрошивки микроконтроллера. Однако, помимо возможности непосредственного «отравления» прошивки, существует одна глобальная проблема. Автомобиль, как я уже сказал, просто напичкан электроникой. Вся эта силиконовая (упс, конечно же, кремниевая :)) армия микроконтроллеров должна как-то между собой общаться, а также взаимодействовать с человеком (водителем, пассажиром) и внешними факторами. Для обеспечения этих диалогов между контроллерами в автомобиле есть настоящая внутренняя сеть.
Поначалу, как и в любой индустрии, достаточно долго каждый автостроитель городил собственный огород и шел своим путем. Но, как это обычно бывает, автостроители захотели ставить сторонние модули, произведенные такими же кустарями. Так и возникла необходимость стандартизации аппаратных и программных протоколов. Основным к настоящему времени стал физический протокол CAN (хотя и этого CAN’а существует много вариаций).
Структура сети
Еще не так давно основная задача, возлагаемая на бортовую систему авто, сводилась к расстановке датчиков в контрольных точках (уровень топлива, температура масла) и отображению состояния на приборной панели. В основном это были самостоятельные устройства, которые огромным жгутом собирались на центральном блоке. Как ты понимаешь, анализ одного сигнала — это два провода, управление одним исполнительным устройством — это тоже два провода (рис. 1).
Рис. 1. Один центральный блок управления
Но со временем системы управления автомобильной электроникой стали усложняться, и автопроизводители начали выделять функциональные блоки. В такой ситуации одни и те же датчики используются разными функциональными блоками, что влечет за собой уже кошмар, как на рис. 2.
Рис. 2. Три функциональных блока
Выход — объединить все в сеть. В этом случае каждый функциональный блок опрашивает «родные» ему датчики, а «соседям» по запросу может отдать результаты измерения (либо рассылает в режиме «маячка»), а также передать от «соседа» управляющую команду «родному» датчику.
Рис. 3. Три функциональных блока объединены в сеть
Казалось бы, вершина эволюции, но встает вопрос-проблема: есть блоки управления и мониторинга критически важных параметров (например, тормоза или ABS). Также есть блоки комфорта (кондиционер, управление стеклоподъемниками). Если одновременно по одной шине начнет идти трафик для кондиционера и тормозов, то может случиться, что попрохладнее ты сделаешь последний раз в жизни. Для разрешения подобной ситуации шины разделяют физически, также для критически важных систем обмен данными идет на более высоких скоростях.
Но все-таки это сеть, а значит, нужно коммутировать шины между собой. Для этого используют шлюз (CAN gateway), который фактически выполняет функции обычного такого роутера сетей Ethernet:
- логическое объединение шин (медиаконвертер);
- производит арбитраж трафика по уровню критичности (QoS);
- является файрволом и не пропускает в шину трафик, не предназначенный для данной шины (собственно, файрвол он и есть);
- имеет порт для подключения диагностического оборудования.
Как уже упоминалось, существуют датчики и блоки управления узлами разной степени критичности для жизнедеятельности автомобиля. Выделю три основные группы:
- Узлы с требованием реального времени реакции. Управление двигателем, тормозной системой, ABS, электроусилитель руля, подушки безопасности и так далее. Общее название будем использовать ECU-BUS (Engine Control Unit).
- Узлы со средним уровнем времени реакции. Центральный замок, парктроники, наружное освещение (фары, поворотники), датчики давления в шинах. Будем называть в дальнейшем MS-BUS (Middle Speed Bus).
- Узлы второстепенной важности. Навигационная система, мультимедиасистема и прочие плюшки. Будем называть LS-BUS (Low Speed Bus).
Градация эта не официальная, разные производители добавляют свои разделения блоков управления на группы, но нам с тобой хватит и этого.
Помимо того что данные ECU-BUS имеют высокий приоритет на так называемой общей «виртуальной» шине автомобиля, внутри этой группы данные передаются на очень высокой скорости (все-таки тормозить начать желательно как можно раньше после того, как водитель принял решение об этом, а выбросить подушку безопасности желательно до того, как нос водителя достигнет руля). В некоторых автомобилях MS-BUS и LS-BUS объединены, что вносит дополнительные проблемы безопасности (ведь в итоге получается, что центральный замок «висит» на той же шине, что и магнитола).
Разные автопроизводители руководствуются разными стандартами; какой конкретно стандарт используется в твоем авто, ты можешь без проблем найти в интернете.
Обмен данными по шине CAN
Физический уровень
CAN — это акроним от Controller Area Network, то есть специально спроектированная сеть для обмена данными между различными контроллерами. Применяется не только в автомобильной промышленности, но и во многих системах автоматизации.
Шина CAN является двухпроводным интерфейсом, то есть для обмена данными достаточно всего двух сигнальных линий:
- CAN+, CANH, CAN HIGH — сигнал положительного импульса;
- CAN-, CANL, CAN LOW — сигнал отрицательного импульса.
Терминологию я выбрал неслучайно, так как интерфейс является дифференциальным. То есть 0 передается сразу по двум линиям, по CAN+ идет положительный импульс, по CAN- одновременно с CAN+ отрицательный (см. осциллограмму обмена данными по шине CAN). Такой способ физической передачи данных позволяется бороться с шумами на линии (шум искажает одинаково положительную и отрицательную составляющую сигнала).
Рис. 4. Осциллограмма обмена данными по шине CAN
Опорное напряжение — 2,5 В (запомни это значение), 0 называется доминантным битом, 1 — рецессивным. Почему доминантный? Потому что он является активным сигналом, и если два устройства захотят передать одновременно один 1, а второй 0, то на приемнике окажется 0.
Так кто все-таки 0, а кто 1
В электротехнике принято 0 передавать активным сигналом, а 1 — пассивным. В связи с этим может возникнуть путаница, когда физически (измерив мультиметром, осциллографом) на линии ты видишь, казалось бы, 0, но логически это 1. Чуть проще — «висящий пассивно в воздухе» интерфейс будет давать 0xFF (если не используются контрольные биты).
Шина CAN последовательная, то есть биты передаются друг за другом от старшего бита к младшему. Понятие байт к CAN малоприменимо, и в основном оперируют термином «поле», длина поля не обязана быть кратна байту (8 битам).
Протокол обмена
Обмен данными производится фреймами. Фрейм состоит из четырех основных полей:
- идентификатор отправителя, он же является основой арбитража передачи данных;
- управляющее поле;
- данные;
- контрольная сумма.
Рис. 5. Диаграмма фрейма CAN
Особенность интерфейса такова, что передаваемый бит слушается приемником CAN. Таким образом контролируется правильность передачи бит. Эта же особенность позволяет вести арбитраж на линии между желающими передать данные.
Поясню. Взгляни на фрейм: передача идет «слева направо», то есть первым уйдет идентификатор. При передаче идентификатора узел внимательно слушает, что творится на линии. Если он передал 1, а на линии вдруг оказался 0, то это будет означать, что кто-то более приоритетный пытается передать свои данные. В этой ситуации передатчик, поймавший 0 вместо переданного 1, замолкает. Таким образом, чем младше идентификатор у передающего узла, тем выше у него приоритет.
На рис. 6 изображен порядок арбитража на шине CAN. Положим длину идентификатора для удобства равной 8 бит, `node3` имеет ID > 0x10 (00010000b), `node2` имеет ID > 0x20 (00100000b), а `node1` имеет (00000011b). Как видишь, когда `node2` захотел передать 1 из своего идентификатора, ее «забили» `node1` и `node3`, поэтому `node2` будет молчать на время передачи фрейма. Аналогичная ситуация случалась и с `node3`, его 1 забил `node1` своим 0. В итоге остался один `node1`, вытеснив всех своими 0 в идентификаторе.
Рис. 6. Арбитраж на линии CAN
Контроль ошибок
Многие контроллеры ведут учет коллизий на линии. Если по какой-то причине два узла начинают передавать одновременно, не обращая внимания на арбитраж (например, какой-то узел влез в середину посылки фрейма от другого узла), то в итоге не сходится контрольная сумма пакета. В этом случае узел, зафиксировавший ошибку, отправляет в линию сообщение об ошибке передачи. Узел, передававший фрейм, вновь пытается его передать. Если количество подряд идущих ошибок передачи достигает некоего предела, узел замолкает на определенное время. Применительно к автомобильной сети центральный узел делает пометку, что для такого-то узла сети есть проблемы. Помимо страдальца, который не смог отправить фрейм, фиксируется и узел, который зарегистрировал ошибку. Так получается карта неисправности бортовой сети. Бортовой компьютер на основе этой карты может принять решение об отказе электроники и вывести водителю сообщение об этом. Для ошибок в критических линиях бортовой компьютер может даже принять решение аварийно остановить автомобиль.
Возможные точки подключения
Пришло время поискать, куда бы нам воткнуться. Самая желанная точка подключения — это отладочный порт, OBD (OnBoard Debug). OBD используется для диагностики автомобиля на СТО.
Рис. 7. Фото разъема OBD
Почему это такое лакомое место? Сейчас объясню и даже на картинке покажу. Посмотри на распиновку разъема:
1. Manufacturer discretion — * GM: J2411 GMLAN/SWC/Single-Wire CAN[12]
* VW/Audi: Switched +12 to tell a scan tool whether the ignition is on.
* Ford: Infotainment CAN High[12]
2. Bus Positive Line of SAE J1850 PWM and VPW
3. Manufacturer discretion — * Ford: DCL(+) Argentina, Brazil (pre OBD-II) 1997-2000, USA, Europe, etc.
* Ford: Medium Speed CAN-High[12]
* Chrysler: CCD Bus(+)[12]
4. Chassis ground
5. Signal ground
6. CAN-High (ISO 15765-4 and SAE J2284)
7. K-Line of ISO 9141-2 and ISO 14230-4
8. Manufacturer discretion — * BMW: Second K-Line for non OBD-II (Body/Chassis/Infotainment) systems.
9. Manufacturer discretion — * GM: 8192 bit/s ALDL where fitted.
* Ford: Infotainment CAN-Low
10. Bus Negative Line of SAE J1850 PWM only (not SAE J1850 VPW)
11. Manufacturer Discretion — * Ford: DCL(-) Argentina, Brazil (pre OBD-II) 1997-2000, USA, Europe, etc.
* Ford: Medium Speed CAN-Low[12]
* Chrysler: CCD Bus(-)[12]
12. Manufacturer discretion — 13. Manufacturer discretion — * Ford: FEPS – Programming PCM voltage
14. CAN-Low (ISO 15765-4 and SAE J2284)
15. L-Line of ISO 9141-2 and ISO 14230-4
16. Battery voltage
Рис. 8. Распиновка разъема ODB
Сразу бросаются в глаза контакты 6 и 14 (и не только потому, что они зеленым цветом выделены на картинке). Согласно спецификации, это CAN+ и CAN- соответственно. Но это еще не все, на контакты 3 и 11, а также 1 и 9 Ford вывел свои внутренние шины. Делаю акцент на этом неспроста. Штатные CAN+ и CAN- (6-й и 14-й контакты разъема) в общем случае не обязаны соединяться непосредственно с физическими шинами автомобиля. Зачастую на команды по этой шине отвечает контроллер диагностики, либо запросы идут через шлюз, который неплохо справляется с функцией фильтрации (в том числе может фильтровать трафик при движении автомобиля). Протокол обмена по этой шине стандартизирован, и для совместимости все производители выводят туда диагностику. Но вот давать доступ к остальным шинам никто никому не обязан.
CAN можно «пощупать» тремя способами:
- На разъеме OBD можно мультиметром «пощупать» уровень 2,5 В (да-да, тот самый опорный) относительно земли (4-й и 5-й контакты).
- С помощью двухканального осциллографа находишь витую пару проводов, щупами на нее цепляешься и смотришь относительный сигнал «есть чо?» :). При выключенном зажигании, как правило, на CAN тишина, при включении зажигания бортовая электроника начинает «болтать». Можешь потыкать кнопочки управления стеклами, блокировкой дверей, увидел «странное» совпадение — ты у цели (об этом еще поговорим).
- Последний — достаточно ненадежный способ, но, как говорится, лучше что-то, чем вообще ничего. Сопротивление терминирующего резистора в линии CAN равно волновому сопротивлению проводов, а оно, в свою очередь, составляет 120 Ом. Два резистора (по одному на каждый конец линии) дают 60 Ом между CAN+ и CAN-.
Не забываем про необходимость 12V-питания от бортового аккумулятора автомобиля. Скорее всего, без электричества ты, конечно, не останешься, но только в том случае, если автопроизводитель не сделал пакость в виде подачи питания на OBD-порт только при вставленном ключе и включенном зажигании.
Также отмечу следующую особенность: современный автомобиль практически всем управляет с помощью контроллеров. Соответственно, если изучить автомобиль определенной модели, то можно найти провода шины в самых неожиданных местах. Например, кабель от парктроника проходит недалеко от задних фонарей, и доступ к ним можно получить через технологическое отверстие замены лампочек в фарах.
Под капотом найти линии CAN сложнее, но они там есть. Доступ к подкапотному пространству дается не так легко, как салон авто, но не будем исключать и этот вариант.
Слушаем и запоминаем
Итак, ты дочитал до этого места, CAN-шину нашел, что дальше? Дальше начинается самое любопытное.
Во-первых, тебе понадобится «честный» CAN-драйвер. Под драйвером я подразумеваю микросхему преобразования уровней, реализующую физическую часть протокола CAN. Таких в интернете великое множество, есть даже шилд для Arduino CAN-Schield. Зачем честный, ведь можно взять обычную микросхему, преобразующую логический уровень TTL микроконтроллера в сигнал шины CAN? Можно, но не нужно. Вспомни про фиксацию ошибок, лучше возложить весь арбитраж и контроль линии на железку, чем самому анализировать эхо-биты с шины (это еще и не так просто сделать ввиду высоких скоростей на шине), ошибиться где-нибудь и в итоге выдать себя, забив счетчик ошибок. Этот совет, конечно, актуален только в том случае, если не стоит цель довести водителя до сумасшествия, замусорив CAN-шину и взвинтив счетчик ошибок на линии :).
Дальше два варианта:
- Воспользоваться поиском и найти на автомобиль описание протокола.
- Реверс-инжиниринг.
Первым путем ты и сам в состоянии пройти, пойдем вторым. Надо как-то подключиться к шине. Для этого, конечно же, лучше использовать USB или хаб Ethernet-CAN. Обычный USART (RS232) тебе точно не подойдет, скорости нешуточные, и рядовые микросхемы просто не рассчитаны на них.
Подключившись к шине, запускай снифер. Обычный терминал тебе не подойдет, протокола RS232 в CAN нет, и тебе надо ловить сырой битовый трафик. Придется немного поискать специализированный софт в интернете — как платного, так и бесплатного предостаточно, ссылки приводить не буду.
Самый простой способ — повторение такой последовательности действий:
- включить снифер;
- нажать кнопку стеклоподъемника;
- остановить снифер;
- воспроизвести в линию подслушанное;
- наблюдать за результатом.
Вот прямо так, скорее всего, у тебя ничего не получится. Связано это с тем, что трафик придется все-таки разобрать, найти что-то общее, подергать стеклами вверх-вниз. В общем, обычные процедуры при анализе протоколов, за исключением того, что работать придется с непривычным форматом.
Потенциальные атаки
Атака на шину CAN
Пробежавшись еще раз по изложенному материалу делаем, вывод, что с безопасностью в авто все плохо. Все очень плохо. Не так давно в журнале уже публиковался обзор дырявости SCADA-систем. Но для того, чтобы в SCADA-систему проникнуть, необходимо получить доступ на объект, после чего физически уже попасть в систему (если система не имеет выхода во внешний мир, конечно, иначе все упрощается). В автомобиле доступ «на объект» получить гораздо проще.
Наверное, будет логично спросить: что же так долго было распинаться про CAN? Ответ на поверхности: получив доступ к шине (в любом ее проявлении), ты получаешь полный доступ ко всей электронике автомобиля в том или ином виде. А это значит, что ты можешь вытворять практически все что угодно с двигателем, тормозами, центральным замком и прочими узлами, подключенными к сети CAN (или сопряженными с ней).
Микроконтроллеры, используемые в автомобильной автоматике, содержат модуль аппаратного шифрования. Однако трафик почему-то не шифруется (по крайней мере то, что мне встречалось). Правда, есть один бонус в противовес: вс-таки в некоторых автомобилях датчики надо прописывать на гейте.
Скажу еще пару слов про безопасность многострадального OBD-разъема. Его расположение скрыто от глаз. Но от глаз кого? Пользователя, то есть автовладельца. Разглядеть какой-то гаджет в разъеме OBD достаточно проблематично. В интернете продается полно «адаптеров» для этого самого OBD-разъема, позволяющих использовать Wi-Fi и Bluetooth для доступа к «диагностическим» данным.
Защита OBD-разъема
Страстей я нагнал достаточно, а что же делать, как себя спасти? Народные умельцы не дремлют, как и инженеры — профессионалы своего дела. Первые предлагают купить специальный мини-сейф для разъема OBD… с ключиком… Да, ты все верно прочитал, вытаскивается разъем из штатного места и закрывается на ключ в металлический ящичек. Вторые же, которые инженеры, предлагают поставить перемычку, подключаемую к замку зажигания, либо электронный ключ в цепь зажигания. Вставляешь ключ в замок, включаешь зажигание — провода OBD-разъема коммутируются и разъем функционален, вытащил ключ — разъем «висит в воздухе».
Универсальный модем ELM327
Структурная схема ELM327
Вбив запрос в Гугл по теме OBD-адаптеров, ты получишь такое количество устройств, что глаза разбегаются. Есть популярные, есть не очень. На коне компания ELM Electronics, производящая микросхемы серии ELM. На базе этих чипов построено большинство адаптеров. Микросхемы представляют собой мост между USART- и OBD-портом, на одном конце физика CAN, на другом USART с интерфейсом AT-команд. Чип получает АТ-команды, болтает на «птичьем» с автомобилем по шине CAN и возвращает ответ в универсальном формате. Самый крутой чип — ELM327, он поддерживает огромное количество протоколов, моделей автомобилей, поддерживает добавление параметров, которые еще не содержатся во внутренней памяти. Периодически выходят новые версии этой микросхемы, расширяя список автомобилей и считываемых параметров. Must have, если ты хочешь сделать свою крутую железку диагностики авто. Одна из приятных фишек — ELM327 имеет возможность работать в режиме снифера и демонстрировать тебе весь трафик CAN-шины. Микросхема выпускается в двух исполнениях: обычное энергопотребление и пониженное энергопотребление. Менее прожорливая микросхема имеет также незначительное отличие в назначении одного вывода (подробнее смотри даташит на сайте производителя).
Подключившись к автомобилю железкой, все-таки продолжаешь хотеть красоты. OBD-адаптеры на базе ELM327 растут как грибы после дождя, а протокол поддержан во многих софтинах, самые популярные — OBD Auto Doctor, DashBoard.
Эти устройства позиционируются либо как «игрушка» (то есть просто дополнительный экранчик на мобильном гаджете, показывающий скорость, уровень топлива и еще много параметров, которые не отображает штатный бортовой компьютер), либо как удобный способ диагностики или сброса ошибок бортового компьютера автомобиля без проводов. Что тут сказать? Прошивка этого «адаптера» известна только производителю, массовые закладки в BIOS мы уже проходили, а собрать такой же адаптер не составит особого труда, так как запчастей всего: микроконтроллер, беспроводной модуль, драйвер CAN. В итоге, собрав незамысловатое устройство, получающее по Wi-Fi или Bluetooth команду, можно открыть автомобиль. Установка такого «гаджета» останется незаметной для владельца, а возможностей установить его, поверь, больше чем достаточно (посчитай в минутах, сколько твой автомобиль находится открытый, без присмотра, а воткнуть железку в разъем — дело пары секунд).
Пока ты искал по всему автомобилю провода шины CAN, наверняка мог заметить места, где эта самая шина находится практически под рукой. При определенной сноровке зацепить на шину шпиона — дело тех же секунд.
Отдельным пластом стоят бортовые мультимедиасистемы. Послушать радио — это уже прошлый век, теперь подавай мультики детям на мониторы в передних сиденьях, видео пассажиру, навигацию водителю, а также хорошо бы еще телефон скрестить с авто и интернет, чтобы в пробке почитать новости и почту. Все эти красоты достаются непросто, если делать их с нуля, НО! Но в мультимедиасистемах авто стоят операционные системы типа Windows, Linux, Android, портированные под ARM (Android особо и портировать нечего). Архитектура ARM, конечно, усложняет жизнь, не все хак-фишки работают так же, как на x86 (а то и вообще не работают), но зато есть и свои особенности и баги. Одной из дверей в систему служат «отравленные» видео- или звуковые файлы, подсовывание флешек с автозапуском (наткнулся один раз на такую систему, которая вдруг решила стартануть автозапуск с флешки, вставленной в USB-разъем). Отдельная тема — это «CD-диски для навигационной системы» :). Какое-то время это был популярный способ захватить ось авто, так как навигационный софт был уж ну совсем дырявый.
Приятный бонус для хакера — постоянно растущая популярность новомодных беспроводных технологий (новомодных для авто). Так как в бортовой технике эти технологии в новинку, то они переживают период пока еще дырявого развития (уж домашние роутеры сколько лет существуют на рынке, а дыры там одна смешнее другой). Опубликовано множество результатов анализа защищенности беспроводных соединений с бортовым компьютером, с каждым годом они утешительнее, но пока рано говорить о зрелости.
Получив доступ к мультимедиасистеме (если доступ через беспроводной канал предоставляется только к ней), ты получаешь автоматом доступ к шине CAN (хоть какой-то), дальше сценарий понятен.
Сигнализация
Воющая по ночам занудная штука. Так сигнализацию назовут в любом городе, где автомобили паркуются во дворе. Сигнализации прошли тяжелый путь развития от обычных кричалок, срабатывающих при замыкании концевиков на дверях и капоте, до целых систем безопасности со спутниковым модемом.
Основной техникой вскрытия сигнализации является прослушка эфира. Этот старый прием не потерял своей актуальности со времен простых систем с ручным кодированием брелока (бинарный код выставлялся переключателями в брелоке и на автомобиле) и по сей день. Прослушивается эфир во время постановки и снятия авто с охраны, повторяется последовательность без владельца, открывается авто. Только системы стали сложнее, авто все чаще и больше хочет «поболтать» с брелоком, чтобы определить, свой это или чужой, появились сложные алгоритмы кодирования последовательностей диалога автомобиля с брелоком. Однако реверс-инжиниринг никто не отменял, хакеры слушают, запоминают, разбирают протокол по кусочкам и открывают автомобили. Тут, как и во всеобщей проблеме шифрования, продолжается борьба за усиление стойкости шифра, дабы сделать метод взлома дороже, чем сам объект взлома, при этом не сделав из брелока сигнализации дата-центр.
Интересные особенности из жизни страхователей
Задумывался ли ты, как считается стоимость страховки автомобиля? Казалось бы, вот стоят два авто, стоимость одинаковая, но оформить КАСКО на один автомобиль в два раза дороже, чем на второй. Почему? Многие страховые компании предлагают онлайн-калькулятор, на котором ты можешь посчитать страховку для своего железного друга. Что сразу же отражается на стоимости — наличие сигнализации. Но берем опять два автомобиля, оба с сигнализацией, но сумма все равно расходится существенно. Исключаем фактор популярности авто на рынке (как один из основополагающих при угоне автомобиля), берем одинаковые по популярности автомобили. ОПЯТЬ РАЗНИЦА. Да что ж такое? А вот тут как раз вступает фактор надежности бортовой защиты автомобиля от угона и вскрытия. Чем электроника в авто сложнее и более стрессоустойчива против «лома» хакера, тем надежнее автомобиль, тем меньше шансов, что его угонят, тем меньше страховая компания рискует своими средствами. Не буду тыкать пальцем, но на моей памяти есть не один факт, когда хакеры находили легкий способ вскрывать центральный замок автомобиля определенной марки и страховая сумма на эти автомобили тут же взлетала.
Трендом в наше время можно назвать сигнализацию с GSM-модемом и GPS-трекером. Тут появляются соответствующие им две цели атак:
- GPS;
- GSM.
С GPS все более или менее однозначно: запутать GPS, чтобы не сработал выход из зоны охраны, либо «увести» подставными координатами автомобиль в противоположное направление.
С GSM немножко интереснее. Первое, что приходит в голову, — заглушить сигнал GSM, чтобы блок сигнализации не смог отправить тревожное сообщение на пульт охраны. Ответом производителей автосигнализаций было добавление keepalive. Если за отведенный интервал на сервер не приходит «маячок» от автомобиля, стоит забеспокоиться. Очередным витком развития сигнализаций стала обратная связь с авто через GSM, как следствие, появились дыры и «закладки». Закладки «от производителя», конечно, появились раньше, чем было объявлено «официально» о существовании обратной связи. Разработчики сигнализаций давно уже научились и следить за автомобилями, и обновлять прошивки втихаря. Собственно, сама фишка обратной связи пришла от более простых брелочных сигнализаций, увеличилось только расстояние до объекта управления и сложность системы. Пришлось ведь реализовать какой-то протокол, защита получения команды только от санкционированных отправителей. Однако не так давно было продемонстрировано, что все это также подлежит расчленению и взлому.
Отдельным островком остается дополнительная защита в виде иммобилайзера. Однако, если вспомнить, что иммобилайзеры представляют собой обычную RFID-метку со всеми ее достоинствами и недостатками, вектор атаки моментально становится ясен.
Вместо заключения
Как бы я тут ни драматизировал, реальный взлом автомобиля — дело далеко не тривиальное и недешевое. Автопроизводители постоянно придумывают какие-то фишки, чтобы лишить возможности подключения к шине автомобиля, закрывают дыры в софте, доступном пользователю. Однако хакеры не дремлют, война уже объявлена. Подливает в огонь масла Google, желающая выпустить полностью автоматизированный гугломобиль. В ответ на желание «корпорации добра» хакеры и скептики предупреждают, что пока, наверное, рановато выпускать автопилот для автомобиля. Авто — не самолет за десятью заборами и с кучей охраны, это живая мишень, стоящая в каждом дворе. Будь внимателен, не подпускай незнакомых личностей к своему имуществу, не забывай ставить на сигнализацию, ну и проявляй общую бдительность.
WARNING
Материал представляет собой результаты исследования автора и не может быть расценен как документация-первоисточник, а также не является руководством к действию.
WARNING
Если решишь лезть в автомобильную электронику, будь аккуратен, перепроверь лишний раз зажигание и убедись, что ты все правильно подключил. Короткое замыкание лишит тебя гарантии (а может, и бортовой электроники).
Перед поездкой на ТО покопайся в интернете на предмет обновлений прошивки для твоего бортового компьютера. Если производитель выпустил новую версию, уточни у дилера, обновят ли они ВПО.
Источник http://m.habr.com/ru/company/xakep/blog/256661/