Автомобили обросли огромным количеством электроники, начиная со спидометра и заканчивая контроллером тормозной системы. Все эти устройства связаны в единую локальную сеть, что дает простор для попыток влезть в нее и немного там обжиться. В этой статье я расскажу, как устроен среднестатистический автомобиль, и постараюсь посеять в тебе паранойю и страх (смайл).
Зачем?
Вопрос на самом деле достаточно актуальный. В интернете полно материалов на тему «взломать автомобиль», есть даже четкие мануалы по исследованию своего авто. Некоторые энтузиасты на вопрос «зачем?» отвечают: «потому что я могу», но забывают упомянуть, что это очень опасно. Бортовая система автомобиля достаточно хрупкая вещь, несмотря на всю возложенную на нее ответственность. Сбои в бортовой системе могут привести как к бытовым и юридическим проблемам, так и к человеческим жертвам. Если ты не уверен в своих действиях, ни в коем случае не пытайся вмешаться в работу автомобиля. В мировых СМИ достаточно много примеров сбоев бортовой системы авто, которые приводят к отказу тормозов (почему-то самая уязвимая часть, если судить по СМИ, а возможно, просто самая лакомая пища для журналистов), и это без каких-либо (а так ли это?) вмешательств со стороны хакеров.
Будь бдителен
Главное, что движет злоумышленником, — жажда захватить твое имущество: от ценностей, находящихся внутри авто, до самого авто. Для воплощения этой затеи необходимо либо проникнуть в автомобиль, пока он пуст, либо заставить владельца покинуть свой автомобиль в укромном месте, где и провернуть свое грязное дело. Как заставить водителя выйти из авто? Например, сообщить бортовому компьютеру, что давление в шинах намного ниже нормы. В обычной ситуации 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 объединены, что вносит дополнительные проблемы безопасности (ведь в итоге получается, что центральный замок «висит» на той же шине, что и магнитола).
INFO
Разные автопроизводители руководствуются разными стандартами; какой конкретно стандарт используется в твоем авто, ты можешь без проблем найти в интернете.
Обмен данными по шине 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` имеет ID = 0x3 (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-шины. Микросхема выпускается в двух исполнениях: обычное энергопотребление и пониженное энергопотребление. Менее прожорливая микросхема имеет также незначительное отличие в назначении одного вывода (подробнее смотри даташит на сайте производителя).
INFO
Подключившись к автомобилю железкой, все-таки продолжаешь хотеть красоты. 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
Если решишь лезть в автомобильную электронику, будь аккуратен, перепроверь лишний раз зажигание и убедись, что ты все правильно подключил. Короткое замыкание лишит тебя гарантии (а может, и бортовой электроники).
INFO
Перед поездкой на ТО покопайся в интернете на предмет обновлений прошивки для твоего бортового компьютера. Если производитель выпустил новую версию, уточни у дилера, обновят ли они ВПО.
Впервые опубликовано в журнале «Хакер» от 03/2015.
Автор: Антон Сысоев (anton.sysoev@gmail.com)
Подпишись на «Хакер»
Комментарии (42)
de1m
28.04.2015 13:28Может кто подскажет, есть ли какой эмулятор для CAN или может что-то похожее есть в железе? Я ещё пока совсем не в теме, поэтому хотелось бы, для тренировки, потренироваться на кошках.
И может быть кто-то ещё хороший ресурс или книгу по теме подскажет. Я думаю тут будет многим интересноwertex
29.04.2015 12:54Поищи CANHacker или подобные девайсы. Они позволяют как сканировать трафик по CAN шине, так и генерировать его. По цене — реально меньше чем в 100 долл уложиться.
isotoxin
28.04.2015 13:30+2Потому что у производителей сигнализаций нет цели создать невзламываемую сигнализацию. У них цель другая — максимизировать прибыль. А максимум прибыли при текущем уровне технологий находится как раз на том уровне, что позволяет угонять машины так легко. Т.е. технических причин не делать супер защиту нет. Есть коммерческие причины.
(извините, отвечал на первый коммент, но промазал)DnV
28.04.2015 14:28+1А разве конкуренцию на рынке сигнализаций отменили?
isotoxin
28.04.2015 20:01+1Вы преувеличиваете роль конкуренции. До определенного момента, конкуренция, конечно, способна повысить качество и снизить цену. Однако, в определенный момент, конкуренция теряет свою силу. И производителям даже не нужно вступать в сговор. Они естественным путем приходят к некой золотой середине в отношении цены и качества. Вы поймите, что в современном мире делать качественные вещи, даже дорогие, даже если их будут покупать, не всегда выгодно (почти всегда невыгодно, если точнее), т.к. качественная вещь реже ломается, а значит уменьшает доход в долгосрочной перспективе.
Недавно узнал о существовании индукционных ламп, которые по всем показателям превосходят все другие (кроме разве что светодиодных) и имеют срок службы 25 лет. Угадайте, какая цена на эти лампы и как много их производят. Моему возмущению не было предела. Но это, увы, данность. Такие лампы не выгодно массово выпускать именно из за их долговечности. Конкуренция тут бессильна. И так во всём.
Lepik_stv
28.04.2015 14:14Вдруг кому интересно, наткнулся в сети на описание безопасности данных в авто BMW.
BMW_Концепция безопасности данных.pdf
BMW_Способы шифрования.pdf
Zzzuhell
28.04.2015 14:26+5Пока читал — не видел обложки первоисточника, но не покидало чувство, что это «Хакер». Так и есть :)
По сабжу.
Я — автомобильный старовер. С трудом привык к усилителю руля и АБС (в целом — годные и нужные функции). Но любая электроника, имеющая отношение к процессу вождения (и умеющая на него влиять), меня пугает. Электрическую педаль газа переношу стоически (ее поломка приведет максимум к остановке машины, о перехвате управления злыми кулхацкерами стараюсь не думать).
Недавно встал вопрос о замене автомобиля на новый. Стал искать, параллельно глядя на наличие всякого рода «улучшайзеров». И получается парадокс: староверам, не любящим слишком умные машины, рынок предлагает только недорогие авто. А если я сумасшедший миллионер и хочу купить премиальное авто, но по минимуму напичканное электроникой? Не под заказ же машину делать…
«Ты сумасшедщий, Шелдон!»
«Нет, я проверялся, у меня справка есть». (с)
:)aulandsdalen
28.04.2015 14:40В мире еще достаточно производителей премиальных машин за сумасшедшие деньги и с минимумом электроники (иногда даже без АБС). Вопрос в том, что это _очень_ мелкосерийное производство.
zxmd
28.04.2015 16:24Если вы сумасшедший миллионер то купите что то вроде БМВ 60-х годов или крайслер того-же времени тысяч этак за 500 баксов, если судить по дискавери :)
Zzzuhell
28.04.2015 16:34Мало того, что я не миллионер, так мне еще нужна утилитарная машина. На которой можно ездить в ашан, на дачу и всякое такое…
Boba_Fett
28.04.2015 17:01Достаточно ограничиться концом девяностых или даже началом двухтысячных: машины тех лет (либо те немногие, которые с тех пор выпускаются без изменений) могут даже электронного акселератора не иметь.
Satyricon
04.05.2015 17:37Но любая электроника, имеющая отношение к процессу вождения (и умеющая на него влиять), меня пугает.
А меня пугает, когда смотришь аварии на ютубе, и мысль — «наличие ESP спасло бы жизнь» не отпускает потом долго.Zzzuhell
05.05.2015 08:54Все правильно, согласен с вами.
И мозгом понимаю — это правильные системы, нужные.
Но пересилить себя не могу.
Не верю я, что ESP примет правильное решение, когда в маневре решит подтормозить колесо, а под ним на этот случай окажется кусок нечищенного обледенелого асфальта.
По этой же причине, кстати, меня пугает автоматически подключаемый полный привод. Хрен знает, какой я маневр буду выполнять, когда этой железяке придет фантазия подключить второй мост. Унесет нахрен…Satyricon
07.05.2015 18:38Поверьте мне, когда я однажды оттормаживался на асфальте со 140 с вылетом на гравийную обочину из-за внезапно выскочившей поперек дороги машины, то ESP отработала идеально. Никакого заноса, ничего, как по рельсам. Поездите с ESP, поймёте, насколько это крутая вещь, меня она еще ни разу не подвела.
skygad
28.04.2015 14:58Короткое замыкание лишит тебя гарантии (а может, и бортовой электроники).
А может и автомобиля…
aivs
28.04.2015 23:46Я как раз года два назад начал хакать свою Skoda Octavia 2, там используется CAN протокол, как и во всех Volkswagen.
Многие команды удалось подслушать сниффером, и получилось управлять всеми стеклоподъемниками, центральным замком.
Но вот считывать показания с датчиков, это уже нужна документация. Может у кого завалялась документация по верхнему уровню команд CAN Volkswagen?
wertex
29.04.2015 13:08ELM327 далеко не крутой чип для исследования и взлома автомобильных протоколов. Для того, чтобы посмотреть на своей машине обороты, нагрузку, ошибки — он действительно крутой. Но вот, чтобы снять трафик по CAN шине, то применяют совсем другие решения, т.к. ELM327 очень медленный, и принять несколько тысяч CAN пакетов в секунду (это реальный трафик современного автомобиля) он попросту не успеет.
wertex
29.04.2015 13:16+1Ответ на поверхности: получив доступ к шине (в любом ее проявлении), ты получаешь полный доступ ко всей электронике автомобиля в том или ином виде. А это значит, что ты можешь вытворять практически все что угодно с двигателем, тормозами, центральным замком и прочими узлами, подключенными к сети CAN (или сопряженными с ней).
Это неверное утверждение. Оно равносильно тому, что если злоумышленник получит доступ к клавиатуре компьютера, то он сможет сделать с ним все что хочет. Для критических операций с какими-либо ЭБУ нужно пройти парольный доступ, что равноценно знанию пароля для получения root — доступа.n1nj4p0w3r
29.04.2015 17:53Машиной не владею, CAN шину не трогал, но полюбопытствую:
Пароль можно самостоятельно устанавливать или его зашивают на заводе и без глубокого ковыряния в мозгах(паяльник, дизассемблер и т.д.) с ним ничего не сделать?
Насколько сложный пароль установлен/может быть установлен?
В случае установки на заводе и не возможности смены: уникален ли пароль в пределах одной партии машин одной модели?
Имеются ли какие-либо меры противодействия перебору пароля?
На примере любой машины которая вам известна.dmitrmax
29.04.2015 18:06Не знаю ничего по теме, но подозреваю, что паролем служит ключ. Ключи нынче содержат чипы, которые, наверняка, за это и отвечают.
Устанавливать один пароль не имеет смысла, если его знает дилер, то читай его знают все заинтересованные.n1nj4p0w3r
29.04.2015 18:11Управлять дверьми автомобиля по http тоже не логично, но это bmw не помешало, по тому и интересуюсь.
wertex
29.04.2015 18:34Мне многие машины известны, а точнее их ЭБУ.
ACDelco/Siemens — пароль 2 байта.
Honda Keihin — для разных доступов используются как 2-х так и 4-х байтны пароли
Bosch — 4 байта
Хоть может и показаться, что 2 байта перебрать довольно быстро, но есть ряд но. Во многих ЭБУ стоит защита от перебора уже после первого неправильного ввода пароля. Чтобы попробовать следующий пароль нужно выключить-включить зажигание и подождать порядка 15 сек.
Есть ЭБУ, где для пароль статичен и не меняется для конкретного экземпляра авто, есть ЭБУ, где пароли меняются динамически каждый раз.
Все пароли доступа устанавливает производитель.n1nj4p0w3r
29.04.2015 18:59Во многих ЭБУ стоит защита от перебора
То есть многие защищаются, а другие — нет, можете подсказать, кто из производителей игнорирует призывы логики ну и примерное соотношение есть защита/нет защиты?
Уже представил себе эпизод «Настоящих аферистов» где у хозяина глаза-блюдца и вроде-как не автономная машина уезжает без водителя в неизвестном направлении.
Dee63
06.05.2015 15:41Прочитав с начального комента я делаю такой вывод:
1. подключились к CAN.
2. Хотим эмулировать, к примеру, экстренное торможение (датчик давления на педаль и ряд других факторов эмулируем посылками).
3. п.2 не выйдет пока не будет у нас пароля. А что мешает прослушать что пробегает по CAN в аналогичный момент? ведь «прелюдию» передачи-подтверждения пароля никто не отменял.
Почему экстренное торможение выбрал в качестве примера- исходя из того что тормоза это критический узел.
Вот и не понятно мне в итоге как же так- защита паролем вроде есть, но записать его передачу никто не помешает, равно как и воспроизвести.
Но мне кажется это странным решением- тормоза это критический узел и лишние задержки на проверку пароля тут не на пользу делу пойдут.
И про сложность и создание невзлавымаемых сигнализаций\охранных систем могу сообщить всем интересующимся вот что (работаю в сфере соответсвующей) — что можно противопоставить подменному блоку управления? Когда физически блок будет заменен на свой без блокировок и прочего, то машина просто поедет куда надо.
И тут не помогут никакие привязки блока к блоку т.к. процесс идентификации одного блока другим требует передачи информации о каждом (как это ни странно).
И все мы знаем что не перевелись на земле нашей кулибины, которые смогут «на лету» подменить ответ для идентификации блоков. Правда принимая во внимание архитектуру постороения сети современнного автомобиля получается, что ECU (ЭБУ) двигателя просто наплевать на то какой у него модуль управления шиной комфорта и на него смотреть он не будет.
Приходим к тому с чего начал я эту часть: нету тела- нету дела. В данной ситуации- некому сопротивляться. Разве что время на все эти манипуляции требуется, но если можно угнать за 10 минут, значит можно угнать быстрее.
JediPhilosopher
Меня давно интересует вопрос: а что мешает сделать надежную сигнализацию автомобильную? Надежную в смысле защищенную от перехвата всякими там код-грабберами? ИТ дало алгоритмы шифрования, обмена ключами, всяких там цифровых подписей. При этом случай с авто еще и достаточно простой — там есть как бы «защищенный» канал связи между машиной и брелком для установки общих ключей, так как владелец имеет физический доступ к обеим компонентам системы у себя в гараже.
В чем проблема-то? Почему сигнализации до сих пор вскрывают и машины угоняют неинвазивными, то есть не требующими физического взлома (например слышал о способе просверлить дверь и подключиться к проходящей где-то там шине данных), методами?
n1nj4p0w3r
Недавно вскрылось, что BMW ConnectedDrive общался с серверами на «голом» http и устроив mitm в gprs можно было открывать двери машины и играться с кондиционером (по словам самих BMW).
Думаю, производители авто еще не доросли до того, что-бы делать действительно качественную систему безопасности, особенно во времена когда надо успеть на поезд автономных машин и электрокаров.
Singerofthefall
Ничего не мешает, современные сигрализации, работающие в диалоговом режиме, полностью защищены от перехвата/подмены данных во время их передачи, но стоят довольно дорого. А вот почему такого уровня защиты нет в штатных сигнализациях — ну, это уже надо спрашивать у производителей.
dmitrmax
Дело даже не в противоугонных средствах, а в прошивках ЭБУ. Для многих моделей стоит угонщику только получить доступ к диагразъёму — прощай авто. Видимо, проблема в дырявости этих прошивок, которые выполняют так же и функцию иммобилайзера. Вот и городят потому всякие перепиновки диагразъема.
Boba_Fett
Откуда вы знаете, что они «полностью защищены»? Производитель выложил документацию и исходники, или кто-то провёл и опубликовал исследование хотя бы протокола? Я, к сожалению, ни разу не встречал подобных материалов, и буду благодарен, если поделитесь ссылками на них.
Boba_Fett
Сам не раз задавался этим вопросом. Подозреваю, что мешает консервативность потребителей: бОльшая часть их спокойно покупает сигнализации, у которых на коробке почти прямым текстом написано «security through obscurity», и считает это действительно хорошей защитой. Если это хорошо продаётся, то какой смысл делать что-то новое?
UA3MQJ
Пока у меня был автоваз, я увлекся этой темой, много читал, поставил двухстороннюю сигнализацию. В моем случае это была диалоговая сигнализация на 800 МГц. Но вопросов действительно много. К примеру, вот диалог есть, но периодического пинга брелок-машина — нету. А чтобы он был, плюс Х рублей. В итоге, чтобы обезвредить мое авто, достаточно выбить стекло, дернуть открытие капота, а под ним сдернуть клемму аккума — и все: тишина в библиотеке. Дополнительного аккумулятора в сигнализации нет, поэтому она начнет визжать, только когда ее обратно подключат. Однако есть датчик удара! Да, есть: машина подаст сигнал на брелок и на сирену. Однако, в случаях взлома, в эфир могут поставить помеху, тогда брелок сигнала не примет. А пинга в нем нет, он потерю связи не найдет (не доплатил). Сирену можно запенить из баллона или провод обрезать. Не каждый, как я, ставит ее в труднодоступном месте.
Вообще, не CAN сигнализации — они, как правило, существуют, как некая отдельная нервная система, никак не связанная с системой авто. Местами пересекаясь: врезались в линию поворотников, чтобы ими мигать; разорвали линии топливного насоса, замка зажигания, чтоб авто не завести, не сняв с охраны. Но самое, на мой взгляд, страшное происходит, когда делается система автозапуска, если в авто есть иммобилайзер. Все «мозги» машины заблокированы, пока к замку не поднесен ключ с беспроводным чипом. А ключ дома. И чтоб завести авто из дома — в него помещяется… КЛЮЧ! Таким образом, защита авто уже будет лежать на сигнализации, и если она не работает, то на авто практически можно уехать и без ключа, если выполнить нужные условия. Лично я больше доверяю заводу изготовителю авто, чем производителю сигнализации. Да и сигнализации можно установить очень по-разному: та сигнализация, с которой я купил авто, позволяла сесть в авто, поставить авто на охрану, завестись и уехать, при этом не пискнув; с автозапуском известен смертельный случай, когда авто задавило хозяйку — и это с учетом механизма постановки на «виртуальную нейтраль»!
В общем, проблема странная: технически сделать надежную защиту bydefault в современный век как-то совсем не кажется сложным. Скорее всего у нее экономические корни.
dmitrmax
Очень много букв, но по началу — надо ставить электрозамки капота, которые сигналкой открываются.