
ROP ROCKET è un framework avanzato per attacchi di riutilizzo del codice, con ampie capacità di generazione di catene ROP, inclusi nuovi attacchi Syscall su Windows, un nuovo Heaven's Gate e ROP "shellcodeless". Il framework utilizza emulazione e offuscamento per espandere la superficie d'attacco.
Questo nuovo e avanzato framework ROP ha debuttato al DEF CON 31 con alcune capacità senza precedenti. ROCKET genera diversi tipi di chain e fornisce nuovi pattern o tecniche.
Si prega di notare che è ancora un lavoro in corso, con alcune capacità aggiornate e potenziate da aggiungere. Gli aggiornamenti dovrebbero essere regolari. Se si incontrano problemi, si prega di segnalarli su issues o di inviarmi un'email e li risolverò. Verranno inoltre aggiunte modalità alternative per generare determinati tipi di gadget.
Il lavoro è in corso e attualmente vengono aggiunte regolarmente nuove funzionalità. Si prega di controllare periodicamente.

ROP ROCKET è molto potente con alcune capacità uniche, che includono:
Agosto 2025: ROP ROCKET ha un mini-tool per bypass ASLR, rilasciato al DEFCON il 10 agosto 2025, che genererà nove bypass ASLR verso ASLR a 64 bit ad alta entropia.


Deve essere installato come pacchetto locale. C'è un file setup.py. Per farlo, basta andare nella directory e inserire il seguente comando:
py -m pip install -e ./ A seconda della tua installazione di Python, potresti dover variare leggermente. Se visualizzi i pacchetti installati, dovresti vedere ROP-ROCKET apparire: py -m pip list Si ritiene che tutte le dipendenze richieste siano incluse, ma se incontri problemi - a causa della novità di questa release, apri semplicemente un issue e lo esamineremo.
Esegui semplicemente dalla riga di comando:py rop2.py rop_tester_syscall.exe Un rop_tester_syscall.exe completamente sfruttabile è incluso anche come file zip. È stato sviluppato solo per aiutare a garantire che tutti i gadget vengano trovati e non persi.
Questo strumento è stato ispirato dal molto più vecchio JOP ROCKET, che ho scritto per parte della mia tesi di dottorato e rilasciato al DEF CON 27 nel 2019. Ciò ha portato a molti ulteriori sviluppi su JOP e a molte nuove capacità JOP, oltre a fornire ampia documentazione sulla meccanica e l'uso di JOP in diversi articoli. Quel tool è un po' datato al momento - è uno stile più vecchio di Python. Con questa nuova ricerca, parte di questa ispirazione è cercare di fare qualcosa di nuovo e diverso nell'area del ROP. Abbiamo soddisfatto quel mandato finora. Quindi in un certo senso questo strumento è ispirato da un tool JOP, permettendoci forse di pensare fuori dagli schemi e in modi meno convenzionali di quanto faremmo normalmente con ROP. ROP ROCKET non ha capacità JOP - è strettamente dedicato a ROP. L'unico tool completamente dedicato a JOP è JOP ROCKET, mentre tutto il resto ha solo un segnaposto per lavori futuri su JOP. Comunque, volevo chiarire queste informazioni storiche, in modo che la somiglianza nei nomi non confonda nessuno, poiché si tratta di due strumenti molto diversi e non correlati.

ROCKET ha generato un attacco Heaven's Gate da x86 a x64, stampandolo a schermo e salvandolo.

ROCKET ha generato una syscall Windows per NtProtectVirtualMemory per Win 10/11, stampandola a schermo e salvandola.

Grazie alle sue capacità di emulazione interna, ROCKET può considerare molte combinazioni insolite di gadget. Quanto sopra ha lo scopo di catturare un puntatore allo stack (ESP) e spostarlo in ECX. È in grado di trovare mezzi alternativi per farlo, invece di utilizzare un singolo gadget ROP, che potrebbe non essere disponibile. Per prima cosa sposta esp in edi; poi edi viene spostato in ebx; e poi ebx viene spostato in esi. ECX viene impostato a zero, tramite overflow intero, e quindi il valore di esi (contenente il puntatore allo stack) viene aggiunto a ecx. Il risultato è che il puntatore allo stack si trova in ecx. Un gadget equivalente più corto sarebbe mov ecx, esp # ret - anche se non sempre possibile. ROCKET gestisce anche correttamente le istruzioni pop extra, producendo il filler corretto. Nota che ROP ROCKET considera attentamente i registri che devono essere protetti ("registri esclusi"), che possono cambiare da gadget a gadget. Nell'esempio sopra, nessun registro viene "danneggiato" tra quelli che stiamo cercando di proteggere.

ROCKET offre molte opzioni per cosa e come catturare i gadget. Le impostazioni predefinite possono essere impostate nel file config.cfg ovviamente. Qui l'utente decide di esaminare solo blocchi di memoria con un massimo di 0xa (15) byte.

Non solo puoi stampare singole catene ROP, ma puoi stampare tutti i gadget trovati, organizzati per categoria, come mov edx. Ci sono centinaia di possibilità. Puoi anche perfezionare i risultati modificando il numero di righe per gadget.

Quando si stampano i risultati, ci sono molte opzioni per diversi tipi di filtri da applicare per escludere gadget, come ASLR, CFG, DLL di sistema Windows o semplici bad byte. Questo è tutto altamente personalizzabile.

A volte è necessario offuscare un determinato gadget che potrebbe altrimenti non essere disponibile a causa di bad byte nell'indirizzo del gadget. Abbiamo molte opzioni per questo e puoi escludere in base ai registri utilizzati o ai bad byte.
Qui l'utente ha utilizzato l'offuscamento per decodificare dinamicamente a runtime l'indirizzo per xor eax, edi # ret, che ipoteticamente non poteva usare altrimenti. Una volta decodificato, push r32 / ret lo fa eseguire immediatamente. Questo è un ottimo modo per utilizzare gadget altrimenti non disponibili a causa di bad byte. ROCKET lo completa in secondi. La sua capacità di farlo con overflow intero è quasi garantita che funzioni, supponendo che non ci siano problemi con bad byte o mancanza di registri disponibili (cioè l'utente ha escluso troppi registri).
Questo strumento è stato creato e scritto dal Dr. Bramwell Brizendine, a partire dall'inizio del 2023.
Shiva Shashank Kusuma ha lavorato per il Dr. Bramwell Brizendine come studente laureato per sviluppare pattern per ROP ROCKET. Ha svolto un lavoro inestimabile ed è stato co-relatore al DEFCON e al Black Hat Arsenal. Nel 2025, Shiva ha anche iniziato a contribuire alla programmazione di ROP ROCKET.
18/09/2023 - Vari miglioramenti; ulteriore supporto per modi varianti di leak del far jump che porta alla syscall Windows.
03/2024 - Molti importanti aggiornamenti su base abbastanza regolare - cercate di mantenere la copia più aggiornata possibile, se intendete usare attivamente ROP ROCKET. Le modifiche individuali non verranno elencate. Modifiche minori e aggiornamenti sono probabilmente in corso. Solo le nuove funzionalità principali verranno descritte. (Alcune nuove funzionalità minori sono già state aggiunte.) Fine marzo - 3 aprile 2024 - Aggiornamenti estesi all'emulazione per migliorare e aumentare l'efficienza; supporto per molte più opzioni di possibilità per la generazione di singoli gadget; correzione di bug; nuova release di VirtualAlloc e VirtualProtect tramite pushad. Mentre altri strumenti hanno già fornito supporto per VirtualProtect e VirtualAlloc in precedenza, motivo per cui noi non l'avevamo fatto, ora riteniamo che sarebbe negligente non includerli, specialmente perché possono essere migliorati dalle capacità dello strumento. Creati template completi per VirtualAlloc e VirtualProtect tramite pushad, che includono anche shellcode (pop a calc).
05/2024 - Rimodellamento massiccio delle syscall Windows per espandere notevolmente ciò che può essere trovato con binari reali. Anche gadget lunghi e indesiderati che fanno leak del registro FS (necessario per eseguire syscall Windows in SysWow64, cioè a 32 bit) possono essere gestiti in modo automatizzato. Numerosi altri miglioramenti minori.
28/06/2025 - Aggiornamenti massicci, incluso il supporto per 17 nuove WinAPI non incluse in precedenza in ROP ROCKET. Aggiunta la possibilità di definire un importo di overflow iniziale - questo è rilevante poiché può influenzare i calcoli su stringhe o puntatori durante l'emulazione.