Мобильный Криминалист

Извлечение данных из смартфонов Motorola

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

Разработчиками из компании Оксиджен Софтвер удалось обойти защитные механизмы многих моделей смартфонов Motorola модельного ряда 2013-2017 годов, работающих под управлением Android версий с 5.0 по 7.0. Сегодня мы расскажем о том, как работает процедура извлечения данных из таких устройств.

Блокировка загрузчика

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

В ОС Android загрузчик (bootloader) – это первый код, который запускается со встроенного в телефон накопителя. Именно в загрузчике содержатся механизмы, с помощью которых устройство проверяет целостность загрузочного раздела, и именно загрузчик несёт ответственность за загрузку основной системы или вспомогательных режимов, таких как fastboot или режим восстановления через recovery.

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

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

В случаях, когда загрузчик устройства заблокирован (а это – стандартное состояние подавляющего большинства устройств), в процессе загрузки проводятся дополнительные проверки. В частности, загрузчик проверит электронную подпись ядра, и если электронная подпись не совпадает (ядро модифицировано) или подписана не сертифицированным ключом (загружен сторонний код), то устройство не сможет продолжить загрузку. Если загрузчик заблокирован, пользователь не сможет вносить изменения в системные и загрузочные разделы, а также не сможет загрузить устройство командой fastboot boot xxx.img с помощью неподписанного образа (например, в стороннюю recovery – TWRP и подобные).

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

Казалось бы, разблокировка загрузчика – очевидный шаг для эксперта по мобильной криминалистике. Но не всё так просто. Далеко не все производители позволяют разблокировать загрузчик, а те, которые позволяют – поддерживают разблокировку не для каждой модели и не для каждой операторской версии телефонов. Но даже тогда, когда загрузчик можно разблокировать (например, на устройствах линеек Nexus и Pixel, Nextbit Robin и подобных ориентированных на разработчиков и энтузиастов телефонах), использовать разблокировку для извлечения данных не удастся: в процессе разблокирования загрузчика уничтожаются криптографические ключи, с помощью которых зашифрован раздел пользовательских данных. Единственное, что можно сделать с устройством после разблокировки заблокированного загрузчика – это осуществить сброс к заводским настройкам и настроить телефон заново. Разумеется, все данные пользователя при этом будут полностью уничтожены.

Что касается устройств производства Motorola, компания предоставляет официальную возможность разблокировать загрузчик – но не для каждого устройства. Список устройств, загрузчики которых могут быть разблокированы, доступен на странице https://motorola-global-portal.custhelp.com/app/standalone/bootloader/unlock-your-device-a. Для разблокировки загрузчика пользователю потребуется зарегистрировать учётную запись и сообщить уникальный идентификатор устройства, на основе которого и будет сгенерирован уникальный код разблокировки. Впрочем, для целей мобильной криминалистики официальный путь разблокировки загрузчика закрыт: пользовательские данные в процессе разблокировки будут уничтожены.

Защита от сброса к заводским настройкам

Вне зависимости от того, заблокирован или разблокирован загрузчик устройства, на ряде устройств (в частности, в большинстве моделей Samsung и Motorola) существует ещё одно препятствие на пути доступа к информации.

С выходом Android 5.1 разработчики Google добавили дополнительный уровень защиты. На сей раз меры направлены на усиление защиты данных и самого устройства в случае его кражи. Основное предназначение защиты от сброса к заводским настройкам (Factory Reset Protection, FRP) не в том, чтобы защитить устройство от сброса как такового, а в том, чтобы сделать его бесполезным в случае кражи, предотвратив возможность его использования после сброса к заводским настройкам.

При активированной защите FRP злоумышленник может удалить данные и сбросить устройство к заводским настройкам, но воспользоваться им не сможет: система начальной настройки потребует ввести учётные данные того Google Account, который использовался перед сбросом устройства.

В отличие от некоторых механизмов, FRP активируется автоматически в процессе настройки устройства при выполнении двух условий: 1) используется безопасный экран блокировки: устройство защищено PIN-кодом, паролем, паттерном или другим способом и 2) пользователь добавляет хотя бы одну учётную запись Google Account. Соответственно, при выключении безопасного экрана блокировки или при удалении учётной записи Google из настроек устройства (кстати, это действие почему-то не требует подтверждения – ни ввода пароля от Google Account, ни ввода PIN-кода от устройства) защита FRP так же автоматически отключается.

Итак, защита от сброса к заводским настройкам – отлично задуманная (но плохо реализованная) система. Почему мы рассказываем о ней здесь? Дело в том, что ряд производителей (в частности Motorola и Samsung) пошли чуть дальше, реализовав дополнительный защитный механизм именно через систему FRP.

Что произойдёт, если злоумышленник загрузит устройство в стороннюю recovery и попросту обнулит раздел frp? Или же установит прошивку без приложений Google, обойдя таким образом защиту от кражи? С разблокированным загрузчиком это вполне возможно.

Именно для защиты от подобных сценариев Motorola встроила дополнительную проверку. При активированной защите от сброса к заводским настройкам FRP устройство всегда будет вести себя так, будто его загрузчик заблокирован – даже если была произведена процедура разблокировки. Таким образом, загрузить неподписанный код (стороннее recovery или прошивку) не получится.

Таким образом, даже если загрузчик смартфона разблокирован (напомним, большинство пользователей этого не делает), его всё равно не удастся загрузить в стороннее recovery если:

А) в устройстве до сброса была настроена учётная запись Google Account, и

Б) был настроен безопасный экран блокировки (пароль, паттерн и т.п.)

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

Извлечение данных из устройств с заблокированным загрузчиком

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

Существуют альтернативные способы, основанные на найденных уязвимостях, позволяющих обойти механизмы защиты. К примеру, в смартфонах LG существует сервисный режим обновления прошивки. Он двусторонний, и позволяет скопировать данные из смартфона независимо от того, заблокирован ли загрузчик. В чипсетах Qualcomm предусмотрен сервисный режим 9008, который также открывает низкоуровневый доступ к данным.

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

На последнем моменте остановимся подробнее.

Шифрование

Пользователи Android могли зашифровать свои данные с самых ранних версий системы, однако достаточно безопасным шифрование стало лишь совсем недавно. Вплоть до версии 5.1 шифрование раздела данных было опциональным; чтобы его включить, пользователю приходилось заходить в настройки и вручную активировать соответствующую опцию. Шифрование заметно замедляло работу устройства. В результате лишь порядка 15% пользователей включало шифрование данных.

Ситуация изменилась с выходом шестой версии Android. В Android 6.0 Google потребовал от производителей активировать шифрование по умолчанию. Более того, у пользователя не осталось возможности шифрование отключить. Требование это относится исключительно к устройствам, которые были выпущены с Android 6.0 (и более новых версий) на борту. Устройства, получившие Android 6 или 7 через обновление так и остались незашифрованными. Таким образом, у большинства пользователей относительно свежих смартфонов, вышедших уже с Android 6.0 на борту, шифрование включено. (Число пользователей сторонних прошивок минимально, но они есть, поэтому сказать, что все пользователи таких устройств используют шифрование – нельзя).

В отличие от iOS, которая использует уникальные ключи шифрования для каждого блока данных, шифрование в Android устроено намного проще. Так, если пользователь не выбрал режим «запрашивать пароль при загрузке устройства», раздел данных будет зашифрован ключом, который создаётся на основе фиксированной фразы “default_password” и криптографических данных, которые хранятся в защищённой среде Trusted Execution Environment (TEE).

Использование фразы “default_password” вместо PIN-кода или пароля пользователя позволяет устройству полностью загрузить систему и запустить приложения ещё до того, как пользователь разблокирует телефон. С одной стороны – это удобно. С другой – менее безопасно в сравнении с решением Apple или обязательным использованием пароля для загрузки устройства. Тем не менее, даже такой защиты вполне достаточно для того, чтобы низкоуровневое извлечение данных (например, с выпаиванием микросхем памяти) не сработало: данные останутся зашифрованными, а данные для генерации ключа шифрования невозможно будет извлечь из модуля TEE.

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

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

Извлечение данных из смартфонов Motorola: подход Оксиджен Софтвер 

После всего перечисленного можно оценить все сложности, с которыми сталкиваются исследователи при извлечении данных из устройств. Компании Оксиджен Софтвер удалось разработать технологию, с помощью которой разработчикам удалось обойти большую часть защитных мер. Метод доступен для устройств Motorola, выпущенных в 2013-2017 годах независимо от блокировки загрузчика. Метод работает для устройств под управлением всех версий Android вплоть до Android 7.0 с июльским патчем безопасности.

Новый низкоуровневый метод извлечения данных основан на уязвимости, обнаруженной в Nexus 6 – устройстве, произведённом компанией Motorola. В процессе работы создаётся уникальный для каждого устройства загрузчик, с помощью которого разработчикам удалось запустить загруженный в оперативную память устройства код. Дальнейшее – вопрос техники: загруженный в память устройства код выполняет все команды, с помощью которых из телефона извлекаются как собственно данные пользователя, так и с некоторыми оговорками - ключи шифрования. Защищённые данные расшифровываются «на лету». Метод опробован на большом количестве разнообразных моделей; он работает даже для устройств с заблокированным загрузчиком и активированной защитой FRP.

О каких оговорках идёт речь? Дело в том, что ключи шифрования возможно извлечь не всегда. Так, для устройств, оборудованных аппаратным модулем TEE, ключ шифрования извлекается в том и только в том случае, если пользователь не установил безопасный экран блокировки (пароль или паттерн).

Совместимые устройства

Метод, разработанный в компании Оксиджен Софтвер, может работать на всех устройствах, выпущенных Motorola в промежуток с 2013 года до июля 2017. Сюда включаются модели Moto C и Moto C Plus, Moto E2 - E4, все версии Moto G от Moto G2 до G5 (а также некоторые модели Moto G 2013 и 2014), Moto X Pure и Moto X Style, а также Moto X Play. Поддержка новых моделей Moto Z и Moto Z Play находится в планах у разработчиков.

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

Пошаговая инструкция

Ниже приводится пошаговая инструкция по извлечению данных из устройств Motorola. Для работы потребуется последняя версия комплекса Мобильный Криминалист.

  1. Запустите Мобильный Криминалист
  2. Нажмите «Подключить устройство»
  3. Запустится Мастер извлечения данных

  4. В Мастере извлечения данных нажмите “Motorola Android дамп” в разделе “Физическое извлечение данных”

  5. Далее следуйте инструкциям по подключению устройства. Выключите телефон Motorola и убедитесь, что он не подключен к компьютеру. После того, как устройство полностью отключится, зажмите кнопки «громкость вниз» и «питание». Удерживайте кнопки, пока устройство не включится. Отпустите кнопки, когда на экране устройства появится следующий экран:

  6. В Мастере извлечения данных нажмите «Подключить».

  7. Приложение автоматически обнаружит и идентифицирует устройство.

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



    Телефон перезагрузится в специальный режим. На экране телефона должно появиться следующее изображение:

  9. Мастер извлечения данных продолжит работу автоматически.

  10. Если на устройстве установлен пароль, введите его в окно «Пароль разблокировки». Если пароль неизвестен, оставьте окно пустым. Пароль будет использован для подключения и расшифровки зашифрованного раздела данных. Мастер извлечения данных автоматически проверяет правильность пароля. Если введён неправильный пароль, приложение запросит его снова. Обратите внимание: после череды неверно введённых паролей модуль TEE в устройстве может активировать увеличивающуюся задержку между попытками ввода. Таким образом, возможности подбора пароля, если он неизвестен, будут ограничены на аппаратном уровне. Даже если пароль неизвестен, снять образ раздела dm-0 можно, однако данные останутся зашифрованы.

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

  12. Приложение снимет образ данных устройства. В зависимости от объёма встроенного хранилища процесс может занять длительное время.

  13. Образ данных будет обработан с целью дальнейшего анализа. На этом шаге телефон от компьютера можно отключить.

  14. После того, как обработка данных будет завершена, вы увидите окно с подтверждением. Закройте окно кнопкой «Завершить», чтобы продолжить анализ данных в основном приложении Мобильный Криминалист.

  15. Данные доступны для анализа в Мобильном Криминалисте.

 

Заключение

Анализ смартфонов с заблокированными загрузчиками всегда представлял определённую сложность. В последних поколениях ОС Android появились дополнительные методы защиты. Начиная с Android 6.0 шифрование активируется «из коробки» (правда, только в устройствах, выпущенных с Android 6 и новее на борту). В Android 7.0 появился новый процесс доверенной загрузки, затрудняющий исполнение неподписанного кода на этапе загрузки.

Последние поколения смартфонов Motorola поставляются с Android 7.0. Для более старых устройств седьмая версия Android доступна в качестве обновления. Совместное использование блокировки загрузчика и защиты от сброса к заводским настройкам Factory Reset Protection (FRP) делает невозможным загрузку сторонних образов (например, раздела recovery) с целью извлечения данных.

Разработчики Оксиджен Софтвер сумели не просто найти обходной путь, но и создать полноценное коммерческое решение. Пользователям программного комплекса «Мобильный Криминалист» стал доступен режим физического извлечения данных из смартфонов Motorola, включая модели с Android 7.0 на борту.

Шифрование – серьёзное препятствие, затрудняющее или делающее невозможным процесс извлечения данных. Именно из-за встроенного шифрования постепенно уходят в прошлое низкоуровневые методы, связанные с прямым доступом или извлечением микросхемы памяти. Система шифрования в Android спроектирована для того, чтобы максимально затруднить такие попытки. Тем не менее, разработчикам Оксиджен Софтвер удалось обойти и это ограничение: ключи шифрования автоматически извлекаются из TEE устройства (правда, только тогда, когда само устройство не защищено паролем). Поиском решения проблемы извлечения ключей шифрования из устройств, на которых установлен пароль, активно занимаются разработчики.

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

Новый метод извлечения данных доступен пользователям системы Мобильный Криминалист 9.5 и более новых версий.


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