6.8 KiB
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud github repos.
La condivisione dei dati all'interno e tra le applicazioni sui dispositivi iOS è facilitata dal meccanismo UIPasteboard
, che è diviso in due categorie principali:
- General pasteboard di sistema: viene utilizzato per la condivisione dei dati con qualsiasi applicazione ed è progettato per persistere i dati anche dopo il riavvio del dispositivo o la disinstallazione dell'applicazione, una funzionalità disponibile da iOS 10.
- Pasteboard personalizzati / con nome: sono specifici per la condivisione dei dati all'interno di un'app o con un'altra app che condivide lo stesso ID del team e non sono progettati per persistere oltre la durata del processo dell'applicazione che li crea, seguendo le modifiche introdotte in iOS 10.
Le considerazioni sulla sicurezza svolgono un ruolo significativo nell'utilizzo dei pasteboard. Ad esempio:
- Non esiste un meccanismo per gli utenti per gestire le autorizzazioni dell'app per accedere al pasteboard.
- Per mitigare il rischio di monitoraggio non autorizzato del pasteboard in background, l'accesso è limitato quando l'applicazione è in primo piano (da iOS 9).
- L'uso di pasteboard con nome persistente è sconsigliato a favore dei contenitori condivisi a causa delle preoccupazioni sulla privacy.
- La funzionalità Universal Clipboard introdotta con iOS 10, che consente di condividere contenuti tra dispositivi tramite il pasteboard generale, può essere gestita dagli sviluppatori per impostare la scadenza dei dati e disabilitare il trasferimento automatico dei contenuti.
È fondamentale assicurarsi che le informazioni sensibili non vengano memorizzate accidentalmente sul pasteboard globale. Inoltre, le applicazioni dovrebbero essere progettate per prevenire l'uso improprio dei dati del pasteboard globale per azioni non intenzionali e gli sviluppatori sono incoraggiati ad implementare misure per impedire 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 del pasteboard generale di sistema.pasteboardWithName:create:
epasteboardWithUniqueName
per la creazione di pasteboard personalizzati. Verifica se è abilitata la persistenza, anche se questa funzionalità è deprecata.
Analisi dinamica
L'analisi dinamica prevede l'hooking o il tracciamento di metodi specifici:
- Monitora
generalPasteboard
per l'uso a livello di sistema. - Traccia
pasteboardWithName:create:
epasteboardWithUniqueName
per le implementazioni personalizzate. - Osserva le chiamate al metodo deprecato
setPersistent:
per verificare le impostazioni di persistenza.
I dettagli chiave da monitorare includono:
- Nomi e contenuti del pasteboard (ad esempio, verifica di stringhe, URL, immagini).
- Numero di elementi e tipi di dati presenti, sfruttando controlli standard e personalizzati dei tipi di dati.
- Opzioni di scadenza e solo locali ispezionando il metodo
setItems:options:
.
Un esempio di utilizzo di uno strumento di monitoraggio è objection's pasteboard monitor, che controlla il generalPasteboard ogni 5 secondi per le modifiche e restituisce i nuovi dati.
Ecco un semplice esempio di script JavaScript, ispirato all'approccio di objection, per leggere e registrare le modifiche dal pasteboard 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/
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository github di HackTricks e HackTricks Cloud.