hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md

150 lines
12 KiB
Markdown
Raw Normal View History

2024-02-10 13:03:23 +00:00
# Ambiente di test iOS
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2024-01-03 10:43:38 +00:00
2024-02-10 13:03:23 +00:00
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 13:03:23 +00:00
## Programma sviluppatore Apple
2021-05-14 22:25:03 +00:00
2024-02-10 13:03:23 +00:00
Un **identità di provisioning** è una collezione di chiavi pubbliche e private associate a un account sviluppatore Apple. Per **firmare le app** è necessario pagare **99$/anno** per registrarsi al **Programma sviluppatori Apple** e ottenere la propria identità di provisioning. Senza di essa non sarà possibile eseguire applicazioni dal codice sorgente su un dispositivo fisico. Un'altra opzione è utilizzare un **dispositivo jailbroken**.
2021-05-14 22:25:03 +00:00
2024-02-10 13:03:23 +00:00
A partire da Xcode 7.2, Apple ha fornito un'opzione per creare un **profilo di provisioning di sviluppo iOS gratuito** che consente di scrivere e testare la propria applicazione su un vero iPhone. Vai su _Xcode_ --> _Preferenze_ --> _Account_ --> _+_ (Aggiungi nuovo ID applicazione alle tue credenziali) --> _Fai clic sull'ID Apple creato_ --> _Gestisci certificati_ --> _+_ (Sviluppo Apple) --> _Fatto_\
\_\_Successivamente, per eseguire l'applicazione sul proprio iPhone, è necessario **indicare all'iPhone di fidarsi del computer**. Quindi, è possibile provare a **eseguire l'applicazione sul dispositivo mobile da Xcode**, ma verrà visualizzato un errore. Quindi, vai su _Impostazioni_ --> _Generali_ --> _Profili e gestione dispositivi_ --> Seleziona il profilo non attendibile e fai clic su "**Fidati**".
2021-05-14 22:25:03 +00:00
2024-02-10 13:03:23 +00:00
Nota che **le applicazioni firmate con lo stesso certificato di firma possono condividere risorse in modo sicuro, come gli elementi del portachiavi**.
2021-05-14 22:25:03 +00:00
2024-02-10 13:03:23 +00:00
I profili di provisioning sono memorizzati all'interno del telefono in **`/Library/MobileDevice/ProvisioningProfiles`**
2021-05-14 22:25:03 +00:00
2024-02-10 13:03:23 +00:00
## **Simulatore**
{% hint style="info" %}
2024-02-10 13:03:23 +00:00
Nota che un **simulatore non è la stessa cosa di un emulatore**. Il simulatore simula solo il comportamento del dispositivo e delle funzioni, ma non le utilizza effettivamente.
{% endhint %}
2024-02-10 13:03:23 +00:00
### **Simulatore**
2024-02-10 13:03:23 +00:00
La prima cosa che devi sapere è che **effettuare un pentest all'interno di un simulatore sarà molto più limitato rispetto a farlo su un dispositivo jailbroken**.
2024-02-10 13:03:23 +00:00
Tutti gli strumenti necessari per creare e supportare un'app iOS sono **ufficialmente supportati solo su Mac OS**.\
Lo strumento di fatto di Apple per creare/debuggare/strumentare applicazioni iOS è **Xcode**. Può essere utilizzato per scaricare altri componenti come **simulatori** e diverse **versioni di SDK** necessarie per creare e **testare** l'app.\
È altamente consigliato **scaricare** Xcode dall'**App Store ufficiale**. Altre versioni potrebbero contenere malware.
2024-02-10 13:03:23 +00:00
I file del simulatore possono essere trovati in `/Users/<username>/Library/Developer/CoreSimulator/Devices`
2024-02-10 13:03:23 +00:00
Per aprire il simulatore, esegui Xcode, quindi premi sulla scheda _Xcode_ --> _Apri strumenti per sviluppatori_ --> _Simulatore_\
\_\_Nell'immagine seguente, facendo clic su "iPod touch \[...]" è possibile selezionare un altro dispositivo da testare:
![](<../../.gitbook/assets/image (457).png>)
![](<../../.gitbook/assets/image (458).png>)
2024-02-10 13:03:23 +00:00
### Applicazioni nel simulatore
2024-02-10 13:03:23 +00:00
All'interno di `/Users/<username>/Library/Developer/CoreSimulator/Devices` è possibile trovare tutti i **simulatori installati**. Se si desidera accedere ai file di un'app creata all'interno di uno dei simulatori, potrebbe essere difficile sapere **in quale è installata l'app**. Un modo rapido per **trovare l'UID corretto** è eseguire l'app nel simulatore ed eseguire:
```bash
xcrun simctl list | grep Booted
2024-02-10 13:03:23 +00:00
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
```
2024-02-10 13:03:23 +00:00
Una volta che conosci l'UID, le app installate possono essere trovate in `/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`.
2024-02-10 13:03:23 +00:00
Tuttavia, sorprendentemente, non troverai l'applicazione qui. Devi accedere a `/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`.
2024-02-10 13:03:23 +00:00
E in questa cartella puoi **trovare il pacchetto dell'applicazione**.
2024-02-10 13:03:23 +00:00
## Emulatore
2024-02-10 13:03:23 +00:00
Corellium è l'unico emulatore iOS disponibile pubblicamente. È una soluzione SaaS aziendale con un modello di licenza per utente e non offre alcuna licenza di prova.
2024-02-10 13:03:23 +00:00
## Jailbreak
2024-02-10 13:03:23 +00:00
Apple richiede rigorosamente che il codice in esecuzione su iPhone sia **firmato da un certificato emesso da Apple**. Il **jailbreak** è il processo di **eludere attivamente tali restrizioni** e altri controlli di sicurezza imposti dal sistema operativo. Pertanto, una volta che il dispositivo è jailbreakato, il **controllo di integrità** responsabile del controllo delle app installate viene patchato in modo da essere **bypassato**.
{% hint style="info" %}
2024-02-10 13:03:23 +00:00
A differenza di Android, **non è possibile passare alla modalità "Modalità sviluppatore"** su iOS per eseguire codice non firmato/non attendibile sul dispositivo.
{% endhint %}
2024-02-10 13:03:23 +00:00
### Rooting Android vs. Jailbreak iOS
2024-02-10 13:03:23 +00:00
Sebbene spesso confrontati, il **rooting** su Android e il **jailbreak** su iOS sono processi fondamentalmente diversi. Il rooting dei dispositivi Android potrebbe comportare **l'installazione del binario `su`** o **la sostituzione del sistema con una ROM personalizzata con privilegi di root**, il che non richiede necessariamente exploit se il bootloader è sbloccato. **Flashare ROM personalizzate** sostituisce il sistema operativo del dispositivo dopo lo sblocco del bootloader, talvolta richiedendo un exploit.
2024-02-10 13:03:23 +00:00
Al contrario, i dispositivi iOS non possono flashare ROM personalizzate a causa della restrizione del bootloader di avviare solo immagini firmate da Apple. Il **jailbreak di iOS** mira a eludere le protezioni di firma del codice di Apple per eseguire codice non firmato, un processo complicato dagli continui miglioramenti della sicurezza di Apple.
2024-02-10 13:03:23 +00:00
### Sfide del Jailbreak
2024-02-10 13:03:23 +00:00
Il jailbreak di iOS è sempre più difficile poiché Apple corregge rapidamente le vulnerabilità. Il **downgrade di iOS** è possibile solo per un periodo limitato dopo un rilascio, rendendo il jailbreak una questione di tempistica. I dispositivi utilizzati per i test di sicurezza non dovrebbero essere aggiornati a meno che non sia garantito un nuovo jailbreak.
2024-02-10 13:03:23 +00:00
Gli aggiornamenti di iOS sono controllati da un **meccanismo di sfida-risposta** (SHSH blobs), che consente l'installazione solo per risposte firmate da Apple. Questo meccanismo, noto come "finestra di firma", limita la capacità di archiviare e successivamente utilizzare pacchetti firmware OTA. Il sito web [IPSW Downloads](https://ipsw.me) è una risorsa per verificare le finestre di firma attuali.
2024-02-10 13:03:23 +00:00
### Varianti di Jailbreak
2024-02-10 13:03:23 +00:00
- Il **jailbreak tethered** richiede una connessione al computer ad ogni riavvio.
- Il **jailbreak semi-tethered** consente di avviarsi in modalità non jailbroken senza un computer.
- Il **jailbreak semi-untethered** richiede un re-jailbreak manuale senza bisogno di un computer.
- Il **jailbreak untethered** offre una soluzione di jailbreak permanente senza la necessità di riapplicazione.
2024-02-10 13:03:23 +00:00
### Strumenti e Risorse per il Jailbreak
2024-02-10 13:03:23 +00:00
Gli strumenti per il jailbreak variano in base alla versione di iOS e al dispositivo. Risorse come [Can I Jailbreak?](https://canijailbreak.com), [The iPhone Wiki](https://www.theiphonewiki.com) e [Reddit Jailbreak](https://www.reddit.com/r/jailbreak/) forniscono informazioni aggiornate. Esempi includono:
2024-02-10 13:03:23 +00:00
- [Checkra1n](https://checkra.in/) per dispositivi con chip A7-A11.
- [Palera1n](https://palera.in/) per dispositivi Checkm8 (A8-A11) su iOS 15.0-16.5.
- [Unc0ver](https://unc0ver.dev/) per versioni di iOS fino a 14.8.
2024-02-10 13:03:23 +00:00
La modifica del tuo dispositivo comporta rischi e il jailbreak dovrebbe essere affrontato con cautela.
2024-02-10 13:03:23 +00:00
### Vantaggi e Rischi del Jailbreak
2024-02-10 13:03:23 +00:00
Il jailbreak **rimuove il sandboxing imposto dal sistema operativo**, consentendo alle app di accedere all'intero filesystem. Questa libertà consente l'installazione di app non approvate e l'accesso a più API. Tuttavia, per gli utenti comuni, il jailbreak **non è consigliato** a causa dei potenziali rischi per la sicurezza e dell'instabilità del dispositivo.
2024-02-10 13:03:23 +00:00
### **Dopo il Jailbreak**
{% content-ref url="basic-ios-testing-operations.md" %}
[basic-ios-testing-operations.md](basic-ios-testing-operations.md)
{% endcontent-ref %}
2024-02-10 13:03:23 +00:00
### **Rilevamento del Jailbreak**
2024-02-10 13:03:23 +00:00
**Alcune applicazioni cercheranno di rilevare se il dispositivo è jailbreakato e in tal caso l'applicazione non verrà eseguita**
2024-02-10 13:03:23 +00:00
* Dopo il jailbreak di un dispositivo iOS, di solito vengono installati **file e cartelle**, che possono essere cercati per determinare se il dispositivo è jailbreakato.
* In un dispositivo jailbreakato, le applicazioni ottengono **accesso in lettura/scrittura a nuovi file** al di fuori del sandbox.
* Alcune **chiamate API** si comporteranno in modo **diverso**.
* La presenza del servizio **OpenSSH**.
* La chiamata a `/bin/sh` restituirà **1** invece di 0.
2024-02-10 13:03:23 +00:00
**Ulteriori informazioni su come rilevare il jailbreak** [**qui**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**.**
2021-05-19 16:11:33 +00:00
2024-02-10 13:03:23 +00:00
Puoi provare a evitare questi rilevamenti utilizzando il comando `ios jailbreak disable` di **objection**.
2022-04-05 21:52:22 +00:00
2024-02-10 13:03:23 +00:00
## **Bypass del Rilevamento del Jailbreak**
2022-04-05 21:52:22 +00:00
2024-02-10 13:03:23 +00:00
* Puoi provare a evitare questi rilevamenti utilizzando il comando `ios jailbreak disable` di **objection**.
* Puoi anche installare lo strumento **Liberty Lite** (https://ryleyangus.com/repo/). Una volta aggiunta la repo, l'app dovrebbe apparire nella scheda 'Ricerca'.
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
## Riferimenti
2024-02-08 03:08:28 +00:00
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2024-01-03 10:43:38 +00:00
2024-02-10 13:03:23 +00:00
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>