Forensics iOS con recupero dati SQLite: immersione profonda e confronto

Pubblicato aggiornato
Cover image for: Forensics iOS con recupero dati SQLite: immersione profonda e confronto

Ci sono molte tecniche che usiamo quando si tratta di aiutare le persone a recuperare i loro dati con i nostri prodotti, e gran parte dell'intelligenza che abbiamo costruito nell'ultimo decennio è al di sotto della superficie. Oggi faremo un tuffo in uno degli approcci che usiamo per recuperare i messaggi cancellati: il recupero legale dei dati SQLite.

In che modo gli iPhone memorizzano i dati, comunque?

In poche parole, molte applicazioni memorizzano i loro dati nei database e la maggior parte di essi usa il formato SQLite . SQLite è un piccolo formato di database senza server e si adatta bene a ciò di cui hanno bisogno i fornitori di Apple e di app. Poiché SQLite viene eseguito senza un server di database separato, esistono alcuni modi in cui differisce da altri database. In particolare, affinché l'accesso sia veloce, non può mantenere regolarmente se stesso quando viene utilizzato. Gli utenti non vogliono rallentare un'app mentre il database esegue la manutenzione di routine, come ad esempio la pulizia degli indici.

È possibile che queste operazioni di pulizia o ottimizzazione si verifichino con SQLite, ma tendono a essere eseguite di rado. Per gli utenti, questo è il giusto equilibrio: il tuo iPhone sarà ragionevolmente veloce e i tuoi dati saranno robusti. E, in caso di necessità, avrai migliori probabilità della media di recuperare i tuoi dati iOS cancellati a causa della natura poco frequente di questo processo di manutenzione.

Senza essere troppo tecnico, è piuttosto semplice come funziona il processo. Pensa a questi database come i grandi schedari:

  • Quando è il momento di aggiungere informazioni a loro, devi aggiungere un file con un'etichetta chiara su di esso, che spiega cosa c'è nel file, ed è così che funziona il tuo telefono.
  • Ma quando rimuovi i dati, invece di estrarre il file dallo schedario, il telefono estrae semplicemente l'etichetta. Quindi i vecchi dati non vengono rimossi, sono semplicemente non etichettati (o "orfani", come tecnicamente possiamo chiamarli). Ciò significa che quando si eliminano i dati, il telefono non deve passare attraverso un processo relativamente lento di liberazione spazio nello studio. Dice solo "eh, dimentica questo", e va avanti.
  • Quando si tratta di aggiungere più dati, se c'è spazio il telefono aggiungerà file aggiuntivi. Se non c'è spazio per aggiungere più dati, vedrà se ci sono alcuni di questi file non etichettati che gironzolano, e se ci sono, rimuoverà qualsiasi parte di essi abbia bisogno di creare spazio.

Quello che potresti prendere da questo è che è veloce cancellare i dati sul tuo telefono, e abbastanza veloce per aggiungerlo, supponendo che ci sia spazio. E - in modo non intuitivo - è il processo di aggiunta di dati più recenti che porta realmente a rimuovere le informazioni più vecchie.

Ripristino di informazioni cancellate da SQLite su iOS

Supponi di aver usato il telefono da un paio di mesi. I database su di esso sono come gli schedari che abbiamo descritto in precedenza. Hanno un sacco di file in loro, e dove hai cancellato i dati, quei file saranno ancora lì, ma con due avvertimenti: potrebbero essere stati parzialmente o completamente sovrascritti, e saranno senza etichetta.

La tecnica di recupero quindi è più o meno quello che ti aspetti: si tratta di trovare questi file orfani - completi o meno - e di cercare di trovare dove si adattano, e se ci sono abbastanza dati che rimangono per loro avere un senso. Come ci si aspetterebbe, è tutto un po 'complicato, e ci sono una serie di altri aspetti tecnici che possono emergere per rendere le cose difficili. In particolare, i database hanno dimensioni superiori a pochi megabyte e database che contengono dati binari possono rendere il processo molto più difficile.

Detto questo, non è troppo difficile recuperare alcuni dati, motivo per cui si vede un buon numero di strumenti sul mercato che affermano di essere in grado di farlo. In generale, puoi suddividere questi strumenti in tre categorie:

  • Il bene. Usano molte tecniche diverse che sono state costruite e testate contro migliaia di diversi esempi di cancellazione o corruzione.
  • Il cattivo. Recuperano solo il contenuto rimanente che è perfettamente formato e include una serie di suggerimenti su dove si trova.
  • Il brutto. Queste scansioni per contenuti orfani e segnalano eventuali vecchi rifiuti che potrebbero adattarsi al contesto. Se lo guardi mentre socchiudi gli occhi. "NSMutableArray": potrebbe essere il nome del tuo record di contatto mancante? Hmmm.

SQLite undeletion e recovery da iOS nel mondo reale

Ora che abbiamo parlato un po 'di come funziona, facciamo un salto nel vedere quanto sia efficace nel mondo reale. Dopotutto, vogliamo consentire agli utenti ordinari di recuperare i loro dati senza dover essere esperti. Lo gestiamo? Valuteremo i quattro principali strumenti di recupero SQLite - contro iPhone Backup Extractor. Al momento della scrittura, l'ultima versione di questi strumenti è:

Nome Versione e data di rilascio piattaforme Prezzo
Reincubare iPhone Backup Extractor 7.6.1.2201, maggio '18 Windows e macOS $ 34.95
SQLite Doctor di SQLabs 1.3.0, ago '13 Windows e macOS $ 49
Ripristino del database Sqlite di SysTools 1.2, nessuna data di rilascio indicata Solo Windows $ 149
Stellar Phoenic Repair di Stellar Data Recovery Per Sqlite 1.0, nessuna data di rilascio indicata Solo Windows $ 599
GetData's Forensic Explorer (FEX) 4.3.5.7364, maggio '18 Solo Windows $ 1.695
Acquisisci Sqlite Forensics Explorer di Forensics 2.0, nessuna data di rilascio indicata Solo Windows $ 149

Per impostare questo test, useremo un bel database grande, pieno di dati reali. In questo caso, si tratta di un database "Messaggi" di 169 MB, prelevato da un iPhone con iOS 11. Diamo un'occhiata: i seguenti comandi mostrano la dimensione del file e i risultati di una query per contare quanti messaggi contiene .

$ ls -l sms.db
-rw------- 1 afitzpatrick 177565696 Oct  2  2017 sms.db

$ sqlite3 sms.db
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> SELECT COUNT(*) FROM message;
220261

Quindi, ci sono oltre 220.000 messaggi. Sono quelli che non sono stati cancellati. Ma quanti dei messaggi eliminati possono trovare gli strumenti di recupero?

Recupero dati SQLite da iOS: i risultati sono disponibili

Abbiamo eseguito tutti gli strumenti mostrati sopra sullo stesso file e abbiamo preso nota dei risultati nella tabella seguente. Ci sarebbe piaciuto avere un Mac, ma poiché non tutti gli strumenti supportano macOS, abbiamo utilizzato un PC con 16 GB di RAM, con Windows 10 Pro (versione 1803 , build 17134.48 ).

reincubare Acquisisci medicina legale SQLabs SysTools Stellar Data Recovery GetData
Numero recuperato 342 56 (ma soprattutto spazzatura) 0 0 (Dopo una lunga scansione, ha trovato 220.261, che è lo stesso numero di record validi già presenti!) 0 (Ogni volta che l'abbiamo eseguito, ha contato fino a 37 messaggi eliminati, ma si è arrestato in modo anomalo con errore 0x40000015, prima di completare il processo. Non è stato possibile esportare o salvare alcun.) 0 (Abbiamo contattato più volte per acquistare una licenza, ma non abbiamo mai ricevuto risposta.)
"Junk" recuperato? Nessuna; tutti sembrano essere messaggi non cancellati validi. Emoji, date, orari e numeri mittente / destinatario vengono recuperati. La maggior parte di quelli recuperati sono spazzatura 😕 Abbiamo dovuto inserire manualmente i valori massimi di ROWID alcune volte per provare parametri diversi. Nessuno recuperato in nessun momento. Ho trovato solo messaggi preesistenti. Si è schiantato ogni volta, quindi non posso dirlo. Non è stato possibile farlo funzionare.
Costo effettivo per messaggio recuperato (in questo esempio) $ 0.10 $ 2.66 > $ 49 > $ 149 > $ 599 > $ 1.695

OK. Quindi è stata una sorpresa, poiché ci aspettavamo che almeno avrebbero recuperato alcuni dati. 🧐 Si scopre che il nostro umile strumento è leader nel mercato del recupero dati SQLite, nonostante non sia uno strumento di recupero dati SQLite dedicato. (Se vi siete chiesti, questo è il motivo per cui concediamo in licenza la nostra tecnologia anche ad altre società.

Recupero dati SQLite su diverse versioni di iOS

Con ogni nuova versione di iOS, Apple ha l'opportunità di cambiare il modo in cui il sistema operativo gestisce i database SQLite. Ciò include l'ottimizzazione della frequenza con cui vengono eseguite le operazioni di pulizia e altre operazioni di manutenzione e quando vengono attivate.

Man mano che i dispositivi diventano più potenti, queste operazioni possono essere utilizzate più liberamente in quanto il loro impatto sull'esperienza utente diminuisce. Pertanto, con ogni nuova generazione, è probabile che un database SQLite venga pulito più frequentemente, il che ha il vantaggio di rendere il database più veloce da utilizzare per le normali operazioni. Questo si allinea con l'obiettivo di Apple di aumentare la protezione e la privacy dei dati degli utenti, poiché non vengono lasciati dati indesiderati sul dispositivo. Tuttavia, questo ha l'avvertenza di rendere impossibile il recupero dei dati tramite il metodo SQLite.

In iOS 11, abbiamo iniziato a vedere un aumento delle attività di pulizia del database per SMS e iMessage. Il ripristino è ancora possibile e più probabile per i messaggi più recenti che sono stati successivamente eliminati, ma non garantiti.

In iOS 12, si è verificato un notevole aumento della frequenza di pulizia del database per il database SMS e iMessages. Poiché questa versione è stata propagandata come fortemente focalizzata sulla manutenzione e sui miglioramenti della velocità, questa modifica ha senso poiché probabilmente porterà a prestazioni più uniformi per operazioni più comuni.

Cosa devo fare per approfittarne al momento del recupero dei dati iOS?

Forse questo è il migliore: questa tecnologia è integrata con Reincubate iPhone Backup Extractor , ed è stata fin dai primi giorni. Quando usi l'app, applicherà questa tecnologia durante l'anteprima o l'esportazione dei tuoi messaggi e di un certo numero di altri tipi di dati. A seconda dei dati che stai visualizzando e del modo in cui li stai visualizzando, l'app indicherà quali dati non sono stati eliminati e quali no. È tutto incluso.

Commenti (1)

I have a question. When apple release new ios , do they provide any information about schema change? or we can get them from ios backup. Thanks in advance.

Hey Jon. Apple don't, and it's not just them changing things: any time a third-party app gets updates things can change. We have a set of tools and a team testing these things every day.


Possiamo migliorare questo articolo?

Ci piace ascoltare gli utenti: perché non mandarci un'email, lasciare un commento o twittare @reincubate?

© 2008 - 2024 Reincubate Ltd. Tutti i diritti riservati. Registrato in Inghilterra e Galles #5189175, VAT GB151788978. Reincubate® e Camo® sono marchi registrati. Politica sulla riservatezza & condizioni.