iOS Testing Environment

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

Altri modi per supportare HackTricks:

Programma per Sviluppatori 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 per Sviluppatori Apple per ottenere la tua identità di provisioning. Senza di essa non sarà possibile eseguire le 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 tua applicazione su un vero iPhone. Vai su Xcode --> Preferenze --> Account --> + (Aggiungi nuovo ID App ai tuoi credenziali) --> Fai clic sull'ID Apple creato --> Gestisci Certificati --> + (Sviluppo Apple) --> Fatto __Quindi, per eseguire la tua applicazione sul tuo iPhone, devi prima indicare all'iPhone di fidarsi del computer. Quindi, puoi provare a eseguire l'applicazione sul cellulare da Xcode, ma apparirà un errore. Quindi vai su Impostazioni --> Generale --> Profili e Gestione Dispositivi --> Seleziona il profilo non attendibile e clicca su "Fidati".

Nota che le applicazioni firmate dallo 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

Nota che un simulatore non è la stessa cosa di un emulatore. Il simulatore simula solo il comportamento del dispositivo e le funzioni ma non le utilizza effettivamente.

Simulatore

La prima cosa che devi sapere è che effettuare un pentest all'interno di un simulatore sarà molto più limitato rispetto a farlo in 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 le applicazioni iOS è Xcode. Può essere utilizzato per scaricare altri componenti come simulatori e diverse versioni SDK richieste per compilare e testare la tua 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 cliccando su "iPod touch [...]" puoi selezionare un altro dispositivo su cui fare il test:

Applicazioni nel Simulatore

All'interno di /Users/<username>/Library/Developer/CoreSimulator/Devices potresti trovare tutti i simulatori installati. Se desideri accedere ai file di un'applicazione 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'applicazione 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 al suo interno possono essere trovate in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application

Tuttavia, sorprendentemente non troverai l'applicazione qui. È necessario 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. Si tratta di 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 sull'iPhone debba essere firmato da un certificato rilasciato da Apple. Il jailbreaking è il processo di aggirare attivamente tali restrizioni e altri controlli di sicurezza messi in atto dal sistema operativo. Pertanto, una volta che il dispositivo è stato jailbroken, il controllo di integrità responsabile del controllo delle app installate viene patchato in modo da essere bypassato.

A differenza di Android, non è possibile passare alla "Modalità Sviluppatore" in iOS per eseguire codice non firmato/non attendibile sul dispositivo.

Rooting Android vs. Jailbreaking iOS

Sebbene spesso comparati, il rooting su Android e il jailbreaking su iOS sono processi fondamentalmente diversi. Il rooting dei dispositivi Android potrebbe coinvolgere l'installazione del binario su o la sostituzione del sistema con una ROM personalizzata con 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 a immagini firmate da Apple. Il jailbreaking di iOS mira a aggirare 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 Jailbreaking

Il jailbreaking di iOS è sempre più difficile poiché Apple patcha rapidamente le vulnerabilità. Il downgrade di iOS è possibile solo per un periodo limitato dopo un rilascio, rendendo il jailbreaking una questione legata al tempo. I dispositivi utilizzati per 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 (blob SHSH), che consente l'installazione solo per risposte firmate da Apple. Questo meccanismo, noto come "finestra di firma", limita la capacità di archiviare e utilizzare successivamente pacchetti firmware OTA. Il sito web IPSW Downloads è una risorsa per verificare le attuali finestre di firma.

Varianti di Jailbreak

  • I jailbreak tethered richiedono una connessione al computer per ogni riavvio.

  • I jailbreak semi-tethered consentono di avviare la modalità non jailbroken senza un computer.

  • I jailbreak semi-untethered richiedono un re-jailbreaking manuale senza la necessità di un computer.

  • I jailbreak untethered offrono una soluzione di jailbreak permanente senza la necessità di riapplicazione.

Strumenti e Risorse per il Jailbreaking

Gli strumenti di jailbreaking 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.

Modificare il proprio dispositivo comporta rischi e il jailbreaking dovrebbe essere affrontato con cautela.

Benefici e Rischi del Jailbreaking

Il jailbreaking 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 jailbreaking non è raccomandato a causa dei potenziali rischi per la sicurezza e dell'instabilità del dispositivo.

Dopo il Jailbreaking

pageiOS Basic Testing Operations

Rilevamento del Jailbreak

Diverse applicazioni cercheranno di rilevare se il dispositivo mobile è jailbroken e in tal caso l'applicazione non verrà eseguita

  • Dopo il jailbreaking di un iOS vengono solitamente installati file e cartelle, che possono essere cercati per determinare se il dispositivo è jailbroken.

  • In un dispositivo jailbroken 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

  • Chiamare /bin/sh restituirà 1 invece di 0

Ulteriori informazioni su come rilevare il jailbreaking qui.

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

Bypass del Rilevamento del Jailbreak

  • Puoi provare a evitare questi rilevamenti utilizzando ios jailbreak disable di objection

  • Potresti anche installare lo strumento Liberty Lite (https://ryleyangus.com/repo/). Una volta aggiunto il repository, l'applicazione dovrebbe apparire nella scheda 'Cerca'

Riferimenti

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

Altri modi per supportare HackTricks:

Last updated