Как полиция может извлечь информацию из iOS устройств.

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

Image result for hack ios

Что еще за мобильная криминалистика?

Еще совсем недавно мы бы могли говорить лишь о компьютерной криминалистике и компьютерных преступлениях, но технологический прогресс прекрасно знает свое дело: с выходом и широким распространением смартфонов и планшетных устройств появилось и новое направление — мобильная криминалистика, которая в совокупности с компьютерной и сетевой стала называться цифровой криминалистикой. Разумеется, впоследствии и она отрастила свои ветви. Так, разделяют криминалистическое исследование Android, iOS, BlackBerry и некоторых других мобильных операционных систем. О криминалистическом исследовании i-девайсов мы с тобой сегодня и поговорим.

Все i-девайсы (iPhone, iPad и iPod Touch) работают под управлением операционной системы iOS. До третьей версии она называлась iPhone OS и была разработана специально для этого устройства. В ее основе лежит архитектура ее старшего брата — Mac OS X, что, разумеется, сказалось и на используемой ею файловой системе.

[ad name=»Responbl»]

Файловая система i-девайса

Во всех i-девайсах используется файловая система HFSX — полная копия HFS+ с той лишь разницей, что первая позволяет работать в режиме с учетом регистра имен. Очень часто в цифровой криминалистике используется так называемый файловый карвинг — метод восстановления данных, основанный на анализе не метаданных, а содержимого файлов. Так, карверы, например всем известный (и довольно популярный в кругах криминалистов) Scalpel, восстанавливают файлы, опираясь на заголовки и расширения. Так называемый семантический карвинг берет за основу внутреннюю структуру файлов, что позволяет восстанавливать даже фрагментированные файлы. Именно этим способом криминалисты и восстанавливают данные из HFS и HFS+. Это касается OS X. А что же с iOS? Сейчас расскажу.

Все. Очень. Плохо. Apple использует технологию, именуемую Data Protection, чтобы защитить данные, хранимые в памяти устройства. При создании нового файла генерируется уникальный 256-битный ключ (File Key), он шифруется так называемым Class Key и хранится в метаданных файла, а те, в свою очередь, шифруются ключом файловой системы (EMF Key), который генерируется на основе UID устройства. Что это значит? Все просто: применение классического файлового карвинга не даст никаких результатов, так как все данные в свободной области файловой системы будут зашифрованы. Правда, некоторые исследователи утверждают, что сравнительным анализом файла каталога и журнального файла можно получить информацию об удаленных файлах, включая расположение их метаданных, временные метки и прочее. Таким образом можно восстановить удаленные файлы, найти их ключи и расшифровать их. Но это все теория. А ты наверняка знаешь, что в теории нет разницы между теорией и практикой, а на практике — она есть.

Идентификация i-девайса

Так как на данный момент i-девайсов выпущено великое множество, одной из первоочередных задач оказывается начальная идентификация того или иного устройства. Для этого есть прекрасный инструмент — libimobiledevice. Libimobiledevice — это кросс-платформенная библиотека и набор инструментов, предназначенный для коммуникации с различными i-девайсами, включая iPhone, iPod Touch, iPad и Apple TV, по понятным им протоколам. С помощью libimobiledevice исследователь может получить доступ к файловой системе i-девайса, собрать информацию об устройстве, сделать резервную копию или восстановить из нее, управлять иконками на SpringBoard, инсталлированными приложениями и так далее. Данная библиотека находится в разработке с 2007 года, и главная ее цель — предложить инструмент для работы с i-девайсами в среде Linux.

Итак, libimobiledevice можно использовать для сбора информации. Для этого воспользуемся утилитой ideviceinfo. Если к компьютеру подключено только одно устройство, достаточно просто запустить утилиту из терминала:

# ideviceinfo -s

BluetoothAddress: 70:11:24:33:fa:4a
DeviceClass: iPad
DeviceName: Olegs iPad
EthernetAddress: 70:11:24:33:fa:4b
ProductName: iPhone OS
ProductType: iPad2,5
ProductVersion: 9.3.3
SerialNumber: F4KK3N4YF195
TimeZone: Europe/Moscow
UniqueDeviceID: d2c4466bbda5fc2cc87384dd9b64c054815c9cbb
WiFiAddress: 70:11:24:33:fa:49

Я намеренно не представил весь вывод — только данные, наиболее значимые с точки зрения мобильной криминалистики. «Зачем мне вообще вся эта информация нужна? Ведь я могу и по внешнему виду устройство идентифицировать!» — скажешь ты. И будешь не прав. Если ты еще не забыл, здесь мы говорим о цифровой криминалистике в целом и о мобильной криминалистике в частности, а значит, любое такое исследование может угодить прямиком в суд, а это, в свою очередь, означает, что идентификационные особенности того или иного i-девайса ты должен скрупулезно собрать и задокументировать.

[ad name=»Responbl»]

Извлечение данных из i-девайса

Теперь мы знаем, что за устройство мы исследуем: iPad 2,5, или iPad mini первого поколения. Пришло время извлечь данные из него. В мобильной криминалистике для извлечения данных из iOS-устройств используется три основных метода:

  • Извлечение данных на физическом уровне. Это самый оптимальный способ, который позволяет криминалисту получить наибольшее количество данных, в том числе удаленных. Чаще всего такой способ подразумевает джейлбрейк i-девайса.
  • Извлечение данных на уровне файловой системы. Это второй по значимости способ: при его использовании криминалист извлекает все данные, видимые на уровне файловой системы. При этом восстановить удаленные файлы невозможно. Исключение составляют удаленные записи из баз данных SQLite, а также миниатюры удаленных пользователем изображений.
  • Извлечение данных на логическом уровне. Этот метод позволяет извлечь часть файловой системы, что достигается резервным копированием. К сожалению, с его помощью нельзя получить такую важную с точки зрения криминалистики информацию, как электронная почта, базы с геолокационными данными (при этом подобные данные можно извлечь из изображений благодаря EXIF) или кеш приложений.

Извлечение данных на логическом уровне наиболее популярно, так как далеко не всегда находится возможность сделать джейлбрейк i-девайсов, чтобы извлечь данные на физическом уровне. И хотя недавно был представлен способ джейлбрейка устройств вплоть до версии 9.3.3, но выход iOS 9.3.4 закрыл эту возможность для криминалистического программного обеспечения, а с ним и для криминалистов. Хорошо, что под рукой у меня оказался мой старенький iPhone 4, который позволит продемонстрировать извлечение данных на физическом уровне.

Извлечение на логическом уровне

Так как извлечение данных на логическом уровне — наиболее простой и в то же время наиболее распространенный способ (к тому же единственно возможный для нашего первого подопытного), начну я именно с него. А воспользуемся мы все той же libimobiledevice. Для создания резервных копий (а именно это позволяет криминалистам извлекать данные на логическом уровне) в нашем распоряжении имеются две утилиты: idevicebackup и idevicebackup2. Если исследуемое устройство работает под управлением iOS младше четвертой версии, следует использовать idevicebackup, если старше — idevicebackup2. Вернись к информации об устройстве, и ты увидишь, что на нашем девайсе iOS 9.3.3. Это явно больше четырех, поэтому idevicebackup2 — наш вариант.

Синтаксис очень прост: достаточно напечатать в терминале название утилиты (idevicebackup2), backup в качестве аргумента, а после указать директорию, в которую данные и будут извлечены. Как только ты нажмешь заветный Enter, процесс запустится:

# idevicebackup2 backup ~/Desktop/ForensicsBackup
Рис. 1. Извлечение данных на логическом уровне с помощью idevicebackup
Рис. 1. Извлечение данных на логическом уровне с помощью idevicebackup

В результате мы получили типичную для резервных копий i-девайсов директорию, название которой — UDID устройства, в нашем случае d2c4466bbda5fc2cc87384dd9b64c054815c9cbb.

Если ты откроешь эту директорию, то увидишь четыре стандартных файла и массу файлов с именами длиной в 40 символов (см. рис. 2).

Извлеченные данные из iOS
Рис. 2. Извлеченные данные

Начнем с четырех стандартных файлов:

  • Status.plist — содержит сведения о том, удачно ли прошло резервное копирование.
  • Manifest.plist — описывает содержимое директории. Например, в нем ты найдешь список приложений, включая их версии, дату и время производства резервной копии, ее тип (шифрованная или нет), а также некоторую информацию об i-девайсе.
  • Manifest.mbdb — хранит описание всех файлов, входящих в состав резервной копии. Каждая запись содержит следующие параметры:
    • Domain — указывает, к какому домену относится элемент;
    • Path — содержит полный путь к элементу;
    • Link Target — указывает точку назначения элемента, если последний является символьной ссылкой;
    • User ID и Group ID — указывают принадлежность к пользователю и группе;
    • m. time — дата последней модификации файла (временная метка в формате Unix Epoch);
    • a. time — дата последнего доступа к элементу;
    • c. time — дата последнего изменения файла или директории;
    • File size — размер файла в байтах;
    • Unix file permissions — права доступа к файлу;
    • File hash — хеш файла.
  • Info.plist — содержит информацию об устройстве, включая дату производства резервной копии, номер телефона, имя устройства, ICCID, IMEI, версию iOS, серийные номера.

Что до всех остальных файлов — они и составляют непосредственно резервную копию. Почему у них такие странные имена? Все очень просто: эти 40 символов — хеш-сумма SHA-1, подсчитанная от полного пути к файлу, включая домен и субдомен. Что же это за домены такие? Рассказываю. Каждый файл, входящий в состав резервной копии, относится к одному из следующих доменов:

  • App domain — содержит данные, относящиеся к инсталлированным приложениям;
  • Camera Roll domain — содержит данные, полученные посредством камеры устройства, например фотографии, видеозаписи, а также миниатюры изображений;
  • Home domain — содержит данные приложений, инсталлированных в iOS по умолчанию;
  • Keychain domain — содержит зашифрованные данные, относящиеся к так называемой связке ключей;
  • Media domain — включает все мультимедиаэлементы, которые не относятся к камере устройства, например изображения из MMS-сообщений или голосовые сообщения;
  • Mobile Device domain — содержит профили, включающие в себя сертификаты, информацию об устройстве и программном обеспечении;
  • Root domain — содержит кешированные данные геолокационных сервисов устройства;
  • System Preferences domain — содержит конфигурационные файлы базовых компонентов iOS;
  • Wireless domain — содержит данные о тех компонентах, что делают i-девайс еще и мобильным телефоном.

[ad name=»Responbl»]

Физическое извлечение

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

Для физического извлечения я воспользуюсь тяжелой артиллерией — моим любимым iOS Forensic Toolkit от компании Elcomsoft. Данный набор инструментов доступен как для Windows, так и для OS X и представляет собой набор утилит, с помощью которого можно произвести любой тип извлечения данных, а также еще некоторые весьма полезные манипуляции, например подобрать или обойти пасскод. Я воспользуюсь своей любимой версией — для OS X.

Перед тем как начать извлечение данных, поговорим немного о структуре разделов iOS-устройств. Итак, NAND i-девайсов разделен на две части: системный раздел и раздел с данными. Первый расположен в /dev/disk0s1 или /dev/disk0s1s1. Так как в системный раздел пользовательские данные не записываются, он сравнительно небольшой — 1–2 Гбайт, в зависимости от размера памяти устройства. Примечательно, что к этому разделу не применяется шифрование, правда и криминалистически значимой информации он не содержит. Второй раздел куда более интересен. Расположен он в /dev/disk0s2 или /dev/disk0s2s2. Содержит он пользовательские данные и данные приложений, а монтируется в /private/var. Разумеется, данные здесь хранятся в зашифрованном виде.

Так как главный интерес для нас как мобильных криминалистов представляет именно второй раздел, начнем мы с извлечения ключей шифрования, благо iOS Forensic Toolkit это умеет (см. рис. 3).

Интерфейс Elcomsoft iOS Forensic Toolkit
Рис. 3. Интерфейс Elcomsoft iOS Forensic Toolkit

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

Самое время ее получить, для чего следует выбрать шестой пункт меню (см. рис. 4).

Структура разделов
Рис. 4. Структура разделов

Как я и говорил, мы имеем два раздела: первый без применения шифрования, второй — с применением. Разумеется, нас интересует второй, так как именно он содержит пользовательские данные и данные приложений. Его и выберем. Нас спросят, куда сохранить образ, — по умолчанию это домашний каталог пользователя. В результате мы получим файл user.dmg, который, в принципе, уже сейчас можно смонтировать в OS X и посмотреть иерархию каталогов. Вот только содержимое файлов увидеть не удастся. Помнишь, они же зашифрованы. Но у нас есть ключ, и сейчас самое время им воспользоваться. Для этого в iOS Forensic Toolkit предназначен седьмой пункт. Указываем путь к шифрованному физическому образу и ключевому файлу и запускаем дешифрацию (см. рис. 5).

Рис. 5. Дешифрация физического образа

После ее завершения мы получим файл user-decrypted.dmg. Если мы его смонтируем, то увидим, что на этот раз мы имеем доступ не только к иерархии каталогов, но и к содержимому файлов (см. рис. 6).

Итак, расшифрованный образ готов, самое время заняться его криминалистическим анализом.

Анализ извлеченных данных

Проведем анализ данных, извлеченных на логическом уровне, так как этот способ в настоящее время наиболее распространен (к сожалению, не всегда у нас есть возможность извлечь данные на физическом уровне). Но все нижесказанное справедливо и в отношении анализа данных, извлеченных другими способами. Исследовать резервную копию возможно, например, при помощи бесплатного инструмента iBackup Viewer, не считая, конечно, огромного количества специализированных криминалистических комплексов, предоставляющих криминалисту возможность работать в режиме push button forensics.

[ad name=»Responbl»]

Временные метки iOS

Временные метки — одни из главных помощников мобильного криминалиста. Чаще всего в i-девайсах можно встретить временные метки в формате MAC Absolute Time, которые представляют собой количество секунд, прошедших с 00:00:00 1 января 2001 года. Эти метки, например, очень часто встречаются в базах данных различных приложений, включая мессенджеры, которые обычно пестрят криминалистически значимой информацией (речь о них пойдет далее). Давай на них посмотрим. Откроем базу данных sms.db, выберем таблицу message и взглянем на столбец date. В нашем случае временная метка первого сообщения — 414908416. Это и есть временная метка в формате MAC Absolute Time. Теперь нам нужно перевести ее в понятный человеку вид. Разумеется, коммерческие форензик-сьюты способны делать это автоматически при разборе данных, но мы воспользуемся бесплатным инструментом от британцев из Digital Detective — DCode. Выбирай MAC Absolute, вставляй временную метку в соответствующее поле и жми Decode. Вуаля!

Декодированная временная метка в формате MAC Absolute
Рис. 7. Декодированная временная метка в формате MAC Absolute

Базы данных SQLite

Обычно данные приложений в iOS хранятся в базах данных SQLite. С точки зрения мобильной криминалистики эти базы примечательны тем, что имеют списки свободных областей и нераспределенное пространство, в которые довольно часто попадают удаленная пользователем информация. Именно благодаря им у криминалистов есть возможность восстанавливать, например, удаленную переписку, даже несмотря на то, что в их распоряжении имеются лишь данные, извлеченные на логическом уровне. Провести анализ этих баз данных можно, например, при помощи SQLite Database Browser. А что же делать с удаленными записями? Для их восстановления есть отличный, а главное бесплатный инструмент — SQLite-Parser. Пользоваться им очень просто, достаточно открыть терминал, перейти в каталог со скриптом (который, кстати, написан на твоем любимом Python).

Если ты хочешь увидеть вывод в формате .tsv, пиши:

sqlparse.py -f /путь/к/базе_данных.db -o report.tsv

Если же тебе по душе обычный текстовый файл, то пиши:

sqlparse.py -f /путь/к/базе_данных.db -r -o report.txt

Для ярых противников командной строки есть и GUI-вариант.

Лично я предпочитаю так называемый сырой вывод, а полученный текстовый файл анализирую с помощью hex-редактора. Если ты тоже откроешь полученный файл в hex-редакторе (или даже в текстовом), то увидишь, что текст сообщений тебе уже доступен, а временные метки не так и сложно обнаружить, проанализировав структуру оригинальной таблицы базы данных, в нашем случае message. Очень скоро ты найдешь необходимые байты, которые будут прекрасно конвертироваться в уже привычную тебе временную метку.

Временная метка удаленного SMS-сообщения
Рис. 8. Временная метка удаленного SMS-сообщения

Давай рассмотрим наиболее важные базы данных. Начнем мы с адресной книги. Пора отправиться в HomeDomain — тут в каталоге Library/AddressBook/ ты найдешь две базы данных: AddressBook.sqlitedb и AddressBookImages.sqlitedb. В первой базе имеются сведения не только о контактах телефонной книги, но и о контактах из других приложений, например WhatsApp. Что же хранится во второй базе? Ее название говорит само за себя: это изображения, присвоенные тому или иному контакту.

Теперь перейдем в WirelessDomain, а именно в Library/Call History. Здесь мы найдем базу данных call_history.db. Она хранит данные о последних ста вызовах, будь то входящие, исходящие или пропущенные. Старые записи удаляются, но ты же помнишь про списки свободных областей и нераспределенное пространство, верно?

Вернемся в HomeDomain, на этот раз в Library/SMS. Здесь-то мы и обнаружим одну из наиболее значимых с криминалистической точки зрения баз данных — sms.db. Кстати, в ней хранятся не только SMS-сообщения, но и iMessage!

Календарь также может включать значимые с криминалистической точки зрения события — поэтому Calendar.sqlitedb из Library/Calendar/ не стоит упускать из виду.

Ты когда-нибудь записывал пароли от своих аккаунтов в «Заметки»? Нет? А вот некоторые имеют такую привычку, поэтому база данных notes.sqlite из Library/Notes/ также достойна внимания криминалиста.

Теперь отправимся в RootDomain, где в Library/Caches/locationd/ нас ждет база данных consolidated.db. В ней мы найдем геолокационные данные с временными метками, основанные на вышках сотовой связи и точках доступа Wi-Fi, доступных для соединения.

Хорошо, а теперь давай посмотрим на какое-нибудь популярное приложение, относящееся, к примеру, к социальным сетям, скажем VK. Для этого отправимся в AppDomain. Думал, твоя переписка в безопасности? Не тут-то было! База данных database3.db отдаст ее всю, без остатка, а особенности SQLite позволят криминалистам извлечь из нее то, что ты тщательно стер. Также стоит отметить массу файлов с названиями вида http_xakep.ru_0.localstorage в Library/WebKit/WebsiteData/LocalStorage/. Это не что иное, как сайты, которые посетил пользователь с помощью приложения. Думаю, ты уже догадался, что извлечь данные можно не только из VK, но и из многих других приложений — подавляющее их большинство хранит свои данные в SQLite-базе.

[ad name=»Responbl»]

Plist-файлы

С этим форматом ты наверняка знаком еще с OS X (ведь так?). Plist-файлы чаще всего хранят информацию о конфигурациях и настройках, причем они могут быть как в XML-формате, так и в бинарном или просто текстовом. Если ты используешь OS X, то провести их анализ можно при помощи Xcode или встроенной утилиты plutil. Если же предпочитаешь работать с Windows, то можно, к примеру, воспользоваться PList Explorer.

Давай рассмотрим несколько значимых с точки зрения мобильной криминалистики файлов.

Хочешь узнать последний набранный вручную номер? Легко — достаточно взглянуть на com.apple.mobilephone.plist из Library/Preferences (HomeDomain). Нужна информация о последней SIM-карте, которая использовалась в устройстве? Добро пожаловать в WirelessDomain — Library/Preferences/com.apple.commcenter.plist содержит эту информацию.

Нужны сведения о подключениях к Wi-Fi? Пора посетить SystemPreferencesDomain — в com.apple.wifi.plist записано все, включая временные метки последних подключений.

А не посмотреть ли нам на последние поисковые запросы веб-браузера Safari? Перейдем в AppDomain и взглянем на файл com.apple.mobilesafari.plist из Library/Preferences/. Здесь мы их и найдем. Примечательно то, что, даже если пользователь очистит историю и кеш, записи в данном файле остаются нетронутыми.

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

[ad name=»Responbl»]

Базы миниатюр

Отдельного внимания заслуживают базы миниатюр — именно они позволяют хоть как-то восстановить удаленные пользователем изображения, которые могут иметь ключевое значение с точки зрения криминалистики. Это файлы с расширением .ithmb, которые расположены в CameraRollDomain, а именно Media/PhotoData/Thumbnails/. Просмотреть миниатюры, которые в них содержатся, а также экспортировать их поможет iThmb Converter.

Антикриминалистические меры

Как ты наверняка уже понял, лучшая антикриминалистическая мера — сброс к заводским настройкам: все ключи шифрования сотрутся, и восстановить какие-либо данные едва ли представится возможным.
Правда, если ты хранишь резервные копии любимого i-девайса на своем компьютере — ты все еще в опасности. Более того, если ты регулярно синхронизируешь устройство с компьютером, то криминалисты могут найти и так называемые lockdown-файлы, которые позволят им получить доступ к твоему устройству, даже если ты установил надежный пасскод.

[ad name=»Responbl»]

Вывод

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

Кроме того вам будет интересно ознакомится как достать данные из других мобильных устройств:

Как взломать Blackberry, методы и подходы.

Как взломать механизм резервного копирования Android.

Взлом Windows резервных копий на компьютере, планшете, телефоне.

Click to rate this post!
[Total: 17 Average: 3.5]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

1 comments On Как полиция может извлечь информацию из iOS устройств.

Leave a reply:

Your email address will not be published.