
Questo framework consente all'utente di scoprire gadget JOP e può automatizzare la costruzione di una catena JOP completa per bypassare il DEP. JOP ROCKET è la soluzione definitiva per la programmazione jump-oriented su Windows. JOP ROCKET trova inoltre il nuovo dispatcher a due gadget, che amplia notevolmente ciò che è possibile fare con JOP.

NOTA: Con la 2.15, introduciamo il dispatcher a due gadget: questo espande significativamente le possibilità con i gadget dispatcher. Molte ottimizzazioni e ulteriori nuove funzionalità sono state aggiunte con la 2.15 il 26 maggio 2021.
Aggiornamento: 29 novembre 2021: ho caricato le slide per @Hack a Ryadh e anche un white paper su JOP senza shellcode. I video demo silenziosi usati nel talk si trovano qui: https://www.youtube.com/playlist?list=PLynyJsHgQaJ3AfQGKVkeZJ9cWa7mIqDMV
Aggiornamento: 1 dicembre 2022: ho aggiunto una sezione Q & A alla fine di questa pagina GitHub, che include collegamenti a risorse (talk e paper).
Versione attuale: 2.15
The Jump-oriented Programming Reversing Open Cyber Knowledge Expert Tool, o JOP ROCKET, è uno strumento progettato per facilitare la scoperta di gadget JOP in un ambiente Windows x86. Questo strumento è stato rilasciato al DEF CON 27, dove è stato oggetto di un talk del Dr. Bramwell Brizendine e del Dr. Josh Stroschein. Un importante aggiornamento è stato rilasciato nel settembre 2020, con aggiornamenti minori previsti nel prossimo futuro.
Si prega di visitare https://github.com/Bw3ll/JOP_ROCKET per scaricare questo strumento.
Si sono verificati numerosi aggiornamenti importanti. Si consiglia di aggiornare qualsiasi versione precedente alla 2.15, per usufruire dei numerosi aggiornamenti. Questi includono la generazione automatica di catene JOP, la scoperta di nuovi tipi di gadget, nuovi tipi di gadget dispatcher e i dispatcher a due gadget. JOP ROCKET ha anche subito molte altre importanti modifiche per migliorare e ottimizzare le proprie prestazioni e velocità.
JOP ROCKET è un programma Python che utilizza il motore di disassemblaggio Capstone e altre dipendenze. Questo strumento di sfruttamento software è un artefatto completo progettato per facilitare la programmazione orientata ai salti (Jump-oriented Programming). È pensato per essere eseguito su Windows.
Le informazioni sull'uso non sono disponibili al momento oltre a quelle nel menu di aiuto. La costruzione di exploit JOP non è semplice ed è molto sfumata, con alcuni parallelismi ma molte differenze rispetto al ROP. Fare riferimento al talk del DEF CON per vedere una breve demo. https://www.youtube.com/watch?v=PMihX693mPE
Questo strumento è stato insegnato alla Dakota State University nel programma di dottorato, nell'ambito del corso CSC 848: Advanced Software Exploitation, il corso più impegnativo del programma. Gli studenti hanno completato exploit che includevano il bypass di DEP e ASLR.
Un ringraziamento ad Austin Babcock per il suo aiuto con vari problemi relativi a JOP ROCKET, incluse le sue istruzioni di installazione. È un maestro di JOP.
Abbiamo caricato un archivio qui, JOP ROCKET challenge - toy binaries.zip, per consentire agli interessati di testare e fare pratica con JOP su alcuni binari giocattolo di esempio, usando JOP ROCKET. Riesci a bypassare la Data Execution Prevention (DEP)? Questo è utile se vuoi esercitarti con JOP su un binario che sai essere sicuramente vulnerabile e dotato dei gadget giusti. Esiste una versione più facile e una più difficile dello stesso binario. Anche se JOP probabilmente sarà più difficile la prima volta, finché non si prende la mano. Una volta padroneggiato JOP con questi binari, puoi provarlo su alcuni gadget del mondo reale, supponendo che abbiano gadget sufficienti. Se stai usando il paradigma del gadget dispatcher, tieni presente che hai bisogno di un gadget dispatcher. JOP è possibile anche mescolato con ROP, usando un gadget JOP per puntare a una RET, quindi JMP EDX potrebbe fare in modo che EDX punti a RET. Questo è più utile se hai bisogno solo di uno o due gadget JOP per far funzionare il ROP. I binari nell'archivio dovrebbero comunque permetterti di usare il paradigma del gadget dispatcher in alcuni modi diversi!
Con il paradigma del gadget dispatcher di JOP, puoi eliminare al 100% il ROP, anche se è più semplice iniziare con due gadget ROP, per caricare la tabella di dispatch e il gadget dispatcher. La catena JOP predefinita lo farà automaticamente per te, supponendo che siano presenti. Da lì, può essere JOP puro, usando sia salti indiretti che chiamate indirette (JMP EBX, CALL EDX, ecc.).
Installa Python 2.7. Il modo più semplice per farlo sarà dal sito web: https://www.python.org/download/releases/2.7/
Se hai già Python 3, avrai comunque bisogno di Python 2.7 perché lo strumento non funzionerà correttamente con Python 3.
Se li hai entrambi, dovrai aggiungere il commento speciale:
#!python2
in cima a rocket.py. Quindi esegui con "py rocket.py" invece di "python rocket.py". Questo garantirà che il programma venga eseguito con Python 2.7. In alternativa, puoi semplicemente eseguire py -2 rocket.py

Installa pip se non è già incluso con Python.
Dovrai salvare lo script fornito ed eseguirlo, come da istruzioni sul link. Se incontri un errore, prova a usare lo script "alternate".
Se pip continua a non funzionare, prova ad aggiungere "C:\python27\Scripts" (o la directory corrispondente) alla variabile di sistema Path:

Inizia a installare le dipendenze con pip!
Nota: Le installazioni con pip dovrebbero funzionare usando il terminale di Windows, ma potrebbero non funzionare in un ambiente Cygwin. Se usi Cygwin, potresti dover installare dal codice sorgente. Questo può essere un'impresa più lunga, e ti rimandiamo alla documentazione più recente dei diversi creatori delle dipendenze.
pip install capstone
pip install pefile2
Probabilmente hai già pefile installato con Python 2.7, ma questa versione è vecchia.
Pefile2 è ciò di cui hai bisogno.
Potresti aver bisogno di pip uninstall pefile per fare in modo che il programma usi pefile2.
Ecc... Un elenco delle dipendenze si trova in fondo a questo documento. Ognuna deve essere installata, se non lo è già.
Le due sopra sono probabilmente le uniche che dovrai installare tu stesso.
Molte delle dipendenze sono già incluse con Python. Per elencare i moduli disponibili, apri un prompt:

Controlla l'elenco e verifica di avere tutte le dipendenze. Per quelle che non hai, installale con pip o tramite codice sorgente.
Nota: pywin32 è usato per Win32file e Win32api
Dovresti avere in una directory tutti e cinque i file: rocket.py, lists,py, checkIt.py, ui.py e stackpivot.py. Per iniziare a usare lo strumento, esegui dalla riga di comando: python rocket.py filename.exe -- dove filename.exe è il programma di cui desideri ottenere gadget JOP o catene JOP.
Se ricevi errori come "SyntaxError: Missing parentheses in call to 'print'", è probabile che il programma stia girando con Python 3. Prova ad applicare la correzione descritta nel Passo 1 per far usare a Python 2 il programma.
Gli errori relativi a "lists" o "ui" sono probabilmente causati dalla posizione dei file lists.py e ui.py. Assicurati che questi file siano nella stessa directory di rocket.py.