Zum Hauptinhalt springen

Technology, security analysis

iOS-Forensik mit SQLite-Datenwiederherstellung: Deep Dive und Vergleich

Aidan FitzpatrickVeröffentlicht am 1. Juni 2018Aktualisiert am 17. Februar 2020
Auf dieser Seite
Cover image for: iOS-Forensik mit SQLite-Datenwiederherstellung: Deep Dive und Vergleich

Wir setzen viele Techniken ein, um Menschen mit unseren Produkten bei der Wiederherstellung ihrer Daten zu helfen, und ein großer Teil der Raffinesse, die wir im letzten Jahrzehnt aufgebaut haben, liegt unter der Oberfläche. Heute werfen wir einen genaueren Blick auf eines der Verfahren, mit denen wir gelöschte Nachrichten wiederherstellen: die forensische Wiederherstellung von SQLite-Daten.

Wie speichern iPhones Daten eigentlich?

Einfach gesagt speichern viele Apps ihre Daten in Datenbanken, und die meisten davon nutzen das SQLite-Format. SQLite ist ein praktisches kleines serverloses Datenbankformat und passt gut zu dem, was Apple und App-Anbieter brauchen. Da SQLite ohne separaten Datenbankserver läuft, unterscheidet es sich in einigen Punkten von anderen Datenbanken. Damit der Zugriff schnell bleibt, kann es sich im laufenden Betrieb insbesondere nicht regelmäßig selbst warten. Niemand möchte, dass eine App langsamer wird, während die Datenbank Routinewartung wie etwa das Aufräumen von Indizes durchführt.

Solche Aufräum- oder Optimierungsvorgänge sind mit SQLite zwar möglich, werden aber meist nur selten ausgeführt. Für Nutzer ist das die richtige Balance: Dein iPhone ist ausreichend schnell, und deine Daten sind robust. Und wenn es nötig wird, hast du wegen dieser seltenen Wartung bessere Chancen als der Durchschnitt, deine gelöschten iOS-Daten wiederherzustellen.

Ohne zu technisch zu werden: Der Ablauf ist ziemlich einfach. Stell dir diese Datenbanken wie große Aktenschränke vor:

  • Wenn Informationen hinzukommen, legst du eine Akte mit einem ordentlichen Etikett ein, das erklärt, was in der Akte steckt. So arbeitet dein Telefon.
  • Wenn du aber Daten entfernst, nimmt das Telefon die Akte nicht aus dem Schrank, sondern zieht einfach das Etikett ab. Die alten Daten werden also nicht entfernt, sondern bleiben unetikettiert (oder „verwaist“, wie wir fachlich sagen würden). Das heißt: Wenn du Daten löschst, muss dein Telefon nicht den vergleichsweise langsamen Vorgang durchlaufen, Platz im Schrank freizugeben. Es sagt nur „na gut, vergiss das“ und macht weiter.
  • Kommen weitere Daten hinzu, legt dein Telefon zusätzliche Akten an, solange Platz ist. Ist kein Platz mehr, sieht es nach, ob noch unetikettierte Akten herumliegen, und wirft gegebenenfalls so viel davon weg, wie es für den nötigen Platz braucht.

Daraus lässt sich ableiten, dass das Löschen von Daten auf deinem Telefon schnell geht und das Hinzufügen bei freiem Platz ebenfalls. Und – entgegen der Intuition – ist es das Hinzufügen neuerer Daten, das tatsächlich dazu führt, dass ältere Informationen entfernt werden.

Gelöschte Informationen aus SQLite unter iOS wiederherstellen

Angenommen, du nutzt dein Telefon seit ein paar Monaten. Die Datenbanken darauf sind wie die Aktenschränke, die wir vorhin beschrieben haben. Es liegen einige Akten darin, und wo du Daten gelöscht hast, sind diese Akten noch da – allerdings mit zwei Einschränkungen: Sie können teilweise oder vollständig überschrieben worden sein, und sie sind unetikettiert.

Die Wiederherstellungstechnik ist dann ziemlich genau das, was man erwartet: Es geht darum, diese verwaisten Akten – vollständig oder nicht – zu finden, herauszufinden, wo sie hingehören, und zu prüfen, ob noch genug Daten übrig sind, damit sie Sinn ergeben. Wie zu erwarten, ist das alles etwas fummelig, und es können weitere technische Besonderheiten auftreten, die die Sache erschweren. Besonders Datenbanken mit mehr als ein paar Megabyte Größe und Datenbanken mit Binärdaten können den Vorgang erheblich komplizierter machen.

Dennoch ist es nicht allzu schwer, einige Daten zurückzuholen, weshalb es auf dem Markt eine ganze Reihe von Tools gibt, die das angeblich können. Im Allgemeinen lassen sich diese Tools in drei Kategorien einteilen:

  • Die Guten. Sie nutzen viele verschiedene Techniken, die anhand Tausender unterschiedlicher Beispiele für Löschung oder Beschädigung entwickelt und getestet wurden.
  • Die Schlechten. Sie stellen nur den verbliebenen Inhalt wieder her, der perfekt aufgebaut ist und etliche Hinweise darauf enthält, wohin er gehört.
  • Die Hässlichen. Sie suchen nach verwaistem Inhalt und melden jeden alten Müll, der mit etwas Zusammenkneifen der Augen in den Kontext passen könnte. „NSMutableArray“ – könnte das der Name deines fehlenden Kontakteintrags sein? Hmm.

SQLite-Wiederherstellung gelöschter Daten von iOS in der Praxis

Nachdem wir kurz besprochen haben, wie das funktioniert, schauen wir uns an, wie effektiv es in der Praxis ist. Schließlich wollen wir normale Nutzer in die Lage versetzen, ihre Daten zurückzubekommen, ohne Experten sein zu müssen. Gelingt uns das? Wir testen die vier führenden SQLite-Wiederherstellungstools im Vergleich mit iPhone Backup Extractor. Zum Zeitpunkt des Schreibens sind die neuesten Versionen dieser Tools:

NameVersion und VeröffentlichungsdatumPlattformenPreis
Reincubate iPhone Backup Extractor7.6.1.2201, Mai ’18Windows und macOS$34.95
SQLite Doctor von SQLabs1.3.0, Aug. ’13Windows und macOS$49
Sqlite Database Recovery von SysTools1.2, kein Veröffentlichungsdatum angegebenNur Windows$149
Stellar Phoenic Repair For Sqlite von Stellar Data Recovery 1.0, kein Veröffentlichungsdatum angegebenNur Windows$599
Forensic Explorer (FEX) von GetData4.3.5.7364, Mai ’18Nur Windows$1,695
Sqlite Forensics Explorer von Acquire Forensics2.0, kein Veröffentlichungsdatum angegebenNur Windows$149

Für diesen Test verwenden wir eine schön große Datenbank voller realer Daten. In diesem Fall ist es eine 169 MB große „Nachrichten“-Datenbank von einem iPhone mit iOS 11. Schauen wir sie uns an: Die folgenden Befehle zeigen ihre Dateigröße und das Ergebnis einer Abfrage, die zählt, wie viele Nachrichten sie enthält.

$ 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

Es sind also über 220.000 Nachrichten. Das sind die, die nicht gelöscht wurden. Aber wie viele der gelöschten Nachrichten können die Wiederherstellungstools finden?

SQLite-Datenwiederherstellung von iOS: die Ergebnisse

Wir haben alle oben genannten Tools auf dieselbe Datei angewendet und die Ergebnisse in der Tabelle unten festgehalten. Wir hätten gern einen Mac verwendet, aber da nicht alle Tools macOS unterstützen, haben wir einen PC mit 16 GB RAM unter Windows 10 Pro (Version 1803, Build 17134.48) genutzt.

ReincubateAcquire ForensicsSQLabsSysToolsStellar Data RecoveryGetData
Anzahl wiederhergestellt34256 (aber überwiegend Müll)00 (Nach einem langwierigen Scan fand es 220.261, genau so viele, wie bereits gültige Datensätze vorhanden waren!)0 (Bei jedem Durchlauf zählte es bis zu 37 gelöschte Nachrichten, stürzte aber mit dem Fehler 0x40000015 ab, bevor der Vorgang abgeschlossen war. Es war nicht möglich, welche zu exportieren oder zu speichern.)0 (We reached out multiple times to purchase a license, but never heard back.)
„Müll“ wiederhergestellt?Keiner; alle scheinen gültige, nicht gelöschte Nachrichten zu sein. Emojis, Datum, Uhrzeit sowie Absender-/Empfängernummern werden alle wiederhergestellt.Der Großteil der wiederhergestellten Daten ist MüllWir mussten mehrmals manuell maximale ROWID-Werte eingeben, um verschiedene Parameter auszuprobieren. Zu keinem Zeitpunkt wurde etwas wiederhergestellt.Es wurden nur bereits vorhandene Nachrichten gefunden.Stürzte jedes Mal ab, daher war keine Aussage möglich.Wasn’t possible to get it running.
Effektive Kosten pro wiederhergestellter Nachricht (in diesem Beispiel)$0.10$2.66>$49>$149>$599>$1,695

Okay. Das war eine kleine Überraschung, denn wir hatten erwartet, dass sie alle zumindest einige Daten wiederherstellen. Es zeigt sich, dass unser bescheidenes Tool bei der SQLite-Datenwiederherstellung den Markt anführt, obwohl es kein spezielles SQLite-Wiederherstellungstool ist. (Falls du dich gefragt hast: Deshalb lizenzieren wir unsere Technologie auch an andere Unternehmen. Das ist schwierige Materie.)

SQLite-Datenwiederherstellung bei verschiedenen iOS-Versionen

Mit jeder neuen iOS-Version kann Apple ändern, wie das Betriebssystem mit SQLite-Datenbanken umgeht. Dazu gehören Optimierungen dazu, wie oft Aufräum- und andere Wartungsvorgänge stattfinden und wann sie ausgelöst werden.

Je leistungsfähiger die Geräte werden, desto freier lassen sich diese Vorgänge einsetzen, da ihre Auswirkung auf die Nutzererfahrung kleiner wird. Daher wird eine SQLite-Datenbank mit jeder neuen Generation voraussichtlich häufiger bereinigt, was den Vorteil hat, dass die Datenbank bei normalen Vorgängen schneller wird. Das entspricht Apples Ziel, Datenschutz und Privatsphäre der Nutzer zu stärken, da keine unerwünschten Daten auf dem Gerät verbleiben. Der Nachteil ist jedoch, dass eine Wiederherstellung über die SQLite-Methode dadurch unmöglich wird.

Mit iOS 11 haben wir begonnen, eine Zunahme der Datenbankbereinigung bei SMS und iMessages zu beobachten. Eine Wiederherstellung ist weiterhin möglich und bei neueren, später gelöschten Nachrichten wahrscheinlicher, aber nicht garantiert.

Mit iOS 12 hat die Häufigkeit der Datenbankbereinigung bei der SMS- und iMessage-Datenbank deutlich zugenommen. Da diese Version mit einem starken Fokus auf Wartung und Geschwindigkeitsverbesserungen beworben wurde, ist diese Änderung nachvollziehbar, denn sie führt voraussichtlich zu flüssigerer Leistung bei häufigeren Vorgängen.

Was muss ich tun, um das bei der Wiederherstellung von iOS-Daten zu nutzen?

Vielleicht ist das das Beste daran: Diese Technologie ist in Reincubate iPhone Backup Extractor integriert, und zwar seit den Anfangstagen. Wenn du die App nutzt, wendet sie diese Technologie an, sobald du deine Nachrichten und eine Reihe weiterer Datentypen in der Vorschau anzeigst oder exportierst. Je nachdem, welche Daten du ansiehst und wie du sie ansiehst, zeigt die App an, welche Daten wiederhergestellt wurden und welche nicht. Alles ist inklusive.


Über den Autor

Aidan Fitzpatrick

Gründer, CEO

Aidan gründete Reincubate 2008, nachdem er das weltweit erste iOS-Datenwiederherstellungstool entwickelt hatte. Seitdem hat er das Unternehmen zu einem der weltweit führenden ISVs ausgebaut und arbeitet mit Unternehmen wie AMD, Qualcomm und HP zusammen, um wegweisende Machine-Learning-Funktionen für Videosoftware zu entwickeln – allen voran das Camo-App-Ökosystem. Unter Aidans Führung hat Reincubate viermal die höchste britische Wirtschaftsauszeichnung gewonnen, einen Platz auf der 100-Tech-Liste der Sunday Times erreicht und branchenweite Anerkennung durch Nominierungen für den Apple Design Award und den App Store erhalten. Seine Arbeit und Methoden werden häufig in wissenschaftlichen Arbeiten zur mobilen Forensik zitiert, und er wurde eingeladen, bei Veranstaltungen von Unternehmen wie Google, Microsoft und Snap zu sprechen.


Kommentare (1)

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

Antwort vom Reincubate-Support 22. Mai 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.


Verwandte Inhalte


Beliebte Artikel

Logo des King's Award for Enterprise

King's Award for Enterprise: Reincubate hat die höchste offizielle Wirtschaftsauszeichnung des Vereinigten Königreichs viermal gewonnen, zuletzt in Anerkennung des herausragenden Wachstums des Unternehmens in den vergangenen drei Jahren.

Unsere Beziehungen zu Nutzern und Partnern stehen im Mittelpunkt unserer Werte und der Produkte, die wir entwickeln. Lies unsere Bewertungen, um zu erfahren, was sie über uns sagen.

Nach ISO 27001 zertifiziert durch das Centre for Assessment, akkreditiert durch UKAS

© 2008-2026 Reincubate Ltd. Alle Rechte vorbehalten. Eingetragen in England und Wales unter der Nr. 5189175, USt-IdNr. GB151788978. Camo®, Streamlight® und Reincubate® sind eingetragene Marken. Patente angemeldet.

Hilfe