Как обмануть датчики дорожного движения

Подробно об этом исследовании было рассказано на RSA US 2016, презентацию можно увидеть здесь.

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

Как обмануть датчики дорожного движения

Так выглядят датчики дорожного движения в Москве

В итоге город получает данные о загрузке дорог и на их основе может, например, планировать режим работы светофоров и развития дорожной инфраструктуры. В еженедельном отчете столичных транспортных властей можно увидеть самые медленные и быстрые магистрали как информации Центра организации дорожного движения (ЦОДД), так и по данным «Яндекса». Если второй столбец формируется на основе работы приложений на смартфонах, то наполнение первого было бы невозможно без дорожной инфраструктуры, о которой пойдет речь.

Как обмануть датчики дорожного движения

Каждую неделю столичные власти публикуют данные о самых быстрых и медленных трассах города

По сути датчики – это нижний уровень инфраструктуры «умного города», они отдают дальше «сырые» данные о трафике, без которых невозможна никакая аналитика и правильная настройка систем. Соответственно, информация от сенсоров должна быть точной. Но так ли это на самом деле? Может ли посторонний влиять на работу датчиков и собираемую ими информацию? Попробуем ответить на эти вопросы и понять, что можно улучшить в городской ИТ-инфраструктуре.

Как искать устройства и данные о них

Любое исследование, в т.ч. и встроенных систем, к которым относятся датчики дорожного движения, начинается со сбора всех доступных данных. Невозможно знать «в лицо» все модели датчиков даже в узком сегменте, если вы не занимаетесь ими профессионально и каждый день, а это значит, что, вероятнее всего, у вас не получится сразу определить производителя по внешнему виду. Тем ценнее все его логотипы и добавленные установщиками бирки.

Если в итоге удалось примерно определить модель по внешнему виду, то после этого на сайтах вендоров или дружественных им интеграторов можно найти различную документацию и, если повезет, готовое ПО для работы с устройствами. Вы почти наверняка станете обладателем маркетинговой листовки; с большой долей вероятности найдете и более развернутый документ продающего толка. Документация по установке также не редкость, а вот самая большая и редкая удача – обнаружить полноценное технологическое описание с системой команд устройства.

Удобно автоматизировать процесс работы с датчиками, т.е. не сидеть с ноутбуком под каждым столбом, не высматривать устройства и не останавливаться около каждого из них. Сейчас это вполне возможно – для элементов «умного города» уже не редкость подключение по беспроводным протоколам. Но для автоматизации нужно, во-первых, понять, по какому именно протоколу отвечает датчик, и, во-вторых, как можно отделить нужные устройства от всех остальных.

Для этого подойдут любые особенности в ответах, любые идентификаторы. Например, подавляющее большинство MAC-адресов записаны на конкретных производителей (но не все, существуют и анонимные). Помимо числовых идентификаторов устройства как правило имеют буквенные имена, которые тоже могут быть типовыми, например, название модели плюс инкрементный индекс.

Все это дает возможность написать сканер для поиска именно интересующих нас устройств. Одна из моделей, установленных в Москве, использует технологическое соединение по Bluetooth. И MAC-адреса, и «дружественные имена» устройств характерны и позволяют добавить в базу данных только датчики движения, исключив близлежащие смартфоны и телевизоры. Безопасность Bluetooth выходит за рамки статьи, поэтому о компрометации BT-устройств мы говорить не будем. Московское правительство было поставлено в известность о недостатках настройки в ноябре 2015 г.

Как обмануть датчики дорожного движения

Записи о датчиках движения, сохраненные в базе данных

Я использовал Python, PostgreSQL и немного C. В режиме реального времени, т.е. во время проезда мимо датчика, сканер определяет MAC, friendly name и координаты. Поля «производитель» и адрес – уже отдельным проходом по записям в базе, т.к. все необходимые данные у нас уже сохранены. Получение адреса по координатам – относительно затратная по времени процедура, ее точно не нужно проводить одновременно с поиском устройств. Установление соединения Bluetooth тоже не быстрый процесс, так что если хотите найти датчики – лучше не газовать, а ехать неспешно.

Что можно сделать с прошивкой

Открытость производителя по отношению к инженерам-установщикам, которым он хочет дать легкий доступ к инструментам и документам, одновременно означает и его открытость к исследователям. (Я уважаю такой подход – на мой взгляд совмещенная с программой bug bounty открытость дает результат лучше, чем секретность.) Выбрав любой из найденных датчиков можно установить на ноутбук готовое ПО вендора для их настройки, приехать по сохраненному адресу и соединиться с устройством.

Как и при любом исследовании безопасности встроенных систем, первым делом первым делом проверяем, можно ли осуществить перепрошивку устройства.

Как обмануть датчики дорожного движения

ПО для настройки позволяет менять прошивку датчика

Да, через технологический беспроводной доступ можно перепрошивать устройство. Достать прошивку производителя не сложнее, чем его ПО. По формату она напоминает Intel iHex или Motorola SREC, но на самом деле это не они, а проприетарная разработка вендора. Откинув служебную информацию («:» — команду на запись, порядковые номера, адреса памяти и контрольные суммы) из блоков для digital signal processor (DSP) и main processing unit (MPU) мы получим непосредственно код. Но мы не знаем архитектуру контроллеров на борту устройства, так что просто открыть файл дизассемблером не получится.

Как обмануть датчики дорожного движения

Как обмануть датчики дорожного движения

Прошивка датчика дорожного движения

Здесь, как ни странно, выручает LinkedIn, полезный не только для карьеристов и отделов кадров. Иногда архитектура устройств не является тайной, и бывшие инженеры компании готовы рассказать о ней. Теперь у нас на руках кроме файла есть и понимание того, для какой архитектуры скомпилирована прошивка. Тем не менее, счастье это приносит очень ненадолго – ровно до запуска IDA.

Как обмануть датчики дорожного движения

Даже если в документации не указаны типы контроллеров, узнать их все-таки можно

Даже со знанием архитектуры прошивка остается бессмысленным набором байт. Однако у того же инженера можно узнать о том, как именно шифруется прошивка, про таблицу ключей и алгоритмы. На руках у меня устройства не было, и на этом месте я отложил модификацию прошивки в режиме black box как неперспективную. Признаем, что в этом конкретном случае микроэлектронщики знают, как защитить прошивку. Но означает ли это конец исследования датчиков? Вовсе нет.

И только грузовики ночами едут..

Модификация прошивки «хороша» тем, что в нее можно добавить новые функции. Но их хватает и в стандартном ПО вендора. Например, на борту устройства есть около 8 МБ памяти, в которой, пока она не переполнится, хранится копия данных о трафике. И эта память доступна. Прошивка позволяет менять классификацию проезжающих автомобилей по длине и число полос движения. Хотите копию собранной информации о трафике? Хорошо. Нужно зачем-то сделать все машины грузовиками, едущими по правой полосе? Это можно. В результате пострадает точность городской статистики со всеми вытекающими последствиями.

Как обмануть датчики дорожного движения

Вот что собирают и передают дальше датчики движения. Эти же данные хранятся на борту

Желающему получить копию столичной статистики или повлиять на нее, конечно, придется обойти или объехать все датчики, зато ему не обязательно запускать программу у каждого из тысячи датчиков и редактировать настройки вручную. В данном случае описана проприетарная система команд этих устройств. Нельзя сказать, что это часто встречается при исследовании встроенных систем, но в любом случае после соединения с датчиком через ПО вендора команды уже не секрет – они видны сниффером. Но описание на английском избавляет от анализа протокола общения с устройством на машинном.

Как обмануть датчики дорожного движения

Документированные команды устройства избавляют от анализа трафика

На датчике на самом деле не реализованы сервисы Bluetooth, беспроводной протокол в этом случае не более чем среда для передачи данных. Передачи через обычный последовательный (serial) порт. Программная работа с такими портами ничем не отличается от чтения и записи из файлов, код для отправки команд тривиален. Для этих целей нет даже необходимости реализовывать нормальную многопоточную работу с портом, достаточно отправки байт и получения ответа в одном потоке.

Подведем итог. Небыстро двигающаяся по городу машина, ноутбук с достаточно мощным bluetooth-передатчиком и запущенной программой-сканером собирает местоположение датчиков, собирает с них данные о трафике, при желании меняет настройки устройств. Я бы не назвал информацию о трафике сильно секретной, но от смены настроек может пострадать ее достоверность. А на этих данных вообще-то могут быть основаны «умные» светофоры и другое дорожное оборудование.

Как обмануть датчики дорожного движения

Датчик ответил нам, команда услышана. Зная систему команд, не сложно «перевести» ответ

Что делать?

Получается, что ответы на заданные в начале вопросы о достоверности данных о трафике и их защищенности отрицательны. Почему так получилось? Не было никакой авторизации, помимо предусмотренной в Bluetooth, но и та была настроена не лучшим образом. Вендор очень добр к инженерам и большое количество данных о его устройствах доступно публично, в том числе на официальном сайте. Лично я симпатизирую производителю и уважаю его за это, поскольку не думаю, что «security through obscurity» имеет в наше время большой смысл: систему команд все равно узнают и инженерное ПО все равно достанут. На мой взгляд по возможности лучше сочетать открытость, программы bug bounty и быструю реакцию на найденные уязвимости. Хотя бы потому, что число сторонних исследователей популярного оборудования и ПО в любом случае будет больше, чем количество сотрудников в любом ИБ-подразделении.

На этапе установки стоит уходить от любых стандартных идентификаторов. Понятно, что вендорам нужно рекламировать свои продукты, а обслуживающим бригадам — получать с наклеек дополнительную информацию об устройствах, но помимо удобства существуют и вопросы информационной безопасности. Наконец, не стоит полагаться только лишь на стандартную идентификацию, реализованную в хорошо изученных протоколах. Любая дополнительная грамотно реализованная проприетарная защита будет уместна и заметно увеличит сложность проникновения.

Подробно об этом исследовании было рассказано на RSA US 2016, с презентацией можно ознакомиться на сайте конференции.

Публикации на схожие темы

Всего комментариев: 1
  1. Андрей

    Эта информация БУДЕТ интересна злоумышленникам. Вот зачем ЭТО публиковать?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *