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

135 lines
13 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
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси**, які підтримуються **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{% hint style="success" %}
Вчіться та практикуйте AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Вчіться та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Підтримка HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
### Підготовка
* [ ] Прочитайте [**Основи iOS**](ios-pentesting/ios-basics.md)
* [ ] Підготуйте своє середовище, прочитавши [**Середовище тестування iOS**](ios-pentesting/ios-testing-environment.md)
* [ ] Прочитайте всі розділи [**Початкового аналізу iOS**](ios-pentesting/#initial-analysis), щоб дізнатися про загальні дії для pentest iOS додатка
### Зберігання даних
* [ ] [**Plist файли**](ios-pentesting/#plist) можуть використовуватися для зберігання чутливої інформації.
* [ ] [**Core Data**](ios-pentesting/#core-data) (база даних SQLite) може зберігати чутливу інформацію.
* [ ] [**YapDatabases**](ios-pentesting/#yapdatabase) (база даних SQLite) може зберігати чутливу інформацію.
* [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases) неправильна конфігурація.
* [ ] [**Realm бази даних**](ios-pentesting/#realm-databases) можуть зберігати чутливу інформацію.
* [ ] [**Couchbase Lite бази даних**](ios-pentesting/#couchbase-lite-databases) можуть зберігати чутливу інформацію.
* [ ] [**Бінарні куки**](ios-pentesting/#cookies) можуть зберігати чутливу інформацію.
* [ ] [**Кешовані дані**](ios-pentesting/#cache) можуть зберігати чутливу інформацію.
* [ ] [**Автоматичні знімки**](ios-pentesting/#snapshots) можуть зберігати візуальну чутливу інформацію.
* [ ] [**Keychain**](ios-pentesting/#keychain) зазвичай використовується для зберігання чутливої інформації, яка може залишитися при перепродажу телефону.
* [ ] Підсумовуючи, просто **перевірте наявність чутливої інформації, збереженої додатком у файловій системі.**
### Клавіатури
* [ ] Чи дозволяє додаток [**використовувати користувацькі клавіатури**](ios-pentesting/#custom-keyboards-keyboard-cache)?
* [ ] Перевірте, чи зберігається чутлива інформація у [**файлах кешу клавіатур**](ios-pentesting/#custom-keyboards-keyboard-cache).
### **Логи**
* [ ] Перевірте, чи [**чутлива інформація ведеться в логах**](ios-pentesting/#logs).
### Резервні копії
* [ ] [**Резервні копії**](ios-pentesting/#backups) можуть використовуватися для **доступу до чутливої інформації**, збереженої у файловій системі (перевірте початковий пункт цього контрольного списку).
* [ ] Також, [**резервні копії**](ios-pentesting/#backups) можуть використовуватися для **модифікації деяких конфігурацій додатка**, а потім **відновлення** резервної копії на телефоні, і оскільки **модифікована конфігурація** **завантажується**, деяка (безпекова) **функціональність** може бути **обійдена**.
### **Пам'ять додатків**
* [ ] Перевірте наявність чутливої інформації всередині [**пам'яті додатка**](ios-pentesting/#testing-memory-for-sensitive-data).
### **Пошкоджена криптографія**
* [ ] Перевірте, чи можете ви знайти [**паролі, що використовуються для криптографії**](ios-pentesting/#broken-cryptography).
* [ ] Перевірте використання [**застарілих/слабких алгоритмів**](ios-pentesting/#broken-cryptography) для відправки/зберігання чутливих даних.
* [ ] [**Перехоплюйте та моніторте криптографічні функції**](ios-pentesting/#broken-cryptography).
### **Локальна аутентифікація**
* [ ] Якщо в додатку використовується [**локальна аутентифікація**](ios-pentesting/#local-authentication), вам слід перевірити, як працює аутентифікація.
* [ ] Якщо використовується [**Фреймворк локальної аутентифікації**](ios-pentesting/#local-authentication-framework), його можна легко обійти.
* [ ] Якщо використовується [**функція, яку можна динамічно обійти**](ios-pentesting/#local-authentication-using-keychain), ви можете створити власний скрипт frida.
### Вразливість чутливої функціональності через IPC
* [**Користувацькі обробники URI / Deeplinks / Користувацькі схеми**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes)
* [ ] Перевірте, чи додаток **реєструє будь-який протокол/схему**.
* [ ] Перевірте, чи додаток **реєструється для використання** будь-якого протоколу/схеми.
* [ ] Перевірте, чи додаток **очікує отримати будь-яку чутливу інформацію** з користувацької схеми, яку можна **перехопити** іншим додатком, що реєструє ту ж схему.
* [ ] Перевірте, чи додаток **не перевіряє та не очищає** введення користувачів через користувацьку схему, і чи можна експлуатувати якусь **вразливість**.
* [ ] Перевірте, чи додаток **викриває будь-яку чутливу дію**, яку можна викликати з будь-якого місця через користувацьку схему.
* [**Універсальні посилання**](ios-pentesting/#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/#network-communication) та шукайте веб-вразливості.
* [ ] Перевірте, чи [**перевіряється ім'я хоста сертифіката**](ios-pentesting/#hostname-check).
* [ ] Перевірте/обійдіть [**Certificate Pinning**](ios-pentesting/#certificate-pinning).
### **Різне**
* [ ] Перевірте наявність [**автоматичного патчінгу/оновлення**](ios-pentesting/#hot-patching-enforced-updateing) механізмів.
* [ ] Перевірте наявність [**шкідливих бібліотек третіх сторін**](ios-pentesting/#third-parties).
{% hint style="success" %}
Вчіться та практикуйте AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Вчіться та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Підтримка HackTricks</summary>
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на GitHub.
</details>
{% endhint %}
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Використовуйте [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), щоб легко створювати та **автоматизувати робочі процеси**, які підтримуються **найсучаснішими** інструментами спільноти.\
Отримайте доступ сьогодні:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}