Crypt12-Dateien und Entschlüsselung von WhatsApp-Nachrichten

Es gibt ein Kryptosystem, das zur Verschlüsselung von WhatsApp-Nachrichten und -Dateien verwendet wird und crypt12 heißt. Dieses Kryptosystem kann mit Hilfe von einfachen Hash-Algorithmen entschlüsselt werden und hat einige Einschränkungen.

Wenn das Kryptosystem auf WhatsApp angewendet wird, werden zwei Hashes generiert, einer für den symmetrischen Verschlüsselungsschlüssel und einer für den Dateiverschlüsselungsschlüssel (FEK). Zuerst müssen wir diese Hashes erhalten, um unsere Dateien zu entschlüsseln, also lassen Sie uns fortfahren. [ARTIKELENDE]

Kryptosysteme wie crypt12 verschlüsseln Daten mit Hilfe eines Algorithmus in Kombination mit einem “Schlüssel”, der bestimmt, wie die verschlüsselten Daten aussehen, nachdem sie mehrfach verschlüsselt wurden.

Das Ziel der Kryptoanalyse ist es, herauszufinden, wasschlüssel verwendet wurde, um das Kryptogramm zu berechnen. Das Kryptogramm sind verschlüsselte Daten, und der Schlüssel, der zur Verschlüsselung verwendet wurde, ist das, was wir herausfinden wollen.

crypt12 kann mit einfachen Hash-Algorithmen entschlüsselt werden und hat einige Einschränkungen:

Der Kryptor kann nicht mehr als 100000 Bytes Klartext schreiben (der Kryptor bricht nach dieser Menge ab).

Der Kryptor kann nicht mehr als 100000 Bytes Chiffriertext lesen (nach dieser Menge bricht der Kryptor ab).

Die Länge der Dateien sollte 990000000 Bytes nicht überschreiten

Der Kryptor verwendet eine Hash-Funktion als Teil seines Entschlüsselungsprozesses, was die Kryptoanalyse oft sehr viel einfacher macht, da Hashes symmetrisch sind.

Wenn crypt12 auf WhatsApp angewendet wird, werden zwei Hashes erzeugt:1. Einen für den symmetrischen Verschlüsselungsschlüssel, der zur Verschlüsselung unserer Nachricht oder Datei verwendet wurde, und

2. einen für den Dateiverschlüsselungsschlüssel (FEK). Der FEK ist ein tatsächlicher AES-256-Schlüssel, der zur Verschlüsselung von Dateien mit crypt12 verwendet wurde.

Alles, was wir jetzt brauchen, sind diese Hashes, also fahren wir mit der Kryptoanalyse fort.

Schritt 1: Beschaffen Sie sich die beiden Hashes, die zur Entschlüsselung der mit crypt12 verschlüsselten Daten benötigt werden.

Wir können WhatsApp selbst verwenden, um diese Hashes zu erhalten, da es sie in seiner Datenbank speichert, bevor es sie während der Entschlüsselung von verschlüsselten Dateien über das Netzwerk sendet. Wir müssen dies tun, BEVOR wir irgendwelche Nachrichten smime p7s oder Medien senden/empfangen, denn sobald eine Nachricht gesendet wurde, wird der Hash zerstört.

Die Hashes werden in der Tabelle cryptokeys in der internen SQLite-Datenbank von WhatsApp gespeichert.

Dies erfordert keinen Root-Zugang oder andere spezielle Berechtigungen, alles was wir brauchen ist ein SQLite-Client, um die Daten zu extrahieren. Wie Sie in diesem Screenshot von WhatsAPI sehen können, ist nur ein einziger Befehl erforderlich, um beide Hashes abzurufen:

cursor = conn.execute(“SELECT cryptokeys.aes_key_256, cryptokeys.file_encryption_key FROM cryptokeys ORDER BY cryptokeys.id DESC LIMIT 0,1”).fetchall()

Schritt 2: Berechnen Sie den Schlüssel-Offset (Klartext), indem Sie ein Byte nach dem anderen mit jedem möglichen Wert für die Datei entschlüsselnverschlüsselungsschlüssel (FEK), bis das Kryptogramm zu etwas Vernünftigem entschlüsselt ist.

Der Kryptor kann nicht mehr als 100000 Bytes an verschlüsseltem Text lesen (nach dieser Menge wird der Kryptor beendet)

Wenn crypt12 auf WhatsApp angewendet wird, werden zwei Hashes erzeugt: Einer für den symmetrischen Verschlüsselungsschlüssel, der zur Verschlüsselung unserer Nachricht oder Datei verwendet wird, und einer für den Dateiverschlüsselungsschlüssel (FEK). Der FEK ist ein tatsächlicher AES-256-Schlüssel, der zum Verschlüsseln von Dateien mit crypt12 verwendet wurde.

Alles, was wir jetzt brauchen, sind diese Hashes, also fahren wir mit der Kryptoanalyse fort.

Wir können WhatsApp selbst verwenden, um diese Hashes zu erhalten, da es sie in seiner Datenbank speichert, bevor es sie während der Entschlüsselung verschlüsselter Dateien über das Netzwerk sendet.Wir müssen dies tun, BEVOR wir eine Nachricht oder ein Medium senden/empfangen, denn sobald eine Nachricht gesendet wurde, wird der Hash zerstört.

Die Hashes werden in der Tabelle cryptokeys in der internen SQLite-Datenbank von WhatsApp gespeichert.

Wie Sie in diesem Screenshot von WhatsAPI sehen können, ist nur ein einziger Befehl erforderlich, um beide Hashes abzurufen:

cursor = conn.execute(“SELECT cryptokeys.aes_key_256, cryptokeys.file_encryption_key FROM cryptokeys ORDER BY cryptokeys.id DESC LIMIT 0,1”).fetchall()

Hier haben wir beide Hashes für die RND- bzw. DATA-Schlüssel, die zur Verschlüsselung unserer Dateien mit crypt12 verwendet wurden. Der nächste Schrittist es, den Kryptor zum Laufen zu bringen.

Da crypt12 symmetrisch ist, müssen wir 100000 Bytes Klartext mit dem RND-Schlüssel verschlüsseln und ihn mit dem DATA-Schlüssel entschlüsseln. Wenn wir ein gültiges Kryptogramm zurückbekommen, wissen wir, dass wir den gleichen Byte-Offset für beide Schlüssel gefunden haben:

Schritt 3: Berechnung des FEK-Offsets (File Key Decoding) Ein einziger Bitfehler führt zu zwei verschiedenen Offsets: einer, der bei der Entschlüsselung mit dem RND-Schlüssel zu Müll führt, und ein anderer, der zu gültigen Kryptogrammen führt, die bei der Entschlüsselung mit DATA einen anderen Offset als alle anderen verwenden. Wir brauchen jedoch nur diese “gültigen” Offsets zu berechnen, da sie viel wahrscheinlicher sind als jede andere Konfiguration. In unseremcryptor, lassen wir crypt12 einfach ein paar Mal laufen und behalten den Offset, der zu einer größeren Anzahl von Kryptogrammen führt.

Posted on

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert