
Script de Python de prueba de concepto que demuestra la exfiltración de archivos en iOS mediante un enlace simbólico malicioso en la restauración de la copia de seguridad del dispositivo, dirigido al servicio com.apple.mobile.MCInstall para lectura arbitraria de archivos.
ADVERTENCIA MUY IMPORTANTE: ESTE SOFTWARE ES UNA PRUEBA DE CONCEPTO (PoC) CON FINES EDUCATIVOS Y DE INVESTIGACIÓN EN SEGURIDAD ÚNICAMENTE.
Este script de Python demuestra una vulnerabilidad (hipotética o basada en vulnerabilidades pasadas, referenciada aquí de forma ilustrativa como "anterior a iOS 18.3" según el PoC original) que permite la exfiltración de archivos arbitrarios de un dispositivo iOS. El método se basa en la manipulación de una copia de seguridad del dispositivo, la creación de un enlace simbólico (symlink) malicioso dentro de esa copia, y luego la restauración de esta copia modificada en el dispositivo. Finalmente, se interactúa con un servicio del sistema (com.apple.mobile.MCInstall) para que, sin saberlo, lea el archivo apuntado por el symlink.
Este script ha sido "mejorado" desde la perspectiva de un investigador de seguridad para incluir:
La vulnerabilidad explotada se aprovecha de la siguiente cadena de debilidades (presentes en versiones antiguas de iOS):
CloudConfigurationDetails.plist) es reemplazado por un enlace simbólico que apunta a un archivo sensible en el sistema de archivos del dispositivo (ej. /private/etc/passwd).com.apple.mobile.MCInstall en este PoC) que tiene permisos para leer el archivo de configuración original (CloudConfigurationDetails.plist) puede ser invocado. Al intentar leer el archivo, el sistema operativo sigue el enlace simbólico y, en su lugar, lee el contenido del archivo sensible al que apunta el symlink.Nota sobre la Versión de iOS: El PoC original menciona "iOS < 18.3". Esta numeración es atípica. Apple ha parchado vulnerabilidades relacionadas con el manejo de symlinks en copias de seguridad y perfiles de configuración en versiones de iOS significativamente anteriores (generalmente antes de iOS 15/16 para los vectores más directos de este tipo). Esta referencia de versión se mantiene por consistencia con el origen del script, pero debe entenderse como ilustrativa de "una versión vulnerable no parchada".
idevicebackup2.idevicebackup2 en el PATH del sistema.
brew install libimobiledevicesudo apt-get install libimobiledevice-utils (el nombre del paquete puede variar)pip install usbmux-python python-lockdown packaging
git clone <url-del-repositorio>
cd <nombre-del-directorio>
libimobiledevice instalado y idevicebackup2 accesible.pip install -r requirements.txt # (Si creas un requirements.txt con usbmux-python, python-lockdown, packaging)
# o manualmente:
# pip install usbmux-python python-lockdown packaging
./exploit_ios_file_read.py [OPCIONES]