Vai al contenuto principale

Technology, security analysis

Forensics su iOS con il recupero dati SQLite: approfondimento e confronto

Aidan FitzpatrickPubblicato il 1 giugno 2018Aggiornato il 17 febbraio 2020
In questa pagina
Cover image for: Forensics su iOS con il recupero dati SQLite: approfondimento e confronto

Sono molte le tecniche che usiamo per aiutare le persone a recuperare i propri dati con i nostri prodotti, e gran parte dell’ingegno che abbiamo costruito nell’ultimo decennio sta sotto la superficie. Oggi ci immergiamo in uno degli approcci che usiamo per recuperare i messaggi eliminati: il recupero forense dei dati SQLite.

Come memorizzano i dati gli iPhone, in fondo?

In poche parole, molte app salvano i propri dati in database e la maggior parte usa il formato SQLite. SQLite è un piccolo e ingegnoso formato di database senza server, adatto a ciò di cui hanno bisogno Apple e gli sviluppatori di app. Poiché SQLite funziona senza un server di database separato, differisce da altri database sotto diversi aspetti. In particolare, per garantire un accesso veloce non può occuparsi regolarmente della propria manutenzione mentre è in uso. Gli utenti non vogliono che un’app rallenti mentre il database esegue operazioni di manutenzione ordinaria, come ad esempio la pulizia degli indici.

Queste operazioni di pulizia o ottimizzazione possono avvenire con SQLite, ma tendono a essere eseguite di rado. Per gli utenti è il giusto compromesso: il tuo iPhone sarà abbastanza veloce e i tuoi dati saranno robusti. E, se ce ne fosse bisogno, avrai probabilità superiori alla media di recuperare i dati iOS eliminati, proprio perché questo processo di manutenzione è poco frequente.

Senza entrare troppo nel tecnico, il funzionamento del processo è piuttosto semplice. Immagina questi database come grandi schedari:

  • Quando è il momento di aggiungervi informazioni, aggiungi una cartella con una bella etichetta che spiega cosa contiene, ed è così che funziona il tuo telefono.
  • Ma quando rimuovi dei dati, invece di togliere la cartella dallo schedario, il telefono si limita a staccare l’etichetta. Quindi i vecchi dati non vengono rimossi, ma solo lasciati senza etichetta (o «orfani», come potremmo dire tecnicamente). Questo significa che quando elimini dei dati, il telefono non deve passare per il processo relativamente lento di liberare spazio nello schedario. Si limita a dire «ok, dimentica questa cosa» e va avanti.
  • Quando si tratta di aggiungere altri dati, se c’è spazio il telefono aggiunge nuove cartelle. Se non c’è spazio per aggiungerne altri, controlla se in giro ci sono cartelle senza etichetta e, se ce ne sono, butta via le parti che gli servono per fare spazio.

Ne puoi ricavare che eliminare i dati dal telefono è veloce, e aggiungerli è piuttosto veloce, se c’è spazio. E, in modo poco intuitivo, è proprio l’aggiunta di dati più recenti che porta alla rimozione delle informazioni più vecchie.

Recuperare informazioni eliminate da SQLite su iOS

Supponiamo che tu stia usando il telefono da un paio di mesi. I database al suo interno sono come gli schedari che abbiamo descritto prima. Contengono un sacco di cartelle e, dove hai eliminato dei dati, quelle cartelle sono ancora lì, ma con due avvertenze: potrebbero essere state sovrascritte in parte o del tutto, e sono senza etichetta.

La tecnica di recupero è quindi più o meno quella che ti aspetti: si tratta di trovare queste cartelle orfane, complete o meno, cercare dove si collocano e capire se restano abbastanza dati perché abbiano senso. Come immagini, è tutto un po’ laborioso e possono emergere diverse altre complicazioni tecniche. In particolare, i database più grandi di qualche megabyte e quelli che contengono dati binari possono rendere il processo molto più difficile.

Detto questo, recuperare qualche dato non è troppo difficile, ed è per questo che sul mercato si vedono parecchi strumenti che dichiarano di saperlo fare. In generale, questi strumenti si possono dividere in tre categorie:

  • I buoni. Usano molte tecniche diverse, create e testate su migliaia di esempi diversi di eliminazione o corruzione.
  • I cattivi. Recuperano solo il contenuto rimasto perfettamente formato e che include diversi indizi su dove si colloca.
  • I brutti. Cercano contenuto orfano e segnalano qualsiasi vecchio scarto che sembri adattarsi al contesto, se lo guardi strizzando gli occhi. «NSMutableArray»: potrebbe essere il nome del record di contatto che hai perso? Mah.

Ripristino e recupero SQLite da iOS nel mondo reale

Ora che abbiamo parlato un po’ di come funziona, vediamo quanto è efficace nel mondo reale. Dopotutto, vogliamo mettere gli utenti comuni in grado di recuperare i propri dati senza dover essere esperti. Ci riusciamo? Metteremo a confronto i quattro principali strumenti di recupero SQLite con iPhone Backup Extractor. Al momento della scrittura, le ultime versioni di questi strumenti sono:

NomeVersione e data di rilascioPiattaformePrezzo
Reincubate iPhone Backup Extractor7.6.1.2201, mag ’18Windows e macOS$34.95
SQLite Doctor di SQLabs1.3.0, ago ’13Windows e macOS$49
Sqlite Database Recovery di SysTools1.2, data di rilascio non indicataSolo Windows$149
Stellar Phoenic Repair For Sqlite di Stellar Data Recovery 1.0, data di rilascio non indicataSolo Windows$599
Forensic Explorer (FEX) di GetData4.3.5.7364, mag ’18Solo Windows$1,695
Sqlite Forensics Explorer di Acquire Forensics2.0, data di rilascio non indicataSolo Windows$149

Per impostare questo test useremo un bel database di grandi dimensioni, pieno di dati reali. In questo caso è un database «Messaggi» da 169 MB, preso da un iPhone con iOS 11. Diamogli un’occhiata: i comandi seguenti mostrano la dimensione del file e il risultato di una query che conta 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 eliminati. Ma quanti dei messaggi eliminati riescono a trovare gli strumenti di recupero?

Recupero dati SQLite da iOS: ecco i risultati

Abbiamo eseguito tutti gli strumenti elencati sopra sullo stesso file e annotato i risultati nella tabella qui sotto. Avremmo voluto usare un Mac, ma poiché non tutti gli strumenti supportano macOS abbiamo usato un PC con 16 GB di RAM, con Windows 10 Pro (versione 1803, build 17134.48).

ReincubateAcquire ForensicsSQLabsSysToolsStellar Data RecoveryGetData
Numero recuperato34256 (ma per lo più scarti)00 (dopo una lunga scansione ne ha trovati 220.261, che è lo stesso numero dei record validi già presenti!)0 (a ogni esecuzione ha contato fino a 37 messaggi eliminati, ma si è bloccato con l’errore 0x40000015 prima di terminare il processo. Non è stato possibile esportarne o salvarne nessuno.)0 (We reached out multiple times to purchase a license, but never heard back.)
Scarti recuperati?Nessuno; sembrano tutti messaggi validi non eliminati. Emoji, date, orari e numeri di mittente / destinatario vengono tutti recuperati.La maggior parte di quelli recuperati sono scartiAbbiamo dovuto inserire manualmente i valori massimi di ROWID alcune volte per provare parametri diversi. Nessun messaggio recuperato in alcun momento.Ha trovato solo messaggi già esistenti.Si è bloccato ogni volta, quindi non è stato possibile dirlo.Wasn’t possible to get it running.
Costo effettivo per messaggio recuperato (in questo esempio)$0.10$2.66>$49>$149>$599>$1,695

Ok. È stata una bella sorpresa, perché ci aspettavamo che tutti recuperassero almeno qualche dato. Si scopre che il nostro umile strumento è leader di mercato nel recupero dati SQLite, pur non essendo uno strumento dedicato al recupero dati SQLite. (Se te lo sei chiesto, è per questo che concediamo in licenza la nostra tecnologia anche ad altre aziende. Questa roba è difficile.)

Recupero dati SQLite su versioni diverse di iOS

A ogni nuova release di iOS, Apple ha l’opportunità di cambiare il modo in cui il sistema operativo gestisce i database SQLite. Questo include ottimizzazioni su quanto spesso avvengono le operazioni di pulizia e altra manutenzione e su quando vengono attivate.

Man mano che i dispositivi diventano più potenti, queste operazioni possono essere usate con più libertà, perché il loro impatto sull’esperienza utente diminuisce. Perciò, a ogni nuova generazione, è probabile che un database SQLite venga ripulito più di frequente, con il vantaggio di renderlo più veloce nelle operazioni normali. Questo è in linea con l’obiettivo di Apple di aumentare la protezione dei dati e la privacy degli utenti, dato che sul dispositivo non resta alcun dato indesiderato. Ha però l’avvertenza di rendere impossibile il recupero dei dati con il metodo SQLite.

In iOS 11 abbiamo iniziato a vedere un aumento dell’attività di pulizia dei database per SMS e iMessage. Il recupero è ancora possibile, ed è più probabile per i messaggi più recenti eliminati in seguito, ma non è garantito.

In iOS 12 c’è stato un forte aumento della frequenza di pulizia del database di SMS e iMessage. Poiché questa release è stata presentata come fortemente incentrata su miglioramenti di manutenzione e velocità, questa modifica ha senso, dato che probabilmente porterà a prestazioni più fluide per le operazioni più comuni.

Cosa devo fare per sfruttare tutto questo quando recupero i dati iOS?

Forse questa è la parte migliore: questa tecnologia è integrata in Reincubate iPhone Backup Extractor fin dai primi tempi. Mentre usi l’app, la applicherà quando visualizzi l’anteprima o esporti i tuoi messaggi e diversi altri tipi di dati. A seconda dei dati che stai visualizzando e del modo in cui li guardi, l’app indicherà quali dati sono stati recuperati dopo l’eliminazione e quali no. È tutto incluso.


Informazioni sull'autore

Aidan Fitzpatrick

Fondatore, CEO

Aidan ha fondato Reincubate nel 2008 dopo aver creato il primo strumento al mondo per il recupero dei dati iOS. Da allora ha fatto crescere l’azienda fino a farne uno dei principali ISV al mondo, collaborando con aziende come AMD, Qualcomm e HP per essere pioniere di funzionalità di machine learning significative per il software video, con l’ecosistema di app Camo in prima linea. Sotto la guida di Aidan, Reincubate ha vinto quattro volte il più alto riconoscimento imprenditoriale del Regno Unito, si è guadagnata un posto nella lista 100 Tech del Sunday Times e ha ottenuto riconoscimenti di settore con candidature all’Apple Design Award e all’App Store. Il suo lavoro e le sue tecniche sono spesso citati in pubblicazioni accademiche sull’informatica forense mobile, ed è stato invitato a parlare a eventi organizzati da aziende come Google, Microsoft e Snap.


Commenti (1)

jon 22 maggio 2019

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.

Risposta del supporto Reincubate 22 maggio 2019

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.


Contenuti correlati


Articoli popolari

Logo del King's Award for Enterprise

King's Award for Enterprise: Reincubate ha vinto quattro volte la più alta onorificenza aziendale ufficiale del Regno Unito, l'ultima in riconoscimento della straordinaria crescita dell'azienda negli ultimi tre anni.

Le nostre relazioni con utenti e partner sono al centro dei nostri valori e dei prodotti che creiamo. Consulta le nostre recensioni per scoprire cosa dicono di noi.

Certificazione ISO 27001 rilasciata dal Centre for Assessment, accreditato UKAS

© 2008-2026 Reincubate Ltd. Tutti i diritti riservati. Registrata in Inghilterra e Galles con il n. 5189175, P. IVA GB151788978. Camo®, Streamlight® e Reincubate® sono marchi registrati. Brevetti in corso di registrazione.

Assistenza