Translated ['src/mobile-pentesting/ios-pentesting/ios-pentesting-without

This commit is contained in:
Translator 2025-07-11 06:07:53 +00:00
parent daad8491b6
commit 62401640a4

View File

@ -4,36 +4,36 @@
## Idea principale
Le applicazioni firmate con l'**entitlement `get_task_allow`** consentono alle applicazioni di terze parti di eseguire una funzione chiamata **`task_for_pid()`** con l'ID del processo dell'applicazione iniziale come argomento per ottenere la porta del task su di essa (essere in grado di controllarla e accedere alla sua memoria).
Le applicazioni firmate con l'**entitlement `get_task_allow`** consentono alle applicazioni di terze parti di eseguire una funzione chiamata **`task_for_pid()`** con l'ID del processo dell'applicazione iniziale come argomento per ottenere la porta del task (essere in grado di controllarla e accedere alla sua memoria).
Tuttavia, non è così semplice come estrarre l'IPA, firmarlo nuovamente con l'entitlement e ricaricarlo sul tuo dispositivo. Questo a causa della protezione FairPlay. Quando la firma dell'app cambia, la chiave DRM (Digital Rights Management) è **annullata e l'app non funzionerà**.
Con un vecchio dispositivo jailbroken, è possibile installare l'IPA, **decrittarlo utilizzando il tuo strumento preferito** (come Iridium o frida-ios-dump) e rimuoverlo dal dispositivo. Anche se, se possibile, è consigliato chiedere semplicemente al cliente per l'IPA decrittato.
Con un vecchio dispositivo jailbroken, è possibile installare l'IPA, **decrittografarlo utilizzando il tuo strumento preferito** (come Iridium o frida-ios-dump) e estrarlo di nuovo dal dispositivo. Anche se, se possibile, è consigliato chiedere semplicemente al cliente per l'IPA decrittografato.
## Ottenere l'IPA decrittato
## Ottenere l'IPA decrittografato
### Ottienilo da Apple
1. Installa l'app da pentest sull'iPhone
2. Installa e avvia [Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12) sul tuo macos
3. Apri `Terminal` sul tuo Mac e cd a `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`. L'IPA apparirà in questa cartella più tardi.
4. Dovresti vedere il tuo dispositivo iOS. Fai doppio clic su di esso, quindi clicca su Aggiungi + → App dalla barra dei menu in alto.
5. Dopo aver cliccato su Aggiungi, Configurator scaricherà l'IPA da Apple e tenterà di inviarlo al tuo dispositivo. Se hai seguito la mia raccomandazione precedente e hai già installato l'IPA, apparirà un messaggio che ti chiede di reinstallare l'app.
4. Dovresti vedere il tuo dispositivo iOS. Fai doppio clic su di esso e poi clicca su Aggiungi + → App dalla barra dei menu in alto.
5. Dopo aver cliccato su Aggiungi, Configurator scaricherà l'IPA da Apple e tenterà di inviarlo al tuo dispositivo. Se hai seguito la mia raccomandazione precedente e hai già installato l'IPA, apparirà un messaggio che ti chiede di reinstallare l'app.
6. L'IPA dovrebbe essere scaricato all'interno di `/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps` da dove puoi prenderlo.
Controlla [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) per informazioni più dettagliate su questo processo.
### Decrittare l'app
### Decrittografare l'app
Per decrittare l'IPA, lo installeremo. Tuttavia, se hai un vecchio iPhone jailbroken, potenzialmente la sua versione non sarà supportata dall'applicazione poiché di solito le app supportano solo le ultime versioni.
Per decrittografare l'IPA, lo installeremo. Tuttavia, se hai un vecchio iPhone jailbroken, potenzialmente la sua versione non sarà supportata dall'applicazione poiché di solito le app supportano solo le ultime versioni.
Quindi, per installarlo, basta estrarre l'IPA:
```bash
unzip redacted.ipa -d unzipped
```
Controlla il `Info.plist` per la versione minima supportata e se il tuo dispositivo è più vecchio di quella, modifica il valore affinché sia supportato.
Controlla il `Info.plist` per la versione minima supportata e se il tuo dispositivo è più vecchio di quella, modifica il valore in modo che sia supportato.
Comprimi di nuovo l'IPA:
Zip indietro l'IPA:
```bash
cd unzipped
zip -r ../no-min-version.ipa *
@ -42,32 +42,77 @@ Quindi, installa l'IPA ad esempio con:
```bash
ideviceinstaller -i no-min-version.ipa -w
```
Nota che potresti aver bisogno di **AppSync Unified tweak** da Cydia per prevenire eventuali errori di `invalid signature`.
Nota che potresti aver bisogno del **tweak AppSync Unified** da Cydia per prevenire eventuali errori di `invalid signature`.
Una volta installato, puoi utilizzare **Iridium tweak** da Cydia per ottenere l'IPA decrittografato.
Una volta installato, puoi utilizzare il **tweak Iridium** da Cydia per ottenere l'IPA decrittografato.
### Patch entitlements & re-sign
Per ri-firmare l'applicazione con l'entitlement `get-task-allow`, ci sono diversi strumenti disponibili come `app-signer`, `codesign` e `iResign`. `app-signer` ha un'interfaccia molto user-friendly che consente di ri-firmare molto facilmente un file IPA indicando l'IPA da ri-firmare, per **mettere `get-task-allow`** e il certificato e il profilo di provisioning da utilizzare.
Per ri-firmare l'applicazione con il diritto `get-task-allow`, ci sono diversi strumenti disponibili come `app-signer`, `codesign` e `iResign`. `app-signer` ha un'interfaccia molto user-friendly che consente di ri-firmare molto facilmente un file IPA indicando l'IPA da ri-firmare, per **metterlo `get-task-allow`** e il certificato e il profilo di provisioning da utilizzare.
Per quanto riguarda il certificato e i profili di firma, Apple offre **free developer signing profiles** per tutti gli account tramite Xcode. Basta creare un'app e configurarne una. Poi, configura l'**iPhone per fidarsi delle app degli sviluppatori** navigando su `Impostazioni``Privacy e Sicurezza`, e clicca su `Modalità Sviluppatore`.
Per quanto riguarda i certificati e i profili di firma, Apple offre **profili di firma per sviluppatori gratuiti** per tutti gli account tramite Xcode. Basta creare un'app e configurarne uno. Poi, configura l'**iPhone per fidarsi delle app degli sviluppatori** navigando su `Impostazioni``Privacy e Sicurezza`, e clicca su `Modalità Sviluppatore`.
Con l'IPA ri-firmata, è tempo di installarla nel dispositivo per effettuare il pentesting:
Con l'IPA ri-firmato, è tempo di installarlo nel dispositivo per effettuare il pentesting:
```bash
ideviceinstaller -i resigned.ipa -w
```
### Hook
---
Puoi facilmente collegare la tua app utilizzando strumenti comuni come frida e objection:
### Abilitare la Modalità Sviluppatore (iOS 16+)
Dall'iOS 16 Apple ha introdotto la **Modalità Sviluppatore**: qualsiasi binario che porta `get_task_allow` *o* è firmato con un certificato di sviluppo rifiuterà di avviarsi fino a quando la Modalità Sviluppatore non è abilitata sul dispositivo. Non sarà inoltre possibile allegare Frida/LLDB a meno che questo flag non sia attivo.
1. Installa o invia **qualsiasi** IPA firmata da uno sviluppatore al telefono.
2. Naviga su **Impostazioni → Privacy e Sicurezza → Modalità Sviluppatore** e attivala.
3. Il dispositivo si riavvierà; dopo aver inserito il codice di accesso ti verrà chiesto di **Attivare** la Modalità Sviluppatore.
La Modalità Sviluppatore rimane attiva fino a quando non la disabiliti o non ripristini il telefono, quindi questo passaggio deve essere eseguito solo una volta per dispositivo. [Documentazione Apple](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device) spiega le implicazioni di sicurezza.
### Opzioni moderne di sideloading
Ora ci sono diversi modi maturi per sideloadare e mantenere aggiornate le IPA ri-firmate senza un jailbreak:
| Strumento | Requisiti | Punti di forza | Limitazioni |
|-----------|-----------|----------------|-------------|
| **AltStore 2 / SideStore** | Compagno macOS/Windows/Linux che ri-firma l'IPA ogni 7 giorni con un profilo di sviluppo gratuito | Ricarica automatica via Wi-Fi, funziona fino a iOS 17 | Necessita di un computer sulla stessa rete, limite di 3 app imposto da Apple |
| **TrollStore 1/2** | Dispositivo su iOS 14 15.4.1 vulnerabile al bug CoreTrust | Firma *permanente* (nessun limite di 7 giorni); nessun computer richiesto una volta installato | Non supportato su iOS 15.5+ (bug corretto) |
Per i pentest di routine sulle versioni attuali di iOS, Alt/Side-Store sono solitamente la scelta più pratica.
### Hooking / strumentazione dinamica
Puoi hookare la tua app esattamente come su un dispositivo jailbroken una volta che è firmata con `get_task_allow` **e** la Modalità Sviluppatore è attiva:
```bash
objection -g [your app bundle ID] explore
# Spawn & attach with objection
objection -g "com.example.target" explore
# Or plain Frida
frida -U -f com.example.target -l my_script.js --no-pause
```
Recenti versioni di Frida (>=16) gestiscono automaticamente l'autenticazione dei puntatori e altre mitigazioni di iOS 17, quindi la maggior parte degli script esistenti funziona immediatamente.
### Analisi dinamica automatizzata con MobSF (senza jailbreak)
[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/) può strumentare un IPA firmato da sviluppatore su un dispositivo reale utilizzando la stessa tecnica (`get_task_allow`) e fornisce un'interfaccia web con browser di filesystem, cattura del traffico e console Frida【turn6view0†L2-L3】. Il modo più veloce è eseguire MobSF in Docker e poi collegare il tuo iPhone tramite USB:
```bash
docker pull opensecurity/mobile-security-framework-mobsf:latest
docker run -p 8000:8000 --privileged \
-v /var/run/usbmuxd:/var/run/usbmuxd \
opensecurity/mobile-security-framework-mobsf:latest
# Browse to http://127.0.0.1:8000 and upload your resigned IPA
```
MobSF distribuirà automaticamente il binario, abiliterà un server Frida all'interno della sandbox dell'app e genererà un rapporto interattivo.
### iOS 17 e avvertenze sulla modalità Lockdown
* **Modalità Lockdown** (Impostazioni → Privacy e Sicurezza) blocca il linker dinamico dal caricare librerie dinamiche non firmate o firmate esternamente. Quando si testano dispositivi che potrebbero avere questa modalità abilitata, assicurati che sia **disabilitata** o le tue sessioni Frida/objection termineranno immediatamente.
* L'Autenticazione dei Puntatori (PAC) è applicata a livello di sistema sui dispositivi A12+. Frida ≥16 gestisce in modo trasparente la rimozione del PAC: basta mantenere aggiornati sia *frida-server* che la toolchain Python/CLI quando viene rilasciata una nuova versione principale di iOS.
## Riferimenti
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
- Documentazione per sviluppatori Apple Abilitare la modalità sviluppatore su un dispositivo: <https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device>
- Mobile Security Framework (MobSF): <https://mobsf.github.io/Mobile-Security-Framework-MobSF/>
{{#include ../../banners/hacktricks-training.md}}