Das Hollywood-Puzzle, ein komplexes Firmware-Rätsel aus dem beliebten Microcorruption-Wargame, hat viele ambitionierte Hacker und Sicherheitsexperten herausgefordert. Während über fünfzigtausend Teilnehmer versuchten, seinen geheimnisvollen Schutzmechanismus zu überwinden, gelang es nur einem Bruchteil, den eigentlichen Schutzalgorithmus zu durchdringen. Die Herausforderung bestand darin, die interne Logik eines speziell entworfenen Systems zu analysieren und herauszufinden, wie man den sogenannten „Unlock Interrupt“ aufrufen kann – die äquivalente Aktion zum „Shell-Popping“ in der Betriebssystemwelt. Was viele nicht erwarten würden: Eine elegante mathematische Lösung aus nur fünf Zeilen genügt, um das Rätsel zu lösen und den aufwendigen Hardware-Bruteforce in den Schatten zu stellen. Die zugrundeliegende Architektur ist ein MSP430-Mikrocontroller mit 16-Bit-Befehlssatz, Little-Endian-Byteordnung und 64 Kilobyte RAM.
Dieses Setting bildet den Grundstein für das Hollywood-Firmware-System. Das System verwendet eine Vielzahl von Schutzmaßnahmen, die auf den ersten Blick massiven Aufwand bei der Analyse und beim Reverse Engineering erfordern. Dazu gehören geschickte Sprünge in der Mitte mehrwortiger Befehle, um die gängigen linear arbeitenden Disassembler zu verwirren, eine Laufzeitpackerung des Codes, Address Space Layout Randomization (ASLR) für jeden einzelnen Befehl und eine virtuelle Maschine mit minimalistischen, aber wirkungsvollen Instruktionen – liebevoll als „Poor Man’s Virtual Machine“ bezeichnet. Die Exekution eines konkreten Exploits zur Überwindung dieses Systems begann mit dem Ansatz, die ASLR-Komponente zu neutralisieren. Mittels ein paar Debugger-Makros konnten die Zufallswerte so gepatcht werden, dass sie immer Null zurückgeben, wodurch sämtliche Adressverschiebungen entfielen.
Anschließend konnte die virtuelle Maschine adressiert und analysiert werden. Der zentrale Schlüssel zur Entschlüsselung des Algorithmus lag in der Beobachtung der Selbstmodifikation und dynamischen Codeausführung an der Speicheradresse 0xE000. Hier erschien eine sich immer wieder ausführende Instruktion, die den Zustand des Systems manipulierte, bis schlussendlich ein vier Byte langer Hash aus dem eingehenden Passwort errechnet wurde. Die auf den ersten Blick komplizierte Assembly-Sequenz ließ sich durch das Verfolgen von Registern und Speicherzugriffen ausknobeln. Besonders wichtig waren die Register R4 und R6, die am Ende der Prozedur mit den Werten 0xFEB1 und 0x9298 übereinstimmen mussten, um den Unlock-Interrupt auszulösen.
Spannend war die Erkenntnis, dass das Hashing-Verfahren stark auf XOR-Operationen und Byte-Swapping basierte. Trotz scheinbar verschachtelter Befehlskomplexität reduzierte sich die Funktionalität letztlich auf einfachste logische Operationen und Registermanipulationen, die sich auch mathematisch ausdrücken und lösen lassen. Dieser Sachverhalt ließ den bekannten hardwarebasierten Bruteforce mittels FPGA, wie ihn Aaron Ferrucci demonstrierte, als unnötig erscheinen. Während Ferruccis FPGA auch mit rund 372 Zeilen Verilog beeindruckende Parallelität und Geschwindigkeit erreichte, offenbart das mathematische Modell auf dem Papier eine oft elegant lösbare Struktur. Die theoretische Lösung stützt sich auf das Konzept eines Preimage-Angriffs und exploit samt zweitem Preimage-Angriff auf die benutzerdefinierte Hashfunktion.
Die Schlüsselfrage lautet: Wie lässt sich ein Passwort so konstruieren, dass die Endwerte im Hash-Register exakt den Zielwerten entsprechen? Indem der Algorithmus rückwärts konstruiert wird, kann eine kleine Anzahl von Gleichungen aufgestellt und gelöst werden, welche den erforderlichen Eingabewert bestimmen. Erlaubt man im Modell sogar Nullwörter (im Original verboten), so entstehen interessante Gleichungen, die mithilfe der Endianitätsumkehr und XOR-Operationen gelöst werden – alles ausgedrückt in nur wenigen Zeilen präziser Mathematik. Als Beispiel: Werden zwei bestimmte Eingabewerte miteinander verkettet und an der richtigen Stelle umgekehrt, resultiert ein Hashwert, der exakt dem erwarteten Ergebnis entspricht. Die Fähigkeit, das komplexe Verhalten eines scheinbar proprietären Algorithmus mathematisch abzubilden und rückwärts zu lösen, wird hier durch gut gewählte algebraische Manipulationen möglich. Die Kombination aus eingehender Hardwarekenntnis, Verständnis der ISA sowie mathematischer Modellierung demonstriert exemplarisch, wie moderne Cybersecurity nicht nur durch rohe Rechenkraft, sondern auch durch analytisches Denken zu überwinden ist.
Die Diskussion um Ressourcenverschwendung beim FPGA-Bruteforce verlässt die rein technische Ebene und öffnet Raum für Erkenntnisse in der Kryptanalyse und beim Reverse Engineering. Es zeigt sich, dass das reine Nachprogrammieren spezieller Algorithmen in Hardware zwar effizient sein mag, aber bei klar definierten Schwächen der Algorithmus selbst mit einfacheren Mitteln kompensiert oder umgangen werden kann. Der Fall Hollywood ist somit eine eindrucksvolle Demonstration dafür, dass oft „wenige Zeilen mathematischer Eleganz“ effektiver sein können als lange Codestränge auf systemnahen Hardware-Designs. Dies hat auch Auswirkungen auf das Design zukünftiger Systemsicherheitsmechanismen: Es genügt nicht, den Algorithmus nur durch Komplexität und Obfuskation abzusichern. Die mathematische Widerstandsfähigkeit und der Verzicht auf lineare Lösbarkeit sind ebenso von entscheidender Bedeutung.
Für Entwickler und Sicherheitsexperten bietet die Analyse des Hollywood-Firmwares ein wertvolles Lehrbeispiel für dynamische Systemanalyse, die Kombination von Software- und Hardware-Sicherheitskonzepten und die praktische Anwendung von kryptanalytischer Methodik. Letztlich zeigt sich, dass die interdisziplinäre Verbindung von Embedded Systems, Reverse Engineering und Mathematik zu eleganten Lösungen führen kann, die weder teure Hardware noch lange Rechenzeiten erfordern. Möchte man das Hollywood-Rätsel eigenständig lösen, ist es ratsam, sich neben der Kenntnis der MSP430-Architektur auch tiefgehend mit bitweisen Operationen, Endianness und einfachen algebraischen Gleichungen zu beschäftigen. Zahlreiche Debugger-Makros helfen dabei, Zwischenergebnisse sichtbar zu machen und die Funktionsweise schrittweise zu verstehen. Zudem ist die Nutzung von Tools wie Ghidra oder IDA Pro hilfreich, um Kontrollfluss- und Datenflussanalyse zu betreiben.