
Ce framework permet à l'utilisateur de découvrir des gadgets JOP et peut automatiser la construction d'une chaîne JOP complète pour contourner le DEP. JOP ROCKET est la solution ultime pour la programmation orientée saut sous Windows. JOP ROCKET trouve également le nouveau répartiteur à deux gadgets, ce qui élargit considérablement ce qui est possible avec le JOP.

REMARQUE : Avec la version 2.15, nous introduisons le dispatcher à deux gadgets — cela élargit considérablement les possibilités avec les gadgets dispatcher. De nombreuses optimisations et de nouvelles fonctionnalités ont été ajoutées avec la version 2.15 le 26 mai 2021.
Mise à jour : 29 novembre 2021 : J'ai téléchargé les diapositives du @Hack à Riyad ainsi qu'un livre blanc sur le JOP sans shellcode. Les vidéos de démonstration silencieuses utilisées dans la présentation sont disponibles ici : https://www.youtube.com/playlist?list=PLynyJsHgQaJ3AfQGKVkeZJ9cWa7mIqDMV
Mise à jour : 1er décembre 2022 : J'ai ajouté une section Q & A à la fin de ce GitHub, qui comprend des liens vers des ressources (présentations et articles).
Version actuelle : 2.15
L'outil Jump-oriented Programming Reversing Open Cyber Knowledge Expert Tool, ou JOP ROCKET, est un outil conçu pour faciliter la découverte de gadgets JOP dans un environnement Windows x86. Cet outil a été présenté au DEF CON 27, où il a fait l'objet d'une conférence du Dr Bramwell Brizendine et du Dr Josh Stroschein. Une mise à jour majeure en cours de développement a été publiée en septembre 2020, avec des mises à jour mineures prévues dans un avenir proche.
Veuillez vous rendre sur https://github.com/Bw3ll/JOP_ROCKET pour télécharger cet outil.
Un certain nombre de mises à jour majeures ont eu lieu. Il est recommandé de mettre à jour toute version antérieure à 2.15 afin de profiter des nombreuses améliorations. Celles-ci incluent la génération automatique de chaînes JOP, la découverte de nouveaux types de gadgets, de nouveaux types de gadgets dispatcher et les dispatchers à deux gadgets. JOP ROCKET a également subi de nombreux autres changements importants pour améliorer et optimiser ses performances et sa rapidité.
JOP ROCKET est un programme Python utilisant le moteur de désassemblage Capstone ainsi que d'autres dépendances. Cet outil d'exploitation logicielle est un artefact complet conçu pour faciliter la programmation orientée saut. Il est destiné à être exécuté sous Windows.
Les informations d'utilisation ne sont pas disponibles pour le moment au-delà de ce qui se trouve dans le menu d'aide. La construction d'exploits JOP n'est pas simple et repose sur des nuances subtiles, avec certains parallèles mais de nombreuses différences par rapport au ROP. Veuillez vous référer à la présentation du DEF CON pour voir une brève démonstration. https://www.youtube.com/watch?v=PMihX693mPE
Cet outil a été enseigné à la Dakota State University dans le programme doctoral, dans le cadre du cours CSC 848 : Advanced Software Exploitation, le cours le plus exigeant du programme. Les étudiants ont réalisé des exploits incluant le contournement de DEP et d'ASLR.
Merci à Austin Babcock pour son aide sur divers problèmes liés à JOP ROCKET, y compris ses instructions d'installation. C'est un maître du JOP.
Nous avons téléchargé ici une archive, JOP ROCKET challenge - toy binaries.zip, pour permettre aux personnes intéressées de tester et de pratiquer le JOP sur des binaires jouets d'exemple, en utilisant JOP ROCKET. Pouvez-vous contourner la prévention de l'exécution des données (DEP) ? C'est utile si vous voulez vous entraîner au JOP sur un binaire dont vous savez qu'il est vulnérable à coup sûr et qu'il dispose des bons gadgets. Il existe une version plus facile et une version plus difficile du même binaire. Le JOP sera probablement plus difficile au début, jusqu'à ce qu'on prenne le coup de main. Une fois que vous maîtrisez le JOP avec ces binaires, vous pouvez l'essayer sur des gadgets du monde réel, à condition qu'ils disposent de suffisamment de gadgets. Si vous utilisez le paradigme du gadget dispatcher, gardez à l'esprit que vous avez besoin d'un gadget dispatcher. Le JOP est également possible en combinaison avec le ROP, en utilisant un gadget JOP pour pointer vers un RET, de sorte que JMP EDX puisse avoir EDX pointant vers RET. C'est plus utile si vous n'avez besoin que d'un ou deux gadgets JOP pour faire fonctionner le ROP. Les binaires de l'archive devraient vous permettre d'utiliser le paradigme du gadget dispatcher de plusieurs manières différentes !
Avec le paradigme du gadget dispatcher du JOP, vous pouvez éliminer à 100 % le ROP, même s'il est plus facile de commencer avec deux gadgets ROP pour charger la table de dispatch et le gadget dispatcher. La chaîne JOP préconstruite le fera automatiquement pour vous, à condition qu'ils soient présents. À partir de là, il peut s'agir de JOP pur, utilisant à la fois des sauts indirects et des appels indirects (JMP EBX, CALL EDX, etc.).
Installez Python 2.7. Le plus simple est de passer par le site web : https://www.python.org/download/releases/2.7/
Si vous avez déjà Python 3, vous aurez quand même besoin de Python 2.7 car l'outil ne fonctionnera pas correctement avec Python 3.
Si vous avez les deux, vous devrez ajouter le commentaire spécial :
#!python2
en haut de rocket.py. Exécutez ensuite avec « py rocket.py » plutôt que « python rocket.py ». Cela garantira que le programme est exécuté avec Python 2.7. Vous pouvez aussi simplement faire py -2 rocket.py

installez pip s'il n'est pas déjà inclus avec Python.
Vous devrez enregistrer le script fourni et l'exécuter, conformément aux instructions du lien. Si vous rencontrez une erreur, essayez d'utiliser le script « alternatif ».
Si pip ne fonctionne toujours pas, essayez d'ajouter « C:\python27\Scripts » (ou votre répertoire correspondant) à la variable système Path :

Commencez à installer les dépendances avec pip !
Remarque : Les installations avec pip devraient fonctionner avec le terminal Windows, mais peuvent ne pas fonctionner dans un environnement Cygwin. Si vous utilisez Cygwin, vous devrez peut-être installer à partir du code source à la place. Cela peut être plus long, et vous êtes invité à consulter la documentation la plus récente des différents créateurs des dépendances.
pip install capstone
pip install pefile2
Vous avez probablement déjà pefile installé avec Python 2.7, mais cette version est ancienne.
C'est Pefile2 qu'il vous faut.
Vous devrez peut-être faire pip uninstall pefile pour que le programme utilise pefile2.
Etc. Une liste des dépendances se trouve en bas de ce document. Chacune doit être installée si ce n'est pas déjà fait.
Les deux ci-dessus sont probablement les seules que vous aurez besoin d'installer vous-même.
Beaucoup de dépendances sont déjà fournies avec Python. Pour lister les modules disponibles, ouvrez une invite de commande :

Parcourez la liste et vérifiez si vous avez toutes les dépendances. Pour celles que vous n'avez pas, installez-les avec pip ou à partir du code source.
Remarque : pywin32 est utilisé pour Win32file et Win32api
Vous devez avoir dans un même répertoire les cinq fichiers : rocket.py, lists,py, checkIt.py, ui.py et stackpivot.py. Pour commencer à utiliser l'outil, exécutez en ligne de commande python rocket.py filename.exe — filename.exe étant le programme pour lequel vous souhaitez obtenir des gadgets JOP ou des chaînes JOP.