hacktricks/mobile-pentesting/ios-pentesting/ios-uipasteboard.md
2024-02-10 13:03:23 +00:00

6.8 KiB

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

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: e pasteboardWithUniqueName 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: e pasteboardWithUniqueName 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

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: