# iOS Pentesting Checklist {{#include ../banners/hacktricks-training.md}} ### Preparazione - [ ] Leggi [**iOS Basics**](ios-pentesting/ios-basics.md) - [ ] Prepara il tuo ambiente leggendo [**iOS Testing Environment**](ios-pentesting/ios-testing-environment.md) - [ ] Leggi tutte le sezioni di [**iOS Initial Analysis**](ios-pentesting/index.html#initial-analysis) per apprendere le azioni comuni per pentestare un'applicazione iOS ### Archiviazione Dati - [ ] [**I file Plist**](ios-pentesting/index.html#plist) possono essere utilizzati per memorizzare informazioni sensibili. - [ ] [**Core Data**](ios-pentesting/index.html#core-data) (database SQLite) può memorizzare informazioni sensibili. - [ ] [**YapDatabases**](ios-pentesting/index.html#yapdatabase) (database SQLite) può memorizzare informazioni sensibili. - [ ] [**Firebase**](ios-pentesting/index.html#firebase-real-time-databases) configurazione errata. - [ ] [**Database Realm**](ios-pentesting/index.html#realm-databases) possono memorizzare informazioni sensibili. - [ ] [**Database Couchbase Lite**](ios-pentesting/index.html#couchbase-lite-databases) possono memorizzare informazioni sensibili. - [ ] [**Cookie binari**](ios-pentesting/index.html#cookies) possono memorizzare informazioni sensibili - [ ] [**Dati di cache**](ios-pentesting/index.html#cache) possono memorizzare informazioni sensibili - [ ] [**Snapshot automatici**](ios-pentesting/index.html#snapshots) possono salvare informazioni visive sensibili - [ ] [**Keychain**](ios-pentesting/index.html#keychain) è solitamente utilizzato per memorizzare informazioni sensibili che possono rimanere quando si rivende il telefono. - [ ] In sintesi, **controlla solo le informazioni sensibili salvate dall'applicazione nel filesystem** ### Tastiere - [ ] L'applicazione [**consente di utilizzare tastiere personalizzate**](ios-pentesting/index.html#custom-keyboards-keyboard-cache)? - [ ] Controlla se le informazioni sensibili sono salvate nei [**file di cache delle tastiere**](ios-pentesting/index.html#custom-keyboards-keyboard-cache) ### **Log** - [ ] Controlla se [**le informazioni sensibili vengono registrate**](ios-pentesting/index.html#logs) ### Backup - [ ] [**I backup**](ios-pentesting/index.html#backups) possono essere utilizzati per **accedere alle informazioni sensibili** salvate nel filesystem (controlla il punto iniziale di questo checklist) - [ ] Inoltre, [**i backup**](ios-pentesting/index.html#backups) possono essere utilizzati per **modificare alcune configurazioni dell'applicazione**, quindi **ripristinare** il backup sul telefono, e poiché la **configurazione modificata** è **caricata**, alcune (funzionalità di sicurezza) possono essere **bypassate** ### **Memoria delle Applicazioni** - [ ] Controlla le informazioni sensibili all'interno della [**memoria dell'applicazione**](ios-pentesting/index.html#testing-memory-for-sensitive-data) ### **Crittografia Rottura** - [ ] Controlla se puoi trovare [**password utilizzate per la crittografia**](ios-pentesting/index.html#broken-cryptography) - [ ] Controlla l'uso di [**algoritmi deprecati/deboli**](ios-pentesting/index.html#broken-cryptography) per inviare/memorizzare dati sensibili - [ ] [**Hook e monitora le funzioni di crittografia**](ios-pentesting/index.html#broken-cryptography) ### **Autenticazione Locale** - [ ] Se viene utilizzata un'**autenticazione locale** nell'applicazione, dovresti controllare come funziona l'autenticazione. - [ ] Se utilizza il [**Local Authentication Framework**](ios-pentesting/index.html#local-authentication-framework) potrebbe essere facilmente bypassato - [ ] Se utilizza una [**funzione che può essere bypassata dinamicamente**](ios-pentesting/index.html#local-authentication-using-keychain) potresti creare uno script frida personalizzato ### Esposizione di Funzionalità Sensibili Tramite IPC - [**Gestori URI personalizzati / Deeplinks / Schemi personalizzati**](ios-pentesting/index.html#custom-uri-handlers-deeplinks-custom-schemes) - [ ] Controlla se l'applicazione **sta registrando qualche protocollo/schema** - [ ] Controlla se l'applicazione **si sta registrando per utilizzare** qualche protocollo/schema - [ ] Controlla se l'applicazione **si aspetta di ricevere qualche tipo di informazione sensibile** dallo schema personalizzato che può essere **intercettato** da un'altra applicazione che registra lo stesso schema - [ ] Controlla se l'applicazione **non sta controllando e sanitizzando** l'input degli utenti tramite lo schema personalizzato e qualche **vulnerabilità può essere sfruttata** - [ ] Controlla se l'applicazione **espone qualche azione sensibile** che può essere chiamata da qualsiasi luogo tramite lo schema personalizzato - [**Link Universali**](ios-pentesting/index.html#universal-links) - [ ] Controlla se l'applicazione **sta registrando qualche protocollo/schema universale** - [ ] Controlla il file `apple-app-site-association` - [ ] Controlla se l'applicazione **non sta controllando e sanitizzando** l'input degli utenti tramite lo schema personalizzato e qualche **vulnerabilità può essere sfruttata** - [ ] Controlla se l'applicazione **espone qualche azione sensibile** che può essere chiamata da qualsiasi luogo tramite lo schema personalizzato - [**Condivisione UIActivity**](ios-pentesting/ios-uiactivity-sharing.md) - [ ] Controlla se l'applicazione può ricevere UIActivities e se è possibile sfruttare qualche vulnerabilità con attività appositamente create - [**UIPasteboard**](ios-pentesting/ios-uipasteboard.md) - [ ] Controlla se l'applicazione **copia qualcosa negli appunti generali** - [ ] Controlla se l'applicazione **usa i dati dagli appunti generali per qualcosa** - [ ] Monitora gli appunti per vedere se qualche **dato sensibile viene copiato** - [**Estensioni App**](ios-pentesting/ios-app-extensions.md) - [ ] L'applicazione **usa qualche estensione**? - [**WebViews**](ios-pentesting/ios-webviews.md) - [ ] Controlla che tipo di webviews vengono utilizzati - [ ] Controlla lo stato di **`javaScriptEnabled`**, **`JavaScriptCanOpenWindowsAutomatically`**, **`hasOnlySecureContent`** - [ ] Controlla se il webview può **accedere a file locali** con il protocollo **file://** **(**`allowFileAccessFromFileURLs`, `allowUniversalAccessFromFileURLs`) - [ ] Controlla se Javascript può accedere a **metodi** **Native** (`JSContext`, `postMessage`) ### Comunicazione di Rete - [ ] Esegui un [**MitM sulla comunicazione**](ios-pentesting/index.html#network-communication) e cerca vulnerabilità web. - [ ] Controlla se il [**nome host del certificato**](ios-pentesting/index.html#hostname-check) viene controllato - [ ] Controlla/Bypass [**Certificate Pinning**](ios-pentesting/index.html#certificate-pinning) ### **Varie** - [ ] Controlla per meccanismi di [**patching/aggiornamento automatico**](ios-pentesting/index.html#hot-patching-enforced-updateing) - [ ] Controlla per [**librerie di terze parti malevole**](ios-pentesting/index.html#third-parties) {{#include ../banners/hacktricks-training.md}}