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

Наверное, я никогда не устану говорить о преимуществах физического анализа. Здесь и доступ ко всему содержимому файловой системы, и расшифровка всех записей из Связки ключей (а это – пароли, включая, кстати, пароли к кошелькам криптовалюты и «секретным» чатам). Тут извлечение данных из всех приложений (а не только тех, разработчики которых разрешили резервное копирование) и доступ к скачанным сообщениям электронной почты, чатам и перепискам в самых разнообразных приложениях, включая хорошо защищённые (помашем рукой пользователям Telegram и Signal).

Как добраться до самого интересного? Разумеется, нам нужен низкоуровневый доступ к данным, который невозможен без получения прав суперпользователя. А как получить права суперпользователя? Если вы – не работник полиции или спецслужб из США, Израиля или ЕС, то вариант один: установкой джейлбрейка. Сегодня я расскажу о рисках и последствиях физического анализа устройств, связанных с использованием джейлбрейка для извлечения данных.

Для чего нужен джейлбрейк


Наверное, все знают, что такое джейлбрейк для iOS и чем он отличается от root для Android (подсказка: практически всем). Джейлбрейк – собирательное название класса приложений для операционной системы iOS, позволяющих путём эскалации привилегий получить на устройстве права суперпользователя. Эскалацию привилегий осуществляют с использованием ошибок в системе безопасности iOS. С учётом того, что разработчики Apple оперативно исправляют ошибки с выходом обновлений iOS, выход новых и новых утилит джейлбрейк – процесс непрерывный.

Джейлбрейки используются как независимыми исследователями для анализа систем безопасности iOS, так и пользователями-энтузиастами, которые получают возможности модификации внешнего вида и поведения системы, а также установки приложений из сторонних источников помимо официального магазина Apple App Store. Для нас эти возможности излишни; всё, что нам нужно – это доступ к устройству через SSH, ну и, конечно же, полный доступ к файловой системе.

Таким образом, у нас в лаборатории (а также в лабораториях экспертов-криминалистов) джейлбрейки используют для получения неограниченного доступа к файловой системе, извлечения данных из iPhone и iPad и расшифровки Связки ключей (паролей пользователя, сохранённых в браузере Safari, системных и сторонних приложений).

Использование джейлбрейка несёт следующие выгоды:

Образ файловой системы:

  • Рабочие базы данных приложений, файлы WAL, доступ к недавно удалённым записям
  • Данные всех приложений, включая те, для которых запрещены резервные копии
  • Доступ к истории переписки в таких приложениях, как Signal и Telegram
  • Скачанные сообщения электронной почты и Exchange
  • Системные журналы

Связка ключей:

  • Помимо паролей пользователя, которые можно извлечь и из резервной копии с паролем, расшифровываются и записи, защищённые атрибутом this_device_only
  • В том числе извлекается пароль к резервным копиям iTunes

Использование джейлбрейка приносит не только выгоды, но и несёт ряд рисков.

Риски джейлбрейка


Установка и использование джейлбрейка связаны с некоторыми рисками. Риск установки джейлбрейка часто понимается неверно. Чаще всего опасаются «окирпичивания» устройства – ситуации, в результате которой взломанный iPhone или iPad перестаёт загружаться. Представление о такой опасности джейлбрейков тянется со времён iOS 8 и 9, джейлбрейки для которых патчили ядро и пытались (иногда – успешно, но чаще – не очень) отключить защиту Kernel Patch Protection, KPP. Срабатывание KPP и приводило к спонтанной перезагрузке устройства или его окирпичиванию.

У современных джейлбрейков (начиная с джейлбрейков для iOS 10) этот риск практически отсутствует: джейлбрейки не модифицируют ядро системы и никак не влияют на процесс загрузки (и, разумеется, не трогают KPP). Более того, даже устройства с установленным джейлбрейк загружаются в обычном режиме; для получения прав суперпользователя джейлбрейк необходимо будет запустить ещё раз, уже после загрузки.

К абсолютному минимуму этот риск сведён в джейлбрейках категории Rootless. Эти джейлбрейки не только никак не модифицируют систему, но даже не перемонтируют системный раздел. Соответственно, как-либо повлиять на процесс загрузки системы такие джейлбрейки не в состоянии.

Какие же риски несёт установка джейлбрейка? Перечислим.

1. Выход устройства в интернет. В процессе установки джейлбрейка вам придётся получить цифровую подпись для пакета IPA, в котором и содержится джейлбрейк. Неподписанные IPA не могут быть переданы на устройство и тем более не могут быть запущены на нём. Цифровую подпись выдают серверы Apple; к ним необходимо обратиться за её получением. Процесс автоматизирован: для него используется готовое и очень простое в использовании приложение Cydia Impactor с открытым исходным кодом. Тем не менее, если вы разрешите устройству выход в интернет, вы рискуете: злоумышленник может дистанционно подать на устройство команду для его блокировки или уничтожения данных.

Решение: эту проблему можно обойти, использовав сертификат для разработчиков (Apple Developer Program). Подробности в Пошаговом руководстве.

2. Джейлбрейк просто не установится. Да, второй по тяжести риск – это то, что джейлбрейк попросту не встанет на iPhone. Джейлбрейки используют не одну, а целую цепочку уязвимостей; найти и правильно использовать такую цепочку – тяжёлый труд. Увы, но ошибка на любом этапе приводит к тому, что джейлбрейк не установится, а вы окажетесь в лучшем случае с устройством без джейлбрейка, а в худшем – с устройством с перемонтированным системным разделом, но без джейлбрейка (о том, чем это плохо – ниже).

Решение: вообще говоря, джейлбрейков существует множество. Для iOS 12, например, мы насчитали как минимум 4 работоспособных джейлбрейка (на самом деле их больше). Не сработал один джейлбрейк? Просто попробуйте другой; о них опять же в Пошаговом руководстве.

Последствия


С рисками разобрались, джейлбрейк установлен. Чем это может грозить?

Прежде, чем говорить о рисках джейлбрейка, разберёмся с их видами. Их всего два: обычные (классические) джейлбрейки, и rootless-джейлбрейк.

Классический джейлбрейк предоставляет пользователю, так сказать, «полный фарш»: отключается проверка цифровой подписи (можно устанавливать и запускать любые приложения), устанавливается сторонний магазин приложений (чаще всего это Cydia, но начали появляться и альтернативные варианты). В системный раздел для этого записывается довольно много файлов, а сам системный раздел перемонтируется в режиме r/w.

Что это означает на практике? Хлам в системном разделе, который иногда невозможно полностью убрать в процессе удаления джейлбрейка (особенно если пользователь успел попробовать установку разных джейлбрейков). Потенциальную (а часто и реальную) нестабильность устройства. Наконец, невозможность корректной установки OTA-обновлений. Помогает только полное восстановление прошивки через iTunes, причём иногда нестабильность устройства сохраняется, и приходится делать сброс к заводским настройкам. Не слишком приятно.

Все эти вещи не происходят, если использовать джейлбрейк нового типа rootless, единственным представителем которого является RootlessJB. Этот джейлбрейк не снискал популярности своих классических собратьев по очевидной причине: он не устанавливает (и не поддерживает работу) сторонних магазинов (Cyida и подобных). У обычного пользователя-энтузиаста в этот момент интерес пропадает, и он устанавливает классический джейлбрейк.

Между тем для наших целей RootlessJB представляет особую ценность. Дело в том, что исследуемый iPhone мы должны вернуть примерно в том виде, в каком он поступил на анализ. То есть, как минимум устройство не должно работать менее стабильно, чем до анализа, и не должно быть проблем с установкой OTA-обновлений. Именно эти возможности нам даёт RootlessJB. Посудите сами: этот джейлбрейк не модифицирует системный раздел, не записывая в него ни одного лишнего файла. Более того, он и не может этого сделать: сам принцип работы этого джейлбрейка не предполагает перемонтирования системного раздела в режим r/w.

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

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

image

Заключение


Эта статья – первая из запланированных. Я планирую рассказать о том, как именно в лабораториях полиции и спецслужб как нашей страны, так и за рубежом получают доступ к информации в устройствах Apple. Оставайтесь с нами, будет интересно!

Комментарии (25)


  1. Stegos-in-Russia
    29.07.2019 15:02

    А вы только про Apple пишете?


    1. v_katalov Автор
      29.07.2019 15:32
      +1

      Нет, будет писать и про Android :)


  1. AlexBin
    29.07.2019 18:27

    Я плаваю в вопросе, поэтому спрошу. Что имеется в виду под анализом, в каких ситуациях он может потребоваться и кому?


    1. v_katalov Автор
      29.07.2019 18:31
      +1

      Правоохранительным органам в первую очередь. Например, переписка Telegram в резервную копию не попадает; её можно вытащить из устройства, только скопировав файловую систему полностью.


      1. AlexBin
        29.07.2019 18:32

        Это можно сделать, не зная пароль?


        1. v_katalov Автор
          29.07.2019 18:38

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


          1. AlexBin
            29.07.2019 18:40

            А тогда я не понял смысл. Если есть пароль, то можно и так получить доступ к переписке телеграм без анализа, или я ошибаюсь?


            1. v_katalov Автор
              29.07.2019 18:46

              Прочитать — можно конечно. Но у многих объём переписки огромный, и его не так-то просто анализировать вручную. Кроме того, достав данные из файловой системы — можно восстановить и адалённые записи (которые в самой программе не видны никак).


        1. Imposeren
          29.07.2019 18:43

          Просмотренные чаты в телеграмме отображаются даже при отключенном интернете — соответственно они хранятся на телефоне. Без пароля к аккаунту Телеграмма, зайти и посмотреть новые сообщения не выйдет, но вот посмотреть то, что уже «зекешировано» на телефоне можно получив полный доступ к ФС.

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


          1. v_katalov Автор
            29.07.2019 18:54

            Ну, «проблемы» мы пока не затрагивали — об этом ещё будем писать. Именно *пользователям* я ставить джейл категорически не рекомендую, в любом случае. Здесь речь пока только об извлечении данных, причём в ситуации когда пасскод не установлен или известен.


            1. armid
              29.07.2019 19:16

              Так а какой алгоритм работы? Вам приносят телефон с паролем. Вы ставите rootless джейлбрейк. Делаете дамп данных. Возвращаете телефон?

              А есть какие то контрольные подписи на дамп? Что если туда кто то добавит «лишнюю», информацию, которой изначально, не было.


              1. v_katalov Автор
                29.07.2019 19:27

                Начнём с того, что нам ничего не приносят :) Мы услуги не оказываем, мы только делаем софт.

                Но, ещё раз — если телефон с паролем и он неизвестен (и нет способов его получить), то джейл никак не поставить.

                Что касается контрольных сумм или подписей — отличный вопрос, спасибо. Ни у кого на рынке форензик-софта нет и не может быть такого решения (чтобы гарантировать неизменность данных), для iPhone по крайней мере (для некоторых аппаратах Android это в принципе возможно). Но легальные аспекты — это тоже не к нам. Да, в суде невозможно доказать, что снятая с телефона информация в точности соответствует тому, что реально (было) в телефоне. Однако, речь идёт в основном об ОРД.


  1. Yoooriii
    29.07.2019 23:03

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


    1. v_katalov Автор
      30.07.2019 10:31

      Да, считать содержимое памяти — не проблема. Но оно действительно зашифровано, начиная с iPhone 4 (iOS 4), причём если для 32-битных устройств (iPhone 4, 4S, 5, 5C) теоретическая возможность расшифровки есть, то начиная с iPhone 5S — без шансов, спасибо Secure Enclave.


  1. d1g1
    29.07.2019 23:38

    Здравствуйте! Спасибо за статью.

    У вас в статье приведено деление JB на классические и Rootless. Честно я впервые вижу такое деление и привык к делению на непривязанный (untethered jailbreak) и привязанный джейлбрейк (tethered jailbreak). Я могу предположить что это одно и тоже, только у вас своя терминология. Так?


    1. v_katalov Автор
      30.07.2019 10:38

      Вам спасибо за отзыв и вопрос!

      Нет, это не связаненые друг с другом вещи. Tethered/untethered означает всего лишь, сохраняется ли джейл после перезагрузки устройства; есть ещё semi-tethered (или semi-untethered), когда сохраняется ли частично, то есть надо будет перезапустить программу.

      Rootless jailbreak — очень интересная тема. Он вносит минимальные изменения в системный раздел, оставляя его read-only; не включает Cydia; не позволяет запускать сторонний приложения без дополнительных манипуляций (правки trusted cache), так что в целом значительно стабильнее, безопаснее и надёжнее. Подробнее можно почитать в нашем блоге на сайте:

      blog.elcomsoft.com/ru/2019/02/novyj-klass-jailbreak-dlya-ios-teper-rootless


      1. d1g1
        30.07.2019 10:48

        Не за что)

        После прочтения данной статьи у меня сложилось впечатление, что можно взять привязанный джейлбрейк (tethered jailbreak) и врезать из него все что он доставляет (включая Cydia) кроме SSH и это и будет вариация rootless.

        Но я соглашусь, что на последних версиях iOS для создания вариации rootless нужно меньше уязвимостей, меньшей критичности.


  1. v_katalov Автор
    30.07.2019 11:00

    В смысле, «вырезать»? Нет, перечисленного недостаточно. Одно из ключевых отличий rootless-джейла от «классического» — rootless не ремаунтит файловую систему и не даёт доступ на запись к системному разделу. Для этого, вообще говоря, уязвимости и не нужны, но операция сложная и небезопасная; мы сталкивались со случаями, когда джейл (классический) фейлился именно на этом этапе, и телефон практически окирпичивался. Перепрошить систему с нуля можно (не затрагивая пользовательский раздел), но только на версию, которая подписывается Apple, и обучно это одна (иногда две, очень редко три) последних, и джейлов для них нет. Откатиться на более старую версию невозможно.


    1. d1g1
      30.07.2019 11:04
      +1

      Тоесть убрать из привязанного джейлбрейка (tethered jailbreak) функциональность отвечающую за mount и соотвественно стадию установки софта. Смысл в том что сделать из более мощного JB, менее мощный.


      1. v_katalov Автор
        30.07.2019 11:10

        Да, теоретически можно (исходники того же unc0ver для iOS 11.0-12.2 есть), конечно! Но смотря какая цель ставится. Для нас (работающих на forensic-рынке) это в принципе полезно; для пользователя — ну, если джейл реально нужен, но хочется минимизировать риски (поскольку классический джейл предоставляет практически полный доступ к системе, ну и соответственно малвари всякой).


  1. d1g1
    30.07.2019 11:12
    +1

    Я абсолютно с вами согласен. Просто хотел этот вопрос у себя в голове систематизировать.
    Еще раз спасибо за материал!


  1. namezys
    31.07.2019 02:11

    а как вы его включите то? там же пин вроде сразу


    1. v_katalov Автор
      31.07.2019 04:55

      Взлом пароля — отдельная тема (плюс есть ещё Touch/Face ID). Но и если пасскода нет, или он известен, или удалось разблокировать другим способом — извлечь максимум данных непросто.


  1. flymedllva
    01.08.2019 08:48

    RootlessJB позволяет отправлять команды через терминал? Допустим поменять TTL?


    1. v_katalov Автор
      01.08.2019 08:50

      RootlessJB позволяет получить полный доступ к файловой системе iPhone через ssh. А дальше делайте что хотите :) С одним замечанием: системный раздел монтируется read-only, поэтому чтобы править *системные* файлы — придётся писать свою программу, причём чтобы её запустить — понадобится самостоятельно прописать её в trusted cache.