
ROP ROCKET est un framework avancé d'attaque par réutilisation de code, avec des capacités étendues de génération de chaînes ROP, incluant une nouvelle attaque par Syscalls Windows, un nouveau Heaven's Gate, et du ROP « sans shellcode ». Le framework utilise l'émulation et l'obfuscation pour élargir la surface d'attaque.
Ce nouveau framework ROP avancé a fait ses débuts au DEF CON 31 avec des capacités sans précédent. ROCKET génère plusieurs types de chaînes et propose de nouveaux modèles ou techniques.
Veuillez noter qu'il s'agit encore d'un travail en cours, avec quelques capacités mises à jour et améliorées à ajouter. Les mises à jour devraient être régulières. Si vous rencontrez des problèmes, veuillez les signaler dans les issues ou m'envoyer un e-mail, et je les résoudrai. Des moyens alternatifs de générer certains types de gadgets seront également ajoutés.
Le travail se poursuit avec de nouvelles capacités ajoutées régulièrement à l'heure actuelle. Veuillez revenir régulièrement.

ROP ROCKET est très puissant avec des capacités uniques, qui incluent les suivantes :
Août 2025 : ROP ROCKET dispose d'un mini-outil de contournement ASLR, publié au DEFCON le 10 août 2025, qui générera neuf contournements ASLR vers l'ASLR 64 bits à haute entropie.


Cela doit être installé en tant que paquet local. Il y a un fichier setup.py. Pour ce faire, allez simplement dans le répertoire et entrez la commande suivante :
py -m pip install -e ./ Selon votre installation Python, vous devrez peut-être varier légèrement. Si vous allez voir les paquets installés, vous devriez voir ROP-ROCKET apparaître : py -m pip list Il est estimé que toutes les dépendances requises sont incluses, mais si vous rencontrez des problèmes - en raison de la nouveauté de cette version, ouvrez simplement un ticket et nous examinerons cela.
Exécutez-le simplement depuis la ligne de commande :py rop2.py rop_tester_syscall.exe Un fichier rop_tester_syscall.exe entièrement exploitable est également inclus sous forme de fichier zip. Il a été développé juste pour s'assurer que tous les gadgets sont trouvés et non manqués.
Cet outil a été inspiré par le bien plus ancien JOP ROCKET, que j'ai écrit pour une partie de ma thèse de doctorat et publié au DEF CON 27 en 2019. Cela a conduit à beaucoup de développements supplémentaires sur JOP et à de nombreuses nouvelles capacités JOP, ainsi qu'à la fourniture d'une documentation complète sur les mécanismes et l'utilisation de JOP dans différents articles. Cet outil est un peu obsolète pour le moment - c'est un style plus ancien de Python. Avec cette nouvelle recherche, une partie de cette inspiration est d'essayer de faire quelque chose de nouveau et de différent dans le domaine du ROP. Nous avons rempli ce mandat jusqu'à présent. Donc d'une certaine manière, cet outil est inspiré par un outil JOP, nous permettant peut-être d'essayer de sortir des sentiers battus et de manière moins conventionnelle que nous ne le ferions normalement avec ROP. ROP ROCKET n'a aucune capacité JOP - il est strictement dédié au ROP. Le seul outil entièrement dédié à JOP est JOP ROCKET, car tout le reste n'a qu'une sorte d'espace réservé pour de futurs travaux sur JOP. Quoi qu'il en soit, je voulais clarifier ces informations historiques, afin que la similitude des noms ne confonde personne, car ce sont deux outils très différents et sans rapport.

ROCKET a généré une attaque Heaven's Gate x86 vers x64, l'affichant à l'écran et la sauvegardant.

ROCKET a généré un appel système Windows pour NtProtectVirtualMemory pour Win 10/11, l'affichant à l'écran et le sauvegardant.

Grâce à ses capacités d'émulation internes, ROCKET peut envisager de nombreuses combinaisons inhabituelles de gadgets. Ce qui précède est destiné à capturer un pointeur de pile (ESP) et à le déplacer vers ECX. Il est capable de trouver des moyens alternatifs de le faire, plutôt que d'utiliser un seul gadget ROP, qui peut ne pas être disponible. D'abord, il déplace esp vers edi ; edi est ensuite déplacé vers ebx ; et ebx est ensuite déplacé vers esi. ECX est mis à zéro, via un débordement d'entier, puis la valeur de esi (contenant notre pointeur de pile) est ajoutée à ecx. Le résultat est que le pointeur de pile se trouve dans ecx. Un gadget équivalent plus court serait mov ecx, esp # ret - bien que cela ne soit pas toujours possible. ROCKET gère également correctement les instructions pop supplémentaires, produisant le remplissage correct. Notez que ROP ROCKET prend soigneusement en compte les registres qui doivent être protégés ("registres exclus"), qui peuvent changer d'un gadget à l'autre. Dans l'exemple ci-dessus, aucun registre que nous essayons de protéger n'est "écrasé".

ROCKET offre de nombreuses options pour quoi et comment capturer des gadgets. Les valeurs par défaut peuvent être définies dans le fichier config.cfg bien sûr. Ici, l'utilisateur décide de n'examiner que des blocs de mémoire d'un maximum de 0xa (15) octets.

Non seulement vous pouvez imprimer des chaînes ROP individuelles, mais vous pouvez imprimer tous les gadgets trouvés, organisés par catégorie, comme mov edx. Il existe des centaines de possibilités. Vous pouvez également affiner les résultats en modifiant le nombre de lignes par gadget.

Lors de l'impression des résultats, il existe de nombreuses options pour différents types de filtres à appliquer pour exclure des gadgets, comme ASLR, CFG, les DLL système Windows, ou simplement des octets interdits. Tout cela est hautement personnalisable.

Parfois, vous devez obscurcir un certain gadget qui pourrait autrement s'avérer indisponible, en raison d'octets interdits dans l'adresse du gadget. Nous avons de nombreuses options pour cela, et vous pouvez également exclure en fonction des registres utilisés ou des octets interdits.
Ici, l'utilisateur a utilisé l'obscurcissement pour décoder dynamiquement à l'exécution l'adresse d'un xor eax, edi # ret, qu'il ne pourrait hypothétiquement pas utiliser autrement. Une fois décodé, le push r32 / ret provoque son exécution immédiate. C'est un excellent moyen d'utiliser des gadgets autrement indisponibles en raison d'octets interdits. ROCKET le fait en quelques secondes. Sa capacité à le faire avec un débordement d'entier est quasiment garantie, à condition qu'il n'y ait pas de problèmes d'octets interdits ou de manque de registres disponibles (c'est-à-dire que l'utilisateur a exclu trop de registres).
Cet outil a été créé et écrit par Dr. Bramwell Brizendine, à partir de début 2023.
Shiva Shashank Kusuma a travaillé pour le Dr. Bramwell Brizendine en tant qu'étudiant diplômé pour développer des modèles pour ROP ROCKET. Il a effectué un travail inestimable et a été co-conférencier au DEFCON et au Black Hat Arsenal. En 2025, Shiva a également commencé à contribuer à la programmation de ROP ROCKET.
09/18/2023 - Diverses améliorations ; support supplémentaire pour des variantes de fuite du saut lointain qui mène à l'appel système Windows.
3/2024 - De nombreuses mises à jour importantes sur une base relativement régulière - veuillez essayer de conserver la copie la plus récente si possible, si vous avez l'intention d'utiliser activement ROP ROCKET. Les changements individuels ne seront pas listés. Des modifications et mises à jour mineures sont susceptibles de se poursuivre. Seules les nouvelles fonctionnalités majeures seront décrites. (Quelques nouvelles fonctionnalités mineures ont déjà été ajoutées.) Fin mars - 3 avril 2024 - Mises à jour importantes de l'émulation pour améliorer l'efficacité ; support de nombreuses autres options de possibilités pour la génération de gadgets individuels ; correction de bugs ; nouvelle version de VirtualAlloc et VirtualProtect via pushad. Alors que d'autres outils avaient déjà fourni un support pour VirtualProtect et VirtualAlloc, c'est pourquoi nous ne l'avions pas fait, nous estimons maintenant qu'il serait négligent de ne pas les inclure, surtout qu'elles peuvent être améliorées par les capacités de l'outil. Création de modèles complets pour VirtualAlloc et VirtualProtect via pushad, qui incluent également du shellcode (pop a calc).
5/2024 - Refonte massive des appels système Windows pour étendre considérablement ce qui peut être trouvé avec des binaires réels. Même les gadgets longs et indésirables qui fuient le registre FS (nécessaire pour effectuer des appels système Windows dans SysWow64, c'est-à-dire 32 bits) peuvent être traités de manière automatisée. Nombreuses autres améliorations mineures.
6/28/2025 - Mises à jour massives, incluant le support de 17 nouvelles API Windows non incluses auparavant dans ROP ROCKET. Ajout de la possibilité de définir un montant de débordement initial - cela est pertinent car cela peut affecter les calculs de chaînes ou de pointeurs lors de l'émulation.