Dropbox
Не мне вам рассказывать, как важно иметь доступ к необходимым рабочим файлам в любое время и с любого устройства. Это именно тот случай, когда облачные хранилища приходятся к месту.
Один из лучших представителей области универсальных облачных сервисов — Dropbox. Он работает практически на всех доступных платформах и синхронизирует файлы между ними. Таким образом, папка, созданная на компьютере, будет доступна на вашем iPad в любое время и в любом месте (где есть интернет).
Evernote
У iPad очень удобная виртуальная клавиатура, сравнимая с физическим собратом. А это значит, что планшет просто предназначен для создания различных заметок и ведения записей. Стандартное приложение «Заметки» хорошее, но довольно простое. А вот если вам нужны более широкие возможности — нет ничего лучше Evernote.
Evernote предложит разделение заметок по категориям, мощный текстовый редактор, метки и тэги. По аналогии со стандартным приложением, поддерживается синхронизация между устройствами. Заметочник развивается и постепенно обрастает новыми возможностями, так-что было бы глупо упускать возможность познакомиться с ним поближе.
Feedly
Современные таблетки — это просто идеальные устройства для потребления информации. Так почему бы не превратить iPad в удобный агрегатор новостей? Приложение Feedly от компании Google — отличный выбор. Все, что вам нужно сделать для начала — выбрать сайты, новости с которых вас интересуют. Все остальное приложение сделает за вас.
При следующем открытии вас встретят заголовки новостей с любимых ресурсов. Просмотр осуществляется в удобном журнальном формате.
Google maps
Увы, фирменные карты от Apple зарекомендовали себя не с лучшей стороны. Несомненно, со временем они обретут популярность и будут радовать пользователя качественной навигацией, но пока-что этого не произошло. Таким образом, пожалуй стоит предложить достойную альтернативу тем, кто не желает заблудится в незнакомом месте — Google Maps.
С одной стороны вы потеряете интеграцию с iOS, в частности голосовым помощником Siri, зато получите более качественную карту и прокладку маршрутов по городу.
Google поиск
Одна из самых удобных штук в Android-смартфонах — Google Now, предоставляющий необходимую вам информацию на протяжении дня. Вы без проблем можете получить функциональность ассистента компании добра и на вашем iPad, просто установив приложение Google Search.
Само-собой вы сможете с легкостью использовать поиск и другие полезные возможности этого приложения.
Ipa файл
Теперь нам нужно приложение для тестирования. Если мобильные приложения и находятся в скоупе для исследования по программе Bug Bounty, то максимум, что мы получим, — ссылку на официальный магазин приложений для платформы.
Мы можем попробовать перехватить трафик запущенного приложения и использовать разного рода инструменты, но для полноценного анализа желательно иметь IPA файл — аналог APK файла для Android. Чем ближе к оригинальному, тем лучше.
Находим IPA файл. Получить IPA файл можно несколькими способами:
Использовать приложения для управления устройством с компьютера (например, iTunes или Apple Configurator 2). Они скачивают приложения из App Store, а потом заливают на девайс. Но можно поймать момент, когда файл уже скачан на компьютер из App Store, но еще не залит на девайс, и скопировать его.
Установить приложение из App Store, а потом сдампить (например, через frida-ios-dump). Этот способ сработает только с джейлбрейкнутым девайсом, и в данном случае будут отсутствовать файлы с мета-информацией для App Store.
Использовать сайты с IPA файлами. Но там вы, скорее всего, найдете уже неоригинальный файл и исследовать его на безопасность будет не так интересно, но все еще полезно для использования.
Как получить IPA файл с помощью Apple Configurator 2:
Kindle
Не важно, какая диагональ вашего планшета — что восемь, что десять дюймов отлично подходят для чтения. Приложение Kindle предоставляет доступ к обширной онлайн-библиотеке зарубежных изданий.
Кроме книг доступны подписки на электронные версии журналов и периодических изданий. Не лишним будет также упомянуть о синхронизации между всеми устройствами, на которых установлено приложение.
Megogo
Онлайн кинотеатр в вашей сумке — звучит неплохо, не правда ли? Впечатляющая коллекция бесплатных фильмов онлайн — не миф, а реальность. Все благодаря удобному интерфейсу и поиску по жанрам в приложении Megogo для iPad.
Огромное количество фильмов, сериалов, мультфильмов, тв-программ и шоу — бесплатно в FullHD-качестве.
Spotify
Загрузка музыки с компьютера на мобильные устройства — однозначно прошлый век. В эпоху когда все происходит онлайн, было бы неплохо иметь свою коллекцию композиций для прослушивания в любое время и в любом месте (при наличии интернета). Лучшим спутником станет клиент музыкального сервиса Spotify.
В наличии огромная медиатека файлов, возможность создавать плейлисты и адаптация под планшетное разрешение от именитого сервиса.
Yahoo weather
Быть в курсе погоды за окном очень важно, от этого может зависеть исход рабочего дня, дресс-код и конечно же ваше настроение. Дабы быть готовым к любому исходу, советуем установить приложение Yahoo Weather.
Программа имеет простой и лаконичный интерфейс и позволяет оперативно получить погодную сводку на день и прогноз на последующие.
Бесплатные игры
Тяжелая трудовая неделя, скучные пары, ранний приезд на встречу или ожидание заказа в кафе — это те ситуации, когда было бы неплохо просто скоротать время. На выручку придут добротные бесплатные игрушки. Советовать что-то конкретное не будем, предпочтения у каждого свои.
На просторах AppStore можно найти массу увлекательных бесплатных игр, правда, зачастую они разбавлены внутренними покупками или рекламой. Но при должной сноровке поиск подходящих вам развлечений будет вполне тривиальной задачей.
Динамическая инструментализация (dynamic insrtumentation)
Вот основные инструменты динамической инструментализации:
Эти инструменты помогают разбирать приложения в режиме выполнения: смотреть память приложения, используемые ресурсы, локальные хранилища, базы данных, Keychain, тестировать джейлбрейк и SSL пиннинг.
Посмотрим на пример простого обхода джейлбрейка с помощью Frida. Мы уже разобрали реализацию одного из вариантов обнаружения джейлбрейка в приложении DVIA-v2, но на самом деле для его обхода нам достаточно информации из class-dump. В приложении есть класс JailbreakDetection и метод isJailbroken, который возвращает значение типа boolean.
Попробуем заменить возвращаемое значение с помощью кода для Frida:
if (ObjC.available) { var hook = ObjC.classes.JailbreakDetection["isJailbroken"]; console.log("registering hook"); Interceptor.attach(hook.implementation, { onLeave: function(retval) { console.log("replacing return value"); retval.replace(ptr("0x0")); } });
}Cкрипт проверяет доступность API для Objective-C (ObjC.available), ищет метод isJailbroken класса JailbreakDetection и регистрирует его для перехвата. На выходе из метода заменяем возвращаемое значение на 0 (false), что в данном случае будет означать то, что девайс не джейлбрейкнут.

Такие простые вещи обходятся любым готовым инструментом. Если готовый инструмент не подходит, то придется написать свой скрипт.
Например, популярный вопрос на StackOverflow — как распознать джейлбрейк. Можно предположить, что этот или аналогичный код встречается во многих приложениях. В такой ситуации мы просто пишем больше своего кода:
const pathes = [ "/Applications/Cydia.app", "/Library/MobileSubstrate/MobileSubstrate.dylib", "/bin/bash", "/usr/sbin/sshd", "/etc/apt", "/private/var/lib/apt/"
];
var fileExistsAtPathHook = ObjC.classes.NSFileManager["- fileExistsAtPath:"];
Interceptor.attach(fileExistsAtPathHook.implementation, { onEnter: function(args) { this.bypass = false; var path = ObjC.Object(args[2]).toString(); for (var i = 0; i < pathes.length; i ) { if (path.includes(pathes[i])) { this.bypass = true; console.log("fileExistsAtPath bypass: " path); break; } }; }, onLeave: function(retval) { if (this.bypass) { console.log("fileExistsAtPath bypassed"); retval.replace(ptr("0x0")); } }
});
var canOpenURLHook = ObjC.classes.UIApplication["- canOpenURL:"];
Interceptor.attach(canOpenURLHook.implementation, { onEnter: function(args) { this.bypass = false; var url = ObjC.Object(args[2]).toString(); if (url.includes("cydia")) { this.bypass = true; console.log("canOpenURLHook bypass: " url); } }, onLeave: function(retval) { if (this.bypass) { console.log("canOpenURLHook bypassed"); retval.replace(ptr("0x0")); } }
});Используя такой подход, можно обойти более продвинутый джейлбрейк, чтобы дальше заниматься исследованием приложения.
Также на джейбрейкнутом девайсе можно попробовать обойти Touch ID с использованием Objection и команды “ios ui biometrics_bypass”.

Это пример использования готового скрипта, но написать такой код самостоятельно тоже можно: мы просто запустили похожий скрипт, используя инструмент с вшитым набором скриптов. Подкладываем неправильный отпечаток и перехватываем его. Операционная система отвечает, что доступа нет, но complete hook заканчивается, и нам удается пройти аутентификацию в приложении. Можно ознакомиться с кодом приложения тут.
Теперь рассмотрим Cycript. Этот инструмент по функциональности похож на предыдущие, но также может помочь связать элементы UI с кодом.
Допустим, что в приложении есть кнопка, и нам нужно понять, какой метод в коде вызывается при ее нажатии. Мы подключаемся к приложению, смотрим, какие кнопки есть в этом UI, находим его по какому-то лейблу и смотрим, какой у него целевой объект (target):
cy# var buttons = choose(UIButton)
cy# buttons[8].titleLabel.text
@"Jailbreak Test 1"
cy# buttons[8].allTargets
[NSSet setWithArray:@[#"<DVIA_v2.JailbreakDetectionViewController: 0x1058308f0>"]]]
cy# buttons[8].allControlEvents
64
cy# target=[buttons[8].allTargets anyObject]
#"<DVIA_v2.JailbreakDetectionViewController: 0x1058308f0>"
cy# [buttons[0] actionsForTarget:target forControlEvent:UIControlEventTouchUpInside]
@["jailbreakTest1Tapped:"]Рассмотрим подробнее, что же тут происходит:
Выбираем все объекты класса UIButton.
Находим нужную нам кнопку по надписи на ней (см. titleLabel).
Находим, что является целевым объектом для действия по данной кнопке (см. allTargets). Получаем класс JailbreakDetectionViewController.
Смотрим, какие типы действий может обрабатывать данная кнопка (см. allControlEvents). Выясняем, что кнопка умеет обрабатывать нажатие, UIControlEventTouchUpInside (UIControlEventTouchUpInside = 1 << 6 = 64).
Вызываем метод actionsForTarget с известными нам данными и получаем имя метода: jailbreakTest1Tapped.
При нажатии на кнопку “Jailbreak Test 1” происходит вызов метода jailbreakTest1Tapped класса JailbreakDetectionViewController. Так мы можем соединить элементы интерфейса с соответствующим кодом и заниматься реверсом этих частей приложения.
Локальная аутентификация
При установке на девайс приложения сначала просят пройти полноценную аутентификацию: ввести имя пользователя, пароль, подтвердить номер по SMS. Дальше пользователь может поставить четырехзначный пароль и использовать биометрию. Такую аутентификацию на устройстве будем называть локальной.
Есть разные варианты локальной аутентификации:
Офисные приложения
Изначально в наборе приложений iPad присутствуют редакторы текста, таблиц и презентаций от Apple — Pages, Numbers, Keynote. Они сгодятся для базового редактирования документов или их создания. Для более серьезных задач нужны инструменты от компании Microsoft — Word, Excel, Power Point, которые не так давно подоспели на просторы AppStore.
Их дизайн соответствует концепции плоского интерфейса iOS 7, а рабочее окружение отлично вписывается в планшетные габариты.
Подготовка окружения
Для начала нужно подготовить окружение.
Вот что для этого необходимо:
Компьютер-хост. В идеале это должен быть MacOS, потому что с другой операционной системой возникнут сложности с установкой и запуском специализированного ПО.
Джейлбрейкнутый тестовый девайс с желаемой версией iOS. iOS симулятор, который поставляется в комплекте с Xcode, не подойдет, так как он предназначен для запуска приложений, собранных под x86 архитектуру. Релизные версии приложений, предназначенные для запуска на реальном девайсе, собираются под ARM. Поэтому приложения, загруженные из Apple App Store, не получится запустить в симуляторе iOS.
Сеть Wi-Fi, которая разрешает трафик от клиента к клиенту (или подход SSH через USB).
Перехватывающий прокси (Burp Suite, Charles, mitmproxy и т.д.).
Это набор максимум: на самом деле можно работать и не на MacOS, и не на джейлбрейкнутом устройстве, но будут дополнительные сложности: отсутствие нужных инструментов, необходимость переподписывать приложение с использованием сертификата разработчика и т.д.
Джейлбрейк. Для тестирования желательно сделать джейлбрейк девайса.
Краткая инструкция выглядит так:
Найти подходящее тестовое устройство и сделать резервную копию.
Проверить, что для установленной версии iOS есть джейлбрейк.
Выбрать подходящий вариант (по этой ссылке можете почитать про сравнение между Tethered/Untethered).
Джейлбрейкнуть, следуя инструкции к выбранному способу: например, Checkra1n или Unc0ver.
Если хотите узнать подробно о том, как работают джейлбрейки, почитайте статью с техническим анализом эксплойта для checkm8 от Digital Security. Там много интересных подробностей.
Полезные приложения. Теперь на девайс можно поставить приложения, которые нельзя установить на iPhone без джейлбрейка. Для этого нужно установить Cydia. Установка будет отличаться в зависимости от выбранного джейлбрейка, просто следуйте инструкции.
Вот некоторые полезные приложения:
Прокси. Следующий обязательный шаг — это настройка прокси для перехвата трафика приложения на устройстве.
Логика этого процесса аналогична настройке перехвата для браузера:
Подкасты
Если вам порядочно надоело радио, а любимые исполнители уже не радуют уши и сознание, обратите внимание на подкасты. Доступны тысячи подкастов на любой вкус, от научно-образовательных до музыкальных подборок любых жанров. Кстати, не пренебрегайте возможностью послушать и наш RootCast.
Приложение «Подкасты» позволит оформить подписки на ваши любимые произведения и будет автоматически уведомлять о наличии новых выпусков. Что важно, имеется синхронизация с облачным хранилищем iCloud, а это значит, что вы можете начать слушать подкаст на iPad, а потом продолжить на iPhone или MacBook с того же места.
Полезные ссылки
В статье мы поверхностно рассмотрели инструменты и подходы, используемые при анализе мобильных приложений. Материал основан на подходах и рекомендация из OWASP Mobile Security Testing Guide — это подробное руководство по тестированию безопасности мобильных приложений под iOS и Android.
Практические примеры я взял из Damn Vulnerable iOS App (DVIA-v2) — одного из тестовых приложений, на котором можно оттачивать навыки и экспериментировать.
Также для закрепления материала из статьи советую посмотреть GimmeFlag — iOS приложение с простыми CTF-like заданиями на статический анализ. Для решения заданий достаточно минимального набора инструментов, наличие iOS девайса (как и Mac OS) не требуется.
Руководство пользователя ipad
- Добро пожаловать!
- Поддерживаемые модели
- 12,9‑дюймовый iPad Pro (5‑го поколения)
- iPad Pro (12,9 дюйма, 4-го поколения)
- iPad Pro (12,9 дюйма, 3-го поколения)
- iPad Pro (11 дюймов, 3-го поколения)
- iPad Pro (11 дюймов, 2-го поколения)
- iPad Pro (11 дюймов, 1-го поколения)
- iPad Pro (12,9 дюйма, 1-го и 2-го поколения)
- iPad Pro (10,5 дюйма)
- iPad Pro (9,7 дюйма)
- iPad Air (4-го поколения)
- iPad Air (3-го поколения)
- iPad Air 2
- iPad (9‑го поколения)
- iPad (8-го поколения)
- iPad (7-го поколения)
- iPad (6-го поколения)
- iPad (5-го поколения)
- iPad mini (6‑го поколения)
- iPad mini (5-го поколения)
- iPad mini 4
- Что нового в iPadOS 15
- Быстрые команды
- Акции
- Советы
- Авторские права
Установка и запуск
Мы сделали статический анализ. Теперь попробуем запустить приложение на джейлбрейкнутом девайсе и посмотреть, что оно делает.
Первая проблема, с которой мы сталкиваемся, — установка. Для пользователей есть один официальный способ это сделать — App Store. Для организаций существуют разные enterprise-решения, которые могут распространять приложение внутри компании в обход AppStore на девайсах, в которых уже включены MDM и т.д.
Нам это не нужно, поэтому попробуем поставить приложение (например, AppSync Unified), которое позволит устанавливать неподписанные файлы, файлы с невалидной подписью или с возможностью переподписать файл.
Самый простой вариант для этой задачи — Xcode (Window — Devices and Simulators) или Cydia Impactor (но в связи с последними изменениями от Apple у меня он не работает, вот тут есть информация про ошибки).

Также неподписанное приложение можно установить, используя специальное приложение на девайсе. Например, через Filza: загрузить IPA на девайс (например, через SFTP), найти IPA файл и нажать “Install”.

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

Один из простых способов обхода подобных предупреждений — использование специальных приложений (например, Liberty Lite), но это сработает только в случае простых механизмов обнаружения. Более сложные способы разберем в этой статье в разделе про инструменты динамической инструментализации.


