«Лаборатория Касперского» неоднократно исследовала потенциальные проблемы безопасности, так или иначе связанные с технологиями интернета вещей (результаты опубликованы, например, здесь и здесь). Ранее в этом году наши эксперты даже проверили безопасность биомеханического протеза. Не обошли мы вниманием и «умные» автомобили: как показывают наши исследования, их защита тоже небезупречна — об этом можно прочесть здесь и здесь.
В этом году мы решили продолжить традицию небольших экспериментов над защитой устройств с выходом в интернет и снова обратились к автомобильной отрасли — точнее, к околоавтомобильной периферии. Актуальность этой темы не уменьшается с годами: как показали наши исследования, проблемы с безопасностью только усугубляются по мере того как автомобили становятся все интеллектуальнее и все больше их компонентов подключается к интернету — ведь так растет и возможная поверхность атаки. Но даже если не брать в расчет умную начинку самого автомобиля, на рынке предлагается множество дополнительных комплектующих для повышения удобства вождения, от автомобильных сканеров до различных вариантов тюнинга. Этот вектор атаки еще не исследовался отдельно, поэтому мы наугад выбрали несколько различных автомобильных устройств с доступом в Сеть и проанализировали их защиту. Такую проверку едва ли можно назвать полноценным исследованием, однако она позволила нам выделить наиболее очевидные проблемы с безопасностью.
Мы рассмотрели следующие приборы: пару диагностических устройств, видеорегистратор, трекер GPS, умную сигнализацию и систему мониторинга давления и температуры в шинах.
Диагностический сканер для OBD-разъема: шифрование — верный шаг, но не всегда достаточный
Рынок решений для диагностики автомобилей переполнен различными устройствами, подключаемыми к разъему OBD2, — большими и маленькими, проводными и беспроводными. Обычно они используются для считывания ключевых динамических показателей автомобиля во время езды. Некоторые из этих устройств работают автономно, другие подключаются к компьютеру и мобильному телефону. Они позволяют записывать и анализировать широкий спектр данных, в том числе сведения о скорости двигателя, температуре, турбонаддуве, давлении масла в двигателе и т. д.
Существуют приложения, которые не только считывают показатели, но и программируют «мозг» автомобиля, — например, могут выключить индикатор «Проверить двигатель». Естественно, использование таких приложений и устройств, способных вносить изменения в работу транспортного средства, может быть опасно. Помимо риска повредить автомобиль из-за ошибки пользователя существует вероятность, что посторонние перехватят контроль над сканером. Конечно, если устройство проводное, то опасность невелика, однако если оно работает по беспроводной связи, а данные из диагностического порта передаются по Bluetooth или Wi-Fi, риск перехвата значительно повышается. Поэтому многих интересует, как производители таких устройств учли меры безопасности.
Сканер, который попал к нам в руки, был разработан немецкой компанией и продается на рынке под маркой хорошо известного производителя автомобилей. В интересах безопасности мы не разглашаем его название.
Устройство позиционируется как гоночный регистратор, который способен записывать видео соревнований на треке и накладывать на эту запись телеметрию данных, полученных от автомобиля: скорость, мощность, ускорение и т. д.
Устройство сопрягается с телефоном на базе iOS или Android по протоколу Bluetooth. Все релевантные данные отображаются на экране телефона. Что ж, приступим к анализу. Поскольку мы хотим разобраться, несет ли использование этого устройства какие-либо риски для водителя, логично начать с подключения Bluetooth.
Уже в самом начале устройство наотрез отказалось работать с iPhone: смартфон просто не видел сканер. Возможно, проблема заключалась в микропрограммном обеспечении. Так или иначе, эту загадку мы разрешить не смогли, поэтому дальнейшие эксперименты проводили только с телефоном на Android.
Чтобы начать диагностику, сначала нужно провести сопряжение. Для этого не требуется никаких паролей, кто угодно может подключить к сканеру любой смартфон. И это плохо.
Однако после того, как сопряжение проведено, потенциальному преступнику для соединения необходим серийный номер регистратора. Этот номер напечатан на самой флешке, так что преступнику потребуется физический доступ к устройству. Или нет?
Предполагается, что да, однако этот номер имеет следующий вид: 000780d9b826. Если записать то же самое как 00:07:80:d9:b8:26, получится MAC-адрес адаптера Bluetooth, встроенного в наш сканер. Так что фактически вы можете узнать серийный номер, проведя Bluetooth-сканирование неподалеку от работающего сканера. Самое смешное, что серийный номер, он же MAC-адрес, одновременно является и паролем для подключения к устройству.
То есть сканер передает в окружающее пространство данные о себе, согласно стандарту Bluetooth включающие и MAC-адрес, который в то же время является кодом доступа. Таким образом, получить доступ к этому устройству может практически кто угодно. Для этого достаточно установить простейшее приложение — сканер Bluetooth на смартфон и найти устройство с именем OBD STICK в радиусе действия.
Плохие новости для хакера заключаются в том, что само по себе приложение не позволяет контролировать автомобиль, а только анализировать полученные с него данные. Но что будет, если настроить подключение к сканеру с другого приложения? Мы попробовали и этот вариант, проверив несколько приложений из Google Play.
Если верить их разработчикам, эти приложения могут выполнять довольно много функций, в том числе изменять динамические показатели автомобиля. Но проверить это мы не смогли, потому что, хотя приложение подключается к сканеру, оно не может считывать данные с шины CAN. Дело в том, что приложение запрограммировано взаимодействовать с OBD-сканерами по особому протоколу, тогда как у исследуемого устройства протокол такого взаимодействия был другим.
Обычно сканеры такого рода создаются на базе чипа ELM327 — это самый популярный микроконтроллер на рынке. Микроконтроллер нужен, чтобы обрабатывать сигналы с шины CAN и передавать информацию потребителю по интерфейсу RS-232, например через адаптер Bluetooth или проводное USB-соединение. Интерфейс передает данные на мобильный телефон в виде радиосигнала, а телефон в свою очередь передает их приложению. Как обработать сигналы, извлечь их из шины CAN или передать их туда, в какой форме они представляются потребителю — все это определяется микропрограммным обеспечением, которое записывается в ПЗУ микроконтроллера еще на заводе. В исследуемом нами сканере используется совершенно другой микроконтроллер — AT90CAN128-16MU. Соответственно, и микропрограммы на нем установлены другие.
Возникает закономерный вопрос, можно ли перепрошить контроллер, установив на него наши микропрограммы с большим количеством возможностей? Мы обнаружили, что прошивка устройства обновляется прямо через приложение. После исследования кода приложения выяснилось следующее:
- Приложение может загружать прошивку с веб-сайта разработчиков через незащищенное подключение HTTP.
- Прошивка входит в само приложение.
Таким образом, заполучить прошивку оказалось довольно просто, но так ли легко будет ее проанализировать или модифицировать? К сожалению, нет — микропрограммное обеспечение оказалось зашифровано. Это очень логичный и одновременно очень удачный ход со стороны разработчика: защитить наиболее уязвимую часть процесса эксплуатации устройства — протокол обмена данными между автомобилем и маленьким сканером-регистратором. Благодаря такой предусмотрительности существует только два способа разобраться в работе ПО: запросив его у разработчика или приложив массу времени и сил для расшифровки сигналов автомобиля. Последнее не выходит за рамки возможного — но выходит за рамки нашего эксперимента.
Подводя итоги, скажем, что, благодаря шифрованию микропроцессорного программного обеспечения возможности для злоупотребления устройством оказались ограничены, хотя несколько мелких уязвимостей в нем все же есть. Например, кто угодно может получить доступ к устройству и отслеживать динамические показатели автомобиля. Кроме того, нельзя до конца исключать вероятность, что злоумышленники все-таки проявят настойчивость, физически получат доступ к прошивке и изменят ее.
Чтобы сделать сканер безопаснее, мы предложили бы снабдить его уникальным ключом доступа и выполнять сопряжение Bluetooth с этим ключом. В этом случае трафик Bluetooth нельзя будет перехватить. А тем, кто уже приобрел такие устройства, другой совет: используйте их только на треке и не забывайте достать из порта OBD2 после гонок.
Система мониторинга давления и температуры в шинах: буря в стакане воды
Еще одно устройство, попавшее нам в руки, представляло собой набор для наблюдения за давлением и температурой в шинах. В его состав входят четыре датчика, закрепляемые непосредственно в колеса автомобиля, экран, который устанавливается в салоне, и контрольный блок для управления системой. Датчики транслируют свои радиосигналы блоку, а тот в свою очередь передает информацию на экран. На экране отображаются:
- текущее давление в шинах;
- текущая температура колес.
Водитель может менять отображаемые единицы измерения температуры с градусов Цельсия на градусы Фаренгейта, размерность давления — с фунтов на квадратный дюйм (psi) на бары или паскали, а также подключать новые датчики, если старые сломаются. Если давление падает ниже определенного критического порога, управляющий блок издает громкий сигнал. То же самое происходит, когда температура или давление поднимаются выше определенной отметки. Мы решили проверить, возможно ли симулировать спускание или перегрев шин, чтобы водитель остановился.
Как уже было сказано, датчики передают контрольному блоку информацию в виде радиосигналов на частоте, разрешенной для гражданской радиосвязи. Перехватить такой сигнал можно любым приемником RTL-SDR ценой в пару сотен рублей. Однако послать сигнал такие приемники не смогут — они не работают на передачу. Для этого вам понадобится полноценное устройство SDR с функциями приема и передачи. Именно его мы и использовали для проверки безопасности.
Когда мы включили систему, она не подала никаких признаков активности, только показала, что не видит подключенных датчиков.
В этом режиме система работала десять минут, затем начала сигнализировать об отсутствии связи с датчиками давления. Мы решили найти нужную частоту на нашем приемнике.
Однако ни с датчиков, ни из самой системы не поступало никаких сигналов. Тому могло быть три причины: в датчиках отсутствовал заряд; датчики работали на базе гироскопа и должны были включаться при вращении колес; датчики должны были включаться, только когда давление в них выше, чем у окружающей среды. Чтобы выяснить это, требовалось поэкспериментировать с датчиками.
Выяснилось, что верна была третья гипотеза: с помощью шприца мы создали в датчиках более высокое давление, и они тут же показали признаки активности.
Перехваченные сигналы позволили нам выяснить, на какой конкретно частоте работает система. После этого мы записали сигналы с помощью нашего приемника. Датчики анализируют давление и температуру в шинах, кодируют информацию в байты и передают ее через модулятор как радиосигналы. Мы проанализировали их с помощью специальной программы, которая визуально отображает записанные сигналы. Фактически мы перехватили модулированный сигнал и разложили его обратно на байты.
Вот что получилось. Если увеличить участок графика, он очень напоминает сигнал с частотной модуляцией (при такой модуляции частота несущего сигнала изменяется в соответствии с изменениями входного сигнала).
На этом этапе нам стало понятно, что верхние и нижние участки по сути представляют собой единицы и нули, которые означают наличие или отсутствие сигнала. То есть расшифрованный сигнал можно записать таким образом:
1 |
0101010101010101010101010101011010011001011001100101010101011010100110100110010110101010011010100110100101011001011001011010100101010101011001010110101010010110 |
Далее нужно было выяснить параметры передачи сигнала. Наша программа показала, что скорость передачи символов составляет 19400 бит/c.
Мы предположили, что система использует манчестерское кодирование как самое распространенное. Манчестерский код — это способ преобразования цифрового кода в сигнал, где каждый бит данных представлен переходом либо от низкого уровня сигнала к высокому, либо от высокого к низкому (в нашем случае это будут переходы между низкой и высокой частотой радиосигнала).
Существует два варианта манчестерского кодирования: тот, где 0 выражается переходом низкий-высокий, а 1 — переходом высокий-низкий (кодирование по Томасу), и обратный вариант, соответствующий стандарту IEEE 802.3. Мы попытались создать в датчиках более высокое давление при помощи шприца для последующего анализа. Чтобы работать было удобнее, мы перевели данные в шестнадцатеричную систему счисления. После этого сигнал стал выглядеть так:
FF FE 5A FC 4B 08 9D B1 FB 86
Байты 7, 8 и 10, отмеченные красным, изменялись при изменении давления в датчиках. Вначале мы попытались перевести некоторые из этих чисел в десятичную систему, однако они оказались слишком велики для возможных значений давления.
В прилагаемой к системе инструкции говорилось, что максимальное допустимое давление составляет 6 бар. Среднее давление, создаваемое шприцем, находится приблизительно на уровне 2,2 бара. Дальнейшие расчеты показали, что седьмой байт — 62 — на самом деле обозначал число, близкое к 2,254, при кодировании по Томасу. Значение почти совпадало, и мы решили, что седьмой байт показывает давление. Так мы сразу определили и вариант кодирования.
Записав еще больше сигналов, мы обнаружили ряд закономерностей, которые позволили нам со значительной степенью уверенности предположить, что означает каждый байт.
00 | Заголовок |
01 | |
A5 | Байт синхронизации |
03 | Серийный номер датчика |
B4 | |
F7 | |
62 | Давление |
4E | ??? |
04 | ??? |
79 | Контрольная сумма |
Мы обратили внимание, что восьмой байт меняется редко и всегда на очень небольшие величины. Поскольку мы тестировали датчик в комнате с постоянной температурой, уместно было предположить, что он, скорее всего, отвечает за температуру. Теперь, зная логику кодирования, мы могли проверить эту идею. Согласно инструкциям к системе, рабочая температура шин находится в диапазоне от –40 до +125 градусов по Цельсию.
Однако мы предложили, что система работает в градусах Кельвина, и решили пересчитать наши показатели в них же — это удобнее, потому что система Кельвина не использует ноль. Как показали наши расчеты, 8-й байт со значением 4E означал 37 градусов Цельсия, что было очень похоже на правду. Таким образом мы выделили три значимых столбца байтов: давление в шинах, температуру и серийный номер.
Держа это в уме, мы подготовили четыре пакета данных и настроили передатчик.
Красный столбец соответствует давлению 2 бара, а голубой — температуре 24 градуса Цельсия. Сработало! Теперь можно было переходить к саботажу. Для второй попытки мы изменили значения в одном из столбцов, чтобы симулировать рост температуры в заднем правом колесе.
У нас получилось: контрольный блок показал перегрев до 100 градусов Цельсия!
Итак, чего может добиться преступник?
Во-первых, для успешной атаки ему нужно знать уникальный серийный номер каждого колеса. Он может узнать его точно так же, как и мы: из передаваемого сигнала. То есть преступнику достаточно подойти к нужному автомобилю с приемником и несколько раз нажать на шины — после этого останется только расшифровать сигнал. Затем можно отправлять фальшивые пакеты данных. Однако это не так-то просто: для передачи сигнала преступнику нужно будет постоянно держать антенну своего радиоприбора направленной на жертву, следуя за ней. Ведь если он отстанет, сигнал тут же будет потерян, приемник контрольного блока немедленно получит сигналы от своих собственных датчиков и перестанет сообщать о проблемах.
Поэтому, хоть наше исследование и показало, что можно и в самом деле сбить с толку данную систему, такая атака отнимает слишком много сил и ресурсов. Гораздо проще и дешевле заставить водителя покинуть автомобиль другим способом:
Итак, хотя это устройство можно назвать уязвимым, поскольку радиосигнал поддается перехвату и расшифровке, функциональность системы такова, что владельцы могут особенно не беспокоиться.
Другой сканер: есть провод — нет проблемы?
Как уже было сказано, существует множество устройств, способных обмениваться данными с интеллектуальными компонентами автомобиля через разъем OBD2. Доказав уязвимость беспроводного соединения, для разнообразия мы также решили проверить его проводной аналог. Для этого мы наугад приобрели считыватель кодов ошибок.
Он также подключается к автомобилю с помощью OBD. Этот разъем предоставляет многочисленные физические каналы для взаимодействия с электронной начинкой автомобиля. Однако считыватель кодов ошибок из всего этого многообразия выбирает только один канал, а именно шину CAN. Несмотря на то что в нашем случае интерфейс использовался только для сканирования кодов ошибок, его фактическая функциональность может быть значительно шире — это зависит от реализации в конкретной модели автомобиля. В некоторых случаях через него можно даже обновлять прошивку электронных блоков управления (ECU).
Мы решили поподробнее рассмотреть наш считыватель и проанализировать, как он взаимодействует с автомобилем.
Схема коммуникации устройства довольно проста. Помимо OBD у него есть только один интерфейс USB, который используется для обновления прошивки и взаимодействия с компьютером.
Разработчик приложил немало усилий, чтобы защитить код прошивки от анализа. Во-первых, ее файлы нельзя скачать из интернета по прямой ссылке. Процесс обновления прошивки осуществляется особым ПО.
Мы не нашли ничего похожего на микропрограммы в дистрибутивах ПО, поэтому предположили, что прошивка каким-то образом загружается через интернет. Проанализировав сетевой трафик, отправляемый при обновлении прошивки, мы обнаружили, что микропрограммы передаются через обычные HTTP-запросы. Это означает, что последнюю версию прошивки можно спокойно загрузить через браузер, подделав соответствующий запрос приложения. После загрузки микропрограммы передаются на устройство по проприетарному протоколу через USB-подключение. Мы проанализировали этот протокол и определили формат всех команд, которые используются для записи кода или данных по определенному адресу. Мы также написали скрипт, который позволяет взаимодействовать с устройством по этому протоколу.
И тут в игру вступает вторая защитная мера, которую предусмотрел разработчик, — шифрование. Прошивка состоит из двух частей, которые хранятся в двух отдельных файлах, и обе они зашифрованы. Такая структура связана с конструкцией устройства.
Основные его части — микроконтроллер, который оборудован сравнительно небольшим объемом внутренней флеш-памяти для хранения микропрограмм, и отдельный внешний флеш-чип для хранения больших объемов необходимых данных. Два файла с микропрограммами содержат данные для внутренней и внешней флеш-памяти соответственно.
Поскольку мы не смогли проанализировать микропрограммы, загруженные из интернета, мы попытались загрузить их непосредственно с устройства после обновления в надежде, что там они хранятся в незашифрованной форме. Но до внутренней флеш-памяти мы добраться не смогли, поскольку отладочный интерфейс микроконтроллера был заблокирован.
Однако мы все же частично преуспели и смогли сделать дамп образа внешней флеш-памяти. Этот образ содержал только конфигурацию устройства без всякого кода. Однако, с другой стороны, все данные на флеш-чипе были сохранены в незашифрованной форме. Мы предположили, что, поскольку устройство расшифровывает данные внешнего флеш-чипа во время обновления микропрограмм, оно может также расшифровывать и данные внутренней флеш-памяти. И, вероятно, алгоритм расшифровки и ключ одинаковы для обеих аппаратных частей. Мы попробовали записать внутреннюю часть микропрограммного обеспечения на внешнюю флеш-память, и оказалось, что наше предположение верно: после обновления там обнаружился расшифрованный код.
Мы выяснили, что во время обновления микропрограммного обеспечения внутренняя флеш-память перезаписывается не полностью. Часть кода остается той же самой, по крайней мере при обновлении до проанализированной версии прошивки. Однако возможность проанализировать весь код в пакете обновления микропрограмм все равно существует.
Итак, мы заполучили расшифрованную часть прошивки и записали ее на внешний чип с помощью нашего скрипта, реализующего коммуникационный протокол разработчика. Теоретически это может позволить нам нарушить работу устройства, добавив свой произвольный код на чип посредством физического доступа по протоколу USB.
Также такая схема потенциально позволяет нам перепрограммировать устройство, заставив его записать все части прошивки на внешний чип. Имея на руках этот полноценный образ, мы могли бы проанализировать его на наличие уязвимостей. Однако проблема в том, что у считывателя так мало памяти, что он просто не способен ни на что, кроме чтения ошибок и создания логов.
Так что ситуация ясна: точно так же, как с телефонами и смартфонами, чем меньше у OBD-устройств функций и возможностей подключения, тем меньше уязвимостей. Однако разработчикам все равно лучше шифровать все критически важные компоненты данных, такие как микропрограммное обеспечение, — даже если их устройство подключается кабелем.
Умная сигнализация: мобильные устройства как источник опасности
Еще одно проверенное нами устройство предлагается хорошо известным российским поставщиком охранных систем для автомобилей. Это комплексное решение безопасности, умеющее, в частности, открывать двери и запускать двигатель. Естественно, если злоумышленники получат контроль над такой охранной системой, судьба автомобиля окажется под угрозой. Однако производитель гарантирует невозможность угона после установки решения. Давайте посмотрим, можно ли верить этому заявлению.
Система представляет собой, по сути, блок управления, который устанавливается на машину в особом труднодоступном месте. Обычно это делается на СТО. Затем система сопрягается с мобильным телефоном владельца. На стадии первоначального анализа стало ясно, что существует два способа управления системой:
- Во-первых, с помощью брелока. В комплект входило два таких: простой, который умеет только открывать двери и багажник, и продвинутый, с монитором, который показывает информацию о состоянии системы.
- Во-вторых, через сопряженный мобильный телефон.
- В-третьих, через любой смартфон Android по Bluetooth.
Брелоки взаимодействуют с системой сигнализации на частоте 868 МГц. Перехватить эти сообщения нельзя, потому что вся информация зашифрована. Мы бы получили только бесполезный набор данных, на расшифровку которого ушли бы годы. Представляется маловероятным, что злоумышленники пойдут этим путем. Наш поиск в Darknet тоже ничего не дал: мы не смогли найти готовый хак для этого варианта нападения. Таким образом, первый вектор атаки продукт превосходно отразил.
Второй способ атаки на систему — заражение первоначально сопряженного телефона. Мы решили проверить этот сценарий.
При запуске приложение не запрашивает ни логина, ни пароля. Взаимодействие между смартфоном и системой безопасности происходит напрямую, не нужно даже ничего разблокировать. Это само по себе крайне неприятно: если преступник украдет разблокированный телефон, то сможет украсть и автомобиль. Достаточно будет приказать приложению открыть дверь. Однако мы не стали останавливаться на одной уязвимости.
Существует много способов атаковать мобильный телефон на базе Android, чтобы затем вмешиваться в его работу. Мы решили попробовать атаку через службу специальных возможностей. Это служба Android для людей с ограниченными физическими возможностями, которая позволяет управлять всеми остальными мобильными приложениями — например, использовать голосовой ввод для набора текста на телефонной клавиатуре.
С помощью этой службы мы смогли найти необходимый элемент в исходном приложении — кнопку «Открыть двери» с действием ACTION_CLICK. Однако нажать ее не получилось: приложение разработано таким образом, что не отвечает на короткие клики (а только такие нажатия мы могли сфальсифицировать виртуально). Чтобы открыть двери, нужно удерживать кнопку в течение нескольких секунд. Нажатие на кнопку обрабатывается специальным алгоритмом, и, конечно же, не существует API, который позволил бы нам отрегулировать время виртуального нажатия в Android. Так что нам пришлось искать другие способы.
И мы их нашли! Оказалось, что приложение успешно откликается, если нажимать на кнопку «смахивающим» движением влево или вправо. Мы написали небольшую программу, которая двигает виртуальный палец по кнопке в течение двух секунд, и так открыли дверь. После всех неудачных попыток у нас наконец-то получилось.
После этого мы решили исследовать подключение по Bluetooth. Этот вектор также казался нам весьма многообещающим. Система использует энергосберегающую технологию Bluetooth Low Energy (BLE) — более совершенную и популярную. Однако ее популярность означает, что она давно является объектом интереса хакеров, которые уже несколько лет работают над средствами перехвата данных, передаваемых с ее помощью.
Зная об этом, мы подготовили специальную станцию для атаки «человек посередине» (MITM) — ноутбук с интерфейсом BLE, к которому мы подключили еще один USB-адаптер BLE, специально купленный для этой цели. Для самой атаки мы попробовали просканировать целевое устройство — охранную систему, — чтобы получить необходимые данные и на их основе создать ее имитацию на одном из BLE-интерфейсов ноутбука. Поскольку система сигнализации работает используя BLE, она передает сигналы довольно редко. Так экономится заряд аккумулятора, что немаловажно в поездке. Благодаря этому мы можем генерировать сигналы фальшивой копии чаще, чем это делает само устройство, и телефон подключится к нашей копии вместо оригинала. В случае успеха один BLE-интерфейс нашей MITM-станции должен был взаимодействовать с системой безопасности от имени мобильного телефона, а второй — обмениваться данными с исходным авторизованным мобильным телефоном, как будто все в порядке. Таким образом мы бы перехватили трафик и смогли бы даже генерировать его, например приказать автомобилю открыть дверь.
Рассчитывая на это, мы включили систему сигнализации, которая передавала данные через BLE оригинальному мобильному телефону, и нашу MITM-станцию. Теперь нужно было создать фальшивую копию системы, чтобы заставить авторизованный телефон к ней подключиться. Наша MITM-станция должна была обнаружить охранную систему при сканировании, как только мы введем правильный MAC-адрес Bluetooth-интерфейса оригинального мобильного телефона. Уже на этой стадии мы потерпели полный провал. Охранная система наотрез отказалась выдавать нам информацию, необходимую для создания фальшивой копии. Мы меняли MAC-адреса, интерфейсы — ничего не помогало, система подключалась только к сопряженному телефону.
Как оказалось, охранная система сопрягается только с одним конкретным телефоном и общается с ним по зашифрованному каналу. Кроме того, выяснилось, что для инициализации взаимодействия между мобильным телефоном и системой пользователю необходимо переключить ее в режим программирования. После этого система будет ждать подключения от мобильного телефона. Процедура сопряжения довольно сложна — как мы уже сказали, она обычно проводится на станциях техобслуживания. Блок управления скрыт внутри автомобиля, а для его включения нужно ввести специальный PIN-код. Сам процесс сопряжения также дополнительно зашифрован: система и телефон обмениваются ключами шифрования, устанавливая безопасную сессию, и после этого система отказывается общаться с любыми другими телефонами кроме того, который был в ней авторизован.
Таким образом, никто не может подключиться к системе со стороннего устройства. Именно это мы и называем «безопасностью, заложенной на этапе проектирования». Таким образом, второй вектор атаки продукт тоже отразил на отлично.
Учитывая все вышесказанное, сценарий успешной атаки может выглядеть так. Для начала киберпреступнику понадобится номер сопряженного мобильного телефона. Добыть его можно разными способами: скажем, в некоторых случаях принято оставлять номер для срочной связи с хозяином автомобиля на стекле под дворником. Затем необходимо будет заразить мобильный телефон: например, через целевую атаку. В случае успеха жертва получит на телефон троянец, который будет иметь доступ к службе специальных возможностей. Через троянец жертву можно будет выследить и в подходящий момент скомандовать приложению на телефоне открыть дверь машины. Даже притом, что радиус действия Bluetooth невелик, теоретически возможно, что преступник сможет незаметно открыть дверь и запустить двигатель, пока жертва находится недалеко от машины.
Так что основной вывод нашего анализа прост: главная проблема — это мобильный телефон, который можно атаковать разными способами. Можно просто украсть его, когда он разблокирован, а затем скомандовать открыть дверь через исходное приложение, которое не спрашивает пароль. Можно написать свое собственное приложение, которое прикажет системе открыть дверь, или атаковать существующее приложение, которое уязвимо почти для любого сценария атаки — в том числе и через службу специальных возможностей Android. Кроме того, телефон можно заразить с помощью SMS, вредоносного спама или приложения-троянца на Google Play. После этого троянец сможет укрыться в системе и спокойно ждать, пока не подвернется подходящий случай потихоньку разблокировать телефон, запустить приложение и скомандовать ему открыть двери. Единственное условие: преступнику нужно будет находиться недалеко от автомобиля и зараженного телефона жертвы. Хотя радиус действия Bluetooth невелик и преступнику довольно сложно будет выполнить атаку целиком, пока владелец не отошел от автомобиля, возможность открывания дверей — слишком серьезная опасность, чтобы просто так ей пренебречь. Однако эта проблема с безопасностью уже не входит в компетенцию производителя охранной системы.
Что же можно сделать, чтобы исправить ее? Во-первых, решение доверить управление автомобильной сигнализацией мобильному телефону нельзя назвать удачным. Но даже если по-другому никак не получалось, разработчикам ПО все равно стоило встроить в приложение возможность блокирования, точно так же, как в любой банковский клиент. В целом противостоять всем возможным атакам со смартфона Android довольно сложно, однако можно максимально усложнить злоумышленникам задачу. Например, можно обфусцировать названия элементов приложения, чтобы их нельзя было так просто разыскать через службу специальных возможностей. Еще одна разумная мера — добавить авторизацию пользователя. Все это не остановит атакующих, но сильно усложнит им жизнь. Что касается пользователей, то мы призываем их следить за безопасностью мобильных устройств и не забывать о соответствующих защитных решениях.
GPS-трекер для автомобилей: система учета или лазейка для шпионов?
Еще одним устройством, которое мы проверили в рамках данного анализа, стал компактный GPS-трекер для автомобилей, оборудованный защитой от влаги и магнитным креплением. Его можно использовать в самых разных целях: от контроля за перемещением сотрудников на личных машинах до отслеживания доставки посылок и грузов, а также защиты арендованного оборудования.
Набор по умолчанию включает SIM-карту со специальным тарифом. Однако пользователь может поставить и свою собственную SIM-карту. Главное — обеспечить поддержку GPRS и SMS. SMS выполняют роль дублирующего средства связи при отсутствии сигнала GPRS, или если нужно сэкономить деньги в международном роуминге.
Координаты GPS, данные акселерометра и других индикаторов передаются по каналу GSM или GPRS на серверы провайдера. Хотя с самим трекером мы мало что можем сделать, в серверной части системы открывается большой потенциал для злоумышленников. Мы решили оценить опасность атак на веб-службы трекера. Мотивация для такого нападения проста: получив доступ к корпоративной учетной записи, злоумышленник или конкурент может отследить перемещения сотрудников, баланс на счету или данные о персонале.
Первоначальный анализ показал, что система использует хорошо известную платформу GPS и телематики, в которой мы не смогли найти никаких уязвимостей.
После этого мы решили обследовать официальный веб-сайт трекинговой службы. Оказалось, что он создан на платформе WordPress версии 4.9.9, у которой также нет общеизвестных уязвимостей.
Тем не менее наше внимание привлекли две директории веб-сайта: форма ввода учетных данных администратора и аналогичная форма для клиентов. Обе их можно попытаться взломать брутфорсом, особенно учитывая, что вторая не поддерживает двухфакторную аутентификацию.
Успешно войдя в систему через первую форму, злоумышленник может, в теории, получить доступ к базе клиентов — то есть к массиву персональных данных, в том числе маршрутам передвижения, финансовой информации, контактам, именам и многому другому. А если взломать вторую форму, добычей могут стать финансовые данные, история транзакций и бухгалтерская документация.
Таким образом, теоретически, проанализированный нами трекер можно успешно использовать в злонамеренных целях, несмотря на ограниченные возможности подключения, — просто из-за того, что недостаточно хорошо продумана безопасность веб-служб. Однако вероятность такой атаки достаточно невысока, так что особой причины для беспокойства нет.
Подключаемый к смартфону видеорегистратор: кто следит за системой слежения?
Благодаря современным технологиям мы можем записывать происходящее рядом с автомобилем с помощью специальных камер. Это позволяет иметь доказательства на случай чрезвычайного происшествия. Как и в случае с другими типами устройств, на рынке появляется все больше «умных» видеорегистраторов, так что мы решили проанализировать один из них и понять, какие полезные функции одновременно представляют собой и потенциальные риски для безопасности (в интернете вещей без них не обходится).
Мы выбрали одно из самых популярных устройств этого типа и заранее были весьма скептически настроены в отношении его уровня безопасности. Согласно документации, у этого видеорегистратора два официальных приложения (для Android и iOS), а для взаимодействия между устройством и смартфоном или планшетом используется интерфейс Wi-Fi. Отсюда и исходил скепсис: мы неоднократно наблюдали, как подобные конфигурации IoT-устройств приводили к зияющим дырам в системе безопасности.
Начнем с беглого осмотра. Основные функции устройства:
- Запись широкоугольного (130°) видео формата 1080 Full HD при включенном зажигании автомобиля. Все видео сохраняются на флеш-карте памяти формата microSD и циклически перезаписываются. Объем хранимых данных зависит от карты.
- Запись видео в чрезвычайных обстоятельствах (определяемых по показаниям специального акселерометра). Такие видео сохраняются в отдельной папке для удобства поиска и защиты от перезаписи (продвинутая модель регистратора способна записывать видео в чрезвычайных обстоятельствах, даже когда автомобиль припаркован и зажигание выключено).
- Включение ночного режима для улучшения качества записи в ночное время.
- Подключение к устройству на базе Android или iOS, на котором установлено специальное приложение.
- Распознавание различных голосовых команд пользователя.
При дальнейшей оценке нас приятно удивила защищенность и самого устройства, и официальных приложений. Если не брать в расчет сценарий заражения пользовательского смартфона, злоумышленник может получить контроль над устройством (например, чтобы украсть видеозаписи), только подключившись к точке доступа Wi-Fi камеры. После подключения атакующий может либо использовать одно из официальных приложений для копирования данных, либо подключиться к серверу камеры в локальной сети, чтобы задействовать различные недекларированные функции (то есть те, которые не перечислены в приложении, — например, как-нибудь блокировать устройство).
Однако разработчики позаботились и о процессе подключения по Wi-Fi. Если вы хотите подключить к камере новое устройство, вам нужно ввести пароль, а также нажать специальную кнопку на самой камере. Благодаря этому к устройству нельзя подключиться без физического доступа; а при физическом доступе злоумышленнику гораздо проще украсть карту microSD со всеми данными. Кроме того, в приложении можно назначить пароль точки доступа: пользователю предлагается сменить пароль по умолчанию сразу после первого подключения к телефону.
Итак, перед нами еще один пример того, что производители устройств и разработчики программного обеспечения начали обращать больше внимания на проблемы безопасности при производстве интеллектуальных устройств интернета вещей. Если проверенную нами камеру будет использовать осторожный человек, который сменит пароль по умолчанию после первого подключения, к данным невозможно будет подобраться извне.
Заключение
Итак, что же из всего этого следует? Прежде всего, мы еще раз убедились в пользе подобных небольших тестов и будем продолжать их проводить. Основной вывод нашего эксперимента, посвященного умным и подключенным к интернету периферийным устройствам для автомобилей, заключается в том, что они довольно хорошо защищены, не считая мелких уязвимостей. Отчасти это связано с ограниченной функциональностью этих устройств, из-за которой даже успешная атака не приведет к серьезным последствиям, — а отчасти и с продуманными конструкцией и программным обеспечением.
Однако расслабляться разработчикам не стоит. Интеллектуальность устройств растет, возможности их подключения к интернету становятся все шире, а золотое правило гласит, что чем умнее устройство, тем больше внимания следует уделять безопасности на стадии его проектирования и при дальнейшем управлении исправлениями. Ведь одна-единственная неисправленная уязвимость или неосторожность при разработке или использовании продукта может привести к тому, что машину угонят или кто-то сможет успешно шпионить за автомобильным парком конкурентов.
Помня об этом и о приближающемся сезоне отпусков, мы хотели бы поделиться советами о том, как выбирать устройства интернета вещей для своего автомобиля:
- Решая, какую часть своего автомобиля вы хотите сделать более умной, учитывайте риски для безопасности. Дважды подумайте, если речь идет о чем-то с доступом к телеметрии автомобиля или к его «электронному мозгу».
- Перед покупкой устройства поищите в интернете информацию о его уязвимостях. Очень вероятно, что устройство, которое вы хотите приобрести, уже анализировалось исследователями безопасности. Заодно можно узнать, исправлялись ли найденные ими уязвимости.
- Не всегда стоит выбирать самый новый продукт из выпущенных на рынок. Помимо стандартных недоработок, характерных для новой продукции, недавно выпущенные устройства могут содержать уязвимости, которые исследователи пока не нашли. Лучше всего покупать продукты, ПО которых уже несколько раз обновлялось.
- Всегда рассматривайте безопасность «мобильного измерения» вашего решения, особенно если у вас телефон Android, — приложения часто облегчают жизнь, но, если смартфон будет скомпрометирован зловредом, последствия могут быть колоссальными.
Стремясь преодолеть ряд остро стоящих проблем, связанных с безопасностью смарт-устройств, «Лаборатория Касперского» занимается разработкой и поддержкой Kaspersky OS — эта операционная система широко используется в специализированном промышленном оборудовании и программном обеспечении. Она может применяться в самых разных областях: на телефонах и компьютерах, в устройствах интернета вещей, для управления электроснабжением и промышленным производством, а также для контроля за телекоммуникациями и транспортом. Мы считаем, что дальнейшее совершенствование Kaspersky OS позволит удовлетворить потребности наших клиентов и достичь высочайшего уровня безопасности во всех этих областях, включая автомобилестроение. Дополнительные сведения см. здесь.
Наш совет производителям IoT-устройств предельно прост: при разработке новых устройств и улучшении старых обязательно сотрудничайте с поставщиками средств безопасности и независимыми экспертами по ИБ.
Дорога к «интернету вещей»: преимущества и риски смарт-езды