
Script Python de prova de conceito demonstrando exfiltração de arquivos iOS via symlink malicioso na restauração de backup do dispositivo, visando o serviço com.apple.mobile.MCInstall para leitura arbitrária de arquivos.
AVISO MUITO IMPORTANTE: ESTE SOFTWARE É UMA PROVA DE CONCEITO (PoC) COM FINS EDUCACIONAIS E DE PESQUISA EM SEGURANÇA APENAS.
Este script em Python demonstra uma vulnerabilidade (hipotética ou baseada em vulnerabilidades passadas, referenciada aqui de forma ilustrativa como "anterior ao iOS 18.3" conforme o PoC original) que permite a exfiltração de arquivos arbitrários de um dispositivo iOS. O método baseia-se na manipulação de um backup do dispositivo, na criação de um link simbólico (symlink) malicioso dentro desse backup e, em seguida, na restauração dessa cópia modificada no dispositivo. Finalmente, um serviço do sistema (com.apple.mobile.MCInstall) é acionado para que, sem saber, leia o arquivo apontado pelo symlink.
Este script foi "melhorado" sob a perspectiva de um pesquisador de segurança para incluir:
A vulnerabilidade explorada se aproveita da seguinte cadeia de fraquezas (presentes em versões antigas do iOS):
CloudConfigurationDetails.plist) é substituído por um link simbólico que aponta para um arquivo sensível no sistema de arquivos do dispositivo (ex.: /private/etc/passwd).com.apple.mobile.MCInstall neste PoC) que tem permissões para ler o arquivo de configuração original (CloudConfigurationDetails.plist) pode ser invocado. Ao tentar ler o arquivo, o sistema operacional segue o link simbólico e, em vez disso, lê o conteúdo do arquivo sensível para o qual o symlink aponta.Nota sobre a Versão do iOS: O PoC original menciona "iOS < 18.3". Essa numeração é atípica. A Apple corrigiu vulnerabilidades relacionadas ao tratamento de symlinks em backups e perfis de configuração em versões do iOS significativamente anteriores (geralmente antes do iOS 15/16 para os vetores mais diretos desse tipo). Essa referência de versão é mantida por consistência com a origem do script, mas deve ser entendida como ilustrativa de "uma versão vulnerável não corrigida".
idevicebackup2.idevicebackup2 no PATH do sistema.
brew install libimobiledevicesudo apt-get install libimobiledevice-utils (o nome do pacote pode variar)pip install usbmux-python python-lockdown packaging
git clone <url-del-repositorio>
cd <nombre-del-directorio>
libimobiledevice instalado e o idevicebackup2 acessível.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]