iOS forensics met SQLite data recovery: diepe duik en vergelijking

Aidan Fitzpatrick

By Aidan Fitzpatrick

Published

bijgewerkt

See how I'm qualified to write this article

Er zijn veel technieken die we gebruiken om mensen te helpen hun gegevens te herstellen met onze producten, en veel van de slimheid die we de afgelopen tien jaar hebben opgebouwd, ligt onder de oppervlakte. Vandaag gaan we een duik nemen in een van de benaderingen die we gebruiken voor het herstellen van verwijderde berichten: forensisch herstel van SQLite-gegevens.

Hoe kunnen iPhones gegevens opslaan?

Simpel gezegd, veel apps slaan hun gegevens op in databases en de meesten gebruiken het SQLite- formaat. SQLite is een nette, kleine serverloze database-indeling en past goed bij wat Apple en app-leveranciers nodig hebben. Aangezien SQLite zonder een afzonderlijke databaseserver wordt uitgevoerd, zijn er een paar manieren waarop dit verschilt van andere databases. In het bijzonder, om snel toegang te hebben, kan het zichzelf niet regelmatig onderhouden wanneer het in gebruik is. Gebruikers willen niet dat een app langzamer werkt terwijl de database routine-onderhoud uitvoert, zoals het opruimen van indexen.

Het is mogelijk dat deze opschoning- of optimalisatiebewerkingen plaatsvinden met SQLite, maar deze worden meestal niet vaak uitgevoerd. Voor gebruikers is dat de juiste balans: je iPhone zal redelijk snel zijn en je gegevens zullen robuust zijn. En als de behoefte zich voordoet, zult u beter dan gemiddelde kansen hebben bij het herstellen van uw verwijderde iOS-gegevens vanwege de zeldzaamheid van dit onderhoudsproces.

Zonder te technisch te worden, is het vrij eenvoudig hoe het proces werkt. Beschouw deze databases als grote archiefkasten:

  • Wanneer het tijd is om informatie aan hen toe te voegen, voegt u een bestand met een keurig label eraan toe, waarin u uitlegt wat er in het bestand staat en zo werkt uw telefoon.
  • Maar wanneer u gegevens verwijdert, in plaats van het bestand uit de archiefkast te halen, trekt de telefoon het label eenvoudigweg uit. De oude gegevens worden dus niet verwijderd, maar gewoon niet-gemarkeerd (of "verweesd"), wat we technisch misschien noemen.) Dit betekent dat wanneer u gegevens verwijdert, uw telefoon geen relatief langzaam proces van vrijgeven hoeft te doorlopen ruimte in de kast. Het zegt gewoon "he, vergeet dit" en gaat verder.
  • Als het gaat om het toevoegen van meer gegevens, voegt uw telefoon extra bestanden toe als er ruimte is. Als er geen ruimte is om meer gegevens toe te voegen, zal het zien of er die niet-gelabelde bestanden rondhangen, en als die er zijn, dan gooit het alle delen eruit die het nodig heeft om ruimte te maken.

Wat u hieruit kunt halen, is dat het snel is om gegevens op uw telefoon te verwijderen en vrij snel om het toe te voegen, ervan uitgaande dat er ruimte is. En - niet intuïtief - het is het proces van het toevoegen van nieuwere gegevens die er echt toe leiden dat oudere informatie wordt verwijderd.

Herstel van verwijderde informatie uit SQLite op iOS

Stel dat je je telefoon een paar maanden hebt gebruikt. De databases erop lijken op de archiefkasten die we eerder beschreven hebben. Er staan een aantal bestanden in en waar je gegevens hebt verwijderd, zijn die bestanden nog steeds aanwezig, maar met twee restricties: ze zijn mogelijk gedeeltelijk of volledig overschreven en hebben geen label.

De hersteltechniek is dan vrijwel wat je verwacht: het gaat erom deze verweesde bestanden te vinden - compleet of anderszins - en te proberen te vinden waar ze passen, en of er voldoende gegevens overblijven om ze te begrijpen. Zoals je zou verwachten, is het allemaal een beetje onhandig, en er zijn een aantal andere technische details die kunnen ontstaan om het moeilijk te maken. Met name databases van meer dan enkele megabytes en databases met binaire gegevens kunnen het proces een stuk moeilijker maken.

Dat gezegd hebbende, het is niet moeilijk om wat gegevens terug te krijgen, daarom zie je een groot aantal tools op de markt die beweren dit te kunnen doen. Over het algemeen kunt u deze hulpprogramma's onderverdelen in drie categorieën:

  • De goede. Ze gebruiken veel verschillende technieken die zijn gebouwd en getest tegen duizenden verschillende voorbeelden van verwijdering of corruptie.
  • De slechte. Ze herstellen alleen de resterende inhoud die perfect is gevormd en bevatten een aantal hints over waar deze thuishoort.
  • De lelijke. Deze scannen op verweesde inhoud en markeren eventuele oude rommel die eruitziet alsof deze in de context past. Als je ernaar kijkt terwijl je tuurt. "NSMutableArray" - zou dat de naam kunnen zijn van uw ontbrekende contactrecord? Hmmm.

SQLite-verwijdering en herstel van iOS in de echte wereld

Nu we een beetje hebben gesproken over hoe dit werkt, laten we eens kijken hoe effectief het is in de echte wereld. We willen immers gewone gebruikers in staat stellen hun gegevens terug te krijgen zonder experts te hoeven zijn. Gaan we dat aan? We zullen de vier toonaangevende SQLite-hersteltools benchmarken - tegen iPhone Backup Extractor. Op het moment van schrijven zijn de nieuwste versies van deze hulpprogramma's:

Naam Versie en releasedatum platforms Prijs
Reïncubate iPhone Backup Extractor 7.6.1.2201, mei '18 Windows & macOS $ 34.95
SQLite Doctor van SQLabs 1.3.0, aug '13 Windows & macOS $ 49
SQLools database recovery van SysTools 1.2, geen release datum getoond Alleen Windows $ 149
Stellar Data Recovery's Stellaire Phoenic Repair voor Sqlite 1.0, geen releasedatum weergegeven Alleen Windows $ 599
GetData's Forensic Explorer (FEX) 4.3.5.7364, mei '18 Alleen Windows $ 1.695
Verkrijg Sqlite Forensics Explorer van Forensics 2.0, geen releasedatum weergegeven Alleen Windows $ 149

Om deze test in te stellen, gebruiken we een mooie grote database vol met gegevens uit de echte wereld. In dit geval is het een "Berichten" -database van 169 MB, genomen van een iPhone met iOS 11. Laten we het eens bekijken: de volgende opdrachten laten de bestandsgrootte zien en de resultaten van een query om te tellen hoeveel berichten het bevat .

$ 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

Er zijn dus meer dan 220.000 berichten. Dit zijn degenen die niet zijn verwijderd. Maar hoeveel van de verwijderde berichten kunnen de herstelhulpmiddelen vinden?

SQLite-gegevensherstel van iOS: de resultaten zijn binnen

We hebben alle bovenstaande hulpprogramma's in hetzelfde bestand uitgevoerd en de resultaten in de onderstaande tabel genoteerd. We hadden graag een Mac gebruikt, maar omdat niet alle tools macOS ondersteunen, gebruikten we een pc met 16 GB RAM, met Windows 10 Pro (versie 1803 , build 17134.48 ).

Reincubate Forensics verwerven SQLabs SysTools Stellaire gegevensherstel Gegevens verkrijgen
Nummer hersteld 342 56 (maar meestal rommel) 0 0 (Na een langdurige scan vond het 220.261, hetzelfde aantal geldige records dat al aanwezig was!) 0 (Elke keer dat we het hebben uitgevoerd, telde het maximaal 37 verwijderde berichten, maar crashte het met fout 0x40000015 voordat het het proces voltooide. Het was niet mogelijk om het te exporteren of op te slaan.) 0 (We hebben meerdere keren contact opgenomen om een licentie te kopen, maar nooit meer gehoord.)
"Ongewenste" hersteld? Geen; alle lijken geldige, verwijderde berichten te zijn. Emoji's, datums, tijden en nummers van afzenders / ontvangers zijn allemaal hersteld. De meeste herstelde mensen zijn rommel 😕 We moesten de max. ROWID-waarden een paar keer handmatig invoeren om verschillende parameters uit te proberen. Geen hersteld op elk gewenst moment. Alleen reeds bestaande berichten gevonden. Verongelukte elke keer, dus kon het niet zeggen. Het was niet mogelijk om het te laten draaien.
Effectieve kosten per bericht hersteld (in dit voorbeeld) $ 0.10 $ 2.66 > $ 49 > $ 149 > $ 599 > $ 1.695

OK. Dus dat was een beetje een verrassing, omdat we verwachtten dat ze op zijn minst enige gegevens zouden herstellen. 🧐 Het blijkt dat onze bescheiden tool de markt leidt in SQLite-gegevensherstel, ondanks dat het geen specifiek SQLite-hulpprogramma voor gegevensherstel is. (Als je je hebt afgevraagd, dit is waarom we onze technologie ook aan andere bedrijven in licentie geven . Dit spul is moeilijk.)

SQLite-gegevensherstel op verschillende versies van iOS

Met elke nieuwe versie van iOS heeft Apple de mogelijkheid om de manier te veranderen waarop het besturingssysteem omgaat met SQLite-databases. Dit omvat optimalisaties in hoe vaak opruimacties en andere onderhoudsactiviteiten plaatsvinden en wanneer deze worden geactiveerd.

Naarmate apparaten krachtiger worden, kunnen deze bewerkingen vrijer worden gebruikt omdat hun impact op de gebruikerservaring kleiner wordt. Daarom wordt bij elke nieuwe generatie waarschijnlijk een SQLite-database vaker schoongemaakt, wat het voordeel heeft dat de database sneller wordt gebruikt voor normale bewerkingen. Dit sluit aan bij het streven van Apple om de gegevensbescherming en privacy van gebruikers te verbeteren, omdat er geen ongewenste gegevens op het apparaat achterblijven. Dit heeft echter het nadeel dat gegevensherstel onmogelijk is via de SQLite-methode.

In iOS 11 zagen we een toename van de databaseopruiming voor sms en iMessages. Herstel is nog steeds mogelijk en waarschijnlijker voor meer recente berichten die vervolgens zijn verwijderd, maar niet gegarandeerd.

In iOS 12 is de database-opschoonfrequentie voor de SMS- en iMessages-database enorm toegenomen. Omdat deze release werd aangeprezen als een zware focus op onderhouds- en snelheidsverbeteringen, is deze verandering logisch omdat dit waarschijnlijk zal leiden tot soepelere prestaties voor meer algemene bewerkingen.

Wat moet ik doen om hiervan te profiteren bij het herstellen van iOS-gegevens?

Misschien is dat wel het beste: deze technologie is geïntegreerd met Reincubate iPhone Backup Extractor en dat is al sinds het begin. Terwijl u de app gebruikt, past deze deze technologie toe bij het bekijken of exporteren van uw berichten en een aantal andere gegevenstypen. Afhankelijk van de gegevens die u bekijkt en de manier waarop u deze bekijkt, geeft de app aan welke gegevens zijn hersteld en welke niet. Het is allemaal inbegrepen.

About the author

Aidan Fitzpatrick founded Reincubate in 2008 after building the world's first iPhone data recovery tool, iPhone Backup Extractor. He's spoken at Google on entrepreneurship, and is a graduate of the Entrepreneurs' Organisation's Leadership Academy.

Reincubate's CEO at Buckingham Palace

Pictured above are members of Reincubate’s team meeting HM Queen Elizabeth Ⅱ at Buckingham Palace, after being awarded the UK’s highest business award for our work with Apple technology. Read our position on privacy, safety and security.

Can we improve this article?

We love hearing from users: why not drop us an email, leave a comment, or tweet @reincubate?

© 2008 - 2019 Reincubate Ltd. Alle rechten voorbehouden. Registered in England and Wales #5189175, VAT GB151788978. Reincubate® is a registered trademark. Privacy en voorwaarden. Wij bevelen 2FA aan. Gebouwd met in Londen.