Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
applepie — Un hipervisor para fuzzing construido con WHVP y Bochs | Kitploit
Herramientas/GitHubGitHub/gamozolabs/applepie
Análisis Dinámico (Sandboxing)Análisis de VulnerabilidadesIngeniería InversaFuzzingAnálisis de Binarios
GitHubgamozolabs/applepie

applepie

Un hipervisor para fuzzing construido con WHVP y Bochs

Ver Repositorio
3846019hace 7 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

applepie, una implementación de hipervisor para Bochs

¡Hola! ¡Bienvenido a applepie! Esta es una herramienta diseñada para fuzzing, introspección y encontrar errores. Es un hipervisor que utiliza la API de Windows Hypervisor Platform presente en versiones recientes de Windows (específicamente, fue desarrollado y probado en Windows 10 17763). Bochs se utiliza para proporcionar una introspección profunda y emulación de dispositivos.

La API de Windows Hypervisor Platform (WHVP) es un conjunto de API para acceder a las capacidades de hipervisor de Hyper-V. Esta API facilita la implementación de una máquina virtual completamente en el espacio de usuario, sin necesidad de controladores especiales ni permisos adicionales.

Sígueme en Twitter para actualizaciones

Este es un proyecto en rápido desarrollo. Probablemente twittearé cuando salgan nuevas funciones antes de que se documenten.

@gamozolabs

Demostración de funciones recientes

Youtube Video

Ejemplo de cobertura binaria

Youtube Video

Mascota

Me gusta tener objetos físicos para mis proyectos:

apple pie squishable

¿Para qué sirve esto?

Esta es una herramienta diseñada para fuzzing e introspección durante la investigación en seguridad. Al usar un hipervisor, se pueden aplicar técnicas comunes de fuzzing a cualquier objetivo, ya sea kernel o espacio de usuario. Este entorno permite el fuzzing de sistemas completos sin necesidad del código fuente del objetivo. A nivel de hipervisor se puede recopilar cobertura de código y, si es necesario, se puede usar la emulación de Bochs para proporcionar introspección arbitraria en un entorno de emulación. Esta información de cobertura se puede utilizar para determinar la efectividad de los casos de fuzzing. Un caso de fuzzing que provocó un aumento en la cobertura se puede guardar por ser un caso interesante. Esta entrada se puede usar más tarde, mejorada con nuevas corrupciones.

El fuzzing con instantáneas es el uso principal de esta herramienta. Consiste en tomar una instantánea de un sistema en un estado determinado y guardarla. Luego, esta instantánea se puede cargar para el fuzzing, donde se inyecta un caso de fuzzing y se reanuda. Dado que la VM se puede reiniciar de manera muy económica, se puede reiniciar con frecuencia. Si Word tarda 5 segundos en iniciarse, pero puedes tomar una instantánea justo cuando lee tu archivo, puedes reducir el caso de fuzzing solo a lo que es relevante para una entrada. Esto permite un bucle de fuzzing muy ajustado sin necesidad de tener acceso al código fuente. Como las VM son sistemas completamente separados, se pueden ejecutar muchas en paralelo para escalar a todos los núcleos.

Actualmente, esta herramienta solo admite la recopilación de cobertura de código, la descarga dinámica de símbolos para Windows y el análisis de símbolos/módulos para objetivos Windows también. La adición de soporte para fuzzing será muy pronto.

Ciclo de desarrollo

Dado que ya he escrito casi todas las funciones aquí antes (cobertura, fuzzing, reinicios rápidos, etc.), espero que este proyecto se vuelva rápidamente utilizable para fuzzing, a menos que me distraiga :D

Apunto a finales de enero para cobertura (¡hecho!), comentarios, listados de módulos (¡hecho!), listas de procesos, reinicios rápidos y soporte de símbolos (¡hecho!). Eso lo convertiría en un fuzzer muy capaz.

Soporte de SO

El objetivo principal compatible es Windows 10 moderno. Los objetivos Windows tienen descarga de símbolos desde el almacén de símbolos. Esto permite una cobertura simbólica en objetivos Windows de forma inmediata. Sin embargo, el código está escrito de manera que se pueda agregar fácilmente iluminación para Linux.

Sin ninguna iluminación, cualquier sistema operativo que arranque aún puede ser fuzzeado y se puede recopilar cobertura básica.

Antes de informar problemas de soporte de SO, valide que el problema esté en el hipervisor/cambios en Bochs intentando arrancar su objetivo usando Bochs estándar preconstruido sin hipervisor. Bochs no se usa comúnmente y puede tener errores críticos incluso para cosas comunes como arrancar Linux. Especialmente con los rápidos cambios internos en los usos de CPUID/MSR con las mitigaciones de Spectre/Meltdown en los sistemas operativos.

Problemas

Consulte la página de issues en Github para obtener una lista de problemas. Ya he sembrado algunos. Algunos de estos deben solucionarse rápidamente antes de que comience el desarrollo de fuzzing.

Compilación

Requisitos previos de compilación

Para compilar esto necesitas algunas cosas:

  • Compilador MSVC actualizado (Visual Studio 2017)
  • Rust Nightly (https://rustup.rs/ , debe ser nightly)
  • Python (yo usé 3 pero 2 también debería funcionar)
  • Cygwin de 64 bits con los paquetes autoconf y GNU make instalados
  • Hyper-V instalado y una compilación reciente de Windows 10

MSVC

Instale Visual Studio 2017 y asegúrese de que esté actualizado. Aquí estamos usando API, encabezados y bibliotecas de vanguardia.

Yo usaba la versión de cl.exe: Microsoft (R) C/C++ Optimizing Compiler Version 19.16.27025.1 for x64 Y la versión del SDK 10.0.17763.0

Rust Nightly

Instale Rust a través de https://rustup.rs/. Yo usé rustc 1.32.0-nightly (b3af09205 2018-12-04)

Asegúrese de instalar el toolchain x86_64-pc-windows-msvc, ya que solo se admite 64 bits para este proyecto.

Asegúrese de que cargo esté en su PATH. Esto debería ser el valor predeterminado.

Python

Vaya a https://www.python.org/ y asegúrese de que esté en su PATH para que se pueda invocar python.

Cygwin

Instale Cygwin de 64 bits (https://www.cygwin.com/setup-x86_64.exe) específicamente en C:\cygwin64. Al instalar Cygwin, asegúrese de instalar los paquetes autoconf y make.

Hyper-V

Vaya a "Activar o desactivar las características de Windows" y marque la casilla junto a "Hyper-V" y "Windows Hypervisor Platform". Esto requiere, por supuesto, que su computadora tenga soporte para Hyper-V.

Proceso de compilación paso a paso

Esta guía de instalación fue verificada en lo siguiente:

Instalación limpia de 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
  • Asegúrese de que Windows 10 esté completamente actualizado
    • Usamos algunas funciones de vanguardia con WHVP y solo se prueba la última versión de Windows 10
  • En "Activar o desactivar las características de Windows"
    • Marque "Hyper-V"
    • Marque "Windows Hypervisor Platform"
    • Haga clic en Aceptar para instalar y reiniciar

windows features

  • Instale VS Community 2017 y actualícelo
    • Desarrollo de escritorio con C++

vsconfig

Descargar herramienta