Ломаем iOS-приложение

Как взломать ios приложение для iphone. Вы хорошо поработали, и вот ваше приложение в App Store! Храните учётные записи юзеров? Используете встроенные покупки? Не хотите показывать своё ноу-хау? Повод задуматься о безопасности…

Ломаем iOS-приложение. Часть 1

Вы хорошо поработали, и вот ваше приложение в App Store!

  • Храните учётные записи юзеров?
  • Используете встроенные покупки?
  • Не хотите показывать своё ноу-хау?

Disclaimer

Цель данного урока — не сделать вас хакером, а показать, как злоумышленники могут обвести вас вокруг пальца. В статье пропущена кое-какая инфа, необходимая для взлома реального приложения на девайсе. Будем мучить симулятор (кстати, это вроде бы даже законно [citation needed] ).

Disclaimer от переводчика: из оригинального текста убрано много «воды» и отсылок к Голливуду (и так длинно). Добавлен ряд ключевых пояснений.

Ни одно приложение не является безопасным! Если кто-то действительно захочет найти у вас уязвимости, то он их найдёт. Нет гарантированного способа предотвратить атаку. Разве что, не выпускать приложение. Но есть отличные способы помешать взломщикам. (По мнению автора, им надоест, и они пойдут спать искать более лёгкую добычу, ага. — Прим. пер.)

Перед тем, как читать дальше, вы должны примерно понимать, что такое терминал, а также Objective C и Cocoa (впрочем, особо много кода не будет).

Приступим

Нам понадобится:
1. Утилита class-dump-z;
2. Прокси для отладки по сети, например, Charles (триал-версия отличается надоедливыми сообщениями и работает максимум 30 минут за 1 сеанс). В комментах к исходнику статьи советуют альтернативу Чарльзу — Burpsuite.

Чтобы вы творчески подошли к процессу, предлагаю вам сценарий. Представьте: вышло новое приложение для айпада — «Собиратель мемов» (Meme Collector). Всем нравится. Но вам шепнули на ухо, что встроенные покупки вытянут из вас значительную сумму денег.

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

Что к чему? «Карта» приложения (application mapping)

Взглянем на приложение с высоты птичьего полёта! Что оно делает, с точки зрения пользователя? Какова его основная структура?

Откройте проект Meme Collector в своей любимой IDE или в Xcode (не реклама).

Мы будем запускать приложение в конфигурации Release.
Xcode: Product > Scheme > Edit scheme… (⌘<) — слева выбрать Run…, справа вкладка Info > Build Configuration: Release.
AppCode: Run > Edit configurations… > Configuration: Release.

Запустите приложение на симуляторе iPad (⌘R). А теперь забудьте, что у вас есть исходники, вы — юзер. Откроется одно из двух:

Этот странный интерфейс позволяет «купить» мем по тапу на него, а также показывает число покупок данного мема и остаток денег на вашем счёте. От переводчика: нажав кнопку «Purchase Currency», я реально задумался: а не вводил ли я Apple ID на симуляторе?

…но вспомнил, что у меня к US-аккаунту не привязана кредитка. 🙂 Русский бы сказал цену в рублях.

В общем, всё просто. Есть «игровая валюта», и вы (типа взломщик) не хотите отдавать за неё реальные деньги. Наша цель — получить больше мемов, не нажимая кнопку «Purchase Currency».

Мы примерно поняли, что делает приложение, давайте заглянем глубже. Что ещё мы можем узнать?

Упомянутая утилита class-dump-z отобразит нам все объявления (declarations), которые она сможет достать из исполняемого файла. Скачайте последнюю версию утилиты (например, 0.2a), распакуйте архив. В терминале перейдите в папку class-dump-z_0.2a/mac_x86/ . Там есть исполняемый файл class-dump-z, установите его, например, скопировав в /usr/bin/ :

Перейдите в папку симулятора iOS: (вместо 7.0.3 — ваша версия)

Здесь лежат все приложения, которые вы запускали в симуляторе. Их там может быть много. Как найти Meme Collector?

Вариант 1. Если вы только что запускали Meme Collector, то он лежит в папке с самой новой датой модификации. Просто перейдите в неё:

  • Команда ls выдаёт содержимое папки. Флаг "-tr" сортирует по времени: самая новая папка будет последней в списке.
  • Весь этот список поступает на вход команды tail. Она берёт некоторый объём данных с конца. В данном случае — ровно одну строчку (флаг "-n 1" или просто "-1").
  • Далее команда cd переходит в эту самую новую папку.

Вариант 2. Взять и найти:

  • Meme Collector.app — главный бандл (main application bundle)
  • ещё что-то 🙂

Тут есть исполняемый файл, который так и называется: Meme Collector (без расширения). Посмотрим, на какие фреймворки (frameworks) и общие библиотеки (shared libraries) имеются в нём ссылки. Нам поможет стандартная утилита otool :

И вот что видим:

Мм, интересно, приложение использует фреймворк Store Kit — встроенные покупки? Ну-ка, идём дальше. Запускаем утилиту class-dump-z:

И откроем полученный файл в стандартном гуёвом редакторе:

Ого! Хотя нет, по сравнению с примером из оригинальной статьи (Xcode 4, iOS 6 SDK) появились неприятные моменты типа XXUnknownSuperclass , но всё же! Мы видим не только интерфейсную часть, но и объявления закрытых (private) методов, свойств, протоколов.

Изучение дампа классов серьёзного проекта — чаще всего утомительное занятие. Но оно может дать потрясающую картину внутреннего устройства приложения!

Итак, мой юный следопыт! Найдите-ка мне все синглтоны в приложении.

Если встретите интересный синглтон, изучите все его методы.
(Видимо, «интересный» = «похоже, имеющий отношение к логике приложения». — Прим. пер.)

Точно нашли? Посмотрите у себя внимательнее. Их там около четырёх штук.

Взломщики часто делают то, что вы сейчас сделали — ищут определённые слова в дампе класса. Например, если они хотят узнать, есть ли в приложении логика, завязанная на джейлбрейк девайса, то поиск по словам ‘jailbroken’, ‘security’ и т.д. может дать быстрый ответ.

Как это предотвратить?

Есть две новости. Начну с хорошей.

Apple делает это за вас автоматически. Когда вы отправляете приложение в App Store, они шифруют ваши бинарники с использованием DRM-технологии под названием FairPlay. Если вы сдампите class-dump-z’ом зашифрованный бинарник, то получите… тарабарщину.

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

Plist-файлы: уязвимы!

Мы кое-что узнали о приложении. Теперь поищем всё, что плохо лежит. Разработчикам свойственно ошибаться. Злоумышленникам свойственно использовать эти ошибки в своих целях.

Ошибки… Начнём с самых глупых! Например, как вам идея: использовать файл .plist для хранения критической информации? Взломщики всегда смотрят plist’ы: их легко просмотреть, а их изучение может дать ключ к внутренней логике приложения. (Plist = property list, текстовый файл с сериализованными объектами).

Посмотрим, какие plist’ы у нас есть?
(напомню, мы всё ещё находимся в папке бандла «Meme Collector.app»)

А вот какие — две штуки:

Посмотрим первый — Info.plist:

Ничего интересного, какая-то общая информация. Ладно. Ну-ка, а второй:

Прикол! Этот .plist содержит ключ userCurrency с тем же значением, которое вы только что видели на экране симулятора. Значит ли это, что приложение хранит деньги в .plist’е? Есть только один способ узнать!

Измените значение userCurrency , например, на 1234. Сохраните и закройте файл .plist.

Вернёмся к симулятору. Уберём наше приложение из оперативной памяти (как говорят, «из многозадачности»).

Сочетание клавиш ⇧⌘H в симуляторе iOS соответствует нажатию кнопки Home. Нажмите это сочетание дважды, чтобы показать экран многозадачности, и смахните Meme Collector в никуда вверх.

Кажется, он не очень доволен, что его смахивают:

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

Снова запустите приложение. 1234 виртуальных тугриков в вашем распоряжении!
От переводчика: я ждал большей интриги. Не бывает так просто! Хоть свой тестовый проект пиши.

Пользовательские настройки: небезопасно!

Ну вы поняли? Хранить важную информацию в .plist — не самая лучшая идея. А теперь угадайте: что представляют из себя пользовательские настройки ( NSUserDefaults )? Ага, тоже plist! Физически он лежит по адресу /Library/Preferences/.plist .

Это как раз то место, где разработчики часто ошибочно чувствуют себя в безопасности. Не только фрилансеры: крупные корпорации время от времени попадают в эту ловушку. Бесчисленное множество приложений хранят важные данные в NSUserDefaults . Посмотрим, что нам здесь приготовил Meme Collector?

Из терминала (мы по-прежнему находимся в Meme Collector.app, так?) откройте файл:

Несложное упражнение для вас: используя методы, о которых говорилось выше, модифицируйте NSUserDefaults так, чтобы получить кучу мемов из серии «Y U No …» бесплатно. Даже если вы уже обо всём догадались, советую сделать это для закрепления.

Но ведь злоумышленники могут получить доступ к plist-файлам, даже когда iOS-девайс заблокирован — так где же безопасно хранить данные? Одно из решений — хранить данные в NSUserDefaults в зашифрованном виде. В этом случае (и не только. — Прим. К.О.) нужно проверять на валидность данные, читаемые оттуда.

Связка ключей: лучшие рецепты

Другое возможное решение — перенос важных данных из .plist’ов в Связку ключей iOS (Keychain). Как это сделать — написано, например, здесь.

Связка ключей «повышает ставки» для хакера. Злоумышленники не смогут ничего стянуть, если устройство заблокировано.

Тем не менее, не стоит полностью полагаться на одну только Связку ключей! И вот почему. Связку ключей поддерживает Apple. (Ну вы уже всё поняли, да?) Информация в ней зашифрована паролем пользователя, который обычно является простым 4-значным цифровым кодом. А это значит, что атака брутфорсом займёт минут двадцать. Узнав пароль, легко сдампить всю связку ключей.

Что же делать? Некоторые общие рекомендации:

    Шифруйте данные! Связка ключей вроде как безопасна, но это приоритетная цель для хакеров, поэтому её ломают в первую очередь. (Про джейлбрейкнутые устройства вообще нечего говорить — для них существуют утилиты, показывающие содержимое Связки ключей.) Усложните жизнь взломщикам хотя бы ненамного: шифруйте данные с помощью CommonCrypto API, который входит в состав стандартного Security Framework (пример).

Сеть: тестирование на проникновение

Ещё хакеры любят наблюдать, как приложение взаимодействует с сетью. Самый тупой способ увидеть, происходит ли какая-то работа с сетью на устройстве, это поискать URL’ы в бинарнике.

Находясь в папке бандла (Meme Collector.app), наберите в терминале:

Стой, куда столько! Команда strings идёт по разделам бинарника и выводит все элементы данных, похожие на строки. Отфильтруем шум:

А, ну вот, одна строка:

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

Charles, упомянутый в начале статьи — хороший вариант для такого исследования. Скачайте его, если ещё не сделали это. Установите и запустите.

Проверьте, что Charles ловит сетевое взаимодействие с симулятора iOS (путём запуска «Карт», или в Safari набрать урл). Вы увидите, как в Charles побегут сетевые запросы. Если этого не произошло, убедитесь, что в меню Proxy > Mac OS X Proxy галочка установлена.

Мы не будем это делать, потому что не увидели HTTPS-урлов на выходе команды strings . Но этот шаг потребуется для других приложений, которые могут использовать HTTPS. В меню Proxy > Proxy Settings… > SSL нужно включить SSL-прокси и добавить домены, по которым требуется перехватывать (и расшифровывать) HTTPS-трафик. Пока вы это не сделаете, SSL будет выглядеть примерно так:

При работающем Charles перезапустите Meme Collector. После запуска вы должны увидеть три запроса к version1.api.memegenerator.net , нажав на треугольник слева от урла (см. ниже). Раскроются три запроса, отличающиеся GET-параметрами. Например, у первого один GET-параметр: urlName=Foul-Bachelor-Frog — это видно на вкладке Request.

Выберите вкладку Response и затем внизу JSON. Ответ сервера, расшифрованный из JSON, представлен в виде красивой таблички:

Мы видим здесь множество строк вида «ключ-значение»: заголовок ( displayName ), описание ( description ), URL картинки ( imageUrl ) — в общем, некая информация по данному типу мемов «Four Bachelor Frog» из GET-параметра.

Что происходит дальше? Приложение трижды делает одно и то же: HTTP-запрос по урлу картинки, пытается скачать её с cdn.memegenerator.co , получает 301-й редирект на cdn.memegenerator.net и качает оттуда.

Похоже на то, что мы видели в приложении, правда? Двум другим картинкам в этот раз повезло меньше, они так и не дождались ответа от сервера (Charles сообщает об этом на вкладке Overview) и поэтому не отобразились в приложении.

При повторном запуске картинки могут браться из кэша симулятора, Charles лб этом не знает. Очистите кэш и перезапустите приложение.

Итак, с определённой долей вероятности делаем вывод: приложение берёт мемы с данного API и представляет их в виде платного контента. А что если попытаться изменить URL с целью приобрести какой-то новый контент, кроме этих трёх мемов? Непохоже, что тут есть проверка, действительно ли приложение получает с сервера то, что ожидал разработчик!

Вам уже надоели эти три мема? Ну-ка попробуем, можно ли отобразить и «купить» что-то новое, скажем, «Success Kid».

Выберите в меню Charles: Tools > Rewrite. Эта функция позволяет перехватывать входящие/исходящие запросы и модифицировать их по тем правилам, которые вы установите. Включите галочку Enable Rewrite. Правила группируются в «наборы» (Sets). Под списком Sets нажмите Add для добавления нового набора правил. По желанию, переименуйте (Name). Мы создали набор правил, но он пока пустой. Давайте добавим правило — в разделе Rules есть кнопка Add, нажмите её.

Открылось окно Rewrite Rule. Измените Type на «Modify Query Param» («Изменить параметр запроса») и заполните два поля:

  • Match > Name: urlName
  • Replace > Value: success-kid

Нажмите OK, OK. Перезапустите приложение… Success! Мы можем покупать контент, который ранее был недоступен.

Интересно: для этого нового мема указана конкретная цена. Откуда? Приложение должно было как-то определить стоимость, исходя из JSON-ответа.

Откройте вкладку Response и посмотрите на JSON, который возвращает сервер. Что может определить стоимость цены?

Попробуйте найти JSON-ключи, которые могут определить стоимость мема в приложении. Может быть, это generatorID, totalVotesScore, instancesCount, templatesCount или ranking. В качестве упражнения для вас: найдите тот ключ, который влияет на стоимость мема.

  • Protocol: http
  • Host: version1.api.memegenerator.net
  • опция Response включена

Теперь перезапустите приложение. Как только нам придёт ответ с сервера, сработает точка останова (breakpoint). Когда это произойдёт, щелкните на вкладке Edit Response, внизу выберите JSON:

Здесь вы можете вручную модифицировать JSON-ответ, который пойдёт в приложение. Поиграйтесь с этими параметрами и попробуйте определить, какие ключи влияют на цену, отображаемую в приложении. Изменив JSON-ответ, нажмите Execute (выполнить) для отправки ответа. Приложение делает три запроса к API, поэтому вам понадобится нажать Execute трижды.

Важно: действуйте быстро! AFNetworking имеет таймаут 30 секунд. Если вы перехватили ответ, но не успели внести изменения, AFNetworking вернёт ошибку таймаута запроса и выполнит соответствующий обработчик в коде (который в данном случае не делает ничего). Если у вас вышло время, перезапустите приложение и попробуйте снова.

Что дальше?

Вы открыли в себе хакерские способности и выполнили простейшие тесты на проникновение на примере файловой системы и сетевого взаимодействия конкретного приложения. Вы победили простые plist’ы и даже можете модифицировать ответы сервера.

Возможно, эти знания повысят безопасность вашего iOS-приложения… чуть-чуть. В следующей части мы углубимся гораздо дальше в недры приложения, будем изменять его функционал! А пока вы ждёте, когда я выложу перевод (до следующей пятницы), можно много чего попробовать на тему хранения данных в приложении:

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

Без джейлбрейка? Да ну?

Замечания по поводу перевода или неработающих примеров можно отправлять на почту dev @ x128.ru.

Как взломать iPhone. Разбираем по шагам все варианты доступа к данным устройств с iOS

13 августа Русская служба Би-би-си сообщила о закупке Следственным комитетом аппаратуры для взлома iPhone, которая вскроет самый свежий iPhone всего за девять минут. Не веришь? Я тоже не верю, что такое могло опубликовать столь солидное издание, но факт остается фактом.

Хочется прокомментировать фразу эксперта Дмитрия Сатурченко: «Израильской Cellebrite для взлома iPhone 7 или 8 нужно больше суток, а извлеченные данные требуют серьезной аналитики. MagiCube обрабатывает тот же iPhone за девять минут, при этом оборудование заточено на получение чувствительных данных из мессенджеров, где содержится 80–90% интересной информации».

У неподготовленного читателя может создаться впечатление, что можно просто взять любой iPhone и извлечь из него информацию об использовании мессенджеров. Это не так по многим причинам. Начнем с того, что MagiCube — дубликатор жестких дисков, а мобильные устройства анализирует другой комплекс. iPhone тоже подойдет не любой, а работающий строго под управлением iOS 10.0–11.1.2 (то есть ни разу не обновлявшийся после 2 декабря 2017 года). Далее нам потребуется узнать (у пользователя) или взломать (сторонними решениями — GrayKey или Cellebrite) код блокировки. И вот после этого, разблокировав телефон, можно подключать его к китайскому комплексу и извлекать информацию.

Несмотря на это, новость разошлась по массе изданий. «Специалисты» из SecurityLab, не удосужившись ни поставить ссылку на первоисточник, ни даже указать автора, пишут: «Следственный комитет закупил аппаратуру для получения доступа к переписке». «По словам экспертов, для взлома последних моделей iPhone комплексу MagiCube требуется порядка десяти минут».

Что же, в конце концов, происходит? Можно ли взломать iPhone 7 или 8 за девять минут? Действительно ли решение iDC-4501 (а вовсе не MagiCube, который является всего лишь дубликатором жестких дисков) превосходит технологии Cellebrite и Grayshift? Наконец, как же все-таки можно взломать iPhone? Попробуем разобраться, что же именно закупил Следственный комитет, как и когда это работает и что делать в тех 99% случаев, когда комплекс не справляется с задачей.

Это зависит…

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

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

Для начала давай договоримся: мы будем рассматривать исключительно поколения iPhone, оборудованные 64-разрядными процессорами, то есть модели iPhone 5S, все версии iPhone 6/6s/7/8/Plus и текущий флагман — iPhone X. С точки зрения взлома эти устройства отличаются мало (за исключением старых поколений в случае, если у тебя есть доступ к услугам компании Cellebrite).

Установлен ли код блокировки?

Apple может использовать максимально стойкое шифрование, наворотить сложнейшую многоуровневую защиту, но защитить пользователей, которым «нечего скрывать», не сумеет никто. Если на iPhone не установлен код блокировки, извлечь из него данные — дело тривиальное. Начать можно за те самые девять минут, о которых говорилось в статье Би-би-си. Вероятно, процесс займет более длительное время: на копирование 100 Гбайт данных уходит порядка двух часов. Что для этого требуется?

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

Установлен ли пароль на резервную копию?

Не установлен? Установи и сделай еще одну резервную копию!

Зачем устанавливать пароль на бэкап? Дело в том, что заметная часть информации в резервных копиях iOS шифруется даже тогда, когда пользователь такого пароля не устанавливал. В таких случаях для шифрования используется уникальный для каждого устройства ключ. Лучше установить на бэкап любой известный тебе пароль; тогда резервная копия, включая «секретные» данные, будет зашифрована этим же паролем. Из интересного — ты получишь доступ к защищенному хранилищу keychain, то есть ко всем паролям пользователя, сохраненным в браузере Safari и многих встроенных и сторонних приложениях.

А что, если пароль на резервную копию установлен и ты его не знаешь? Маловероятно для людей, которым нечего скрывать, но все же? Для устройств, работающих на старых версиях iOS (8.x–10.x), единственный вариант — перебор. И если для iOS 8–10.1 скорость атаки была приемлемой (сотни тысяч паролей в секунду на GPU), то начиная с iOS 10.2 лобовая атака не вариант: скорость перебора не превышает сотни паролей в секунду даже при использовании мощного графического ускорителя. Впрочем, можно попробовать извлечь пароли, которые пользователь сохранил, например, в браузере Chrome на персональном компьютере, составить из них словарик и использовать его в качестве базового словаря для атаки. (Не поверишь: такая простая тактика срабатывает примерно в двух случаях из трех.)

А вот устройства на iOS 11 и 12 позволяют запросто сбросить пароль на резервную копию прямо из настроек iPhone. При этом сбросятся некоторые настройки, такие как яркость экрана и пароли Wi-Fi, но все приложения и их данные, а также пароли пользователя в keychain останутся на месте. Если есть код блокировки, его потребуется ввести, но если он не установлен, то сброс пароля на бэкап — дело нескольких кликов.

Для сброса пароля на резервную копию используй команду Reset All Settings. Она сбросит лишь некоторые настройки, включая пароль на бэкап, но не затронет данные

Для сброса пароля на резервную копию используй команду Reset All Settings. Она сбросит лишь некоторые настройки, включая пароль на бэкап, но не затронет данные

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

  • полную информацию об устройстве;
  • информацию о пользователе, учетных записях Apple, номере телефона (даже если SIM-карту извлекли);
  • список установленных приложений;
  • медиафайлы: фото и видео;
  • файлы приложений (например, документы iBooks);
  • системные журналы crash logs (в них, в частности, можно обнаружить информацию о приложениях, которые были впоследствии деинсталлированы из системы);
  • уже упомянутую резервную копию в формате iTunes, в которую попадут данные многих (не всех) приложений и пароли пользователя от социальных сетей, сайтов, маркеры аутентификации и многое другое.

Джейлбрейк и физическое извлечение данных

Если тебе не хватило информации, извлеченной из бэкапа, или если не удалось подобрать пароль к зашифрованной резервной копии, остается только джейл. Сейчас jailbreak существует для всех версий iOS 8.x, 9.x, 10.0–11.2.1 (более ранние не рассматриваем). Для iOS 11.3.x есть джейл Electra, который работает и на более ранних версиях iOS 11.

Для установки джейлбрейка нужно воспользоваться одной из публично доступных утилит (Meridian, Electra и так далее) и инструментом Cydia Impactor. Существуют альтернативные способы взлома — например, эскалация привилегий без установки публичного джейлбрейка при помощи эксплуатации известной уязвимости (напомню, для iOS 10–11.2.1 это одна и та же уязвимость, информацию о которой, включая готовый исходный код, опубликовали специалисты Google). Объединяет все эти способы общий момент: для их использования необходимо, чтобы iPhone был разблокирован и связан с компьютером (установлены доверенные отношения).

Следующий шаг — извлечение образа файловой системы. Для этого в лучшем случае достаточно открыть с телефоном сессию по протоколу SSH и выполнить на iPhone цепочку команд; в более сложных случаях потребуется вручную прописать нужные пути в PATH либо воспользоваться готовым продуктом. Результатом будет файл TAR, переданный через туннельное соединение.

Если на смартфоне установлена iOS 11.3.x, ставить джейлбрейк придется вручную, а для извлечения информации воспользоваться утилитой iOS Forensic Toolkit или другой подобной.

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

Разумеется, в резервную копию попадает не все. К примеру, в ней не сохраняется переписка в Telegram, в нее не попадают сообщения электронной почты, а история данных местоположения пользователя исключительно лаконична. Тем не менее резервная копия — это уже немало.

А что, если пользователь не совсем беспечен и все-таки установил код блокировки?

Даже самые беспечные пользователи вынуждены использовать пасскод, если таково требование политики безопасности их работодателя или если они хотят использовать Apple Pay. И здесь два варианта: или код блокировки известен, или нет. Начнем с простого.

Известен ли код блокировки?

Если ты знаешь код блокировки, то можешь сделать с устройством практически что угодно. Включить и разблокировать — в любой момент. Поменять пароль от Apple ID, сбросить привязку к iCloud и отключить iCloud lock, включить или выключить двухфакторную аутентификацию, сохранить пароли из локального keychain в облако и извлечь их оттуда. Для устройств с iOS 11 и более новых — сбросить пароль на резервную копию, установить собственный и расшифровать все те же пароли от сайтов, разнообразных учетных записей и приложений.

В iOS 11 и более новых код блокировки, если он установлен, потребуется и для установки доверенных отношений с компьютером. Это необходимо как для снятия резервной копии (здесь могут быть и другие варианты — например, через файл lockdown), так и для установки джейлбрейка.

Для установки доверия между iPhone и компьютером в iOS 11 и более новых требуется ввести код блокировки

Для установки доверия между iPhone и компьютером в iOS 11 и более новых требуется ввести код блокировки

Сможешь ли ты установить джейлбрейк и вытащить те немногие, но потенциально ценные для расследования данные, которые не попадают в резервную копию? Это зависит от версии iOS:

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее