# Lista kontrolna pentestingu iOS
\ 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}}
\ 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" %}