iOS Basic Testing Operations
Last updated
Last updated
Impara e pratica il Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Per identificare un dispositivo iOS in modo univoco, si utilizza una sequenza di 40 cifre nota come UDID. Su macOS Catalina o versioni successive, questo può essere trovato nell'app Finder, poiché iTunes non è più presente. Il dispositivo, una volta connesso tramite USB e selezionato in Finder, rivela il suo UDID tra le altre informazioni quando si clicca sui dettagli sotto il suo nome.
Per le versioni di macOS precedenti a Catalina, iTunes facilita la scoperta dell'UDID. Istruzioni dettagliate possono essere trovate qui.
Gli strumenti da riga di comando offrono metodi alternativi per recuperare l'UDID:
Utilizzando lo strumento I/O Registry Explorer ioreg
:
Utilizzando ideviceinstaller
per macOS (e Linux):
Utilizzando system_profiler
:
Utilizzando instruments
per elencare i dispositivi:
L'accesso SSH è abilitato installando il pacchetto OpenSSH dopo il jailbreak, consentendo connessioni tramite ssh root@<device_ip_address>
. È fondamentale cambiare le password predefinite (alpine
) per gli utenti root
e mobile
per proteggere il dispositivo.
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 on-device, come NewTerm 2, facilitano l'interazione diretta con il dispositivo, particolarmente utile per la risoluzione dei problemi. Shell SSH inverse possono anche essere stabilite per l'accesso remoto dal computer host.
Per reimpostare una password dimenticata al valore predefinito (alpine
), è necessario modificare il file /private/etc/master.passwd
. Questo comporta la sostituzione dell'hash esistente con l'hash per alpine
accanto alle voci utente root
e mobile
.
Archiviazione e Recupero tramite SSH e SCP: È semplice archiviare la directory Data dell'applicazione utilizzando tar
e poi trasferirla usando scp
. Il comando qui sotto archivia la directory Data in un file .tgz, che viene poi prelevato dal dispositivo:
Utilizzando iFunbox e iExplorer: Questi strumenti GUI sono utili per gestire file sui dispositivi iOS. Tuttavia, a partire da iOS 8.4, Apple ha limitato l'accesso di questi strumenti al sandbox dell'applicazione a meno che il dispositivo non sia jailbroken.
Shell interattiva con Objection: Lanciare objection fornisce accesso alla directory Bundle di un'app. Da qui, puoi navigare nella directory Documenti dell'app e gestire i file, inclusi il download e l'upload da e verso il dispositivo iOS.
Link di Distribuzione Over-The-Air (OTA): Le app distribuite per il testing tramite OTA possono essere scaricate utilizzando lo strumento di download delle risorse ITMS, che è installato tramite npm e utilizzato per salvare il file IPA localmente.
Da un IPA: Decomprimi l'IPA per accedere al binario dell'app decrittografato.
Da un Dispositivo Jailbroken: Installa l'app ed estrai il binario decrittografato dalla memoria.
Panoramica della Decrittografia Manuale: I binari delle app iOS sono crittografati da Apple utilizzando FairPlay. Per fare reverse-engineering, è necessario estrarre il binario decrittografato dalla memoria. Il processo di decrittografia prevede il controllo del flag PIE, la modifica dei flag di memoria, l'identificazione della sezione crittografata e poi l'estrazione e la sostituzione di questa sezione con la sua forma decrittografata.
Controllo e Modifica del Flag PIE:
Identificazione della Sezione Cifrata e Dumping della Memoria:
Determina gli indirizzi di inizio e fine della sezione cifrata utilizzando otool
e dumpa la memoria dal dispositivo jailbroken utilizzando gdb.
Sovrascrivere la Sezione Cifrata:
Sostituisci la sezione cifrata nel binario originale dell'app con il dump decrittato.
Finalizzazione della Decrittazione: Modificare i metadati del binario per indicare l'assenza di crittografia utilizzando strumenti come MachOView, impostando cryptid
a 0.
Lo strumento frida-ios-dump è impiegato per decrittare ed estrarre automaticamente le app dai dispositivi iOS. Inizialmente, è necessario configurare dump.py
per connettersi al dispositivo iOS, il che può essere fatto tramite localhost sulla porta 2222 tramite iproxy o direttamente tramite l'indirizzo IP del dispositivo e la porta.
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 firmate falsamente possono essere reinstallate utilizzando strumenti come ios-deploy.
Lo strumento flexdecrypt, insieme al suo wrapper flexdump, consente l'estrazione di file IPA da 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 app, come mostrato nei comandi qui sotto:
bagbak, un altro strumento basato su Frida, richiede un dispositivo jailbroken per la decrittazione delle app:
r2flutch, utilizzando sia radare che frida, serve per la decrittazione e il dumping delle app. Maggiori informazioni possono essere trovate sulla sua pagina GitHub.
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 bypassare questo tramite AppSync, consentendo l'installazione di pacchetti IPA falsamente firmati.
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 dispositivi iOS. I comandi di installazione e gli esempi di utilizzo per ideviceinstaller sono forniti per installare app tramite USB.
ipainstaller: Questo strumento da riga di comando consente l'installazione diretta delle app sui dispositivi iOS.
ios-deploy: Per gli utenti macOS, ios-deploy installa app iOS dalla riga di comando. Decomprimere l'IPA e utilizzare il flag -m
per il lancio diretto dell'app fanno parte del processo.
Xcode: Utilizza Xcode per installare app navigando su Finestra/Dispositivi e Simulatori e aggiungendo l'app a App Installate.
Per installare applicazioni specifiche per iPad su dispositivi iPhone o iPod touch, il valore UIDeviceFamily nel file Info.plist deve essere cambiato in 1. Questa modifica, tuttavia, richiede la ri-firma del file IPA a causa dei controlli di validazione della firma.
Nota: Questo metodo potrebbe fallire se l'applicazione richiede funzionalità esclusive per i modelli di iPad più recenti mentre si utilizza un iPhone o un iPod touch più vecchio.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)