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

Короткий огляд ідентифікації та доступу до пристрою 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

Витягнення бінарного файлу додатку

  1. From an IPA: Розпакуйте IPA, щоб отримати доступ до розшифрованого бінарного файлу додатку.
  2. 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-server 27042 і витягує через 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

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