Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pyrebox — Sandbox de rétro-ingénierie scriptable en Python, un framework d'instrumentation et d'inspection de machines virtuelles basé sur QEMU | Kitploit
Outils/GitHubGitHub/cisco-talos/pyrebox
Analyse Dynamique (Sandboxing)Criminalistique MémoireRétro-ingénierieDébogueursAnalyse de MalwareCriminalistique NumériqueAnalyse de BinairesApprentissage et ÉducationArchived
GitHubcisco-talos/pyrebox

pyrebox

Sandbox de rétro-ingénierie scriptable en Python, un framework d'instrumentation et d'inspection de machines virtuelles basé sur QEMU

1.7k2548il y a 2 ansVérifié par Kitploit
Voir le dépôtSite web

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

================ PROJET ARCHIVÉ

CE PROJET A ÉTÉ ARCHIVÉ ET SA FILE D'ATTENTE DE PROBLÈMES EST VERROUILLÉE. LE PROJET RESTERA PUBLIC UNIQUEMENT À TITRE DE RÉFÉRENCE.

.. image:: docs/media/pyrebox_logo_light_bg.png

.. _QEMU: http://qemu.org/ .. _DECAF: https://github.com/sycurelab/DECAF .. _S2E: https://github.com/dslab-epfl/s2e .. _AVATAR: https://github.com/avatartwo .. _PANDA: https://github.com/panda-re/panda .. _Volatility: http://www.volatilityfoundation.org/ .. _BUILD: BUILD.rst .. _here: https://github.com/Cisco-Talos/pyrebox/issues .. _slides: https://github.com/Cisco-Talos/pyrebox/tree/master/docs/pyrebox_hitb_ams.pdf .. _available: https://github.com/Cisco-Talos/pyrebox/tree/master/docs/pyrebox_euskalhack.pdf .. _scripts: https://github.com/Cisco-Talos/pyrebox/tree/master/scripts .. _readthedocs.io: https://pyrebox.readthedocs.io/en/latest/ .. _questions: https://github.com/Cisco-Talos/pyrebox/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20 .. _presentation: https://www.youtube.com/watch?v=F2voG87obzM .. _Contest: https://volatility-labs.blogspot.com/2017/11/results-from-5th-annual-2017-volatility.html

PyREBox est un bac à sable de rétro-ingénierie scriptable en Python. Il est basé sur QEMU et vise à faciliter la rétro-ingénierie en offrant des capacités d'analyse dynamique et de débogage d'un point de vue différent. PyREBox permet d'inspecter une machine virtuelle QEMU en cours d'exécution, de modifier sa mémoire ou ses registres, et d'instrumenter son exécution en créant des scripts simples en Python pour automatiser tout type d'analyse. QEMU (lorsqu'il fonctionne en tant qu'émulateur de système complet) émule un système entier (CPU, mémoire, périphériques...). En utilisant des techniques VMI, il ne nécessite aucune modification du système d'exploitation invité, car il récupère de manière transparente les informations de sa mémoire en temps réel.

Plusieurs projets académiques tels que DECAF_, PANDA_, S2E_ ou AVATAR_ ont déjà exploité l'instrumentation basée sur QEMU pour résoudre des tâches de rétro-ingénierie. Ces projets permettent d'écrire des plugins en C/C++ et implémentent plusieurs fonctionnalités avancées telles que l'analyse dynamique de flux (taint), l'exécution symbolique, ou même l'enregistrement et la relecture de traces d'exécution. Avec PyREBox, nous visons à appliquer cette technologie en nous concentrant sur la simplicité de conception et sur la convivialité du système pour les analystes de menaces.

PyREBox a remporté le Volatility Plugin Contest_ en 2017 !

Cet outil a été présenté à la conférence HITB Amsterdam 2018. Vous pouvez voir les slides_ ou regarder la présentation_. Il a également été présenté à la troisième édition du Congrès de Sécurité EuskalHack (slides disponibles_).

Quoi de neuf

N'oubliez pas de tirer la dernière version de PyREBox pour profiter de ses dernières fonctionnalités. PyREBox est en développement actif et de nouvelles fonctionnalités intéressantes sont encore à venir ! La branche master devrait toujours contenir une version stable, tandis que les branches de développement contiennent les dernières fonctionnalités en cours de développement. La liste d'annonces suivante fait référence à la branche master et à la date à laquelle les modifications de développement ont été fusionnées dans master.

  • [5 déc. 2019] Version bêta de PyREBox3, prête sur la branche python3migration. L'outil a été porté vers Python3 et Volatility3. Les plugins n'ont pas encore été portés.
  • [21 juin 2019] Mise à niveau de QEMU vers la version 4.0.0, avec support MTTCG (multi-threaded TCG). Remerciements spéciaux à @richsurgenor pour ses contributions précieuses à cette mise à niveau.
  • [17 juin 2019] Fusion de la branche de développement (Malware monitor 2).
  • [17 juin 2019] Automatisation du mouvement de la souris.
  • [17 juin 2019] Mise à niveau de Volatility.
  • [17 oct. 2018] Ajout de la fonction API pour obtenir l'heure système des invités Windows.
  • [17 oct. 2018] Ajout du support des symboles dans la classe BP (point d'arrêt).
  • [17 oct. 2018] Ajout du cache de symboles (fichier hôte). Voir les fichiers de configuration d'exemple (pyrebox.conf.WinXPSP3x86).
  • [17 oct. 2018] Modification de la récupération des symboles pour obtenir les fichiers DLL depuis le disque.
  • [10 oct. 2018] Ajout du support expérimental pour récupérer les pages mémoire non mappées.
  • [10 oct. 2018] Ajout de l'intégration de The Sleuth Kit.
  • [2 août 2018] Ajout de scripts d'exécution automatique.
  • [26 juil. 2018] Mise en ligne des slides de la présentation EuskalHack 2018.
  • [2 juil. 2018] Correctifs pour le support de CentOS 7.
  • [25 juin 2018] Ajout des scripts présentés à EuskalHack 2018.
  • [31 mai 2018] Mise à niveau vers Qemu v2.12.0.
  • [29 mai 2018] Ajout de la possibilité d'appeler des fonctions de déclenchement (triggers) (en C/C++) depuis des scripts Python.
  • [29 mai 2018] Modification du format des paramètres de rappel (callback). Voir la documentation. Le comportement par défaut est toujours l'ancien style.
  • [28 avr. 2018] Création d'une branche de développement pour les fonctionnalités nouvelles et potentiellement instables dans PyREBox.
  • [13 avr. 2018] Présentation de PyREBox à HITB Amsterdam (volet CommSec).
  • [13 avr. 2018] Ajout de scripts de surveillance de malware (mw_mon).
  • [8 mars 2018] Les triggers sont désormais appelés pour chaque processus du système (pas seulement les processus surveillés). Voir documentation.
  • [8 mars 2018] Modification des paramètres des rappels de lecture/écriture mémoire. Voir documentation et exemples.
  • [8 mars 2018] Ajout de points d'arrêt sur les adresses mémoire physiques en lecture/écriture.
  • [8 mars 2018] Ajout de rappels pour le chargement et la suppression de modules.
  • [2 nov. 2017] Ajout d'un agent invité pour Linux 32 et 64 bits.
  • [23 oct. 2017] Ajout d'un agent invité pour Windows 32 et 64 bits.
  • [11 oct. 2017] Ajout de l'analyse des symboles de module Linux.
  • [22 sept. 2017] Ajout du support du rechargement de modules.
  • [20 sept. 2017] Ajout d'un rappel de fonction personnalisée à la classe BP.
  • [20 sept. 2017] Mise à niveau vers Qemu v2.10.0.
  • [31 août 2017] Support partiel des invités Linux.

Installation

Un script de construction est fourni. Pour plus de détails sur les dépendances, veuillez consulter BUILD_. Nous fournissons également un Dockerfile.

Documentation

La documentation de ce projet est hébergée sur readthedocs.io_.

Bugs, questions et support

Si vous pensez avoir trouvé un bug, veuillez le signaler ici_.

Avant de créer un nouveau ticket, veuillez consulter les questions_ ouvertes par d'autres utilisateurs.

Ce programme est fourni "EN L'ÉTAT", et aucun support n'est garanti. Cela dit, pour nous aider à résoudre vos problèmes, veuillez inclure autant d'informations que possible pour reproduire le bug :

  • Système d'exploitation utilisé pour compiler et exécuter PyREBox.
  • La version spécifique du système d'exploitation et la cible d'émulation que vous utilisez.
  • Commande shell / script / tâche que vous tentiez d'exécuter.
  • Toute information sur l'erreur, telle que les messages d'erreur, la trace de pile Python (ou IPython), ou la trace de pile QEMU.
  • Toute autre information pertinente.

Feuille de route

  • Configuration et console de gestion des images de machines virtuelles.
  • Support des architectures ARM, MIPS, et autres.
  • Finalisation du support des systèmes invités GNU/Linux (voir les problèmes).

Démarrage d'une VM

PyREBox est basé sur QEMU. Pour démarrer une VM avec PyREBox, vous devez l'exécuter exactement comme si vous démarriez une VM QEMU. Deux scripts d'exemple sont fournis : start_i386.sh, start_x86_64.sh, vous pouvez les utiliser comme exemple.

La seule option du moniteur QEMU actuellement supportée est stdio (-monitor stdio).

Objectifs de ce projet

  • Fournir une plateforme d'émulation système complète avec une interface simple pour inspecter le système invité émulé.

    • Instrumentation fine des événements système.
    • Introspection de machine virtuelle (VMI) intégrée, basée sur Volatility. Aucun agent ou pilote ne doit être installé dans l'invité.
    • Interface shell basée sur IPython.
    • Moteur de script basé sur Python, permettant d'intégrer dans les scripts tous les outils de sécurité basés sur ce langage (l'un des plus grands écosystèmes).
  • Avoir une conception propre, découplée de QEMU. De nombreux projets construits sur QEMU n'évoluent pas lorsque QEMU est mis à niveau, manquant ainsi de nouvelles fonctionnalités et optimisations, ainsi que des mises à jour de sécurité. Pour y parvenir, PyREBox est implémenté comme un module indépendant qui peut être compilé avec QEMU en nécessitant un ensemble minimal de modifications.

  • Support de différentes architectures. Actuellement, PyREBox ne supporte que Windows pour les architectures x86 et x86-64, mais sa conception permet de supporter d'autres architectures telles qu'ARM, MIPS, ou PowerPC, ainsi que d'autres systèmes d'exploitation.

Shell IPython

Démarrer un shell PyREBox est aussi simple que de taper la commande sh sur le moniteur de QEMU. Cela lancera immédiatement un shell IPython. Ce shell enregistre l'historique des commandes ainsi que les variables définies. Par exemple, vous pouvez sauvegarder une valeur et la récupérer plus tard à un point différent de l'exécution, lorsque vous redémarrez le shell. PyREBox profite de toutes les fonctionnalités disponibles dans IPython telles que l'auto-complétion, l'historique des commandes, l'édition multi-lignes, et la génération automatique d'aide pour les commandes.

PyREBox vous permettra de déboguer le système (ou un processus) de manière assez furtive. Contrairement aux débogueurs traditionnels qui résident dans le système débogué (modifiant même la mémoire du processus débogué pour insérer des points d'arrêt), PyREBox reste complètement en dehors du système inspecté et ne nécessite l'installation d'aucun pilote ou composant dans l'invité.

.. image:: docs/media/breakpoint.gif

PyREBox offre un ensemble complet de commandes pour inspecter et modifier l'état de la VM en cours d'exécution. Tapez simplement list_commands pour obtenir une liste complète. Vous pouvez exécuter n'importe quel plugin Volatility en tapant vol suivi de la commande Volatility correspondante. Pour une liste complète des plugins Volatility disponibles, vous pouvez taper list_vol_commands. Cette liste est générée automatiquement, elle affichera donc également tout plugin Volatility que vous installez dans le chemin volatility/ de PyREBox.

Vous pouvez également définir vos propres commandes ! C'est aussi simple que de déclarer une fonction dans un script et de la charger.

Si vous avez besoin de quelque chose de plus expressif qu'une commande, vous pouvez écrire un extrait de code Python en utilisant l'API. Pour une description détaillée de l'API, consultez la Documentation_ ou tapez help(api) dans le shell.

.. image:: docs/media/stack.gif

Scripting

PyREBox permet de charger dynamiquement des scripts qui peuvent enregistrer des fonctions de rappel (callbacks) appelées lorsque certains événements se produisent, comme des instructions exécutées, des lectures/écritures mémoire, des créations/suppressions de processus, etc.

Étant donné que PyREBox est intégré à Volatility, il vous permettra de profiter de tous les plugins Volatility pour la forensique mémoire dans vos scripts Python. La plupart des outils de rétro-ingénierie les plus célèbres sont implémentés en Python ou ont au moins des liaisons Python. Notre approche permet d'intégrer n'importe lequel de ces outils dans un script.

Enfin, étant donné que les rappels Python peuvent introduire une pénalité de performance sur des événements fréquents tels que les instructions exécutées, il est également possible de créer des triggers. Les triggers sont des plugins en code natif (développés en C/C++) qui peuvent être insérés dynamiquement à l'exécution sur n'importe quel événement juste avant l'exécution du rappel Python. Cela permet de limiter le nombre d'événements qui atteignent le code Python, ainsi que de précalculer des valeurs en code natif.

Dans ce dépôt, vous trouverez des scripts d'exemple_ qui peuvent vous aider à écrire votre propre code. Les contributions sont les bienvenues !

Remerciements

Tout d'abord, PyREBox ne serait pas possible sans QEMU_ et Volatility_. Nous remercions leurs développeurs et mainteneurs pour un si excellent travail.

PyREBox est inspiré de plusieurs projets académiques, tels que DECAF_ ou PANDA_. En fait, de nombreux rappels supportés par PyREBox sont équivalents à ceux trouvés dans DECAF_, et les concepts derrière l'instrumentation sont basés sur ces travaux.

PyREBox bénéficie de code tiers, qui se trouve dans le répertoire pyrebox/third_party. Pour chaque projet tiers, nous incluons une indication de sa licence originale, les fichiers sources originaux pris du projet, ainsi que les versions modifiées des fichiers sources (le cas échéant), utilisés par PyREBox.

Télécharger l’outil