Bei der Analyse eines Testgeräts mit einem beliebten kommerziellen forensischen Tool für Mobilgeräte stieß ich auf etwas Faszinierendes - eine gesperrte Apple-Notiz, die nur als "versteckt" angezeigt wurde. Das Tool zeigte die Zusammenfassung der Notiz an (mit der Bezeichnung "Lance"), aber der eigentliche Inhalt fehlte. Es gab keinen Hinweis darauf, was sich hinter dem Schloss verbarg, und so stellte sich mir eine brennende Frage: Könnte ich das Geheimnis im Inneren lüften? Ich brauchte einen Arbeitsablauf, mit dem ich Apple Notizen unter iOS 16 entschlüsseln konnte.
Das Gerät lief iOS 16.7.10und nachdem ich die Datenbank NoteStore.sqlite durchforstet hatte, stellte ich fest, dass alle Hinweise auf die Verschlüsselung genau dort lagen und darauf warteten, entschlüsselt zu werden. Mit Hilfe von Open-Source-Tools machte ich mich daran, das Passwort wiederherzustellen und den Inhalt der Notiz zu entschlüsseln.
Dieser Beitrag führt Sie durch die vollständiger forensischer Arbeitsablauf wie man Apple Notes unter iOS 16 entschlüsseln:
⚠️ Wichtiger Hinweis: Dieser Arbeitsablauf gilt speziell für Apple Notes, die auf iOS 16.x. Mit iOS 17 änderte Apple die Art und Weise, wie verschlüsselte Notizen gespeichert werden, und iOS 18 bringt sogar noch weitere Änderungen.
Lassen Sie uns eintauchen und die versteckte Botschaft in der verschlossenen Apple Note enthüllen.
Auf dem Screenshot sehen Sie die rohen Hexadezimalwerte für ZDATA. Diese Daten werden effektiv verschlüsselt durch AES-VerschlüsselungDie kritischen Metadaten - wie Salze und Iterationszahlen - werden in anderen Teilen der Datenbank gespeichert. Von einer kriminaltechnische Untersuchung Wenn Sie erkennen, dass die Notiz vollständig verschlüsselt ist, sollten Sie die Tabelle ZICCLOUDSYNCINGOBJECT nach den Parametern durchsuchen, die für die Riss den Passcode und freischalten die Note 🔓.
Apple Notes sichert gesperrte Notizen durch eine Kombination aus PBKDF2 (Schlüsselableitung) und AES (Verschlüsselung). Wenn ein Kennwort für eine Notiz aktiviert ist, speichert Apple wichtige kryptografische Metadaten in der Datenbank, wie z. B.:
Diese Werte stellen sicher, dass nur jemand mit dem richtigen Passcode den Inhalt der Notiz entschlüsseln kann.
Aus forensischer Sicht umfassen Ihre Schritte in der Regel Folgendes:
Mein Ziel war es, ein realistisches forensisches Szenario zu simulieren: Ich hatte ein gesperrtes Apple Note und musste den Passcode wiederherstellen, um den Inhalt zu entschlüsseln. Das ist der Punkt Hashcat ins Spiel kommt. Durch die Nutzung des Apple Secure Notes Hash-Modus (ID 16200), hat Hashcat systematisch Passwörter ausprobiert, bis es das richtige gefunden hat.
Ich begann mit dem Öffnen NoteStore.sqlite in DB Browser und zielen auf Zeilen mit ZISPASSWORDPROTECTED = 1 in der Tabelle ZICCLOUDSYNCINGOBJECT. Ich habe dann die folgenden Spalten abgefragt:
Die Hashcat-Eingabedatei wurde durch ein kleines Python-Skript erzeugt notes_to_hashcat.pydie diese Werte in eine einzige Zeile formatiert, die Hashcat analysieren kann, einschließlich der Iterationszahl (von ZCRYPTOITERATIONCOUNT).
Nachdem ich meine Hashcat-Eingabedatei und ein Wörterbuch zur Hand hatte, führte ich den folgenden Befehl aus:
hashcat -m 16200 -a 0
Hier:
Hashcat hat erfolgreich das richtige Passwort ermittelt: royalewithcheese. Bei einer tatsächlichen Untersuchung könnte Ihr Wörterbuch viel umfangreicher sein, aber dieses Ergebnis bestätigt, dass Hashcat die schwere Arbeit bewältigen kann.
Mit dem Passwort in der Hand war der nächste Schritt die Ableitung der Key Encryption Key (KEK)der verwendet wird, um den endgültigen AES-Schlüssel zu verpacken, der den Inhalt der Notiz verschlüsselt. Um den KEK abzuleiten, benötigte ich die folgenden Werte aus der Tabelle ZICCLOUDSYNCINGOBJECT:
Zum Beispiel habe ich mit DB Browser eine Abfrage gemacht:
SELECT ZCRYPTOITERATIONCOUNT, ZCRYPTOSALT FROM ZICCLOUDSYNCINGOBJECT WHERE Z_PK = ;
Als Nächstes öffnete ich CyberChef - ein Lieblingstool von mir 🛠️ - und zog die Operation "PBKDF2-Schlüssel ableiten" hinein. Ich setzte die Hashing-Funktion auf SHA-256 und die Eingabe des Passworts, des Salzes und der Anzahl der Iterationen produzierte CyberChef die 16-Byte-KEK:
Um diesen Prozess zu automatisieren, habe ich ein Python-Skript namens get_key.pydie den Datenbankpfad, die Notiz PK und das Passwort als Argumente akzeptiert. Die Ausführung gibt den KEK in Hex zurück.
python get_kek.py NoteStore.sqlite
Ergebnis:
Anmerkung PK=16: KEK (hex) = a1dac1516302e1d3d73ad4fd4b6f8fef
Der nächste Schritt war den Schlüssel auspacken verwendet, um den Inhalt der Notiz zu verschlüsseln. Der verschlüsselte Schlüssel wird in der Spalte ZCRYPTOWRAPPEDKEY von ZICCLOUDSYNCINGOBJECT gespeichert. Ich habe zum Beispiel abgefragt::
SELECT ZCRYPTOWRAPPEDKEY FROM ZICCLOUDSYNCINGOBJECT WHERE Z_PK = 16;
Ich deaktivierte alle vorherigen Vorgänge, suchte nach "AES Key Unwrap" und zog es in das Rezeptfenster. Durch Einfügen des KEK und des verpackten Schlüssels gab CyberChef den unverpackten AES-Schlüssel aus.
Außerdem habe ich ein Python-Skript namens auspacken.py das den Datenbankpfad und den KEK (in Hex) als Argumente benötigt. Wenn Sie dieses Skript ausführen, wird der Schlüssel entschlüsselt und im Hex-Format ausgegeben. In meinem Fall war der entschlüsselte Schlüssel:
python unwrap.py NoteStore.sqlite
Dies ist der endgültige AES-Schlüssel, der zur Entschlüsselung des Inhalts der gesperrten Apple-Notiz verwendet wird.
Nachdem ich nun den entschlüsselten Schlüssel hatte, war es an der Zeit, das Apple Notes BLOB zu entschlüsseln, das in der Datei ZICNOTEDATA
Tisch. Apple verwendet AES im GCM-Modus um den Inhalt von gesperrten Notizen zu schützen, was bedeutet, dass ich vier wesentliche Komponenten benötigte, um fortzufahren:
🔑 Unverschlüsselter AES-Schlüssel
🔁 Initialisierungsvektor (IV) von ZCRYPTOINITIALIZATIONVECTOR
🏷 GCM-Authentifizierungs-Tag von ZCRYPTOTAG
💾 Verschlüsseltes BLOB von ZDATA
Zum Auffinden der IV und GCM-Tagöffnete ich die ZICNOTEDATA
Tabelle im DB Browser für SQLite. Diese Felder werden als binäre Werte gespeichert und können entweder in der ZICNOTEDATA
oder ZICCLOUDSYNCINGOBJECT
Tabellen. Beide speichern die Daten unter denselben Spaltennamen.
IV: 5c0c0bde9b6801747ddad1115a422d05
GCM-Tag: b9087ba19e3c7deff2cb4b9b51e6aafa
Das verschlüsselte BLOB selbst war auch in der ZDATA
Spalte. Ich habe alle drei Werte im Hexadezimalformat kopiert, um mich auf den letzten Entschlüsselungsschritt vorzubereiten.
Als ich alles in der Hand hatte, wandte ich mich an CyberChef. Mit diesem Tool war es ein Leichtes, alle Parameter zu kombinieren und den ursprünglichen Inhalt zu enthüllen. So habe ich es gemacht:
Ich habe die "AES-Entschlüsselung" Betrieb.
Ich fügte die unverschlüsselter AES-Schlüssel in das Feld Schlüssel ein.
Ich habe die Modus zu GCM.
Ich habe die IV und GCM Tag in ihren jeweiligen Bereichen.
Schließlich habe ich die verschlüsseltes BLOB in das Eingabefenster ein.
Nach dem Entschlüsseln des AES-verschlüsselten BLOBs habe ich die Ausgabe in einer Datei mit dem Namen entschlüsselt_blob.bin
und öffnete sie in HxD. Die Signatur der Datei 0x1F8B08
bestätigt, dass es sich um eine GZIP-komprimierte Datei handelt - Apple verwendet dies zur Komprimierung von Protobuf-Daten.
Um den Klartext zu extrahieren, öffnete ich CyberChef erneut und fügte die Gunzip Operation in den Arbeitsablauf integriert. Sofort tauchten in der Ausgabe vertraute Zeichenfolgen auf.
Nach der Dekomprimierung habe ich Protobuf Dekodieren in CyberChef. Das Ergebnis war eine strukturierte Ansicht, die JSON ähnelt, mit Schlüsseln und Werten, die den Inhalt des gesperrten Apple Note darstellen.
Um das Lesen zu erleichtern, habe ich auch ein Python-Skript verwendet, das die backboxprotobuf
Modul, um die protobuf-Datei zu analysieren und die Ausgabe in einem sauberen, menschenlesbaren Format auszugeben.
Dies stimmt mit dem überein, was der Benutzer auf seinem gesperrten Apple Note eingegeben hat. Sie sind von einem versteckten, passwortgeschützten Eintrag zur tatsächlichen Klartextnachricht gelangt - ein unschätzbarer Fund in jedem forensischen Fall.
Herzlichen Glückwunsch 🎉 - Sie haben gerade einen vollständigen forensischen Arbeitsablauf abgeschlossen, um Gesperrte Apple-Notizen unter iOS 16 entschlüsseln. Sie haben die Verschlüsselungsparameter aus der SQLite-Datenbank extrahiert, das Passwort geknackt mit Hashcatabgeleitet und den AES-Schlüssel entschlüsselt. Pythonund schließlich entschlüsselt und analysiert die protobuf mit CyberChef. Mit jedem Schritt kamen Sie dem verborgenen Inhalt des Zettels näher.
Dieses praktische Beispiel zeigt, wie leistungsfähig Open-Source-Werkzeuge in der digitalen Forensik sein kann. Sie helfen Ermittlern, verschlüsselte Apple-Notizen aufzuspüren, die kommerziellen Tools möglicherweise entgehen - insbesondere auf Geräten mit iOS 16 oder früher.
Hier ist eine zusätzliche Wendung - ich habe eine Passwort-Hinweis im ZICCLOUDSYNCINGOBJECT
Tisch:
Viertelpfünder
Da das Gerät jemandem namens "Vincent" gehörte, war es nicht schwer, das Passwort zu erraten: royalewithcheese - eine Anspielung auf Pulp Fiction. In realen Fällen können Passwort-Hinweise wie dieser den Arbeitsablauf beschleunigen, wenn sie mit einem strategischen Knackprozess kombiniert werden.
Diese Anleitung bezieht sich speziell auf die Entschlüsselung Apple Notes unter iOS 16 und früher. Beginnend mit iOS 17hat Apple erhebliche Änderungen am Notes-Verschlüsselungsprozess vorgenommen. Möglicherweise fehlen Felder für die Schlüsselableitung, andere kryptografische Strukturen oder Notizen, die nicht mehr mit denselben Methoden entschlüsselt werden können.
Wenn Sie herausfinden wollen, wie Sie Apple Notes unter iOS 17 oder iOS 18 entschlüsselnIch würde gerne mit Ihnen zusammenarbeiten. Teilen Sie Ihre Erkenntnisse mit - lassen Sie uns gemeinsam die neue Verschlüsselung aufschlüsseln.
Danke fürs Lesen! Haben Sie Fragen oder Anregungen? Schreiben Sie sie unten in die Kommentare oder wenden Sie sich direkt an uns. Lassen Sie uns die Grenzen der forensischen Entdeckung weiter verschieben. 🔍