mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/mobile-pentesting/ios-pentesting/ios-pentesting-without
This commit is contained in:
parent
daad8491b6
commit
62401640a4
@ -4,36 +4,36 @@
|
|||||||
|
|
||||||
## Idea principale
|
## 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à**.
|
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
|
### Ottienilo da Apple
|
||||||
|
|
||||||
1. Installa l'app da pentest sull'iPhone
|
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
|
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.
|
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.
|
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.
|
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 chiederà 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.
|
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.
|
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:
|
Quindi, per installarlo, basta estrarre l'IPA:
|
||||||
```bash
|
```bash
|
||||||
unzip redacted.ipa -d unzipped
|
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
|
```bash
|
||||||
cd unzipped
|
cd unzipped
|
||||||
zip -r ../no-min-version.ipa *
|
zip -r ../no-min-version.ipa *
|
||||||
@ -42,32 +42,77 @@ Quindi, installa l'IPA ad esempio con:
|
|||||||
```bash
|
```bash
|
||||||
ideviceinstaller -i no-min-version.ipa -w
|
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
|
### 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-firmato, è tempo di installarlo nel dispositivo per effettuare il pentesting:
|
||||||
Con l'IPA ri-firmata, è tempo di installarla nel dispositivo per effettuare il pentesting:
|
|
||||||
```bash
|
```bash
|
||||||
ideviceinstaller -i resigned.ipa -w
|
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
|
```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
|
## Riferimenti
|
||||||
|
|
||||||
- [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed)
|
- [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}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user