Während eines Osterbesuchs bei seinem Schwiegervater fand leo-stone einen Haushalt in Schwierigkeiten mit Petya-Ransomware vor. Jemand bewarb sich um eine Stelle, und der Gastgeber musste dringend seinen Lebenslauf lesen, also gab er das Admin-Passwort ein – und statt der Dateien bekam er Petyas roten Totenkopf zu sehen, das Zeichen dafür, dass die Master File Table der Festplatte verschlüsselt worden war. Der angebotene Ausweg bestand darin, für einen Schlüssel zu zahlen. Der Autor formulierte die Alternative schlicht: „Lösegeld zu zahlen ist keine so große Herausforderung“; die Herausforderung bestand darin, das Schloss ohne Zahlung zu knacken.
Statt die Verschlüsselung direkt anzugreifen, zielte leo-stone auf die Art und Weise, wie Petya selbst einen eingegebenen Schlüssel prüft. Er implementierte den Verifikations-Hash nach und veröffentlichte das Wesentliche: Salsa auf 16-Bit-Wörtern statt auf 32, mit zehn Runden (Salsa10), nicht zwanzig (Salsa20). Die Testdaten bleiben auf der Festplatte des Opfers – ein 8-Byte-Nonce bei Sektor 54 und ein 512-Byte-verschlüsselter Verifikationssektor bei Sektor 55. Sein Go-Programm liest diese 512 Bytes, XORt die interessanten Wörter mit 0x37, um die Zielausgabe des Hashes zurückzugewinnen, liest das Nonce und setzt einen genetischen Solver auf das Problem an.
Der Solver fand den Schlüssel in Sekunden – in seinem eigenen Fall in 10 bis 30 – und er veröffentlichte ihn als Open-Source-Repository hack-petya mit einfachen Anweisungen: das Nonce und den Verifikationssektor von der verschlüsselten Festplatte holen, als nonce.txt und src.txt speichern, das Programm ausführen, warten, dann den Schlüssel verwenden, idealerweise auf einem Festplattenabbild in einer VM. Er entschuldigte sich für den unordentlichen Code („Ich war irgendwie in Eile“) und patchte die genetische Bibliothek, nachdem sie unter Go 1.6 bei gleichzeitigen Map-Lesezugriffen in Panik geraten war. Der Start zog am 11. April 2016 451 Punkte und 79 Kommentare auf Hacker News an; das Repository zeigt 612 Sterne und 80 Forks.
Petyas Schlüsselprüfung nachbauen und dann einen genetischen Solver den Schlüssel finden lassen – ohne Lösegeld zu zahlen
Er griff die Schlüsselprüfung an statt die Verschlüsselung: Der Verifikationssektor liegt auf der eigenen Festplatte des Opfers, wodurch Petyas Design zu einem testbaren Orakel wird, das jeder nachbauen konnte
Ein genetischer Solver machte die Suche schnell: Kandidatenschlüssel entwickelten sich gegen den nachgebauten Hash weiter, bis der richtige auftauchte, in 10–30 Sekunden statt einer Brute-Force-Wartezeit
Die Lösung kam kostenlos mit exakten Wiederherstellungsschritten, sodass andere Opfer ohne Zahlung und ohne ihre Festplatten irgendwohin zu schicken entschlüsseln konnten
Die Veröffentlichung auf GitHub und Hacker News verschaffte dem Werkzeug Reichweite: 451 Punkte und 79 Kommentare zum Start und ein Repository, das noch immer 612 Sterne und 80 Forks zeigt
Ein Schloss, das seinen eigenen Schlüssel verifizieren muss, hinterlässt ein Orakel auf der Seite des Opfers: die Prüfung nachbauen und dagegen suchen statt zu zahlen, dann das Werkzeug verschenken, damit sich die Lösung verbreitet.
leo-stone gewann seinen eigenen Schlüssel in 10–30 Sekunden zurück und veröffentlichte das Werkzeug offen. Der Start auf Hacker News am 11. April 2016 zog 451 Punkte und 79 Kommentare an, und das Repository zeigt im archivierten Zustand 612 Sterne, 80 Forks und 34 Watcher. Die Seite enthält keine Aussage über spätere Petya-Varianten; was sie hinterlässt, ist das wiederverwendbare Muster – die Verifikationsdaten von der Festplatte extrahieren, die Prüfung nachbauen und eine Suche den Schlüssel finden lassen.
DEN BELEGEN FOLGEN
Die Quellen
- leo-stone/hack-petya — search key to restore petya encrypted mft GitHub · github.com
- Hack-petya mission accomplished — Petya ransomware decryptor (Hacker News discussion) Hacker News · news.ycombinator.com ·