iOS forensics met SQLite data recovery: diepe duik en vergelijking
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 & releasedatum | platforms | Prijs |
---|---|---|---|
Reincubeer iPhone Backup Extractor | 7.6.1.2201, mei '18 | Windows & macOS | $ 34.95 |
SQLite Doctor van SQLabs | 1.3.0, augustus '13 | Windows & macOS | $ 49 |
SqTite-databaseherstel van SysTools | 1.2, geen releasedatum getoond | Alleen Windows | $ 149 |
Stellar Data Herstel Stellar 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 |
Koop 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 aanschaffen | SQLabs | SysTools | Stellar Data Recovery | Gegevens verkrijgen | |
---|---|---|---|---|---|---|
Aantal hersteld | 342 | 56 (maar meestal rommel) | 0 | 0 (Na een lange scan werd 220,261 gevonden, hetzelfde aantal geldige records dat al aanwezig was!) | 0 (Elke keer dat we het uitvoerden, telde het tot 37 verwijderde berichten, maar crashte met fout 0x40000015, voordat het proces werd voltooid. 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 hebben nooit iets gehoord.) |
"Junk" hersteld? | Geen; het lijken allemaal geldige, niet-verwijderde berichten te zijn. Emoji's, datums, tijden en afzender / ontvanger-nummers worden allemaal hersteld. | De meeste van die teruggewonnen zijn rommel 😕 | We moesten een paar keer max. ROWID-waarden handmatig invoeren om verschillende parameters te proberen. Niets herstelde op enig moment. | Alleen bestaande berichten gevonden. | Elke keer gecrasht, dus ik kon het niet zeggen. | Het was niet mogelijk om het te laten werken. |
Effectieve kosten per hersteld bericht (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.
door jon
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 door: Reincubate Support
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.