hacktricks/mobile-pentesting/ios-pentesting/ios-app-extensions.md

79 lines
5.5 KiB
Markdown

# iOS App Extensions
{% hint style="success" %}
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}
Le estensioni delle app migliorano la funzionalità delle app consentendo loro di interagire con altre app o con il sistema, fornendo funzionalità o contenuti personalizzati. Queste estensioni includono:
- **Tastiera personalizzata**: Offre una tastiera unica in tutte le app, sostituendo la tastiera predefinita di iOS.
- **Condividi**: Consente la condivisione su reti sociali o con altri direttamente.
- **Oggi (Widget)**: Fornisce contenuti o esegue rapidamente attività dalla vista Oggi del Centro Notifiche.
Quando un utente interagisce con queste estensioni, come la condivisione di testo da un'app host, l'estensione elabora questo input nel proprio contesto, sfruttando le informazioni condivise per eseguire il proprio compito, come dettagliato nella documentazione di Apple.
### **Considerazioni sulla Sicurezza**
I principali aspetti di sicurezza includono:
- Le estensioni e le loro app contenitrici comunicano tramite comunicazione inter-processo, non direttamente.
- Il **widget Oggi** è unico in quanto può richiedere alla sua app di aprirsi tramite un metodo specifico.
- L'accesso ai dati condivisi è consentito all'interno di un contenitore privato, ma l'accesso diretto è limitato.
- Alcune API, inclusa HealthKit, sono vietate alle estensioni delle app, che non possono avviare attività di lunga durata, accedere alla fotocamera o al microfono, tranne che per le estensioni di iMessage.
### Analisi Statica
#### **Identificazione delle Estensioni delle App**
Per trovare le estensioni delle app nel codice sorgente, cerca `NSExtensionPointIdentifier` in Xcode o ispeziona il pacchetto dell'app per file `.appex` che indicano estensioni. Senza codice sorgente, usa grep o SSH per localizzare questi identificatori all'interno del pacchetto dell'app.
#### **Tipi di Dati Supportati**
Controlla il file `Info.plist` di un'estensione per `NSExtensionActivationRule` per identificare i tipi di dati supportati. Questa configurazione garantisce che solo i tipi di dati compatibili attivino l'estensione nelle app host.
#### **Condivisione dei Dati**
La condivisione dei dati tra un'app e la sua estensione richiede un contenitore condiviso, impostato tramite "App Groups" e accessibile tramite `NSUserDefaults`. Questo spazio condiviso è necessario per i trasferimenti in background avviati dalle estensioni.
#### **Restrizione delle Estensioni**
Le app possono limitare determinati tipi di estensioni, in particolare le tastiere personalizzate, garantendo che la gestione dei dati sensibili sia conforme ai protocolli di sicurezza.
### Analisi Dinamica
L'analisi dinamica comporta:
- **Ispezione degli Elementi Condivisi**: Collega `NSExtensionContext - inputItems` per vedere i tipi di dati e le origini condivisi.
- **Identificazione delle Estensioni**: Scopri quali estensioni elaborano i tuoi dati osservando i meccanismi interni, come `NSXPCConnection`.
Strumenti come `frida-trace` possono aiutare a comprendere i processi sottostanti, specialmente per coloro che sono interessati ai dettagli tecnici della comunicazione inter-processo.
## Riferimenti
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/)
{% hint style="success" %}
Impara e pratica AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Impara e pratica GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Supporta HackTricks</summary>
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
</details>
{% endhint %}