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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
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
:
$ 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
Доступ до оболонки пристрою
Доступ SSH активується шляхом встановлення пакету OpenSSH після джейлбрейку, що дозволяє підключення через ssh root@<device_ip_address>
. Важливо змінити стандартні паролі (alpine
) для користувачів root
та mobile
, щоб забезпечити безпеку пристрою.
SSH через USB стає необхідним за відсутності Wi-Fi, використовуючи iproxy
для відображення портів пристрою для SSH-з'єднань. Ця конфігурація дозволяє доступ до SSH через USB, запустивши:
$ 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, який потім витягується з пристрою:
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.
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 файлу локально.
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
Витягування бінарного файлу програми
- З IPA: Розпакуйте IPA, щоб отримати розшифрований бінарний файл програми.
- З джейлбрейкнутого пристрою: Встановіть програму та витягніть розшифрований бінарний файл з пам'яті.
Процес розшифрування
Огляд ручного розшифрування: Бінарні файли програм iOS зашифровані Apple за допомогою FairPlay. Щоб провести реверс-інжиніринг, потрібно витягти розшифрований бінарний файл з пам'яті. Процес розшифрування включає перевірку прапора PIE, коригування прапорів пам'яті, ідентифікацію зашифрованої секції, а потім витягування та заміну цієї секції на її розшифровану форму.
Перевірка та модифікація прапора PIE:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Визначення зашифрованої секції та дамп пам'яті:
Визначте початкові та кінцеві адреси зашифрованої секції за допомогою otool
та зробіть дамп пам'яті з джейлбрейкнутого пристрою за допомогою 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
Щоб скинути конкретний додаток, наприклад Telegram, використовується наступна команда:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Ця команда ініціює дамп програми, в результаті чого створюється файл Telegram.ipa
у поточному каталозі. Цей процес підходить для джейлбрейкнутіх пристроїв, оскільки незасвідчені або підроблені програми можуть бути повторно встановлені за допомогою інструментів, таких як ios-deploy.
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, вимагає джейлбрейкнутого пристрою для розшифровки додатків:
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
- 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/
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.