June 15, 2021

Извлекаем и анализируем данные Apple Watch.

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

Apple Watch — одна из самых популярных в мире марок умных часов. Последняя их версия оснащена полным набором датчиков и процессором, мощность которого превосходит бюджетные (и даже не очень бюджетные) модели смартфонов. При помощи часов Apple собирает огромные массивы данных. Что происходит с этими данными, где они хранятся и как их извлечь? Попробуем разобраться.

За последние несколько лет популярность разнообразных трекеров и умных часов значительно возросла. В 2018 году был продан 141 миллион умных часов, что почти вдвое превышает результат предыдущего года. Среди всего разнообразия моделей выделяется линейка Apple Watch, продажи которых в 2018 году составили 22,5 миллиона единиц. Уже несколько лет суммарная доля всех моделей Apple Watch лишь немного не дотягивает до половины на глобальном рынке.

Первая версия часов Apple Watch была выпущена в 2015 году. В следующем году на замену первому поколению часов пришло поколение Series 1, которое вышло одновременно с версией Series 2. На сегодняшний день актуальная модель — четвертая (по факту пятая) версия Apple Watch 4. Все версии часов от Apple работают под управлением специализированной операционной системы WatchOS, код которой, в свою очередь, основан на мобильной системе iOS.

Извлечение данных из Apple Watch через адаптер

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

  1. Каким-то образом подключить часы к компьютеру. И если для Apple Watch S1, S2 и S3 есть готовые адаптеры IBUS, то для часов последней серии нужного адаптера мы не нашли.
  2. Когда часы подсоединятся к компьютеру, потребуется создать доверенное соединение — точно так же, как и с iPhone. И точно так же, как и в случае с iPhone, для этого нужно будет разблокировать часы кодом блокировки. Если этого не сделать, то связать часы с компьютером не получится.

И даже после всего перечисленного тебе не удастся извлечь образ файловой системы! Все, что тебе будет доступно, — это несколько сервисов, через которые можно попробовать извлечь часть типов данных. С учетом всего этого неудивительно, что извлечением данных из часов Apple Watch мало кто занимается.

Что же вообще можно выудить из часов при прямом подключении? Доступны всего три типа данных:

  1. Информация об устройстве и список установленных приложений.
  2. Файлы через протокол AFC (Apple File Conduit).
  3. Лог-файлы.

Подключение к компьютеру

Нам удалось найти переходники для первых трех поколений часов; для Apple Watch 4 такого адаптера нет. Диагностический порт в часах Apple Watch находится под креплением для ремешка; потребуется тонкая игла или скрепка для того, чтобы открыть крышку. Используемый нами адаптер носит название IBUS: IBUS for Apple Watch S1 и IBUS for Apple Watch S2 and S3.

Правильно подсоединить адаптер к часам может быть сложно. Тем не менее это возможно.

Так же как и для iPhone, приложение iTunes запросит разрешение на создание доверенного соединения с компьютером.

iTunes отобразит информацию о часах (только версия ОС и уникальный идентификатор часов).

Теперь запускаем Elcomsoft iOS Forensic Toolkit.

Список приложений, установленных на часах, извлекается командой I (Device Info) и сохраняется в файл.

На диске (обычно в том же каталоге, куда установлен iOS Forensic Toolkit) создается три файла:

  • Ideviceinfo.plist;
  • Applications.txt;
  • Applictions.plist.

В файле ideviceinfo.plist содержится вся доступная информация по Apple Watch, включая точный идентификатор модели (Hardware Model), версию операционной системы WatchOS, серийный номер часов (Serial Number), UDID, название устройства (Device Name), MAC-адреса адаптеров Wi-Fi и Bluetooth, часовой пояс и время на момент извлечения данных.

Также в файле есть информация о свободном и общем объеме накопителя и размере системного раздела (атрибуты Total Disk Capacity, Total System Capacity, Total Data Capacity, Total Data Available). Наконец, атрибуты Language и Locale содержат информацию о выбранном языке и региональных настройках.

Список установленных на часах приложений сохраняется в файл Applications.txt. Сюда попадают такие данные, как Bundle Identifier (уникальный идентификатор приложения), Bundle Version и Bundle Display Name (название приложения в том виде, как оно отображается на часах).

Детальная информация о каждом установленном приложении доступна в файле Applications.plist (ты помнишь, какой утилитой его просмотреть). Здесь содержится информация о точном пути в файловой системе, по которому установлено приложение и пути к его песочнице (Application Path и Container соответственно). Обрати внимание: доступа к файловой системе часов у нас нет, так что доступа к данным из песочницы мы не получим. Как выглядит информация о приложении Uber, можно посмотреть на скриншоте ниже.

Скопировать файлы системных журналов можно командой L (Logs).

Анализ лог-файлов часов

Итак, мы извлекли лог-файлы из часов. Более подробно почитать о лог-файлах iOS можно в статье Using Apple «Bug Reporting» for forensic purposesМаттиа Эпифани (Mattia Epifani), Хизер Махалик (Heather Mahalik) и Адриана Леонга (Adrian Leong, Cheeky4n6monkey). В статье рассказывается о том, как использовать профили sysdiagnose для извлечения данных из различных устройств Apple. Попробуем использовать тот же подход с часами.

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

MobileActivation содержит информацию о версиях ОС и времени их установки, модели устройства и типа продукта. Здесь также хранится детальная информация об обновлениях WatchOS. На скриншоте ниже показана работа скрипта с журналом Mobile Activation.

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

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

Но интереснее всего, пожалуй, журнал PowerLog. Здесь хранится информация о взаимодействии пользователя с часами. Часы лежали на зарядке? Их взяли в руки? Надели на запястье? Пользователь активировал экран? Именно этот журнал в первую очередь стараются проанализировать эксперты при расследовании автомобильных аварий. Если водитель отвлекся на часы (или включил экран телефона, в нем тоже есть аналогичный лог) в момент аварии, это будет свидетельствовать против него (в США есть понятие Distracted Driving. Для информации: в результате distracted driving на американских дорогах в 2017 году погибло более трех тысяч человек). Из-за особой важности структура этой базы данных отлично изучена. Можно почитать, например, статью Сары Эдвардс (PDF) или воспользоваться готовым инструментарием APOLLO.

Наконец, логи Wi-Fi содержат список сетей, к которым подключались часы. Проще всего просмотреть содержимое файла com.apple.wifi.plist, в котором интерес представляют записи о SSID, BSSID и дате последнего подключения к данной сети. Особый интерес представляет параметр BSSID, который можно использовать для определения точного местоположения (радиус 15–25 метров) в момент подключения к сети. Для определения координат точки доступа Wi-Fi по ее BSSID можно воспользоваться одним из сервисов reverse lookup, например Wigle.

Доступ к медиафайлам

О доступе к медиафайлам стоит рассказать подробнее. Извлечь медиафайлы можно командой M(Media). Интерес представляют не столько сами фотографии, сколько база данных Photos.sqlite.

Практически единственный способ получить доступ к медиафайлам из часов Apple Watch требует использования утилиты, работающей по протоколу AFC (Apple File Conduit). При этом часы должны быть подключены к компьютеру, а между компьютером и часами установлены доверенные отношения (pairing).

Как было показано в предыдущем разделе, медиафайлы легко извлечь командой M (Media Files) программы iOS Forensic Toolkit. Казалось бы, все просто: медиафайлы — это фотографии и, возможно, видеоролики; что интересного может найтись в файлах с часов? Оказывается, интересного довольно много — и основной интерес представляют вовсе не сами фотографии.

Ниже показана структура папок, создаваемая после извлечения медиафайлов по протоколу AFC.

Собственно изображения (в сильно уменьшенном по сравнению с оригиналами виде) попадают в папку DCIM; здесь без сюрпризов.

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

В папке iTunes_Control\iTunes содержится весьма интересная база данных MediaLibrary.sqlitedb. Сюда же входят и соответствующие файлы SHM (Shared Memory) и WAL (Write Ahead Log). Сама база данных, как очевидно из названия, хранится в формате SQLite (как, впрочем, и все остальные базы данных на часах). В этой базе лежат такие данные, как iCloud ID пользователя, а также список покупок в магазине iTunes (покупки музыки, фильмов и электронных книг). Что интересно, в этом файле хранится информация о покупках, совершенных со всех устройств пользователя, зарегистрированных в данной учетной записи.

В базе данных 36 таблиц. Идентификатор пользователя iCloud ID хранится в таблице _MLDatabaseProperties.

Чтобы извлечь из базы данных какую-то осмысленную информацию, сформируем запрос SQL:

select
  ext.title AS "Title",
  ext.media_kind AS "Media Type",
  itep.format AS "File format",
  ext.location AS "File",
  ext.total_time_ms AS "Total time (ms)",
  ext.file_size AS "File size",
  ext.year AS "Year",
  alb.album AS "Album Name",
  alba.album_artist AS "Artist",
  com.composer AS "Composer",
  gen.genre AS "Genre",
  art.artwork_token AS "Artwork",
  itev.extended_content_rating AS "Content rating",
  itev.movie_info AS "Movie information",
  ext.description_long AS "Description",
  ite.track_number AS "Track number",
  sto.account_id AS "Account ID",
  strftime('%d/%m/%Y %H:%M:%S', datetime(sto.date_purchased + 978397200,'unixepoch'))date_purchased,
  sto.store_item_id AS "Item ID",
  sto.purchase_history_id AS "Purchase History ID",
  ext.copyright AS "Copyright"
from item_extra ext
  join item_store sto using (item_pid)
  join item ite using (item_pid)
  join item_stats ites using (item_pid)
  join item_playback itep using (item_pid)
  join item_video itev using (item_pid)
  left join album alb on sto.item_pid=alb.representative_item_pid
  left join album_artist alba on sto.item_pid=alba.representative_item_pid
  left join composer com on sto.item_pid=com.representative_item_pid
  left join genre gen on sto.item_pid=gen.representative_item_pid
  left join item_artist itea on sto.item_pid=itea.representative_item_pid
  left join artwork_token art on sto.item_pid=art.entity_pid

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

Купленные файлы (на примере ниже это музыка) можно обнаружить в папке Purchases:

Интерес представляет и папка PhotoData, в которой хранятся метаданные синхронизированных фотографий. Наибольший интерес представляют база данных Photos.sqlite и папка Thumbnails.

В базе Photos.sqlite содержится информация о фотографиях, которые хранятся на часах. Детальное описание структуры базы доступно здесь. Готовые запросы SQL можно скачать здесь.

Наконец, в папке Thumbnails хранятся уменьшенные превью изображений на Apple Watch. Формат ITHMB можно преобразовать в привычный JPEG при помощи утилиты iThmb Converter.

Через переходник мы получили даже меньше информации, чем при анализе резервной копии часов. Тем не менее ценность этих данных несравнимо выше, чем данных из резервной копии: для получения доступа ко всей этой информации нам не нужен связанный с часами iPhone — вполне достаточно самих часов. Многие данные уникальны; особо ценны логи часов вообще и логи PowerLog в частности, а также талоны из приложения Wallet.