iOS Базові операції тестування
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Короткий огляд ідентифікації та доступу до пристрою iOS
Визначення UDID пристрою iOS
Щоб унікально ідентифікувати пристрій iOS, використовується 40-символьна послідовність, відома як UDID. На macOS Catalina та новіших версіях її можна знайти в Finder app, оскільки iTunes більше не доступний. Після підключення пристрою через USB і вибору його в Finder, його UDID відображається серед іншої інформації при перегляді деталей під його ім’ям.
Для версій macOS до Catalina iTunes дозволяє визначити UDID. Детальні інструкції можна знайти here.
Інструменти командного рядка пропонують альтернативні методи отримання UDID:
- Використання інструмента I/O Registry Explorer
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Використання
ideviceinstallerдля macOS (та Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Використання
system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Використання
instrumentsдля переліку пристроїв:
$ instruments -s devices
Accessing the Device Shell
SSH access увімкнено шляхом встановлення OpenSSH package post-jailbreak, що дозволяє підключення через ssh root@<device_ip_address>. Вкрай важливо змінити стандартні паролі (alpine) для користувачів root та mobile, щоб захистити пристрій.
SSH over USB стає необхідним за відсутності Wi-Fi, використовуючи iproxy для відображення портів пристрою для SSH-з’єднань. Ця конфігурація дозволяє доступ по SSH через USB шляхом виконання:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
On-device shell applications, такі як NewTerm 2, забезпечують пряму взаємодію з пристроєм і особливо корисні для усунення неполадок. Reverse SSH shells також можна встановити для віддаленого доступу з хост-комп’ютера.
Скидання забутих паролів
Щоб скинути забутий пароль назад до значення за замовчуванням (alpine), необхідно відредагувати файл /private/etc/master.passwd. Це включає заміну існуючого хешу на хеш для alpine поруч зі записами користувачів root і mobile.
Методи передачі даних
Передача файлів даних додатка
Архівація та отримання через SSH і SCP: Легко заархівувати каталог Data додатка за допомогою tar, а потім передати його за допомогою scp. Наведена нижче команда архівує каталог Data у файл .tgz, який потім витягується з пристрою:
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
Графічні інструменти інтерфейсу користувача
Використання iFunbox та iExplorer: Ці GUI-інструменти корисні для керування файлами на iOS devices. Однак, починаючи з iOS 8.4, Apple обмежила доступ цих інструментів до application sandbox, якщо пристрій не jailbroken.
Використання Objection для керування файлами
Інтерактивна оболонка з Objection: Запуск objection надає доступ до каталогу Bundle програми. Звідси можна перейти до каталогу Documents програми та керувати файлами, включно зі скачуванням і завантаженням файлів на та з iOS device.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Отримання та витягування додатків
Отримання IPA-файлу
Посилання для розповсюдження Over-The-Air (OTA): Додатки, призначені для тестування через OTA, можна завантажити за допомогою ITMS services asset downloader tool, що встановлюється через npm, і зберегти IPA-файл локально.
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
Витягнення бінарного файлу додатку
- From an IPA: Розпакуйте IPA, щоб отримати доступ до розшифрованого бінарного файлу додатку.
- From a Jailbroken Device: Встановіть додаток і витягніть розшифрований бінарний файл з пам’яті.
Процес розшифрування
Manual Decryption Overview: Бінарні файли iOS-додатків шифруються Apple за допомогою FairPlay. Для reverse-engineer потрібно зробити дамп розшифрованого бінарного файлу з пам’яті. Процес розшифрування включає перевірку PIE flag, коригування memory flags, ідентифікацію encrypted section, після чого цей розділ дампиться і замінюється його розшифрованою версією.
Checking and Modifying PIE Flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Визначення зашифрованої секції та збереження дампу пам’яті:
Визначте початкову та кінцеву адреси зашифрованої секції за допомогою otool і зробіть дамп пам’яті з jailbroken-пристрою за допомогою gdb.
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
Перезапис зашифрованої секції:
Замініть зашифровану секцію в оригінальному бінарному файлі програми на розшифрований дамп.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Завершення дешифрування: Змініть метадані бінарного файлу, щоб вказати відсутність шифрування, використовуючи інструменти на кшталт MachOView, встановивши cryptid на 0.
Дешифрування (автоматично)
frida-ios-dump
Інструмент frida-ios-dump використовується для автоматичного дешифрування та вилучення додатків з iOS-пристроїв. Спочатку потрібно налаштувати dump.py для підключення до iOS-пристрою, що можна зробити через localhost на порті 2222 за допомогою iproxy або безпосередньо через IP-адресу пристрою та порт.
Встановлені на пристрої додатки можна перерахувати за допомогою команди:
$ python dump.py -l
Щоб зробити dump конкретного додатку, наприклад Telegram, використовується така команда:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Ця команда ініціює app dump, в результаті чого в поточному каталозі створюється файл Telegram.ipa. Цей процес підходить для jailbroken devices, оскільки unsigned або fake-signed apps можна перевстановити за допомогою інструментів, таких як ios-deploy.
frida-ipa-extract
Frida-based IPA extractor для jailbroken devices; використовує USB Frida sessions і опціональний SSH/SFTP для швидших pulls.
- Вимоги: Python 3.9+,
frida,paramiko, jailbroken device with frida-server (OpenSSH for SSH mode). - Налаштування:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Використання:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
- Ключі:
-f <bundle>запускає/приєднується (або--pidдля PID);-oзадає ім’я виводу.-Uвикористовує USB;-H/-P/-u/-pвідкриває SSH-тунель доfrida-server27042 і витягує через SFTP (можна поєднувати з-U).--sandboxробить дамп sandbox;--no-resumeутримує додаток призупиненим, щоб уникнути краху й автоматичних повторних запусків системним процесом, якщо сесія перерветься. - Усунення неполадок:
Frida attach timed out→ використовуйте-fабо--no-resume;script has been destroyed→--no-resumeабо передача через SSH;No running apps found→ запустіть або spawn додаток.
flexdecrypt
Інструмент flexdecrypt, разом зі своєю обгорткою flexdump, дозволяє витягувати IPA-файли з встановлених додатків. Команди встановлення для flexdecrypt на пристрої включають завантаження та встановлення пакунка .deb. flexdump можна використати для переліку та дампу додатків, як показано в командах нижче:
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app
bagbak
bagbak, ще один інструмент на базі Frida, вимагає jailbroken device для app decryption:
bagbak --raw Chrome
r2flutch
r2flutch, використовуючи radare та frida, призначений для app decryption and dumping. Більше інформації можна знайти на його GitHub page.
Installing Apps
Sideloading означає встановлення додатків поза офіційним App Store. Цим процесом керує installd daemon, і він вимагає, щоб додатки були підписані Apple-issued certificate. На jailbroken пристроях це можна обійти за допомогою AppSync, що дає змогу встановлювати fake-signed IPA packages.
Sideloading Tools
-
Cydia Impactor: Інструмент для підписання та встановлення IPA файлів на iOS і APK файлів на Android. Інструкції та вирішення проблем доступні на yalujailbreak.net.
-
libimobiledevice: Бібліотека для Linux та macOS для взаємодії з iOS-пристроями. Команди встановлення та приклади використання для ideviceinstaller наведені для встановлення додатків по USB.
-
ipainstaller: Цей командний інструмент дозволяє безпосередньо встановлювати додатки на iOS-пристрої.
-
ios-deploy: Для користувачів macOS ios-deploy встановлює iOS-додатки з командного рядка. Розпакування IPA та використання прапора
-mдля прямого запуску додатку є частиною процесу. -
Xcode: Використовуйте Xcode для встановлення додатків, перейшовши в Window/Devices and Simulators та додавши додаток до Installed Apps.
Allow Application Installation on Non-iPad Devices
Щоб встановити додатки, орієнтовані на iPad, на iPhone або iPod touch, потрібно змінити значення UIDeviceFamily у файлі Info.plist на 1. Однак ця зміна вимагає повторного підписання IPA файлу через перевірку підпису.
Note: Цей метод може не спрацювати, якщо додаток вимагає можливостей, які є виключно для новіших моделей iPad, коли використовується старіший iPhone або iPod touch.
References
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
- frida-ipa-extract
Tip
Вивчайте та практикуйте AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.


