iOS Basic Testing Operations
Tip
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)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Sommario dell’identificazione e dell’accesso ai dispositivi iOS
Identificare l’UDID di un dispositivo iOS
Per identificare in modo univoco un dispositivo iOS si usa 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 collegato via USB e selezionato in Finder, rivela il suo UDID tra le altre informazioni facendo clic sui dettagli sotto il suo nome.
Per le versioni di macOS precedenti a Catalina, iTunes facilita la scoperta dell’UDID. Istruzioni dettagliate si trovano qui.
Gli strumenti da riga di comando offrono metodi alternativi per recuperare l’UDID:
- Usando lo strumento I/O Registry Explorer
ioreg:
$ ioreg -p IOUSB -l | grep "USB Serial"
- Usando
ideviceinstallerper macOS (e Linux):
$ brew install ideviceinstaller
$ idevice_id -l
- Utilizzo di
system_profiler:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
- Utilizzo di
instrumentsper elencare i dispositivi:
$ instruments -s devices
Accesso alla shell del dispositivo
SSH access è abilitato installando il OpenSSH package dopo il jailbreak, permettendo connessioni tramite ssh root@<device_ip_address>. È fondamentale cambiare le password di default (alpine) per gli utenti root e mobile per mettere in sicurezza il dispositivo.
SSH over USB diventa necessario in assenza di Wi‑Fi, usando iproxy per mappare le porte del dispositivo per le connessioni SSH. Questa configurazione abilita l’accesso SSH tramite USB eseguendo:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
Applicazioni shell on-device, like NewTerm 2, facilitano l’interazione diretta con il dispositivo, particolarmente utile per la risoluzione dei problemi. Reverse SSH shells possono anche essere stabilite per l’accesso remoto dal computer host.
Reimpostare password dimenticate
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 degli utenti root e mobile.
Tecniche di trasferimento dei dati
Trasferimento dei file di dati delle app
Archiviazione e recupero via SSH e SCP: È semplice archiviare la Data directory dell’applicazione usando tar e poi trasferirla con scp. Il comando qui sotto archivia la Data directory in un file .tgz, che viene poi prelevato dal dispositivo:
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 GUI
Uso di iFunbox e iExplorer: Questi strumenti GUI sono utili per gestire file su 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.
Uso di Objection per la gestione dei file
Shell interattiva con Objection: Lanciare objection fornisce accesso alla directory Bundle di un’app. Da qui puoi navigare nella directory Documents dell’app e gestire i file, inclusi scaricare e caricare file da e verso il dispositivo iOS.
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
Ottenimento e estrazione delle app
Acquisizione del file IPA
Link di distribuzione Over-The-Air (OTA): Le app distribuite per il testing via OTA possono essere scaricate utilizzando lo strumento ITMS services asset downloader, che si installa tramite npm e serve per salvare il file IPA localmente.
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 binario dell’app
- Da un IPA: Decomprimere l’IPA per accedere al decrypted app binary.
- Da un Jailbroken Device: Installa l’app e estrai il decrypted binary dalla memoria.
Decryption Process
Manual Decryption Overview: I binari delle app iOS sono encrypted da Apple usando FairPlay. Per reverse-engineer, è necessario dumpare il decrypted binary dalla memoria. Il processo di decryption comporta il controllo del PIE flag, la modifica dei memory flags, l’identificazione della encrypted section e poi il dump e la sostituzione di questa sezione con la sua forma decrypted.
Checking and Modifying PIE Flag:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Identificazione della sezione crittografata e dump della memoria:
Determina gli indirizzi di inizio e fine della sezione crittografata usando otool ed effettua il dump della memoria dal dispositivo jailbroken usando gdb.
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 binary originale dell’app con il dump decrittografato.
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Finalizzazione della decrittazione: Modificare i metadata del binario per indicare l’assenza di crittografia usando strumenti come MachOView, impostando il cryptid a 0.
Decrittazione (Automaticamente)
frida-ios-dump
Lo strumento frida-ios-dump viene utilizzato per decrittare automaticamente ed estrarre le app dai dispositivi iOS. Inizialmente, bisogna configurare dump.py per connettersi al dispositivo iOS, cosa che può essere fatta tramite localhost sulla porta 2222 usando iproxy o direttamente tramite l’indirizzo IP e la porta del dispositivo.
Le applicazioni installate sul dispositivo possono essere elencate con il comando:
$ python dump.py -l
Per effettuare il dump di un’app specifica, come Telegram, viene usato il seguente comando:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Questo comando avvia il dump dell’app, creando un file Telegram.ipa nella directory corrente. Questo processo è adatto a dispositivi jailbroken, poiché le app non firmate o firmate falsamente possono essere reinstallate usando strumenti come ios-deploy.
frida-ipa-extract
Estrattore di IPA basato su Frida per dispositivi jailbroken; utilizza sessioni USB Frida e SSH/SFTP opzionale per trasferimenti più veloci.
- Requisiti: Python 3.9+,
frida,paramiko, dispositivo jailbroken con frida-server (OpenSSH per la modalità SSH). - Configurazione:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- Uso:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
- Opzioni:
-f <bundle>avvia/si aggancia (o--pidper PID);-oimposta il nome di output.-Uusa USB;-H/-P/-u/-papre un tunnel SSH versofrida-server27042 e preleva via SFTP (può essere combinato con-U).--sandboxesegue il dump della sandbox;--no-resumemantiene l’app sospesa per evitare crash e tentativi di riavvio da parte di processi di sistema se la sessione cade. - Risoluzione dei problemi:
Frida attach timed out→ usa-fo--no-resume;script has been destroyed→--no-resumeo trasferimento SSH;No running apps found→ avvia o spawna l’app.
flexdecrypt
Lo strumento flexdecrypt, insieme al suo wrapper flexdump, permette 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 ed estrarre le app, come mostrato nei comandi sotto:
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, un altro Frida-based tool, richiede un dispositivo jailbroken per la decryption dell’app:
bagbak --raw Chrome
r2flutch
r2flutch, utilizzando sia radare che frida, è usato per l’app decryption e il dumping. Maggiori informazioni sono disponibili sulla sua GitHub page.
Installing Apps
Sideloading si riferisce all’installazione di applicazioni al di fuori dell’App Store ufficiale. Questo processo è gestito dal installd daemon e richiede che le app siano firmate con un certificato rilasciato da Apple. I dispositivi jailbroken possono bypassare questo tramite AppSync, permettendo l’installazione di pacchetti IPA con firma falsa.
Sideloading Tools
-
Cydia Impactor: Uno strumento per firmare e installare file IPA su iOS e APK su Android. Guide e risoluzione problemi si trovano su yalujailbreak.net.
-
libimobiledevice: una libreria per Linux e macOS per comunicare con dispositivi iOS. Vengono forniti comandi di installazione ed esempi d’uso per ideviceinstaller per installare app via USB.
-
ipainstaller: Questo strumento da linea di comando permette l’installazione diretta di app su dispositivi iOS.
-
ios-deploy: Per utenti macOS, ios-deploy installa app iOS dalla riga di comando. Parte del processo include l’unzip dell’IPA e l’uso del flag
-mper l’avvio diretto dell’app. -
Xcode: Usa Xcode per installare app navigando in Window/Devices and Simulators e aggiungendo l’app in Installed Apps.
Allow Application Installation on Non-iPad Devices
Per installare applicazioni specifiche per iPad su iPhone o iPod touch, il valore UIDeviceFamily nel file Info.plist deve essere cambiato in 1. Questa modifica, tuttavia, richiede la re-firma dell’IPA a causa dei controlli di validazione della firma.
Nota: Questo metodo potrebbe fallire se l’applicazione richiede funzionalità esclusive di modelli iPad più recenti mentre si usa un iPhone o iPod touch più vecchio.
References
- https://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-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
- frida-ipa-extract
Tip
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)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.


