• Jailbreak Detection
– iOS 탈옥은 샌드박스 제한을 풀어 타 회사에서 사용하는 서명되지 않은 코드를 실행할 수 있게 하는 과정
– 탈옥된 디바이스에서 앱 실행을 어렵게 하기 위해 리버스 엔지니어링 방어 기능을 추가함
– iOS의 전형적인 탈옥 탐지 기법 (Trustwave 발표)
• File-based Checks
• Checking File Permissions
• Checking Protocol Handlers
• Calling System APIs
• Jailbreak Detection (File-based Checks)
– 파일 기반으로 확인하는 것으로 탈옥 여부 확인 가능
– 탈옥과 관련된 파일 및 디렉터리를 확인
/Applications/Cydia.app /Applications/FakeCarrier.app /Applications/Icy.app /Applications/IntelliScreen.app /Applications/MxTube.app /Applications/RockApp.app /Applications/SBSettings.app /Applications/WinterBoard.app /Applications/blackra1n.app /Library/MobileSubstrate/DynamicLibraries/LiveClock.plist /Library/MobileSubstrate/DynamicLibraries/Veency.plist /Library/MobileSubstrate/MobileSubstrate.dylib /System/Library/LaunchDaemons/com.ikey.bbot.plist /System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist /bin/bash /bin/sh /etc/apt |
/etc/ssh/sshd_config /private/var/lib/apt /private/var/lib/cydia /private/var/mobile/Library/SBSettings/Themes /private/var/stash /private/var/tmp/cydia.log /usr/bin/sshd /usr/libexec/sftp-server /usr/libexec/ssh-keysign /usr/sbin/sshd /var/cache/apt /var/lib/apt /var/lib/cydia /usr/sbin/frida-server /usr/bin/cycript /usr/local/bin/cycript /usr/lib/libcycript.dylib |
• Jailbreak Detection (Checking File Permissions)
– 파일 권한을 확인하는 것으로 탈옥 여부 확인 가능
– 애플리케이션의 샌드박스 외부에 있는 위치에 파일 생성을 시도하는 것으로 확인 가능
– 애플리케이션이 /private 디렉터리에 파일을 생성하도록 하여 성공적으로 생성된다면 디바이스가 탈옥된 것
• Jailbreak Detection (Checking Protocol Handlers)
– 프로토콜 핸들러를 확인하는 것으로 탈옥 여부 확인 가능
– 프로토콜 핸들러란 특별한 URL을 처리하는 프로그램으로 cydia:// 프로토콜 핸들러를 사용하여 시디아에서 설치 가능
– Cydia URL을 열어 프로토콜 핸들러 확인 가능
• 거의 모든 탈옥 툴이 기본적으로 설치하는 Cydia 앱은 cydia:// 프로토콜 핸들러를 설치함
• Jailbreak Detection (Calling System APIs)
– 시스템 API를 호출하는 것으로 탈옥 여부 확인 가능
– 탈옥되지 않은 디바이스에서 NULL을 인수로 system 함수를 호출하면 0이 반환
– 탈옥된 디바이스에서 NULL을 인수로 system 함수를 호출하면 1이 반환
– 함수가 탈옥 디바이스에서만 /bin/sh에 대한 접근을 확인하기 때문에 위의 방식으로 확인 가능