7 KiB
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
{% embed url="https://websec.nl/" %}
La condivisione dei dati all'interno e tra le applicazioni sui dispositivi iOS è facilitata dal meccanismo UIPasteboard
, che è suddiviso in due categorie principali:
- Appunti generali a livello di sistema: Questo viene utilizzato per condividere dati con qualsiasi applicazione ed è progettato per mantenere i dati anche dopo il riavvio del dispositivo e la disinstallazione dell'app, una funzionalità disponibile da iOS 10.
- Appunti personalizzati / nominati: Questi sono specificamente per la condivisione dei dati all'interno di un'app o con un'altra app che condivide lo stesso ID team e non sono progettati per persistere oltre la vita del processo dell'applicazione che li crea, seguendo le modifiche introdotte in iOS 10.
Considerazioni sulla sicurezza giocano un ruolo significativo quando si utilizzano gli appunti. Ad esempio:
- Non esiste un meccanismo per gli utenti per gestire le autorizzazioni delle app per accedere agli appunti.
- Per mitigare il rischio di monitoraggio non autorizzato in background degli appunti, l'accesso è limitato a quando l'applicazione è in primo piano (da iOS 9).
- L'uso di appunti nominati persistenti è sconsigliato a favore di contenitori condivisi a causa di preoccupazioni sulla privacy.
- La funzionalità Appunti Universali introdotta con iOS 10, che consente di condividere contenuti tra dispositivi tramite gli appunti generali, può essere gestita dagli sviluppatori per impostare la scadenza dei dati e disabilitare il trasferimento automatico dei contenuti.
Assicurarsi che le informazioni sensibili non siano memorizzate involontariamente negli appunti globali è cruciale. Inoltre, le applicazioni dovrebbero essere progettate per prevenire l'uso improprio dei dati degli appunti globali per azioni non intenzionali, e gli sviluppatori sono incoraggiati a implementare misure per prevenire la copia di informazioni sensibili negli appunti.
Analisi Statica
Per l'analisi statica, cerca nel codice sorgente o nel binario:
generalPasteboard
per identificare l'uso degli appunti generali a livello di sistema.pasteboardWithName:create:
epasteboardWithUniqueName
per creare appunti personalizzati. Verifica se la persistenza è abilitata, anche se questo è deprecato.
Analisi Dinamica
L'analisi dinamica comporta il hooking o il tracciamento di metodi specifici:
- Monitora
generalPasteboard
per l'uso a livello di sistema. - Traccia
pasteboardWithName:create:
epasteboardWithUniqueName
per implementazioni personalizzate. - Osserva le chiamate al metodo deprecato
setPersistent:
per controllare le impostazioni di persistenza.
Dettagli chiave da monitorare includono:
- Nomi degli appunti e contenuti (ad esempio, controllando stringhe, URL, immagini).
- Numero di elementi e tipi di dati presenti, sfruttando controlli sui tipi di dati standard e personalizzati.
- Opzioni di scadenza e solo locali ispezionando il metodo
setItems:options:
.
Un esempio di utilizzo di uno strumento di monitoraggio è il monitor degli appunti di objection, che interroga il generalPasteboard ogni 5 secondi per rilevare cambiamenti e restituisce i nuovi dati.
Ecco un semplice esempio di script JavaScript, ispirato all'approccio di objection, per leggere e registrare le modifiche dagli appunti ogni 5 secondi:
const UIPasteboard = ObjC.classes.UIPasteboard;
const Pasteboard = UIPasteboard.generalPasteboard();
var items = "";
var count = Pasteboard.changeCount().toString();
setInterval(function () {
const currentCount = Pasteboard.changeCount().toString();
const currentItems = Pasteboard.items().toString();
if (currentCount === count) { return; }
items = currentItems;
count = currentCount;
console.log('[* Pasteboard changed] count: ' + count +
' hasStrings: ' + Pasteboard.hasStrings().toString() +
' hasURLs: ' + Pasteboard.hasURLs().toString() +
' hasImages: ' + Pasteboard.hasImages().toString());
console.log(items);
}, 1000 * 5);
Riferimenti
- https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8
- https://hackmd.io/@robihamanto/owasp-robi
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 su github.