CTF. Passwörter in Firefox. Android Passwort. Bit-Flipping-Angriff. Lösen von Problemen mit r0ot-mi Crypto. Teil 3

Bild



In diesem Artikel unterbrechen wir die Permutations- und Vigenere-Chiffren, entschlüsseln das im Mozilla Firefox-Browser gespeicherte Kennwort, behandeln die Android-Blockierung und den Bit-Flipping-Angriff. Vorherige Teile:



Teil 1 - Codierungen, Shift-Chiffre, Brute-Hashes und Bilderstellung mit PIL-Python.

Teil 2 - Krypta, XOR, unverschlüsseltes ZIP- und PRNG-Cracken.



Organisationsinformationen
, - , :



  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.


, , , .



, , Telegram . , , .



. , - , .





Mozilla Firefox Passwort







Wir müssen das Passwort des Benutzers finden. Laden Sie das Archiv mit dem Verzeichnis .mozilla herunter und öffnen Sie es. Dieses Verzeichnis enthält einen Ordner mit Erweiterungen und einen Ordner mit dem Namen des Browsers.







Da wir nicht an Erweiterungen interessiert sind, gehen wir zum Diu-Browser. Es gibt eine Profilkonfigurationsdatei und ein weiteres Verzeichnis.







Wir gehen in den Ordner und sehen uns die Dateien an.







Alle in der Datenbank gespeicherten Passwörter sind verschlüsselt, sodass Sie sie nicht einfach so sehen können. Sie können dieses Skript zur Entschlüsselung verwenden .

python3 firefox_decrypt.py ~//.mozilla/firefox/o0s0xxhl.default/






Vigenère-Chiffre







Wir haben einen verschlüsselten Text erhalten und müssen den Autor finden. Da es sich um eine Vigenère-Chiffre handelt, verwenden wir einen Online-Decoder .







Wir wählen den automatischen Modus.







Und wir bekommen den Klartext und den Schlüssel. Es bleibt, den Text zu googeln und den Autor zu finden.



Android-Sperrmuster







Wir erhalten einen Speicherauszug des Android-Dateisystems und werden gebeten, das Passwort zu finden. Dies ist sehr einfach mit dem Zugriff auf das Dateisystem zu tun. Der Kennwort-Hash (SHA1) befindet sich in der Datei /data/system/gesture.key.







Wir können entweder den Hash nehmen und verdrehen oder androidpatternlock verwenden .







Passwort und Muster gefunden.



Permutations-Chiffre







Wir erhalten eine verschlüsselte Nachricht und werden gebeten, diese zu entschlüsseln. Da es sich um eine Rail Fence-Chiffre handelt, verwenden wir den bereits bekannten Online-Decoder .







Und jetzt müssen wir unter den vorgeschlagenen Entschlüsselungen die auswählen, die einen aussagekräftigen Text enthält.







Und wir bekommen die Antwort.



AES CBC - Bit-Flipping-Angriff







Wir erhalten einen Host und einen Port für die Verbindung. Lassen Sie uns mit Netcat verbinden.







Wir haben Aktionsoptionen - registrieren oder anmelden. Lassen Sie uns zuerst registrieren.







Und wir erhielten einen teilweise offenen und verschlüsselten Text. Jetzt melden wir uns mit diesem Token an.







Nach dem Anmelden können wir jedoch nicht auf die Daten zugreifen, da wir kein Mitglied der Gruppe sind.







Nachdem die Aufgabe erledigt ist, wollen wir uns nun mit dem Bit-Flipping-Angriff befassen. Dieser Angriff tritt normalerweise auf, wenn die Verschlüsselungsfunktion Eingaben vornimmt, eine zufällige Zeichenfolge anfügt und eine andere Zeichenfolge an diese anfügt, bevor sie verschlüsselt wird (unser Fall).



Unten finden Sie ein Diagramm zum Entschlüsseln einer Nachricht mit dem AES-CBC-Algorithmus.







Tatsache ist, dass der vorherige Block des Chiffretextes mit dem nächsten Block xorsiert wird, um die Textüberlagerung zu entfernen. Als Ergebnis haben wir den entschlüsselten Text.



Wenn wir also ein Byte Chiffretext im vorherigen Block ändern, ändert sich ein Byte Klartext im nächsten Block.







Kommen wir nun zur Aufgabe zurück. Der Klartext hat den Parameter is_member = false. Es ist schwer vorstellbar, wie man sich ändert. Da wir jedoch die Symbole der Gleichung haben, können wir sie ändern, damit der gesamte Text ein Vielfaches der Blockgröße beträgt, sodass beim Entschlüsseln die Zeichenfolge is_member = true erhalten wird.



Lassen Sie uns herausfinden, wie das geht. Diese Zeile sollte während der Entschlüsselung im letzten Block - EvilP2 - erhalten werden. Dazu müssen wir den EvilC1-Block sammeln.







Wie es geht: Wir haben CC1 und PP2. Indem wir sie zusammen vertreten, können wir DC2 erhalten. Da wir wissen, dass EvilP2 "; is_member = false]" enthält und wir DC2 kennen, das sie untereinander vertritt, können Sie EvilC1 erhalten.



Lassen Sie uns erneut registrieren.







Wir initialisieren die Anfangsparameter.







Jetzt bekommen wir die Blöcke, die wir kennen.







Jetzt bekommen wir neue Blöcke.







Wir sammeln die Ladung.







Wir versuchen uns einzuloggen.







Und nichts wurde daraus, sie fanden uns. Dies ist höchstwahrscheinlich auf das Vorhandensein von zwei identischen Parametern zurückzuführen. Lass uns den ersten töten.







Und jetzt melden wir uns erfolgreich an und nehmen den Token.







Sie können sich uns per Telegramm anschließen... Lassen Sie uns eine Community zusammenstellen, in der es Menschen geben wird, die sich in vielen Bereichen der IT auskennen. Dann können wir uns in Fragen der IT und der Informationssicherheit immer gegenseitig helfen.



All Articles