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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
super-tart-vphone-writeup — Guía para construir un iPhone virtual usando componentes VPHONE600AP del firmware PCC de Apple, con parcheo de firmware, modificación de cadena de arranque y depuración del kernel para investigación de seguridad en iOS. | Kitploit
Herramientas/GitHubGitHub/wh1te4ever/super-tart-vphone-writeup
Seguridad iOSAnálisis de VulnerabilidadesExplotaciónIngeniería InversaDepuradoresPruebas de PenetraciónSeguridad MóvilSeguridad de Hardware e IoTAnálisis de Firmware

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 →
Explotación de Binarios
GitHubwh1te4ever/super-tart-vphone-writeup

super-tart-vphone-writeup

Guía para construir un iPhone virtual usando componentes VPHONE600AP del firmware PCC de Apple, con parcheo de firmware, modificación de cadena de arranque y depuración del kernel para investigación de seguridad en iOS.

Ver Repositorio
1.2k16823hace 7 mesesRevisado por Kitploit
Compartir

Construyendo un iPhone virtual utilizando el componente VPHONE600AP del firmware PCC lanzado recientemente

Agradecimientos especiales / Reconocimientos

  • dlevi309 (Proporcionó ideas para la interacción táctil en el iPhone virtual)
  • khanhduytran0, 34306, asdfugil, verygenericname (Proporcionaron otras ideas para construir el iPhone virtual, incluyendo Cryptex, Activación del dispositivo, arranque con Ramdisk, etc.)
  • ma4the, Mard, SwallowS (Probando si funciona bien en otros entornos)

Motivación

A finales de 2024, Apple comenzó a presentar Private Cloud Compute, afirmando abrir un nuevo horizonte para la privacidad de la IA basada en la nube. Luego, alrededor de finales de 2025, aparecieron noticias interesantes: Apple había añadido recientemente componentes relacionados con vphone600ap al firmware PCC, comenzando con cloudOS 26.

Fuente: https://x.com/matteyeux/status/2006339694783848660/photo/1

Fuente: https://x.com/matteyeux/status/2006339694783848660/photo/1

"¿Máquina virtual del entorno de investigación del iPhone?"

¿Es este un movimiento planificado por Apple para construir y distribuir un entorno de iPhone virtual para otros investigadores de seguridad en el futuro, o fue simplemente un error? Dado que el kernel de compilación DEVELOPMENT/KASAN fue descubierto una vez en las OTA de iOS 15.0 beta a 15.1 beta3 en 2021, la posibilidad de un descuido no puede descartarse. En ese momento, el kernel permaneció incluido durante aproximadamente 4 meses, de junio a octubre de 2021.

Luego, alrededor de enero de este año, se publicó un tuit mostrando un iPhone virtual arrancando utilizando estos componentes relacionados con vphone600ap.

Fuente: https://x.com/_inside/status/2008951845725548783

Fuente: https://x.com/_inside/status/2008951845725548783

Screenshot 2026-02-24 at 7.39.03 PM.png

Por lo que vi, casi todo funcionaba de manera realmente elegante. En comparación con el proyecto QEMUAppleSilicon(Inferno) que había visto anteriormente, se ejecuta mucho más rápido y fluido. Además, incluso parecía soportar aceleración Metal. Finalmente, completamente cautivado por ello, me sumergí y comencé a construir mi propio iPhone virtual el 31 de enero.

Screenshot 2026-02-24 at 7.46.41 PM.png

Modificando super-tart para arrancar el iPhone virtual

El proyecto de referencia es security-pcc. Corresponde al código fuente del binario /System/Library/SecurityResearch/usr/bin/vrevm. Un punto interesante es que utiliza métodos privados proporcionados por Virtualization.framework. En la máquina virtual utilizada para la investigación de PCC, se puede ver que el ISA y PlatformVersion se especifican explícitamente durante el proceso de inicialización del modelo de hardware.

Screenshot 2026-02-24 at 8.27.01 PM.png

Para el bootrom, se utiliza AVPBooter.vresearch1.bin (/System/Library/Frameworks/Virtualization.framework/Resources/AVPBooter.vresearch1.bin)

Screenshot 2026-02-24 at 8.32.08 PM.png

y para el SEPROM (avpsepbooter), se utiliza AVPSEPBooter.vresearch1.bin, que carga por separado un archivo SEPStorage que funciona de manera similar a AuxiliaryStorage. (/System/Library/Frameworks/Virtualization.framework/Versions/A/Resources/AVPSEPBooter.vresearch1.bin)

Otro punto interesante es que si observas el código para establecer la resolución, se configura a 1290x2796, que corresponde a los dispositivos iPhone 14 Pro Max, 15 Plus, 15 Pro Max y 16 Plus.

Screenshot 2026-02-24 at 8.34.11 PM.png

Con solo esta información, debería ser más que suficiente para modificar super-tart y arrancar el iPhone virtual. Realicé las modificaciones como se muestra a continuación.

  • /Sources/tart/VM.swift```swift ... class VM: NSObject, VZVirtualMachineDelegate, ObservableObject { ... // vzHardwareModel derives the VZMacHardwareModel config specific to the "platform type" // of the VM (currently only vresearch101 supported) static private func vzHardwareModel_VRESEARCH101() throws -> VZMacHardwareModel { var hw_model: VZMacHardwareModel

    guard let hw_descriptor = _VZMacHardwareModelDescriptor() else { fatalError("Failed to create hardware descriptor") } hw_descriptor.setPlatformVersion(3) // .appleInternal4 = 3 hw_descriptor.setBoardID(0x90) hw_descriptor.setISA(2) hw_model = VZMacHardwareModel._hardwareModel(withDescriptor: hw_descriptor)

    guard hw_model.isSupported else { fatalError("VM hardware config not supported (model.isSupported = false)") }

    return hw_model }

    static func craftConfiguration( diskURL: URL, nvramURL: URL, romURL: URL, sepromURL: URL? = nil, vmConfig: VMConfig, network: Network = NetworkShared(), additionalStorageDevices: [VZStorageDeviceConfiguration], directorySharingDevices: [VZDirectorySharingDeviceConfiguration], serialPorts: [VZSerialPortConfiguration], suspendable: Bool = false, nested: Bool = false, audio: Bool = true, clipboard: Bool = true, sync: VZDiskImageSynchronizationMode = .full, caching: VZDiskImageCachingMode? = nil ) throws -> VZVirtualMachineConfiguration { let configuration: VZVirtualMachineConfiguration = .init()

    // Boot loader let bootloader = try vmConfig.platform.bootLoader(nvramURL: nvramURL) Dynamic(bootloader)._setROMURL(romURL) configuration.bootLoader = bootloader

    // SEP ROM let homeURL = FileManager.default.homeDirectoryForCurrentUser var sepstoragePath = homeURL.appendingPathComponent(".tart/vms/vphone/SEPStorage").path let sepstorageURL = URL(fileURLWithPath: sepstoragePath) let sep_config = Dynamic._VZSEPCoprocessorConfiguration(storageURL: sepstorageURL) if let sepromURL { // default AVPSEPBooter.vresearch1.bin from VZ framework sep_config.romBinaryURL = sepromURL } sep_config.debugStub = Dynamic._VZGDBDebugStubConfiguration(port: 8001) configuration._setCoprocessors([sep_config.asObject])

    // Some vresearch101 config let pconf = VZMacPlatformConfiguration() pconf.hardwareModel = try vzHardwareModel_VRESEARCH101()

    let serial = Dynamic._VZMacSerialNumber.initWithString("AAAAAA1337") let identifier = Dynamic.VZMacMachineIdentifier._machineIdentifierWithECID(0x1111111111111111, serialNumber: serial.asObject) pconf.machineIdentifier = identifier.asObject as! VZMacMachineIdentifier

Descargar herramienta