Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
applepie — Un hyperviseur pour le fuzzing construit avec WHVP et Bochs | Kitploit
Outils/GitHubGitHub/gamozolabs/applepie
Analyse Dynamique (Sandboxing)Analyse des VulnérabilitésRétro-ingénierieFuzzingAnalyse de Binaires
GitHubgamozolabs/applepie

applepie

Un hyperviseur pour le fuzzing construit avec WHVP et Bochs

Voir le dépôt
3846020il y a 7 ansVérifié par Kitploit

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

applepie, une implémentation d'hyperviseur pour Bochs

Bonjour ! Bienvenue sur applepie ! C'est un outil conçu pour le fuzzing, l'introspection et la recherche de bugs ! C'est un hyperviseur utilisant l'API Windows Hypervisor Platform présente dans les versions récentes de Windows (plus précisément, cela a été développé et testé sur Windows 10 17763). Bochs est utilisé pour fournir une introspection approfondie et l'émulation de périphériques.

L'API Windows Hypervisor Platform (WHVP) est un ensemble d'API pour accéder aux capacités d'hyperviseur de Hyper-V. Cette API nous permet d'implémenter facilement une machine virtuelle entièrement en espace utilisateur sans avoir besoin de pilotes spéciaux ou d'autorisations particulières.

Suivez-moi sur Twitter pour les mises à jour

Ce projet se développe rapidement. Je tweeterai probablement lorsque de nouvelles fonctionnalités sortiront avant qu'elles ne soient documentées.

@gamozolabs

Démo de fonctionnalités récentes

Youtube Video

Exemple de couverture binaire

Youtube Video

Mascotte

J'aime avoir des objets physiques pour mes projets :

apple pie squishable

À quoi ça sert ?

C'est un outil conçu pour le fuzzing et l'introspection lors de recherches en sécurité. En utilisant un hyperviseur, les techniques courantes de fuzzing peuvent être appliquées à n'importe quelle cible, qu'elle soit noyau ou espace utilisateur. Cet environnement permet le fuzzing de systèmes entiers sans nécessiter l'accès au code source de la cible. Au niveau de l'hyperviseur, on peut collecter la couverture de code, et si nécessaire, l'émulation Bochs peut être utilisée pour fournir une introspection arbitraire dans un environnement d'émulation. Ces informations de couverture peuvent être utilisées pour déterminer l'efficacité des cas de fuzzing. Un cas de fuzzing qui provoque une augmentation de la couverture peut être sauvegardé car il s'agit d'un cas intéressant. Cette entrée peut être réutilisée ultérieurement, enrichie par de nouvelles corruptions.

Le fuzzing par snapshot est l'utilisation principale de cet outil. On prend un snapshot d'un système dans un certain état et on le sauvegarde. Ce snapshot peut ensuite être chargé pour le fuzzing, où un cas de fuzzing est injecté, puis on le reprend. Comme la machine virtuelle peut être réinitialisée très facilement, on peut la réinitialiser souvent. Si Word met 5 secondes à démarrer, mais que vous pouvez le capturer juste au moment où il lit votre fichier, vous pouvez réduire le cas de fuzzing à ce qui est pertinent pour une entrée. Cela permet une boucle de fuzzing très serrée sans avoir besoin d'accéder au code source. Comme les machines virtuelles sont totalement séparées, plusieurs peuvent être exécutées en parallèle pour passer à l'échelle sur tous les cœurs.

Actuellement, cet outil prend uniquement en charge la collecte de couverture de code, le téléchargement dynamique de symboles pour Windows et l'analyse des symboles/modules pour les cibles Windows également. Le support du fuzzing arrivera très bientôt.

Cycle de développement

Étant donné que j'ai déjà écrit presque toutes ces fonctionnalités auparavant (couverture, fuzzing, réinitialisations rapides, etc.), je m'attends à ce que ce projet devienne assez rapidement prêt pour le fuzzing, sauf si je suis distrait :D

Je vise la fin janvier pour la couverture (fait !), les retours, la liste des modules (fait !), les listes de processus, les réinitialisations rapides et le support des symboles (fait !). Cela en ferait un fuzzer très performant.

Support des systèmes d'exploitation

La cible principale supportée est Windows 10 moderne. Les cibles Windows permettent de télécharger des symboles depuis le store de symboles. Cela permet une couverture symbolique pour les cibles Windows dès le départ. Cependant, le code est écrit de manière à ce qu'un « enlightenment » Linux puisse être facilement ajouté.

Sans aucun « enlightenment », tout système d'exploitation qui démarre peut toujours être fuzzé et une couverture de base peut être collectée.

Avant de signaler des problèmes de support d'OS, veuillez vérifier que le problème vient de l'hyperviseur / des modifications apportées à Bochs en essayant de démarrer votre cible avec un Bochs pré-construit standard sans hyperviseur. Bochs n'est pas couramment utilisé et peut fréquemment avoir des bugs bloquants même pour des choses courantes comme le démarrage de Linux. Surtout avec les changements internes rapides concernant l'utilisation de CPUID/MSR suite aux atténuations Spectre/Meltdown intégrées dans les OS.

Problèmes

Consultez la page des problèmes sur Github pour une liste des problèmes. J'en ai déjà ajouté quelques-uns. Certains doivent être résolus rapidement avant de commencer le développement du fuzzing.

Compilation

Prérequis de compilation

Pour construire ce projet, vous avez besoin de quelques éléments :

  • Compilateur MSVC récent (Visual Studio 2017)
  • Rust nightly (https://rustup.rs/ , doit être nightly)
  • Python (j'ai utilisé la version 3 mais la version 2 devrait fonctionner aussi)
  • Cygwin 64 bits avec les paquets autoconf et GNU make installés
  • Hyper-V installé et une version récente de Windows 10

MSVC

Installez Visual Studio 2017 et assurez-vous qu'il est à jour. Nous utilisons des API, en-têtes et bibliothèques de pointe.

J'utilisais la version de cl.exe : Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27025.1 for x64 Et la version du SDK 10.0.17763.0

Nightly Rust

Installez Rust via https://rustup.rs/. J'utilisais rustc 1.32.0-nightly (b3af09205 2018-12-04)

Assurez-vous d'installer la chaîne d'outils x86_64-pc-windows-msvc car seul le 64 bits est supporté pour ce projet.

Assurez-vous que cargo est dans votre PATH. Cela devrait être le cas par défaut.

Python

Allez chercher Python https://www.python.org/ et assurez-vous qu'il est dans votre PATH afin que python puisse être invoqué.

Cygwin

Installez Cygwin 64 bits (https://www.cygwin.com/setup-x86_64.exe) spécifiquement dans C:\cygwin64. Lors de l'installation de Cygwin, assurez-vous d'installer les paquets autoconf et make.

Hyper-V

Allez dans « Activer ou désactiver des fonctionnalités Windows » et cochez la case à côté de « Hyper-V » et « Windows Hypervisor Platform ». Cela nécessite bien sûr que votre ordinateur supporte Hyper-V.

Processus de compilation étape par étape

Ce guide d'installation a été vérifié sur la configuration suivante :

Clean install of Windows 10, Build 17763
rustc 1.33.0-nightly (8e2063d02 2019-01-07)
Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27025.1 for x64
Visual Studio Community 2017 version 15.9.4
applepie commit `f84c084feb487e2e7f31f9052a4ab0addd2c4cf9`
Python 3.7.2 x64
git version 2.20.1.windows.1
  • Assurez-vous que Windows 10 est complètement à jour
    • Nous utilisons des fonctionnalités de pointe avec WHVP et seule la dernière version de Windows 10 est testée
  • Dans « Activer ou désactiver des fonctionnalités Windows »
    • Cochez « Hyper-V »
    • Cochez « Windows Hypervisor Platform »
    • Cliquez sur OK pour installer et redémarrer

fonctionnalités Windows

  • Installez VS Community 2017 et mettez-le à jour
    • Développement Desktop avec C++
Télécharger l’outil