Я знаю, где ваш питомец

Опыт “Лаборатории Касперского” в области исследования киберугроз говорит, что любое устройство, имеющее доступ в интернет, обязательно будет взломано. За последние годы мы видели взломанные игрушки, чайники, камеры и утюги. Кажется, уже не осталось гаджетов, обойденных вниманием злоумышленников, однако они есть: на рынке появляется все больше “умных” устройств для животных. К примеру, трекеры для отслеживания их местоположения. Такие гаджеты могут обладать доступом к сети, телефону хозяина, а также данным о местоположении и его самого, и его питомца.

Чтобы обратить внимание пользователей и производителей на возможные риски, мы подготовили этот отчет, в котором рассмотрели несколько трекеров на предмет потенциальных уязвимостей. Для исследования мы отобрали популярные модели, получившие хорошие отзывы в различных обзорах:

Используемые технологии: Bluetooth LE

В четырех исследованных трекерах используется технология, которая во многих случаях оказывается слабым местом в защите гаджета. Стоит рассказать о ней подробнее. BLE — это широко применяемая в IoT-устройствах спецификация Bluetooth, при создании которой делался упор на экономию энергии. Нас в ней интересуют следующие особенности — отсутствие аутентификации и наличие сервисов и характеристик. Об этом немного подробнее.

Дело в том, что в отличие от “обычного” Bluetooth, где предполагается соединение “равноправных” устройств с вводом PIN-кода, BLE ориентирован на устройства “неравноправные”, одно из которых может не иметь ни экрана, ни клавиатуры. Таким образом, защита с помощью PIN-кода в BLE не предусмотрена, а реализация механизмов аутентификации полностью зависит от разработчиков гаджета — и как показывает опыт, они часто этим пренебрегают.

Вторая важная для нас особенность — наличие сервисов, характеристик и дескрипторов. Они являются основой для передачи данных между устройствами в спецификации BLE. Как мы уже говорили, BLE работает с “неравноправными” гаджетами, один из которых — тот, который подключается, — как правило, смартфон. Второй — в нашем случае трекер. После установки соединения смартфону становится доступно несколько сервисов BLE. Каждый из них содержит характеристики, в которых в свою очередь могут быть дескрипторы. Как характеристики, так и дескрипторы могут использоваться для передачи данных.

Таким образом, правильный подход к безопасности устройств с BLE предполагает пре-аутентификацию до того, как характеристики и дескрипторы станут доступны для чтения и записи. Более того, хорошей практикой является разрыв соединения через небольшой промежуток времени после подключения, если пре-аутентификация не была пройдена. При этом идентификация пользователя должна быть основана на каком-либо секрете, недоступном атакующему — например, первую часть данных можно шифровать определенным ключом на стороне сервера, а не приложения. Или подтверждать передаваемую информацию и MAC-адрес подключенного устройства через дополнительные каналы связи, например встроенную SIM-карту.

Kippy Vita

Этот трекер передает GPS-координаты на сервер через встроенную SIM-карту, а местоположение питомца отображается в мобильном приложении. “Напрямую” со смартфоном трекер не взаимодействует. Нам не удалось обнаружить никаких проблем в самом устройстве, так что мы взялись за связанное с ним ПО.

Здесь тоже все оказалось достаточно хорошо: в них реализована проверка SSL-сертификата (SSL pinning), чего нет ни в одной из других протестированных нами программ. Более того, Android-приложение шифрует важные данные перед сохранением их в своей папке.

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

Вывод приложения Kippy Vita с логином и паролем пользователя

Несмотря на то, что не каждое приложение может прочитать логи (для этого оно должно быть системным или обладать правами суперпользователя), это все равно является серьезной проблемой безопасности.

Зарегистрированные CVE:
CVE-2018-9916

Этот трекер отслеживает местоположение питомца с помощью GPS и передает координаты через встроенную SIM-карту. Кроме того, он может взаимодействовать с телефоном владельца напрямую — через Bluetooth LE. А это значит, что он всегда готов к подключению— хорошая отправная точка для начала исследования.

В отношении защиты соединения со смартфоном Link AKC нас удивил: разработчики сделали все правильно, нам не удалось найти серьезных проблем, что редкий случай для устройств с поддержкой BLE.

После того как телефон подключается к трекеру и обнаруживает сервисы (discoverServices), он должен включить нотификации (т. е. сообщить гаджету, что ожидает изменений) в двух характеристиках и дескрипторе (в противном случае трекер будет разрывать соединение). После этого Link AKC готов принимать команды. В них должен содержаться ID пользователя (номер), и если у вас нет прав на работу с трекером, команда не будет выполнена. Таким образом осуществляется контроль прав доступа. Даже с помощью настоящего ID от исследуемого устройства нам не удалось заставить гаджет выполнить команду с другого смартфона — по всей видимости, трекер проверяет его MAC-адрес.

Но полностью безопасным устройство все равно назвать нельзя. Мы обнаружили, что в приложении для Android разработчики забыли отключить логирование. В результате оно транслирует в logcat много данных, в том числе:

  • Токен авторизации приложения, перехватив который, можно авторизоваться в этом сервисе и, например, получать местоположение питомца:

  • Регистрационные данные пользователя, включая его имя и электронный адрес:

  • Координаты устройства:

Стоит отметить, что начиная с Android 4.1, читать логи других программ могут только некоторые системные приложения или приложения, имеющие права суперпользователя. Доступ также можно получить при подключении смартфона к компьютеру, но для этого необходимо активировать в Android режим разработчика.

И все же, несмотря на ограничения, логи остаются проблемой: злоумышленники могут извлечь данные для доступа к аккаунту жертвы, пусть вероятность этого и мала.

Кроме того, Android-приложение не проверяет HTTPS-сертификат сервера, т. е. подвержено атаке “человек посередине”. Достаточно установить сертификат злоумышленников на смартфон (что довольно просто), и можно перехватить все передаваемые данные, включая пароли и токены, дающие доступ к аккаунту:

Android-приложение Link AKC уязвимо перед MITM-атакой

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

Токен авторизации хранится в незашифрованном виде

Обо всех найденных проблемах мы сообщили разработчикам, которые пообещали их исправить. В целом же можно сказать, что трекер Link AKC в достаточной степени безопасен, а самое уязвимое его место — это Android-приложение.

Зарегистрированные CVE:
CVE-2018-7041

Nuzzle

По своей функциональности Nuzzle похож на предыдущий трекер: он также использует SIM-карту для передачи GPS-координат питомца и может напрямую подключаться к смартфону посредством BLE. В отличие от Link AKC, с последним у Nuzzle оказалось не все так хорошо: из-за отсутствия авторизации и контроля доступа устройство готово к сопряжению с любым смартфоном. В результате злоумышленник имеет такой же доступ к управлению трекером, как и владелец. Например, любой желающий может быстро разрядить батарею гаджета, включив на нем лампочку (для этого достаточно поменять значение одной характеристики).

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

Что еще хуже, постоянное чтение данных из характеристики с телеметрией приводит к “потере” устройства: для экономии заряда гаджет не передает координаты через мобильную сеть, если они уже были переданы через BLE. Таким образом, просто подключившись к трекеру с помощью смартфона, злоумышленник может скрыть местоположение вашего питомца.

Еще одна брешь была найдена нами в процессе обновления прошивки устройства. Мы обнаружили, что проверку ее целостности легко обойти. Дело в том, что прошивка состоит из двух файлов с расширениями DAT и BIN. Второй содержит саму прошивку, а первый — информацию о ней, в том числе контрольную сумму (CRC16), с помощью которой и проверяется ее целостность. Чтобы установить на трекер модифицированное ПО, нужно просто изменить значение этой суммы.

AT-команды в прошивке Nuzzle

Чтобы вывести устройство из строя, нам не понадобилось даже анализировать прошивку: она не зашифрована и не упакована, так что, просто открыв ее в HEX-редакторе, мы смогли найти AT-команды и хост, использующийся для отправки данных с помощью SIM-карты. Мы изменили несколько байтов в хосте, обновили контрольную сумму прошивки и загрузили ее на устройство. После этого трекер перестал работать.

Программа для управления устройством также оказалась незащищенной. Как и в случае с Link AKC, приложение Nuzzle для Android не проверяет сертификат сервера, а аутентификационный токен и адрес электронной почты пользователя хранятся в папке приложения в незашифрованном виде.

Незашифрованные токен авторизации и адрес пользователя

Зарегистрированные CVE:
CVE-2018-7043
CVE-2018-7042
CVE-2018-7045
CVE-2018-7044

TrackR

От компании TrackR в нашем исследовании приняли участие два устройства: Bravo и Pixel. Оговоримся сразу, что эти “брелки” если и предназначены для отслеживания перемещений животных, то только в пределах квартиры (до 100 м): в отличие от остальных трекеров, у них нет ни GPS-модуля, ни SIM-карты, а единственный канал связи с ними — Bluetooth LE. Основное их предназначение — помогать находить ключи, пульты управления и т. п. Однако разработчики снабдили эти устройства опцией, благодаря которой их частично можно использовать для отслеживания перемещений предметов: трекеры могут передавать данные о своем местоположении через смартфоны других пользователей приложения TrackR. Если программа запущена на устройстве, она будет передавать сервису данные о всех замеченных рядом “брелках” вместе с местоположением телефона. И в этом кроется первый недостаток: кто угодно может зарегистрироваться в мобильном приложении и отправить поддельные координаты.

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

Так, у устройств отсутствует аутентификация при подключении по Bluetooth LE, в результате чего им может управлять не только владелец. Злоумышленнику ничто не мешает, например, включить звуковой сигнал, просто поменяв значение одной характеристикии найти животное раньше владельца или разрядить батарею трекера.

Структура сервисов и характеристик устройства TrackR

Кроме того, приложение для Android не проверяет сертификаты сервера, и в результате MITM-атаки преступник может перехватить пароль, аутентификационный токен, электронный адрес пользователя и координаты устройства.

Запрос Android-приложения TrackR содержит в себе токен аутентификации

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

Зарегистрированные CVE:
CVE-2018-7040
CVE-2016-6541

Tractive

Этот трекер, в отличие от большинства устройств из нашего исследования, не коммуницирует со смартфоном напрямую — только через собственные серверы. Такой подход оказался достаточно безопасным, но нам удалось найти небольшие проблемы в Android-приложении. Во-первых, оно, как и в других случаях, не проверяет сертификат сервера, что делает возможной атаку “человек посередине”. Кроме того, приложение хранит аутентификационный токен в незашифрованном виде:

Как и данные о перемещении питомца:

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

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

Weenect WE301

Этот трекер также не коммуницирует со смартфоном владельца напрямую, а передает координаты питомца на свой сервер через встроенную SIM-карту. Мы не нашли проблем с безопасностью самого устройства, но смогли обнаружить схожие с Tractive уязвимости в Android-версии приложения.

Во-первых, оно допускает атаку “человек посередине”, в результате которой злоумышленники могут получить доступ к аккаунту пользователя или перехватывать информацию о местоположении питомца. Во-вторых, аутентификационные данные хранятся в папке приложения в незашифрованном виде, из-за чего они могут быть украдены троянцем, получившим права суперпользователя на устройстве.

Передача данных через Wi-Fi защищена с помощью HTTPS

Затем мы занялись проверкой безопасности BLE-подключения и обнаружили множество проблем. Первая — отсутствие аутентификации. Как выяснилось, на устройстве ее заменяет некая последовательность действий, настолько простая, что ее легко воспроизвести и получить трекер, готовый к “общению” с незнакомцем. Все, что нужно сделать — подключиться к устройству и перевести две характеристики в режим WRITE_TYPE_NO_RESPONSE, запросить изменение объема передаваемых данных (MTU), включить нотификации для одной характеристики и передать определенное число в другую.

Теперь трекер готов к получению и выполнению команд, которые не содержат ID пользователя, поэтому их может отправлять кто угодно. В том числе можно отправить команду initiateSession, в ответ на которую устройство вышлет незашифрованный набор данных, включающий координаты устройства. Кроме того, если постоянно передавать эту команду, гаджет не будет отправлять информацию о местоположении через SIM-карту, считая, что они уже были получены “напрямую”. Таким образом можно “спрятать” трекер от его владельца.

Есть и еще одна проблема —трекеры передают данные на сервер также без аутентификации. Т. е. кто угодно может, например, подделать их, изменив предварительно координаты.

Приложение передает данные, полученные от трекера через BLE

Android-приложение использует HTTPS-протокол, что хорошо, но при этом не проверяет сертификат сервера.

В результате атаки типа “человек посередине” можно перехватить данные пользователя

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

Координаты трекера из базы данных приложения

Стоит упомянуть, что Android-приложение пишет информацию в logcat. Как упоминалось выше, несмотря на то, что логи других программ могут читать только некоторые системные утилиты или приложения с правами суперпользователя, писать туда важные данные не стоит.

Android-приложение может вывести в лог данные о пользователе и его питомце (активности, электронный адрес, имя, телефон владельца), а также один из используемых токенов

Зарегистрированные CVE:
CVE-2018-8760
CVE-2018-8757
CVE-2018-8759
CVE-2018-9917

Выводы

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

Итог нашего исследования: четыре трекера используют технологию Bluetooth LE для связи со смартфоном владельца, и только один из них делает это правильно. Остальные же могут принимать и исполнять команды от кого угодно. Более того, их можно вывести из строя или скрыть от владельца — для этого достаточно просто находиться рядом с трекером.

Всего одно из протестированных Android-приложений проверяет сертификат своего сервера, не полагаясь на систему. Как итог — большинство подвержено атаке “человек посередине”, т. е. злоумышленник может перехватить передаваемые данные, если “уговорит” жертву установить свой сертификат.

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

Leave a Reply

Your email address will not be published. Required fields are marked *