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
블로그 이미지

wtdsoul

,