
ROP ROCKET ist ein fortschrittliches Code-Reuse-Angriffsframework mit umfangreichen ROP-Chain-Generierungsfunktionen, einschließlich für neuartige Windows-Syscall-Angriffe, ein neuartiges Heaven's Gate und "shellcodeless" ROP. Das Framework nutzt Emulation und Verschleierung, um die Angriffsfläche zu erweitern.
Dieses neue, fortschrittliche ROP-Framework hat auf der DEF CON 31 mit einigen beispiellosen Fähigkeiten sein Debüt gegeben. ROCKET generiert mehrere Arten von Chains und bietet neue Muster oder Techniken.
Bitte beachten Sie, dass dies noch ein Work-in-Progress ist, mit einigen aktualisierten und erweiterten Funktionen, die noch hinzugefügt werden. Updates sollten regelmäßig erfolgen. Wenn Sie auf Probleme stoßen, melden Sie diese bitte über die Issues oder senden Sie mir eine E-Mail, und ich werde sie beheben. Weitere, alternative Methoden zur Generierung bestimmter Gadget-Typen werden ebenfalls hinzugefügt.
Die Arbeit läuft, derzeit werden regelmäßig neue Funktionen hinzugefügt. Bitte schauen Sie regelmäßig vorbei.

ROP ROCKET ist sehr leistungsfähig mit einzigartigen Fähigkeiten, die Folgendes umfassen:
August 2025: ROP ROCKET verfügt über ein ASLR Bypass Mini-Tool, das am 10. August 2025 auf der DEFCON veröffentlicht wurde und neun ASLR-Umgehungen für 64-Bit High Entropy ASLR generiert.


Dies sollte als lokales Paket installiert werden. Es gibt eine setup.py-Datei. Gehen Sie dazu einfach in das Verzeichnis und geben Sie den folgenden Befehl ein:
py -m pip install -e ./ Je nach Ihrer Python-Installation müssen Sie dies möglicherweise leicht variieren. Wenn Sie installierte Pakete anzeigen, sollte ROP-ROCKET erscheinen: py -m pip list Es wird angenommen, dass alle erforderlichen Abhängigkeiten enthalten sind. Sollten jedoch aufgrund der Neuheit dieser Version Probleme auftreten, öffnen Sie einfach ein Issue, und wir werden uns darum kümmern.
Führen Sie es einfach von der Befehlszeile aus: py rop2.py rop_tester_syscall.exe Eine vollständig ausnutzbare rop_tester_syscall.exe ist ebenfalls als ZIP-Datei enthalten. Dies wurde entwickelt, um sicherzustellen, dass alle Gadgets gefunden und nicht übersehen werden.
Dieses Tool wurde von dem viel älteren JOP ROCKET inspiriert, das ich als Teil meiner Doktorarbeit geschrieben und 2019 auf der DEF CON 27 veröffentlicht habe. Dies führte zu vielen weiteren Entwicklungen im Bereich JOP und vielen neuen JOP-Funktionen sowie zu einer umfangreichen Dokumentation der Mechaniken und Verwendung von JOP in verschiedenen Artikeln. Dieses Tool ist derzeit etwas veraltet – es ist ein älterer Python-Stil. Mit dieser neuen Forschung ist ein Teil dieser Inspiration der Versuch, etwas Neues und Andersartiges im Bereich ROP zu schaffen. Bisher haben wir dieses Mandat erfüllt. In gewisser Weise ist dieses Tool also von einem JOP-Tool inspiriert, was uns vielleicht ermöglicht, über den Tellerrand hinauszuschauen und auf unkonventionellere Weise zu denken, als wir es normalerweise mit ROP tun. ROP ROCKET hat keine JOP-Fähigkeiten – es widmet sich ausschließlich ROP. Das einzige vollständig dedizierte JOP-Tool ist JOP ROCKET, da alles andere nur einen Platzhalter für zukünftige Arbeiten an JOP hat. Wie auch immer, ich wollte diese historischen Informationen klarstellen, damit die Namensähnlichkeit niemanden verwirrt, da es sich um zwei sehr unterschiedliche und unabhängige Tools handelt.

ROCKET hat einen Heaven's Gate x86-zu-x64-Angriff generiert, der auf dem Bildschirm ausgegeben und gespeichert wird.

ROCKET hat einen Windows-Syscall für NtProtectVirtualMemory für Windows 10/11 generiert, der auf dem Bildschirm ausgegeben und gespeichert wird.

Dank seiner internen Emulationsfähigkeiten kann ROCKET viele ungewöhnliche Kombinationen von Gadgets berücksichtigen. Das obige Beispiel soll einen Stack-Zeiger (ESP) erfassen und nach ECX verschieben. Es ist in der Lage, alternative Wege zu finden, anstatt nur ein einzelnes ROP-Gadget zu verwenden, das möglicherweise nicht verfügbar ist. Zuerst wird esp nach edi verschoben; edi wird dann nach ebx verschoben; und ebx wird dann nach esi verschoben. ECX wird per Integer Overflow auf Null gesetzt, und dann wird der Wert von esi (unser Stack-Zeiger) zu ecx addiert. Das Ergebnis ist, dass der Stack-Zeiger in ecx ist. Ein äquivalentes, kürzeres Gadget wäre mov ecx, esp # ret – obwohl dies nicht immer möglich ist. ROCKET behandelt auch die zusätzlichen pop-Instruktionen korrekt und erzeugt den richtigen Füller. Beachten Sie, dass ROP ROCKET sorgfältig Register berücksichtigt, die geschützt werden müssen ("excluded registers"), die von Gadget zu Gadget variieren können. Im obigen Beispiel werden keine Register "überschrieben", die wir zu schützen versuchen.

ROCKET bietet viele Optionen dafür, was und wie Sie Gadgets erfassen. Standardwerte können natürlich in der config.cfg-Datei festgelegt werden. Hier entscheidet der Benutzer, nur Speicherblöcke mit maximal 0xa (15) Bytes untersuchen zu wollen.

Sie können nicht nur einzelne ROP-Chains ausgeben, sondern auch alle gefundenen Gadgets, sortiert nach Kategorie, wie z. B. mov edx. Es gibt hunderte Möglichkeiten. Sie können die Ergebnisse auch verfeinern, indem Sie die Anzahl der Zeilen pro Gadget ändern.

Beim Ausgeben der Ergebnisse gibt es viele Optionen für verschiedene Filtertypen, die angewendet werden können, um Gadgets auszuschließen, z. B. ASLR, CFG, Windows-System-DLLs oder einfach nur Bad Bytes. Dies ist alles hochgradig anpassbar.

Manchmal müssen Sie ein bestimmtes Gadget verschleiern, das aufgrund von Bad Bytes in der Gadget-Adresse sonst möglicherweise nicht verfügbar wäre. Wir haben viele Optionen dafür, und Sie können auch auf der Grundlage von verwendeten Registern oder Bad Bytes ausschließen.

Hier hat der Benutzer Obfuscation verwendet, um die Adresse für ein xor eax, edi # ret zur Laufzeit dynamisch zu decodieren, das er hypothetisch sonst nicht verwenden könnte. Nach der Decodierung führt das push r32 / ret dazu, dass dieses sofort ausgeführt wird. Dies ist eine großartige Möglichkeit, ansonsten aufgrund von Bad Bytes nicht verfügbare Gadgets zu nutzen. ROCKET erledigt dies in Sekunden. Seine Fähigkeit, dies mit Integer Overflow zu tun, ist so gut wie sicher funktionsfähig, vorausgesetzt, es gibt keine Probleme mit Bad Bytes oder fehlenden verfügbaren Registern (d.h. der Benutzer hat zu viele Register ausgeschlossen).
Dieses Tool wurde von Dr. Bramwell Brizendine erstellt und geschrieben, beginnend Anfang 2023.
Shiva Shashank Kusuma arbeitete für Dr. Bramwell Brizendine als Doktorand, um Muster für ROP ROCKET zu entwickeln. Er hat unschätzbare Arbeit geleistet und war Co-Speaker auf der DEFCON und dem Black Hat Arsenal. Im Jahr 2025 begann Shiva auch, zur Programmierung von ROP ROCKET beizutragen.
09/18/2023 – Verschiedene Erweiterungen; weitere Unterstützung für variantenreiche Methoden zum Leaken des Far Jumps, der zum Windows-Syscall führt.
3/2024 – Viele wichtige Updates in relativ regelmäßigen Abständen – bitte versuchen Sie, wenn möglich, die aktuellste Kopie zu behalten, wenn Sie ROP ROCKET aktiv nutzen möchten. Einzelne Änderungen werden nicht aufgeführt. Kleinere Änderungen und Updates werden voraussichtlich fortlaufend sein. Nur größere neue Funktionen werden beschrieben. (Einige kleinere neue Funktionen wurden bereits hinzugefügt.)
Ende März – 3. April 2024 – Umfangreiche Updates der Emulation zur Verbesserung und Steigerung der Effizienz; Unterstützung für viele weitere Möglichkeiten für die Generierung einzelner Gadgets; Behebung von Fehlern; neue Veröffentlichung von VirtualAlloc und VirtualProtect per pushad. Während andere Tools bereits Unterstützung für VirtualProtect und VirtualAlloc geboten haben, weshalb wir dies nicht taten, sind wir nun der Meinung, dass es nachlässig wäre, diese nicht aufzunehmen, insbesondere da diese durch die Fähigkeiten des Tools verbessert werden können. Es wurden vollständige Vorlagen für VirtualAlloc und VirtualProtect per pushad erstellt, die auch Shellcode enthalten (pop a calc).
5/2024 – Massives Überarbeiten der Windows-Syscalls, um das Auffinden in realen Binärdateien stark zu erweitern. Selbst lange, unerwünschte Gadgets, die das FS-Register leaken (erforderlich für Windows-Syscalls in SysWow64, d.h. 32-Bit), können automatisiert verarbeitet werden. Zahlreiche weitere kleinere Verbesserungen.
6/28/2025 – Massive Updates, einschließlich Unterstützung für 17 neue WinAPIs, die zuvor nicht in ROP ROCKET enthalten waren. Möglichkeit hinzugefügt, einen anfänglichen Overflow-Betrag zu definieren – dies ist relevant, da es Berechnungen für Strings oder Pointer bei der Emulation beeinflussen kann.