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

94 lines
6.9 KiB
Markdown

# 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}}