Ga naar hoofdinhoud

Technology, security analysis

iOS-forensica met SQLite-gegevensherstel: een diepgaande blik en vergelijking

Aidan FitzpatrickGepubliceerd op 1 juni 2018Bijgewerkt op 17 februari 2020
Op deze pagina
Cover image for: iOS-forensica met SQLite-gegevensherstel: een diepgaande blik en vergelijking

We gebruiken veel technieken om mensen met onze producten te helpen hun gegevens terug te krijgen, en veel van de vernuftigheid die we de afgelopen tien jaar hebben ingebouwd, zit onder de oppervlakte. Vandaag duiken we in een van de methoden die we gebruiken om verwijderde berichten te herstellen: forensisch herstel van SQLite-gegevens.

Hoe slaan iPhones eigenlijk gegevens op?

Kort gezegd slaan veel apps hun gegevens op in databases, en de meeste gebruiken daarvoor het SQLite-formaat. SQLite is een handig klein databaseformaat zonder server en past goed bij wat Apple en app-ontwikkelaars nodig hebben. Omdat SQLite draait zonder aparte databaseserver, verschilt het op een paar punten van andere databases. Om snel te blijven kan het zichzelf bijvoorbeeld niet regelmatig onderhouden terwijl het in gebruik is. Gebruikers willen niet dat een app trager wordt omdat de database routineonderhoud uitvoert, zoals het opruimen van indexen.

Zulke opschoon- of optimalisatiebewerkingen kunnen met SQLite wel plaatsvinden, maar ze worden meestal zelden uitgevoerd. Voor gebruikers is dat de juiste balans: je iPhone blijft redelijk snel en je gegevens blijven robuust. En als het nodig is, heb je betere kansen dan gemiddeld om verwijderde iOS-gegevens te herstellen, juist doordat dit onderhoud zo zelden plaatsvindt.

Zonder al te technisch te worden: het proces is vrij eenvoudig. Zie deze databases als grote archiefkasten:

  • Wanneer er informatie aan wordt toegevoegd, leg je er een map in met een net label erop waarop staat wat erin zit. Zo werkt je telefoon.
  • Maar als je gegevens verwijdert, haalt de telefoon niet de map uit de kast, maar trekt hij alleen het label eraf. De oude gegevens worden dus niet verwijderd, ze blijven gewoon zonder label achter (of “verweesd”, zoals wij technisch zouden zeggen). Dat betekent dat je telefoon bij het verwijderen van gegevens geen relatief traag proces hoeft te doorlopen om ruimte in de kast vrij te maken. Hij zegt gewoon “hm, vergeet dit maar” en gaat verder.
  • Als er meer gegevens bij moeten, voegt je telefoon extra mappen toe zolang er ruimte is. Is er geen ruimte meer, dan kijkt hij of er nog van die mappen zonder label rondslingeren, en zo ja, dan gooit hij daar weg wat hij nodig heeft om ruimte te maken.

Daaruit kun je opmaken dat het snel gaat om gegevens op je telefoon te verwijderen, en ook vrij snel om ze toe te voegen, mits er ruimte is. En, tegen de intuïtie in, het toevoegen van nieuwere gegevens zorgt er juist voor dat oudere informatie verdwijnt.

Verwijderde informatie herstellen uit SQLite op iOS

Stel dat je je telefoon al een paar maanden gebruikt. De databases erop zijn als de archiefkasten die we eerder beschreven. Er zitten een heleboel mappen in, en waar je gegevens hebt verwijderd, zijn die mappen er nog steeds, maar met twee kanttekeningen: ze kunnen gedeeltelijk of volledig zijn overschreven, en ze hebben geen label.

De herstelmethode is dan ongeveer wat je verwacht: je zoekt deze verweesde mappen, compleet of niet, en probeert uit te zoeken waar ze thuishoren en of er genoeg gegevens over zijn om ze betekenis te geven. Zoals je zou verwachten is het allemaal nogal priegelwerk, en er kunnen allerlei andere technische hobbels opduiken die het lastig maken. Vooral databases van meer dan een paar megabyte en databases met binaire gegevens maken het proces een stuk moeilijker.

Toch is het niet zo moeilijk om wat gegevens terug te krijgen, en daarom zie je op de markt een flink aantal tools die beweren dit te kunnen. Over het algemeen kun je deze tools in drie categorieën verdelen:

  • De goeden. Ze gebruiken veel verschillende technieken die zijn ontwikkeld en getest aan de hand van duizenden verschillende voorbeelden van verwijdering of beschadiging.
  • De slechten. Ze herstellen alleen de overgebleven inhoud die perfect gevormd is en een aantal aanwijzingen bevat over waar die thuishoort.
  • De lelijken. Die scannen op verweesde inhoud en markeren alle oude rommel die in de context zou kunnen passen. Als je ernaar kijkt met half dichtgeknepen ogen. “NSMutableArray”: zou dat de naam van je ontbrekende contactrecord kunnen zijn? Hmmm.

SQLite-herstel van verwijderde gegevens uit iOS in de praktijk

Nu we een beetje hebben besproken hoe dit werkt, gaan we kijken hoe effectief het in de praktijk is. We willen er tenslotte voor zorgen dat gewone gebruikers hun gegevens terugkrijgen zonder expert te hoeven zijn. Lukt ons dat? We vergelijken de vier toonaangevende SQLite-hersteltools met iPhone Backup Extractor. Op het moment van schrijven zijn dit de nieuwste versies van die tools:

NaamVersie en releasedatumPlatformenPrijs
Reincubate iPhone Backup Extractor7.6.1.2201, mei ’18Windows en macOS$34.95
SQLite Doctor van SQLabs1.3.0, aug. ’13Windows en macOS$49
Sqlite Database Recovery van SysTools1.2, geen releasedatum vermeldAlleen Windows$149
Stellar Phoenic Repair For Sqlite van Stellar Data Recovery 1.0, geen releasedatum vermeldAlleen Windows$599
Forensic Explorer (FEX) van GetData4.3.5.7364, mei ’18Alleen Windows$1,695
Sqlite Forensics Explorer van Acquire Forensics2.0, geen releasedatum vermeldAlleen Windows$149

Voor deze test gebruiken we een mooie grote database vol gegevens uit de echte wereld. In dit geval is het een “Messages”-database van 169 MB, afkomstig van een iPhone met iOS 11. Laten we er eens naar kijken: de volgende opdrachten tonen de bestandsgrootte en het resultaat van een query die telt hoeveel berichten erin staan.

$ 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. Dat zijn de berichten die niet zijn verwijderd. Maar hoeveel van de verwijderde berichten kunnen de hersteltools vinden?

SQLite-gegevensherstel uit iOS: de resultaten

We hebben alle bovenstaande tools op 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 waarop Windows 10 Pro draaide (versie 1803, build 17134.48).

ReincubateAcquire ForensicsSQLabsSysToolsStellar Data RecoveryGetData
Aantal hersteld34256 (maar vooral rommel)00 (Na een lange scan vond het er 220.261, precies evenveel als het aantal geldige records dat er al was!)0 (Bij elke run telde het tot 37 verwijderde berichten, maar het crashte met foutcode 0x40000015 voordat het klaar was. Exporteren of opslaan was niet mogelijk.)0 (We reached out multiple times to purchase a license, but never heard back.)
“Rommel” hersteld?Geen; alles lijkt geldige, niet-verwijderde berichten te zijn. Emoji, datums, tijden en nummers van afzender en ontvanger zijn allemaal hersteld.Het merendeel van wat is hersteld is rommelWe moesten een paar keer handmatig maximale ROWID-waarden invoeren om andere parameters uit te proberen. Er is op geen enkel moment iets hersteld.Vond alleen bestaande berichten.Crashte elke keer, dus we kunnen er niets over zeggen.Wasn’t possible to get it running.
Effectieve kosten per hersteld bericht (in dit voorbeeld)$0.10$2.66>$49>$149>$599>$1,695

Oké. Dat was een beetje een verrassing, want we hadden verwacht dat ze allemaal in elk geval wat gegevens zouden herstellen. Onze bescheiden tool blijkt de markt aan te voeren in SQLite-gegevensherstel, ondanks dat het geen speciale tool voor SQLite-gegevensherstel is. (Als je je afvroeg waarom we onze technologie ook in licentie geven aan andere bedrijven: dit is moeilijk spul.)

SQLite-gegevensherstel op verschillende versies van iOS

Bij elke nieuwe iOS-release kan Apple veranderen hoe het besturingssysteem met SQLite-databases omgaat. Dat omvat optimalisaties in hoe vaak opschoon- en andere onderhoudsbewerkingen plaatsvinden en wanneer ze worden gestart.

Naarmate apparaten krachtiger worden, kunnen deze bewerkingen ruimer worden ingezet, omdat de impact op de gebruikerservaring kleiner wordt. Met elke nieuwe generatie wordt een SQLite-database daarom waarschijnlijk vaker opgeschoond, wat het voordeel heeft dat de database sneller werkt voor normale bewerkingen. Dat sluit aan bij het doel van Apple om gebruikersgegevens en privacy beter te beschermen, omdat er geen ongewenste gegevens op het apparaat achterblijven. De keerzijde is dat gegevensherstel via de SQLite-methode daardoor onmogelijk wordt.

In iOS 11 zagen we een toename van de opschoonactiviteit in databases voor sms en iMessages. Herstel is nog steeds mogelijk, en waarschijnlijker voor recentere berichten die later zijn verwijderd, maar het is niet gegarandeerd.

In iOS 12 is de opschoonfrequentie van de sms- en iMessage-database sterk toegenomen. Omdat deze release werd aangekondigd met veel nadruk op onderhoud en snelheidsverbeteringen, is deze verandering logisch, want ze zal waarschijnlijk leiden tot soepelere prestaties bij gangbare bewerkingen.

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

Misschien is dat nog wel het beste: deze technologie is geïntegreerd in Reincubate iPhone Backup Extractor, en dat al sinds de beginjaren. Terwijl je de app gebruikt, past hij deze technologie toe bij het bekijken of exporteren van je berichten en een aantal andere soorten gegevens. Afhankelijk van de gegevens die je bekijkt en de manier waarop, geeft de app aan welke gegevens zijn hersteld en welke niet. Het zit er allemaal bij.


Over de auteur

Aidan Fitzpatrick

Oprichter, CEO

Aidan richtte Reincubate op in 2008, nadat hij ’s werelds eerste tool voor iOS-gegevensherstel had gebouwd. Sindsdien heeft hij het bedrijf uitgebouwd tot een van ’s werelds toonaangevende ISV’s, in samenwerking met bedrijven als AMD, Qualcomm en HP om betekenisvolle machine-learning-functies voor videosoftware te ontwikkelen, met als uithangbord het Camo-app-ecosysteem. Onder Aidans leiding heeft Reincubate vier keer de hoogste zakelijke onderscheiding van het VK gewonnen, een plek veroverd op de 100 Tech-lijst van The Sunday Times, en erkenning in de sector gekregen met nominaties voor de Apple Design Award en de App Store Awards. Zijn werk en technieken worden vaak aangehaald in wetenschappelijke publicaties over mobiele forensica, en hij is uitgenodigd om te spreken op evenementen georganiseerd door bedrijven als Google, Microsoft en Snap.


Reacties (1)

jon 22 mei 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.

Antwoord van Reincubate-support 22 mei 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.


Gerelateerde inhoud


Populaire artikelen

Logo van de King's Award for Enterprise

King's Award for Enterprise: Reincubate heeft vier keer de hoogste officiële zakelijke onderscheiding van het Verenigd Koninkrijk gewonnen, het meest recent als erkenning voor de uitzonderlijke groei van het bedrijf in de afgelopen drie jaar.

Onze relaties met gebruikers en partners staan centraal in onze waarden en de producten die we maken. Bekijk onze reviews om te horen wat zij over ons te zeggen hebben.

ISO 27001-gecertificeerd door Centre for Assessment, geaccrediteerd door UKAS

© 2008-2026 Reincubate Ltd. Alle rechten voorbehouden. Ingeschreven in Engeland en Wales onder nr. 5189175, btw-nummer GB151788978. Camo®, Streamlight® en Reincubate® zijn geregistreerde handelsmerken. Octrooien aangevraagd.

Hulp