iOS Basic Testing Operations
Sommario dell'identificazione e accesso del dispositivo iOS
Identificazione dell'UDID di un dispositivo iOS
Per identificare in modo univoco un dispositivo iOS, viene utilizzata una sequenza di 40 cifre nota come UDID. Su macOS Catalina o versioni successive, è possibile trovarlo nell'app Finder, poiché iTunes non è più presente. Il dispositivo, una volta connesso tramite USB e selezionato in Finder, rivela il suo UDID insieme ad altre informazioni quando si fa clic sui dettagli sotto il suo nome.
Per le versioni di macOS precedenti a Catalina, iTunes facilita la scoperta dell'UDID. Le istruzioni dettagliate possono essere trovate qui.
Gli strumenti a riga di comando offrono metodi alternativi per recuperare l'UDID:
Utilizzando lo strumento I/O Registry Explorer
ioreg
:
Utilizzo di
ideviceinstaller
per macOS (e Linux):
Utilizzo di
system_profiler
:
Utilizzo di
instruments
per elencare i dispositivi:
Accesso alla Shell del Dispositivo
L'accesso SSH è abilitato installando il pacchetto OpenSSH dopo il jailbreak, consentendo connessioni tramite ssh root@<indirizzo_ip_dispositivo>
. È fondamentale cambiare le password predefinite (alpine
) per gli utenti root
e mobile
per proteggere il dispositivo.
L'accesso SSH tramite USB diventa necessario in assenza di Wi-Fi, utilizzando iproxy
per mappare le porte del dispositivo per le connessioni SSH. Questa configurazione consente l'accesso SSH tramite USB eseguendo:
Applicazioni shell su dispositivo, come NewTerm 2, facilitano l'interazione diretta con il dispositivo, particolarmente utile per la risoluzione dei problemi. Le shell SSH inverse possono anche essere stabilite per l'accesso remoto dal computer host.
Reimpostazione delle password dimenticate
Per reimpostare una password dimenticata al valore predefinito (alpine
), è necessario modificare il file /private/etc/master.passwd
. Ciò comporta la sostituzione dell'hash esistente con l'hash per alpine
accanto alle voci degli utenti root
e mobile
.
Tecniche di trasferimento dati
Trasferimento dei file di dati dell'app
Archiviazione e recupero tramite SSH e SCP: È semplice archiviare la directory dei dati dell'applicazione utilizzando tar
e quindi trasferirla utilizzando scp
. Il comando di seguito archivia la directory dei dati in un file .tgz, che viene quindi estratto dal dispositivo:
Strumenti dell'Interfaccia Utente Grafica
Utilizzo di iFunbox e iExplorer: Questi strumenti GUI sono utili per gestire i file sui dispositivi iOS. Tuttavia, a partire da iOS 8.4, Apple ha limitato l'accesso di questi strumenti alla sandbox dell'applicazione a meno che il dispositivo non sia jailbroken.
Utilizzo di Objection per la Gestione dei File
Shell interattiva con Objection: Avviare Objection fornisce accesso alla directory Bundle di un'app. Da qui, è possibile navigare fino alla directory Documenti dell'app e gestire i file, inclusi il download e l'upload da e verso il dispositivo iOS.
Ottenere ed Estrarre le App
Acquisizione del file IPA
Link di distribuzione Over-The-Air (OTA): Le app distribuite per il testing tramite OTA possono essere scaricate utilizzando lo strumento di download degli asset di servizi ITMS, che viene installato tramite npm e utilizzato per salvare il file IPA in locale.
Estrazione del file binario dell'app
Da un file IPA: Decomprimere il file IPA per accedere al file binario dell'app decriptato.
Da un dispositivo Jailbroken: Installare l'app ed estrarre il file binario decriptato dalla memoria.
Processo di decriptazione
Panoramica della decriptazione manuale: I file binari delle app iOS sono criptati da Apple utilizzando FairPlay. Per effettuare l'ingegneria inversa, è necessario estrarre il file binario decriptato dalla memoria. Il processo di decriptazione prevede il controllo del flag PIE, l'aggiustamento dei flag di memoria, l'identificazione della sezione criptata e quindi l'estrazione e la sostituzione di questa sezione con la sua forma decriptata.
Controllo e modifica del flag PIE:
Identificazione della sezione crittografata e dumping della memoria:
Determina gli indirizzi di inizio e fine della sezione crittografata utilizzando otool
e esegui il dumping della memoria dal dispositivo jailbroken utilizzando gdb.
Sovrascrivere la sezione crittografata:
Sostituisci la sezione crittografata nel binario originale dell'app con il dump decrittato.
Finalizzazione della decrittazione: Modifica i metadati del binario per indicare l'assenza di crittografia utilizzando strumenti come MachOView, impostando cryptid
a 0.
Decrittazione (Automatica)
frida-ios-dump
Lo strumento frida-ios-dump viene utilizzato per decrittare ed estrarre automaticamente le app dai dispositivi iOS. Inizialmente, è necessario configurare dump.py
per connettersi al dispositivo iOS, che può essere fatto tramite localhost sulla porta 2222 tramite iproxy o direttamente tramite l'indirizzo IP e la porta del dispositivo.
Le applicazioni installate sul dispositivo possono essere elencate con il comando:
Per eseguire il dump di un'app specifica, come Telegram, viene utilizzato il seguente comando:
Questo comando avvia il dump dell'app, risultando nella creazione di un file Telegram.ipa
nella directory corrente. Questo processo è adatto per dispositivi jailbroken, poiché le app non firmate o falsamente firmate possono essere reinstallate utilizzando strumenti come ios-deploy.
flexdecrypt
Lo strumento flexdecrypt, insieme al suo wrapper flexdump, consente l'estrazione di file IPA dalle applicazioni installate. I comandi di installazione per flexdecrypt sul dispositivo includono il download e l'installazione del pacchetto .deb
. flexdump può essere utilizzato per elencare e dumpare le app, come mostrato nei comandi seguenti:
bagbak
bagbak, un altro strumento basato su Frida, richiede un dispositivo jailbroken per la decrittazione dell'app:
r2flutch
r2flutch, utilizzando sia radare che frida, serve per la decrittazione e il dumping delle app. Ulteriori informazioni possono essere trovate sulla sua pagina GitHub.
Installazione delle App
Sideloading si riferisce all'installazione di applicazioni al di fuori dell'App Store ufficiale. Questo processo è gestito dal daemon installd e richiede che le app siano firmate con un certificato rilasciato da Apple. I dispositivi jailbroken possono aggirare questo processo tramite AppSync, consentendo l'installazione di pacchetti IPA falsamente firmati.
Strumenti per il Sideloading
Cydia Impactor: Uno strumento per firmare e installare file IPA su iOS e file APK su Android. Guide e risoluzione dei problemi possono essere trovate su yalujailbreak.net.
libimobiledevice: Una libreria per Linux e macOS per comunicare con i dispositivi iOS. Sono forniti comandi di installazione ed esempi di utilizzo per ideviceinstaller per l'installazione di app tramite USB.
ipainstaller: Questo strumento da linea di comando consente l'installazione diretta di app su dispositivi iOS.
ios-deploy: Per gli utenti macOS, ios-deploy installa app iOS dalla riga di comando. Scompattare l'IPA e utilizzare l'opzione
-m
per avviare direttamente l'app fanno parte del processo.Xcode: Utilizzare Xcode per installare app navigando su Window/Devices and Simulators e aggiungendo l'app a Installed Apps.
Consentire l'Installazione dell'App su Dispositivi Non-iPad
Per installare applicazioni specifiche per iPad su dispositivi iPhone o iPod touch, il valore UIDeviceFamily nel file Info.plist deve essere modificato in 1. Questa modifica, tuttavia, richiede la firma nuovamente del file IPA a causa dei controlli di convalida della firma.
Nota: Questo metodo potrebbe non funzionare se l'app richiede funzionalità esclusive dei modelli di iPad più recenti mentre si utilizza un iPhone o iPod touch più vecchio.
Riferimenti
Last updated