Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
super-tart-vphone-writeup — Guida per costruire un iPhone virtuale utilizzando componenti VPHONE600AP dal firmware PCC di Apple, con patch del firmware, modifica della bootchain e debug del kernel per la ricerca sulla sicurezza di iOS. | Kitploit
Strumenti/GitHubGitHub/wh1te4ever/super-tart-vphone-writeup
Sicurezza iOSAnalisi delle VulnerabilitàExploitReverse EngineeringDebuggerPenetration TestingSicurezza MobileSicurezza Hardware e IoTAnalisi del Firmware

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Binary Exploitation
GitHubwh1te4ever/super-tart-vphone-writeup

super-tart-vphone-writeup

Guida per costruire un iPhone virtuale utilizzando componenti VPHONE600AP dal firmware PCC di Apple, con patch del firmware, modifica della bootchain e debug del kernel per la ricerca sulla sicurezza di iOS.

Vedi Repository
1.2k168237 mesi faRevisionato da Kitploit
Condividi

Building virtual iPhone using VPHONE600AP component of recently released PCC firmware

Ringraziamenti Speciali / Riconoscimenti

  • dlevi309 (Hanno fornito idee per l'interazione tattile sull'iPhone virtuale)
  • khanhduytran0, 34306, asdfugil, verygenericname (Hanno fornito altre idee per la costruzione dell'iPhone virtuale, inclusi Cryptex, attivazione del dispositivo, avvio da Ramdisk, ecc.)
  • ma4the, Mard, SwallowS (Test per verificare se funziona bene in altri ambienti)

Motivazione

Verso la fine del 2024, Apple ha iniziato a introdurre Private Cloud Compute, sostenendo di aprire un nuovo orizzonte per la privacy dell'IA basata sul cloud. Poi, verso la fine del 2025, sono apparse alcune notizie interessanti: Apple aveva aggiunto di recente componenti relativi a vphone600ap al firmware PCC, a partire da cloudOS 26.

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

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

"Macchina virtuale per l'ambiente di ricerca iPhone"?

Si tratta di una mossa pianificata da Apple per costruire e distribuire un ambiente iPhone virtuale per altri ricercatori di sicurezza in futuro, o è stato semplicemente un errore? Considerando che il kernel di build DEVELOPMENT/KASAN è stato scoperto una volta negli OTA di iOS 15.0 beta a 15.1 beta3 nel 2021, la possibilità di un lapsus non può essere esclusa. All'epoca, il kernel è rimasto incluso per circa 4 mesi, approssimativamente da giugno a ottobre 2021.

Poi, intorno a gennaio di quest'anno, è stato pubblicato un tweet che mostrava un iPhone virtuale in fase di avvio utilizzando questi componenti relativi a vphone600ap.

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

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

Screenshot 2026-02-24 at 7.39.03 PM.png

Da quello che ho visto, quasi tutto funzionava davvero in modo elegante. Rispetto al progetto QEMUAppleSilicon(Inferno) che avevo visto in precedenza, funziona molto più rapidamente e fluentemente. Inoltre, sembrava addirittura supportare l'accelerazione Metal. Alla fine, completamente affascinato, mi sono tuffato e ho iniziato a costruire il mio iPhone virtuale il 31 gennaio.

Screenshot 2026-02-24 at 7.46.41 PM.png

Modificare super-tart per avviare l'iPhone virtuale

Il progetto di riferimento è security-pcc. Corrisponde al codice sorgente del binario /System/Library/SecurityResearch/usr/bin/vrevm. Un punto interessante è che utilizza metodi privati forniti da Virtualization.framework. Nella macchina virtuale utilizzata per la ricerca PCC, si può vedere che ISA e PlatformVersion sono specificati esplicitamente durante il processo di inizializzazione del modello hardware.

Screenshot 2026-02-24 at 8.27.01 PM.png

Per il bootrom, viene utilizzato AVPBooter.vresearch1.bin (/System/Library/Frameworks/Virtualization.framework/Resources/AVPBooter.vresearch1.bin)

Screenshot 2026-02-24 at 8.32.08 PM.png

e per il SEPROM (avpsepbooter), viene utilizzato AVPSEPBooter.vresearch1.bin, che carica separatamente un file SEPStorage che funziona in modo simile a AuxiliaryStorage. (/System/Library/Frameworks/Virtualization.framework/Versions/A/Resources/AVPSEPBooter.vresearch1.bin)

Un altro punto interessante è che se si guarda il codice per impostare la risoluzione, è impostata su 1290x2796, che corrisponde ai dispositivi iPhone 14 Pro Max, 15 Plus, 15 Pro Max e 16 Plus.

Screenshot 2026-02-24 at 8.34.11 PM.png

Con solo queste informazioni, dovrebbe essere più che sufficiente per modificare super-tart per avviare l'iPhone virtuale. Ho apportato le modifiche come mostrato di seguito.

  • /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

Scarica lo strumento