# Operazioni di base di testing su iOS
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! Altri modi per supportare HackTricks: * Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI 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.
## **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](http://www.iclarified.com/52179/how-to-find-your-iphones-udid). Gli strumenti a riga di comando offrono metodi alternativi per recuperare l'UDID: * **Utilizzando lo strumento I/O Registry Explorer `ioreg`:** ```bash $ ioreg -p IOUSB -l | grep "USB Serial" ``` * **Utilizzo di `ideviceinstaller` per macOS (e Linux):** ```bash $ brew install ideviceinstaller $ idevice_id -l ``` * **Utilizzo di `system_profiler`:** ```bash $ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:" ``` * **Utilizzo di `instruments` per elencare i dispositivi:** ```bash $ instruments -s devices ``` ### **Accesso alla Shell del Dispositivo** L'accesso **SSH** è abilitato installando il pacchetto **OpenSSH** dopo il jailbreak, consentendo connessioni tramite `ssh root@`. È 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: ```bash $ iproxy 2222 22 $ ssh -p 2222 root@localhost ``` **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: ```bash tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693 exit scp -P 2222 root@localhost:/tmp/data.tgz . ``` ### **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. ```bash objection --gadget com.apple.mobilesafari explorer cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents file download ``` ## **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. ```bash npm install -g itms-services itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa ``` ### **Estrazione del file binario dell'app** 1. **Da un file IPA:** Decomprimere il file IPA per accedere al file binario dell'app decriptato. 2. **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:** ```bash otool -Vh Original_App python change_macho_flags.py --no-pie Original_App otool -Vh Hello_World ``` **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. ```bash otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO dump memory dump.bin 0x8000 0x10a4000 ``` **Sovrascrivere la sezione crittografata:** Sostituisci la sezione crittografata nel binario originale dell'app con il dump decrittato. ```bash dd bs=1 seek= conv=notrunc if=dump.bin of=Original_App ``` **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**](https://github.com/AloneMonkey/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: ```bash $ python dump.py -l ``` Per eseguire il dump di un'app specifica, come Telegram, viene utilizzato il seguente comando: ```bash $ python3 dump.py -u "root" -p "" ph.telegra.Telegraph ``` 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**](https://github.com/ios-control/ios-deploy). #### **flexdecrypt** Lo strumento [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), insieme al suo wrapper [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), 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: ```bash apt install zip unzip wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump flexdump list flexdump dump Twitter.app ``` #### **bagbak** [**bagbak**](https://github.com/ChiChou/bagbak), un altro strumento basato su Frida, richiede un dispositivo jailbroken per la decrittazione dell'app: ```bash bagbak --raw Chrome ``` #### **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**](https://github.com/as0ler/r2flutch). ### **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](https://yalujailbreak.net/how-to-use-cydia-impactor/). - **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 * [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/) * [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/) * [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/) * [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/) * [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)! Altri modi per supportare HackTricks: * 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.