hacktricks/mobile-pentesting/ios-pentesting/ios-testing-environment.md
2024-02-10 13:03:23 +00:00

12 KiB

Ambiente di test iOS

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Programma sviluppatore Apple

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.

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".

Nota che le applicazioni firmate con lo stesso certificato di firma possono condividere risorse in modo sicuro, come gli elementi del portachiavi.

I profili di provisioning sono memorizzati all'interno del telefono in /Library/MobileDevice/ProvisioningProfiles

Simulatore

{% hint style="info" %} 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 %}

Simulatore

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.

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.

I file del simulatore possono essere trovati in /Users/<username>/Library/Developer/CoreSimulator/Devices

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:

Applicazioni nel simulatore

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:

xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)

Una volta che conosci l'UID, le app installate possono essere trovate in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application.

Tuttavia, sorprendentemente, non troverai l'applicazione qui. Devi accedere a /Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/.

E in questa cartella puoi trovare il pacchetto dell'applicazione.

Emulatore

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.

Jailbreak

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" %} A differenza di Android, non è possibile passare alla modalità "Modalità sviluppatore" su iOS per eseguire codice non firmato/non attendibile sul dispositivo. {% endhint %}

Rooting Android vs. Jailbreak iOS

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.

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.

Sfide del Jailbreak

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.

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 è una risorsa per verificare le finestre di firma attuali.

Varianti di Jailbreak

  • 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.

Strumenti e Risorse per il Jailbreak

Gli strumenti per il jailbreak variano in base alla versione di iOS e al dispositivo. Risorse come Can I Jailbreak?, The iPhone Wiki e Reddit Jailbreak forniscono informazioni aggiornate. Esempi includono:

  • Checkra1n per dispositivi con chip A7-A11.
  • Palera1n per dispositivi Checkm8 (A8-A11) su iOS 15.0-16.5.
  • Unc0ver per versioni di iOS fino a 14.8.

La modifica del tuo dispositivo comporta rischi e il jailbreak dovrebbe essere affrontato con cautela.

Vantaggi e Rischi del Jailbreak

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.

Dopo il Jailbreak

{% content-ref url="basic-ios-testing-operations.md" %} basic-ios-testing-operations.md {% endcontent-ref %}

Rilevamento del Jailbreak

Alcune applicazioni cercheranno di rilevare se il dispositivo è jailbreakato e in tal caso l'applicazione non verrà eseguita

  • 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.

Ulteriori informazioni su come rilevare il jailbreak qui.

Puoi provare a evitare questi rilevamenti utilizzando il comando ios jailbreak disable di objection.

Bypass del Rilevamento del Jailbreak

  • 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'.

Riferimenti

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: