hacktricks/src/mobile-pentesting/ios-pentesting-checklist.md

94 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# iOS Pentesting Checklist
{{#include ../banners/hacktricks-training.md}}
### Підготовка
- [ ] Прочитайте [**Основи iOS**](ios-pentesting/ios-basics.md)
- [ ] Підготуйте своє середовище, прочитавши [**Середовище тестування iOS**](ios-pentesting/ios-testing-environment.md)
- [ ] Прочитайте всі розділи [**Початкового аналізу iOS**](ios-pentesting/index.html#initial-analysis), щоб дізнатися про загальні дії для тестування iOS-додатка
### Зберігання даних
- [ ] [**Plist файли**](ios-pentesting/index.html#plist) можуть використовуватися для зберігання чутливої інформації.
- [ ] [**Core Data**](ios-pentesting/index.html#core-data) (база даних SQLite) може зберігати чутливу інформацію.
- [ ] [**YapDatabases**](ios-pentesting/index.html#yapdatabase) (база даних SQLite) може зберігати чутливу інформацію.
- [ ] [**Firebase**](ios-pentesting/index.html#firebase-real-time-databases) неправильна конфігурація.
- [ ] [**Realm бази даних**](ios-pentesting/index.html#realm-databases) можуть зберігати чутливу інформацію.
- [ ] [**Couchbase Lite бази даних**](ios-pentesting/index.html#couchbase-lite-databases) можуть зберігати чутливу інформацію.
- [ ] [**Бінарні куки**](ios-pentesting/index.html#cookies) можуть зберігати чутливу інформацію
- [ ] [**Кешовані дані**](ios-pentesting/index.html#cache) можуть зберігати чутливу інформацію
- [ ] [**Автоматичні знімки**](ios-pentesting/index.html#snapshots) можуть зберігати візуальну чутливу інформацію
- [ ] [**Keychain**](ios-pentesting/index.html#keychain) зазвичай використовується для зберігання чутливої інформації, яка може залишитися при перепродажу телефону.
- [ ] Підсумовуючи, просто **перевірте наявність чутливої інформації, збереженої додатком у файловій системі**
### Клавіатури
- [ ] Чи дозволяє додаток [**використовувати користувацькі клавіатури**](ios-pentesting/index.html#custom-keyboards-keyboard-cache)?
- [ ] Перевірте, чи зберігається чутлива інформація у [**файлах кешу клавіатур**](ios-pentesting/index.html#custom-keyboards-keyboard-cache)
### **Логи**
- [ ] Перевірте, чи [**реєструється чутлива інформація**](ios-pentesting/index.html#logs)
### Резервні копії
- [ ] [**Резервні копії**](ios-pentesting/index.html#backups) можуть використовуватися для **доступу до чутливої інформації**, збереженої у файловій системі (перевірте початковий пункт цього контрольного списку)
- [ ] Також, [**резервні копії**](ios-pentesting/index.html#backups) можуть використовуватися для **модифікації деяких конфігурацій додатка**, а потім **відновлення** резервної копії на телефоні, і оскільки **модифікована конфігурація** **завантажується**, деяка (безпекова) **функціональність** може бути **обійдена**
### **Пам'ять додатків**
- [ ] Перевірте наявність чутливої інформації всередині [**пам'яті додатка**](ios-pentesting/index.html#testing-memory-for-sensitive-data)
### **Пошкоджена криптографія**
- [ ] Перевірте, чи можете ви знайти [**паролі, що використовуються для криптографії**](ios-pentesting/index.html#broken-cryptography)
- [ ] Перевірте використання [**застарілих/слабких алгоритмів**](ios-pentesting/index.html#broken-cryptography) для відправки/зберігання чутливих даних
- [ ] [**Перехоплюйте та моніторте криптографічні функції**](ios-pentesting/index.html#broken-cryptography)
### **Локальна аутентифікація**
- [ ] Якщо в додатку використовується [**локальна аутентифікація**](ios-pentesting/index.html#local-authentication), вам слід перевірити, як працює аутентифікація.
- [ ] Якщо використовується [**Фреймворк локальної аутентифікації**](ios-pentesting/index.html#local-authentication-framework), його можна легко обійти
- [ ] Якщо використовується [**функція, яку можна динамічно обійти**](ios-pentesting/index.html#local-authentication-using-keychain), ви можете створити власний скрипт frida
### Витік чутливої функціональності через IPC
- [**Користувацькі обробники URI / Глибокі посилання / Користувацькі схеми**](ios-pentesting/index.html#custom-uri-handlers-deeplinks-custom-schemes)
- [ ] Перевірте, чи додаток **реєструє будь-який протокол/схему**
- [ ] Перевірте, чи додаток **реєструється для використання** будь-якого протоколу/схеми
- [ ] Перевірте, чи додаток **очікує отримати будь-яку чутливу інформацію** з користувацької схеми, яка може бути **перехоплена** іншим додатком, що реєструє ту ж схему
- [ ] Перевірте, чи додаток **не перевіряє та не очищає** введення користувачів через користувацьку схему, і чи може бути **використана якась вразливість**
- [ ] Перевірте, чи додаток **викриває будь-яку чутливу дію**, яку можна викликати з будь-якого місця через користувацьку схему
- [**Універсальні посилання**](ios-pentesting/index.html#universal-links)
- [ ] Перевірте, чи додаток **реєструє будь-який універсальний протокол/схему**
- [ ] Перевірте файл `apple-app-site-association`
- [ ] Перевірте, чи додаток **не перевіряє та не очищає** введення користувачів через користувацьку схему, і чи може бути **використана якась вразливість**
- [ ] Перевірте, чи додаток **викриває будь-яку чутливу дію**, яку можна викликати з будь-якого місця через користувацьку схему
- [**UIActivity Sharing**](ios-pentesting/ios-uiactivity-sharing.md)
- [ ] Перевірте, чи може додаток отримувати UIActivities і чи можливо експлуатувати будь-яку вразливість зі спеціально підготовленою активністю
- [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md)
- [ ] Перевірте, чи додаток **копіює щось у загальний буфер обміну**
- [ ] Перевірте, чи додаток **використовує дані з загального буфера обміну для чогось**
- [ ] Моніторте буфер обміну, щоб перевірити, чи **копіюється якась чутлива інформація**
- [**Розширення додатків**](ios-pentesting/ios-app-extensions.md)
- [ ] Чи використовує додаток **будь-яке розширення**?
- [**WebViews**](ios-pentesting/ios-webviews.md)
- [ ] Перевірте, які види webviews використовуються
- [ ] Перевірте статус **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**
- [ ] Перевірте, чи може webview **доступати до локальних файлів** з протоколом **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`)
- [ ] Перевірте, чи може Javascript отримати доступ до **Native** **методів** (`JSContext`, `postMessage`)
### Мережева комунікація
- [ ] Виконайте [**MitM для комунікації**](ios-pentesting/index.html#network-communication) і шукайте веб-вразливості.
- [ ] Перевірте, чи [**перевіряється ім'я хоста сертифіката**](ios-pentesting/index.html#hostname-check)
- [ ] Перевірте/обійдіть [**Pinning сертифікатів**](ios-pentesting/index.html#certificate-pinning)
### **Різне**
- [ ] Перевірте наявність [**автоматичного патчінгу/оновлення**](ios-pentesting/index.html#hot-patching-enforced-updateing) механізмів
- [ ] Перевірте наявність [**шкідливих бібліотек сторонніх розробників**](ios-pentesting/index.html#third-parties)
{{#include ../banners/hacktricks-training.md}}