# Module #1 ## История платформы Мобильная операционная система, выпущена в 2007 году. Распространяется только для устройств, которые были произведены Apple. Использует ядро XNU. Имеет общую кодовую базу с ОС macOS. Обе ОСи разработаны из OS X. В своей работе использует компоненты Darwin. ![DarwinArch](https://i.imgur.com/pzsGsb2.png) На 2021 год версия ядра Darwin 21.0.0. Крайняя версия iOS 15 на 2021 год. ## Модель безопасности Безопасность iOS основана на том простом факте, что Apple контролирует как создание устройства, так и создание ОС. Для обеспечения полного цикла защиты данных и ОС от эксплуатации уязвимостей используется большое количество технологий. Технологии делятся на следующие группы: - Hardware Security - Secure Boot - Code Signing - Sandbox - Encryption and Data Protection - General Exploit Mitigations Графически можно изобразить так: ![iOS_Security_Architecture](https://i.imgur.com/06BFQn9.png) Наличие некоторых технологий может быть обусловлена версией железа, которое используется для тестирования. Пример устройств и соответствующих процессоров: ![](https://i.imgur.com/RXJ6Btl.png) ### Защищенный запуск ![SecBoot](https://i.imgur.com/wEHy5wM.jpg) Процесс запуска ОС защищен от компрометации. Сделано это для того чтобы исключить подмену системного ПО и компроментацию системы. Внутри частей процесса запуска, а именно в BootROM содержится Apple Root CA. Сертификат добавен в чип на этапе проектирования устройства. Его нельзя вытащить ни одним интерфейсом, ни отладкой, ни функционально. Каждый отдельный модуль убеждается в целостности соседа и предоставляет свой функционал. Если на каком-то из этапов происходит ошибка или не совпадает подпись - устройство уходит в режим DFU. ### Аппаратное хранилище ключей Каждое устройство на уровне чиап содержит 2 AES 256 битных ключа. Ключи представляют собой уникальный идентификатор устройства (UIDs) и групповой идентификатор устройства (GIDs). Ключи хранятся в Application Processor (AP) или Secure Enclave Processor (SEP). Доступ к ключам есть только у чипа, который занимается процедурами щифрования. GID используется для процедур проверки прошивки устройства. UID формируется пользователем при включении устройства и попадает в хранилище с первым запуском. Поэтому шифрование, которое будет работать на устройстве не может вскрыть и сама Apple. В отличии от других ОС, есть функции по полностью безопасному удалению данных. Данные нельзя восстановить. ### Песочница приложений Песочница приложений это система разграничения доступа. Применены разграничения на уровне ядра. Задача песочницы - сократить поверхность атаки на приложения. Технология защиты является ядром всей безопасности приложений. Все установленые пользователем приложения запускаются внутри нее. В системе есть приложения, которые предустановлены, могут иметь больше привелегий и не находиться в песочнице. Приложение, которое запускается в ОС, имеет ограничения на использование механизмов и ресурсов. К ресурсам можно отнести: - файлы - сетевые интерфейсы - IPC - общая память ![](https://i.imgur.com/rkDzC1l.png) Обычно ограничения работают так: * приложение может получать доступ толко в своей рабочей директории: - /var/mobile/Containers/Bundle/Application/ или /var/containers/Bundle/Application/ - функции работы с памятьюперехватываются при вызове ядром и проходят процедуру верификации на доступ * запущенные процессы не могут получать доступ к другим приложениям, даже если имеют один и тот же PID * получение доступа к железу возможно только с использованием официальных фреймворков ### Защита данных и шифрование ОС использует несколько подходов к шифрованию: - FairPlay Code Encryption - применение шифрования ко всем приложениям, которые скачиваются пользователем из AppStore. Из-за этого критично использование реального устройства для тестирования приложений. Проще всего сдампить приложение уже в расшифрованной виде. Шифрование было включено на постоянной основе в ОС только с iPhone 3GS. Шифрованием занимается отдельный чип. Алгоритмы щифрования не имеют ключа по-умолчанию для шифрования пользовательских данных. Ключ заполняется с установкой пин кода на устройство. Шифрование к пользовательским данным применяется в несколько этапов. На уровне файловой системы, и на уровне самих файлов. Для каждого файла существует свой собственный ключ шифрования. Так же шифруется сам ключ и фрагменты файлов по отдельности. ![](https://i.imgur.com/WcoYUlz.png) ### Средства для защиты от экспллуатации Операционная система включает следующие технологии по противодействию использования уязвимостей: - ASLR - NX Bit Так же есть имплементации различных защит в зависимости от используемого процессора. Каждая из них обходится исследователями по ИБ в течении 1-2 лет. Сама платформа интересна с точки зрения поиска уязвимостей. Поэтому список защит постоянно пополняется. ## Что остается уязвимым в приложениях Атакимогут быть произведены на все компоненты приложения, включая материалы, которые используются для его работы. Приложение считается уязвимым если: - приложение не валидирует данные для IPC взаимодействия или URL схемы - приложение не валидирует все данные, которые передает пользователь - приложение не валидирует данные, которые загружаются в WebView - приложение позволяет произвести атаку типа MitM - приложение не хранит безопасно данные пользователя и не проверяет данные, которые используются для работы приложения - приложение не проверяет окружение на эмуляцию и использование jailbreak устройств - приложение не применяет антиотладочных методов # Настройка тестовой среды ## Основное устройство Для проведения тестирования приложений можно использовать любую ОС. В каждом отдельном случае будет отличаться настройка. Предпочтительнее использовать - macOS. ## Инструменты, которые важно поставить на устройство и ОС - Cydia - openSSH server - terminal - PassionFruite - frida server - objection - IDA Pro - class-dump - Xcode+tools Наличие инструментов очень упростит процедуру проведения тестирования, так как используемые приложения в ОС имеют нетривиальный формат. ## Поставить jailbreak и вспомогательные приложения 1. Ставим [checkrain]https://checkra.in 2. Запускаем Loader на домашнем экране 3. Запускаем установку Cydia ### Установка приложений Все приложения можно найти в Cydia 1. openSSH 2. terminal 3. Frida 1. Запустить Cydia 2. Добавить репозиторий Frida (Manage -> Sources -> Edit -> Add https://build.frida.re) 3. Обновить репозитории, установить Frida ## Как установить тестовое приложение на устройство Существует несколько методов. Мы будем использовать 2: - uicache * Копировать ipa файл на устройство * Распаковать файл * Скопировать содержимое директории Payload в /Applications * запустить команду uicache - Fliza * Копировать ipa файл на устройство * Выбрать файл в интерфейсе приложения, подтвердить установку ## Какие приложения для тестов будем использовать? https://github.com/OWASP/iGoat-Swift https://github.com/prateek147/DVIA-v2 https://github.com/WaTF-Team/WaTF-Bank https://github.com/lucideus-repo/UnSAFE_Bank Так же будут задействованы простые crackme ipa файлы которых будут выданы на занятии. https://github.com/OWASP/owasp-mstg/tree/master/Crackmes ## Тест на проверку работоспособности стенда Установить приложения на устройство и запустить. ## Справочная информация - https://developer.apple.com/documentation/ios-ipados-release-notes - https://github.com/apple-oss-distributions/xnu/tree/rel/xnu-8020 - https://www.cisa.gov/known-exploited-vulnerabilities-catalog - https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/TypesSecVuln.html