
매우 중요한 경고: 이 소프트웨어는 교육 및 보안 연구 목적으로만 제공되는 개념 증명(PoC)입니다.
이 Python 스크립트는 iOS 기기에서 임의의 파일을 유출할 수 있는 취약점(가상의 것이거나 과거 취약점에 기반한 것으로, 원본 PoC에 따라 예시적으로 "iOS 18.3 이전"으로 참조됨)을 시연합니다. 이 방법은 기기 백업의 조작, 해당 백업 내 악성 심볼릭 링크(symlink) 생성, 그리고 이 수정된 백업을 기기에 복원하는 방식에 기반합니다. 마지막으로 시스템 서비스(com.apple.mobile.MCInstall)와 상호작용하여, 해당 서비스가 심볼릭 링크가 가리키는 파일을 의도치 않게 읽도록 합니다.
이 스크립트는 보안 연구자의 관점에서 다음을 포함하도록 "개선"되었습니다:
악용되는 취약점은 다음과 같은 약점 체인(이전 iOS 버전에 존재)을 활용합니다:
CloudConfigurationDetails.plist)이 기기 파일 시스템의 민감한 파일(예: /private/etc/passwd)을 가리키는 심볼릭 링크로 대체된 백업 파일을 생성하는 기능.CloudConfigurationDetails.plist)을 읽을 권한이 있는 시스템 서비스(이 PoC에서는 com.apple.mobile.MCInstall)가 호출될 수 있습니다. 파일을 읽으려고 시도하면 운영 체제가 심볼릭 링크를 따라가서, 대신 심볼릭 링크가 가리키는 민감한 파일의 내용을 읽습니다.iOS 버전에 관한 참고: 원본 PoC는 "iOS < 18.3"을 언급합니다. 이 버전 표기는 비전형적입니다. Apple은 훨씬 이전 iOS 버전(이 유형의 가장 직접적인 벡터의 경우 일반적으로 iOS 15/16 이전)에서 백업 및 구성 프로필의 심볼릭 링크 처리와 관련된 취약점을 패치했습니다. 이 버전 참조는 스크립트의 출처와의 일관성을 위해 유지되지만, "패치되지 않은 취약한 버전"을 예시적으로 나타내는 것으로 이해해야 합니다.
idevicebackup2의 존재를 확인합니다.idevicebackup2가 필요합니다.
brew install libimobiledevicesudo apt-get install libimobiledevice-utils (패키지 이름은 다를 수 있음)pip install usbmux-python python-lockdown packaging
git clone <url-del-repositorio>
cd <nombre-del-directorio>
libimobiledevice가 설치되어 있고 idevicebackup2에 접근 가능한지 확인합니다.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]