iOS Basic Testing Operations

Reading time: 8 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Summary of iOS Device Identification and Access

Identifying the UDID of an iOS Device

Щоб унікально ідентифікувати пристрій iOS, використовується 40-значна послідовність, відома як UDID. На macOS Catalina або новіших версіях це можна знайти в додатку Finder, оскільки iTunes більше не присутній. Пристрій, підключений через USB і вибраний у Finder, показує свій UDID серед іншої інформації, коли натискають на деталі під його назвою.

Для версій macOS до Catalina iTunes полегшує виявлення UDID. Докладні інструкції можна знайти here.

Командні інструменти пропонують альтернативні методи для отримання UDID:

  • Using I/O Registry Explorer tool ioreg:
bash
$ ioreg -p IOUSB -l | grep "USB Serial"
  • Використання ideviceinstaller для macOS (та Linux):
bash
$ brew install ideviceinstaller $ idevice_id -l
  • Використання system_profiler:
bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
  • Використання instruments для переліку пристроїв:
bash
$ instruments -s devices

Доступ до оболонки пристрою

Доступ SSH активується шляхом встановлення пакету OpenSSH після джейлбрейку, що дозволяє підключення через ssh root@<device_ip_address>. Важливо змінити стандартні паролі (alpine) для користувачів root та mobile, щоб забезпечити безпеку пристрою.

SSH через USB стає необхідним за відсутності Wi-Fi, використовуючи iproxy для відображення портів пристрою для SSH-з'єднань. Ця конфігурація дозволяє доступ до SSH через USB, запустивши:

bash
$ iproxy 2222 22 $ ssh -p 2222 root@localhost

На пристрої shell додатки, такі як NewTerm 2, полегшують безпосередню взаємодію з пристроєм, що особливо корисно для усунення неполадок. Зворотні SSH shell також можуть бути встановлені для віддаленого доступу з комп'ютера-хоста.

Скидання забутих паролів

Щоб скинути забутий пароль до значення за замовчуванням (alpine), необхідно редагувати файл /private/etc/master.passwd. Це передбачає заміну існуючого хешу на хеш для alpine поруч з записами користувачів root та mobile.

Техніки передачі даних

Передача файлів даних додатків

Архівування та отримання через SSH та SCP: Легко архівувати каталог даних програми за допомогою tar, а потім передати його за допомогою scp. Команда нижче архівує каталог даних у файл .tgz, який потім витягується з пристрою:

bash
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. Однак, починаючи з iOS 8.4, Apple обмежила доступ цих інструментів до пісочниці додатків, якщо пристрій не зламаний.

Використання Objection для управління файлами

Інтерактивна оболонка з Objection: Запуск objection надає доступ до каталогу Bundle додатку. Звідси ви можете перейти до каталогу Documents додатку та керувати файлами, включаючи їх завантаження та вивантаження на та з пристрою iOS.

bash
objection --gadget com.apple.mobilesafari explorer cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents file download <filename>

Отримання та витягування додатків

Придбання IPA файлу

Посилання на розподіл по повітрю (OTA): Додатки, розподілені для тестування через OTA, можна завантажити за допомогою інструменту завантаження активів ITMS, який встановлюється через npm і використовується для збереження IPA файлу локально.

bash
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. З IPA: Розпакуйте IPA, щоб отримати розшифрований бінарний файл програми.
  2. З джейлбрейкнутого пристрою: Встановіть програму та витягніть розшифрований бінарний файл з пам'яті.

Процес розшифрування

Огляд ручного розшифрування: Бінарні файли програм iOS зашифровані Apple за допомогою FairPlay. Щоб провести реверс-інжиніринг, потрібно витягти розшифрований бінарний файл з пам'яті. Процес розшифрування включає перевірку прапора PIE, коригування прапорів пам'яті, ідентифікацію зашифрованої секції, а потім витягування та заміну цієї секції на її розшифровану форму.

Перевірка та модифікація прапора PIE:

bash
otool -Vh Original_App python change_macho_flags.py --no-pie Original_App otool -Vh Hello_World

Визначення зашифрованої секції та дамп пам'яті:

Визначте початкові та кінцеві адреси зашифрованої секції за допомогою otool та зробіть дамп пам'яті з джейлбрейкнутого пристрою за допомогою gdb.

bash
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO dump memory dump.bin 0x8000 0x10a4000

Перезаписування зашифрованої секції:

Замініть зашифровану секцію в оригінальному бінарному файлі програми на розшифрований дамп.

bash
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-адресу пристрою та порт.

Додатки, встановлені на пристрої, можна перерахувати за допомогою команди:

bash
$ python dump.py -l

Щоб скинути конкретний додаток, наприклад Telegram, використовується наступна команда:

bash
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph

Ця команда ініціює дамп програми, в результаті чого створюється файл Telegram.ipa у поточному каталозі. Цей процес підходить для джейлбрейкнутіх пристроїв, оскільки незасвідчені або підроблені програми можуть бути повторно встановлені за допомогою інструментів, таких як ios-deploy.

flexdecrypt

Інструмент flexdecrypt, разом зі своїм обгорткою flexdump, дозволяє витягувати IPA файли з встановлених додатків. Команди для встановлення flexdecrypt на пристрій включають завантаження та встановлення пакету .deb. flexdump можна використовувати для переліку та дампу програм, як показано в командах нижче:

bash
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, вимагає джейлбрейкнутого пристрою для розшифровки додатків:

bash
bagbak --raw Chrome

r2flutch

r2flutch, використовуючи як radare, так і frida, служить для декодування та дампінгу додатків. Більше інформації можна знайти на його GitHub сторінці.

Встановлення додатків

Sideloading відноситься до встановлення додатків поза офіційним App Store. Цей процес обробляється installd daemon і вимагає, щоб додатки були підписані сертифікатом, виданим Apple. Пристрої з джейлбрейком можуть обійти це через AppSync, що дозволяє встановлювати фальшиво підписані IPA пакети.

Інструменти для Sideloading

  • 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.

Дозволити встановлення додатків на пристрої, що не є iPad

Щоб встановити специфічні для iPad додатки на пристрої iPhone або iPod touch, значення UIDeviceFamily у файлі Info.plist потрібно змінити на 1. Однак ця модифікація вимагає повторного підписування IPA файлу через перевірки підпису.

Примітка: Цей метод може не спрацювати, якщо додаток вимагає можливостей, ексклюзивних для новіших моделей iPad, при використанні старішого iPhone або iPod touch.

References

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks