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

110 lines
7.8 KiB
Markdown

# Lista kontrolna pentestingu iOS
<figure><img src="../images/image (48).png" alt=""><figcaption></figcaption></figure>
\
Użyj [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), aby łatwo budować i **automatyzować przepływy pracy** zasilane przez **najbardziej zaawansowane** narzędzia społecznościowe na świecie.\
Uzyskaj dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
{{#include ../banners/hacktricks-training.md}}
### Przygotowanie
- [ ] Przeczytaj [**Podstawy iOS**](ios-pentesting/ios-basics.md)
- [ ] Przygotuj swoje środowisko, czytając [**Środowisko testowe iOS**](ios-pentesting/ios-testing-environment.md)
- [ ] Przeczytaj wszystkie sekcje [**Wstępnej analizy iOS**](ios-pentesting/#initial-analysis), aby poznać wspólne działania do pentestingu aplikacji iOS
### Przechowywanie danych
- [ ] [**Pliki Plist**](ios-pentesting/#plist) mogą być używane do przechowywania wrażliwych informacji.
- [ ] [**Core Data**](ios-pentesting/#core-data) (baza danych SQLite) może przechowywać wrażliwe informacje.
- [ ] [**YapDatabases**](ios-pentesting/#yapdatabase) (baza danych SQLite) może przechowywać wrażliwe informacje.
- [ ] [**Firebase**](ios-pentesting/#firebase-real-time-databases) błędna konfiguracja.
- [ ] [**Bazy danych Realm**](ios-pentesting/#realm-databases) mogą przechowywać wrażliwe informacje.
- [ ] [**Bazy danych Couchbase Lite**](ios-pentesting/#couchbase-lite-databases) mogą przechowywać wrażliwe informacje.
- [ ] [**Cookies binarne**](ios-pentesting/#cookies) mogą przechowywać wrażliwe informacje.
- [ ] [**Dane w pamięci podręcznej**](ios-pentesting/#cache) mogą przechowywać wrażliwe informacje.
- [ ] [**Automatyczne zrzuty**](ios-pentesting/#snapshots) mogą zapisywać wizualne wrażliwe informacje.
- [ ] [**Keychain**](ios-pentesting/#keychain) jest zazwyczaj używany do przechowywania wrażliwych informacji, które mogą zostać pozostawione przy odsprzedaży telefonu.
- [ ] Podsumowując, po prostu **sprawdź wrażliwe informacje zapisane przez aplikację w systemie plików**.
### Klawiatury
- [ ] Czy aplikacja [**pozwala na używanie niestandardowych klawiatur**](ios-pentesting/#custom-keyboards-keyboard-cache)?
- [ ] Sprawdź, czy wrażliwe informacje są zapisywane w [**plikach pamięci podręcznej klawiatur**](ios-pentesting/#custom-keyboards-keyboard-cache).
### **Logi**
- [ ] Sprawdź, czy [**wrażliwe informacje są rejestrowane**](ios-pentesting/#logs).
### Kopie zapasowe
- [ ] [**Kopie zapasowe**](ios-pentesting/#backups) mogą być używane do **uzyskania dostępu do wrażliwych informacji** zapisanych w systemie plików (sprawdź początkowy punkt tej listy kontrolnej).
- [ ] Ponadto, [**kopie zapasowe**](ios-pentesting/#backups) mogą być używane do **modyfikacji niektórych konfiguracji aplikacji**, a następnie **przywrócenia** kopii zapasowej na telefonie, a jako **zmodyfikowana konfiguracja** jest **ładowana**, niektóre (bezpieczeństwa) **funkcjonalności** mogą być **obejście**.
### **Pamięć aplikacji**
- [ ] Sprawdź wrażliwe informacje wewnątrz [**pamięci aplikacji**](ios-pentesting/#testing-memory-for-sensitive-data).
### **Złamana kryptografia**
- [ ] Sprawdź, czy możesz znaleźć [**hasła używane do kryptografii**](ios-pentesting/#broken-cryptography).
- [ ] Sprawdź użycie [**przestarzałych/słabych algorytmów**](ios-pentesting/#broken-cryptography) do wysyłania/przechowywania wrażliwych danych.
- [ ] [**Hook i monitoruj funkcje kryptograficzne**](ios-pentesting/#broken-cryptography).
### **Lokalna autoryzacja**
- [ ] Jeśli w aplikacji używana jest [**lokalna autoryzacja**](ios-pentesting/#local-authentication), powinieneś sprawdzić, jak działa autoryzacja.
- [ ] Jeśli używa [**Frameworka lokalnej autoryzacji**](ios-pentesting/#local-authentication-framework), może być łatwo obejście.
- [ ] Jeśli używa [**funkcji, która może być dynamicznie obejście**](ios-pentesting/#local-authentication-using-keychain), możesz stworzyć niestandardowy skrypt frida.
### Ekspozycja wrażliwej funkcjonalności przez IPC
- [**Niestandardowe obsługiwacze URI / Deeplinks / Niestandardowe schematy**](ios-pentesting/#custom-uri-handlers-deeplinks-custom-schemes).
- [ ] Sprawdź, czy aplikacja **rejestruje jakikolwiek protokół/schemat**.
- [ ] Sprawdź, czy aplikacja **rejestruje się do użycia** jakiegokolwiek protokołu/schematu.
- [ ] Sprawdź, czy aplikacja **oczekuje na otrzymanie jakiegokolwiek rodzaju wrażliwych informacji** z niestandardowego schematu, które mogą być **przechwycone** przez inną aplikację rejestrującą ten sam schemat.
- [ ] Sprawdź, czy aplikacja **nie sprawdza i nie oczyszcza** danych wejściowych użytkowników przez niestandardowy schemat i czy jakaś **vulnerabilność może być wykorzystana**.
- [ ] Sprawdź, czy aplikacja **ekspozytuje jakąkolwiek wrażliwą akcję**, która może być wywołana z dowolnego miejsca przez niestandardowy schemat.
- [**Uniwersalne linki**](ios-pentesting/#universal-links).
- [ ] Sprawdź, czy aplikacja **rejestruje jakikolwiek uniwersalny protokół/schemat**.
- [ ] Sprawdź plik `apple-app-site-association`.
- [ ] Sprawdź, czy aplikacja **nie sprawdza i nie oczyszcza** danych wejściowych użytkowników przez niestandardowy schemat i czy jakaś **vulnerabilność może być wykorzystana**.
- [ ] Sprawdź, czy aplikacja **ekspozytuje jakąkolwiek wrażliwą akcję**, która może być wywołana z dowolnego miejsca przez niestandardowy schemat.
- [**Udostępnianie UIActivity**](ios-pentesting/ios-uiactivity-sharing.md).
- [ ] Sprawdź, czy aplikacja może odbierać UIActivities i czy możliwe jest wykorzystanie jakiejkolwiek vulnerabilności z specjalnie przygotowaną aktywnością.
- [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md).
- [ ] Sprawdź, czy aplikacja **kopiuje cokolwiek do ogólnej pamięci podręcznej**.
- [ ] Sprawdź, czy aplikacja **używa danych z ogólnej pamięci podręcznej do czegokolwiek**.
- [ ] Monitoruj pamięć podręczną, aby zobaczyć, czy jakiekolwiek **wrażliwe dane są kopiowane**.
- [**Rozszerzenia aplikacji**](ios-pentesting/ios-app-extensions.md).
- [ ] Czy aplikacja **używa jakiegokolwiek rozszerzenia**?
- [**WebViews**](ios-pentesting/ios-webviews.md).
- [ ] Sprawdź, jakie rodzaje webview są używane.
- [ ] Sprawdź status **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`**.
- [ ] Sprawdź, czy webview może **uzyskać dostęp do lokalnych plików** z protokołem **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`).
- [ ] Sprawdź, czy Javascript może uzyskać dostęp do **metod Native** (`JSContext`, `postMessage`).
### Komunikacja sieciowa
- [ ] Wykonaj [**MitM do komunikacji**](ios-pentesting/#network-communication) i poszukaj luk w zabezpieczeniach w sieci.
- [ ] Sprawdź, czy [**nazwa hosta certyfikatu**](ios-pentesting/#hostname-check) jest sprawdzana.
- [ ] Sprawdź/obejdź [**Pinning certyfikatów**](ios-pentesting/#certificate-pinning).
### **Różne**
- [ ] Sprawdź [**automatyczne mechanizmy łatania/aktualizacji**](ios-pentesting/#hot-patching-enforced-updateing).
- [ ] Sprawdź [**złośliwe biblioteki stron trzecich**](ios-pentesting/#third-parties).
{{#include ../banners/hacktricks-training.md}}
<figure><img src="../images/image (48).png" alt=""><figcaption></figcaption></figure>
\
Użyj [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), aby łatwo budować i **automatyzować przepływy pracy** zasilane przez **najbardziej zaawansowane** narzędzia społecznościowe na świecie.\
Uzyskaj dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}