IOS에서 Application에서 탈옥을 탐지하기 위해서 사용하는 코드의 예시들을 살펴보겠다.
크게 2가지로 나눌 수 있다.
1. 탈옥시 생기는 경로가 존재하는지 확인해 탐지하는 방법.
2. 탈옥시 생기는 Root 권한으로만 접근할 수 있는 곳에 접근해 탐지하는 방법.
이외에 추가적인 방법이 존재하긴한다. 밑에서 소개하도록 한다.
1. 탈옥시 생기는 경로의 존재여부 검사.
(여러 앱을 분석하면서 검사하는 경로를 추가할 예정이다.)
(fileExistsAtPath: 함수를 통해서 경로의 존재여부를 판단한다.)
(NSArray에 경로들을 쭈욱 넣고 아래와 같은 루틴으로 일치하는게 존재하는지확인한다.)
이와 같이 fopen 함수를 통해서도 판단할 수 있다.
(최신) - *표시한게 현재 내 환경에서 탐지된 경로이다.
/usr/sbin/frida-server *
/etc/apt/sources.list.d/cydia.list *
/etc/apt/sources.list.d/electra.list
/etc/apt/sources.list.d/sileo.sources
/.bootstrapped_electra
/usr/lib/libjailbreak.dylib
/jb/lzma
/.cydia_no_stash *
/.installed_unc0ver *
/jb/offsets.plists
/usr/share/jailbreak/injectme.plist
/etc/apt/undecimus/undecimus.list
/var/lib/dpkg/info/mobilesubstrate.dylib
/Library/MobileSubstrate/MobileSubstrate.dylib
/Library/MobileSubstrate/DynamicLibraries/* *
/jb/jailbreakd.plist
/jb/amfid_payload.dylib
/jb/libjailbreak.dylib
/usr/libexec/cydia/firmware.sh *
/var/lib/cydia/ *
/etc/apt/ *
/private/var/lib/apt/ *
/private/var/Users/
/var/log/apt/ *
/Applications/Cydia.app *
/private/var/stash
/private/var/lib/cydia *
/private/var/cache/apt/ *
/private/var/log/syslog/
/private/var/tmp/cydia.log
/private/var/tmp/frida-*.dylib *
/Applications/Icy.app/
/Applications/MxTube.app/
/Applications/RockApp.app/
/Applications/blackra1n.app/
/Applications/SBSettings.app/
/Applications/FakeCarrier.app/
/Applications/WinterBoard.app/
/Applications/IntelliScreen.app/
/Applications/crackerxi.app/ *
/private/var/mobile/Library/SBSettings/Themes
/Library/MobileSubstrate/CydiaSubstrate.dylib
/System/Library/LaunchDaemons/com.ikey.bbot.plist
/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist
/var/mobile/Library/Caches/com.saurik.Cydia/sources.list *
/usr/sbin/sshd *
/usr/bin/sshd
/bin/bash *
/usr/libexec/ssh-keysign *
/usr/libexec/sshd-keygen-wrapper *
/bin/sh *
/etc/alternatives/sh *
/etc/ssh/sshd_confing *
/usr/libexec/sftp-server *
/usr/bin/ssh *
Root 권한으로만 읽기/쓰기를 할 수 있는 곳
(여러 앱을 분석하면서 검사하는 경로를 추가할 예정이다.)
/private/
/root/
/
기타 방법
1. URL을 접속해 에러가 발생하는지 여부를 확인해 탐지하는 방법.
( cydia:// 로 시작하는 URL은 탈옥된 디바이스에서만 접속이 된다. )
2. /etc/fstab 의 Size를 통해 탐지하는 방법.
음........ stat로 불러온 객체 +0x60 지점에 뭐가있나..? 80이랑 비교하는데.. 확인해봐야겠다.
3. system(0)을 호출한 결과를 통해 탐지하는 방법.
( root권한이 있어야 호출이 가능한 것 같다. )
이외에도 fork(), vm_protect(), _dyld_image_count() 함수들을 호출함으로써 탐지할 수 있다.
가 아니라 탈옥기기와 순정기기와의 실행결과가 서로 다르다는 점을 이용해 탈옥여불르 탐지한다.
4. "/Applications"를 lstat의 인자로 전달해 반환 값을 확인한다.
( 심볼릭 링크인지 아닌지 확인하는 과정을 거친다.. 무슨...? )
이외에 확인할 수 있는 경로 목록
- /Library/Ringtones
- /Library/Wallpaper
- /user/arm-apple-darwin9
- /usr/include
- /usr/libexec
- /usr/share
- /var/lib/undecimus/aat *
기존의 시스템 파티션에 위치하는 몇 개의 디렉토리는 탈옥 과정 파이션이 Overwrite 됨에 따라서 데이터를 더 큰 데이터 파티션에 이전해야 한다. 이전 파일 위치는 유효해야 하므로 심볼 링크를 통해 이를 해결하게된다.
5. 동작중인 프로세스를 점검해 탈옥을 탐지한다.
6. OpenSSH 서비스에 접근함으로써 탐지하는 방법.
'모바일' 카테고리의 다른 글
iOS 디버깅 우회 (0) | 2022.05.14 |
---|---|
chimera jailbreak download plist (0) | 2022.05.11 |
[apk-mitm] APK 파일 SSL/TLS pinning 우회 및 기능 없애는 방법 (펌) (0) | 2022.04.28 |
libil2cpp-Patcher (0) | 2022.04.27 |
android jadx tool (0) | 2021.12.11 |