SafeUM
Home Блог Услуги Скачать Помощь О нас Пополнить
EN
RU

Axarhöfði 14, 110 Reykjavik, Iceland

Iceland - 2015
SafeUM
Блог
Услуги
Скачать
Помощь
О нас
Пополнить
Меню
RU
Язык
EN
RU
Архив
TOP Security!
27 Мар 2015

Фитнес-браслеты оказались находкой для шпионов

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

Так как это носимое устройство (wearable device), то я установил себе Android Wear app – приложение, созданное специально для носимых устройств. Это приложение без проблем подключилось к фитнес-браслету.

Правда, была одна странность: программа подключилась к браслету Nike+ Fuel Band SE, а у меня был браслет другой фирмы. Достаточно быстро мне удалось выяснить, что браслет Nike принадлежит моему коллеге. А он даже не заметил, как я подключился к его устройству. После этого мне захотелось провести небольшое исследование и проверить свой браслет на предмет безопасности и разобраться: на каком же уровне находится защита данных в подобных браслетах.

Умные браслеты: коммуникации с телефоном

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

Хотя эта статистика популярности именно Android-приложений (у нас нет гарантий, что соответствующие устройства есть у пользователей), в некотором приближении она отражает ситуацию с популярностью и носимых устройств. Для коммуникации с телефоном большинство этих браслетов используют технологию Bluetooth LE (также известную как Bluetooth Smart). Для нас это значит, что соединение устройств происходит не так, как в обычном Bluetooth. Нет никакого общего пароля – у большинства устройств нет экрана и/или клавиатуры.

В этих браслетах используется GATT (Generic Attribute Profile) — профиль общих атрибутов. Т.е. на носимом устройстве есть некий набор сервисов, у каждого сервиса есть набор характеристик. Каждая характеристика содержит байтовый буфер и список дескрипторов, каждый дескриптор содержит значение – байтовый буфер.

Для того чтобы это проиллюстрировать, я взял готовый код из Android SDK – пример приложения для подключения к Bluetooth LE устройствам. Мне не пришлось писать ни строчки кода – просто открыл уже существующий проект в Android Studio и нажал кнопку Start.

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

Сканирование

Итак, используя пример приложения из Android SDK, мне удалось подключиться к некоторым устройствам. После этого я сделал свое приложение, которое автоматически искало Bluetooth LE устройства, пыталось к ним подключиться и получить их список сервисов.

Используя это приложение, я провел несколько сканирований:

  • За два часа в Московском метро я смог подключиться к 19 устройствам 11 FitBit и 8 Jawbone.
  • В течение часа в фитнес-клубе в городе Bellevue, WA, USA, было обнаружено 25 устройств: 20 Fitbit, по одному – Nike, Jawbone, Microsoft, Polar, Quans.
  • За два часа в Канкуне (Мексика) вовремя SAS2015 я смог подключиться к 10 фитнес-трекерам: 3 Jawbone и 7 FitBit.
     

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

  1. Несмотря на указанные в спецификации 50 метров, реальное максимальное расстояние для подключений в большинстве случаев – не больше 6 метров.
  2. Предполагается, что к уже подключенному устройству невозможно подключиться. Т.е. если ваш девайс спарен с вашим телефоном, то никто не сможет к нему подключиться, его даже не должно быть видно в ходе сканирования.
     

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

Учитывая второй пункт приведенных выше ограничений, можно предположить, что обнаруженные мною устройства никогда не подключались к телефону, либо браслет не был подключен к смартфону во время сканирования (Bluetooth на телефоне выключен). А может быть, уже подключенное устройство было доступно для подключения, несмотря на предполагаемое ограничение. Как бы то ни было, шансы у потенциальных злоумышленников подключиться к фитнес-трекерам весьма велики.

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

Мой браслет: аутентификация

Для аутентификации на телефоне официальное приложение моего браслета использует один из четырех доступных на устройстве сервисов. Для каждой характеристики из этого сервиса приложение устанавливает флаг "CharacteristicNotification" – таким образом, приложение сообщает браслету, что хочет получать нотификации о любом изменении этой характеристики. Затем приложение получает список дескрипторов для каждой характеристики и устанавливает флаг "ENABLE_NOTIFICATION_VALUE" – так приложение сообщает браслету, что хочет получать нотификации о любом изменении каждого дескриптора.

После этого одна из характеристик меняет свое значение – байтовый буфер. Приложение считывает с браслета этот буфер: заголовок 200f1f и массив байт – назовем его authBytes. Приложение создает новый массив. Первой его частью будет константный массив, содержащийся в приложении и начинающийся с 6dc351fd44, второй частью нового массива будет authBytes. Приложение получает MD5 хэш от нового массива и отправляет его обратно на устройство в следующей структуре:

  • Header (201210051f)
  • MD5
  • Проверочный байт
     

Затем приложение отправляет на устройство еще один массив, также содержащийся в этом приложении. После этого браслет начинает вибрировать, пользователю остается лишь нажать кнопку – и аутентификация будет завершена. Для официального приложения процесс аутентификации занимает около 15 секунд. Я сделал приложение, которому надо всего лишь 4 секунды для того, чтобы браслет завибрировал.

Заставить пользователя нажать единственную кнопку на браслете легко. Нужно лишь быть достаточно настойчивым – можно перезапускать процесс аутентификации много раз, пока пользователь все-таки не нажмет кнопку. Или пока он не отойдет на расстояние, превышающее 6 метров.

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

После аутентификации на устройстве легко выполнять команды. Например, для того, чтобы поменять время, нужно отправить на устройство массив байт, начинающийся с f0020c, а затем дату в виде YYYY MM DD DW HH MM SS MSMSMSMS. В случае с другими фитнес-трекерами все еще проще: для FitBit часть данных доступна сразу после подключения, а код приложения для Nike даже не обфусцирован и читается очень легко (результаты одного исследования можно посмотреть здесь).

Заключение

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

Просто представьте – если взломан браслет с датчиком пульса, владелец магазина может следить за частотой пульса покупателя, пока тот смотрит на скидки в его магазине. Так же можно узнавать реакцию людей на рекламу. Более того, взломанный браслет с датчиком пульса можно использовать в качестве детектора лжи. Конечно, возможны и более вредоносные действия – например, применение Trojan-Ransom. Злоумышленник может перехватить контроль над вашим браслетом и заставить его постоянно вибрировать. А за отключение вибрации потребовать деньги.

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

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

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

Теги:
наблюдение Bluetooth
Источник:
Securelist
Автор:
Роман Унучек
2346
ДРУГИЕ НОВОСТИ
3 Июль 2020 safeum news imgage Полиция произвела множество арестов, взломав защищённый мессенджер
4 Май 2020 safeum news imgage Европол сообщил об аресте членов польской хак-группы Infinity Black
12 Дек 2019 safeum news imgage Шифрование под угрозой. Как это отразится на нас
4 Ноя 2019 safeum news imgage Должны ли важные решения приниматься на основании лишь фактов, или интуиция имеет право на жизнь?
7 Июнь 2018 safeum news imgage Ворующий данные вирус для роутеров умеет обходить шифрование
4 Июнь 2018 safeum news imgage Мошенники атакуют пользователей сервиса Booking.com
1 Июнь 2018 safeum news imgage Оператор крупнейшей точки обмена трафиком подал в суд на немецкую спецслужбу
30 Май 2018 safeum news imgage ФБР выявило два инструмента северокорейских кибершпионов
29 Май 2018 safeum news imgage Новый закон позволил европейцам требовать миллиарды у Google и Facebook
25 Май 2018 safeum news imgage Предустановленное вредоносное ПО обнаружили на сотнях моделей смартфонов
24 Май 2018 safeum news imgage GPS-трекеры для домашних животных позволяют следить за их хозяевами
23 Май 2018 safeum news imgage К Google подали иск из-за слежки за пользователями iPhone
21 Май 2018 safeum news imgage Данные о местоположении всех смартфонов в США оказались в открытом доступе
18 Май 2018 safeum news imgage Власти США запустили фальшивое ICO
17 Май 2018 safeum news imgage Хакеры похитили сотни миллионов у банков Мексики
Все новости
SafeUM
Конфиденциальность Правила использования Наши технологии О компании
Контакты
Скачать
SafeUM © Безопасный универсальный мессенджер

Axarhöfði 14,
110 Reykjavik, Iceland

Iceland - 2015