iOS 앱 점검(ObjC)/JB탐지&우회

ios 탈옥탐지2 - 파일시스템 검사

nightohl 2020. 7. 20. 14:29
반응형

ios 탈옥탐지2 - 파일시스템 검사


1. 탈옥 관련 파일 존재 여부 확인

샌드박스된 앱도 샌드박스 외부에 존재하는 파일의 상태정도는 조회할 수 있다.

==> 대표적인 서드파티 앱과 탈옥 시 설치되는 다양한 파일들의 존재 여부를 확인하여 탈옥 상태를 판단한다.

 

* 로우레벨의 C함수 사용

fopen(), stat(), access()


* NSFileManager 클래스

fileExistsAtPath:, changeCurrentDirectoryPath: 메소드 등

 

ex) stat() 함수를 이용한 파일존재여부 판단 예시

//Cydia 설치여부를 확인하여 탈옥 감지
struct stat s;
int is_jailbroken = stat("/Applications/Cydia.app", &s) == 0;

 

ex) fileExistsAtPath 함수 예시

+(BOOL)doCydia{
	if([[NSFileManager defaultManager] fileExistsAtPath:@"/Applications/Cydia.app"])
    	return YES;
    return NO;
}

 

목록

/Library/MobileSubstrate/MobileSubstrate.dylib

/Applications/Cydia.app

/var/cache/apt

/var/lib/apt

/var/lib/cydia

/var/log/syslog

/var/tmp/cydia.log

/bin/bash

/usr/sbin/sshd

/usr/libexec/ssh-keysign

/etc/ssh/sshd_config

/etc/apt

/private/var/stash

/jb

/private/var/lib/apt

/private/var/tmp/cydia.log

/private/var/lib/cydia

/private/var/mobile/Library

/Library/MobileSubstrate/DynamicLibraries

/System/Library/LaunchDaemons/

/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist

/var/lib/cydia

/bin/sh

/usr/bin/sshd

/usr/libexec/sftp-server

... (그 외 알아서)


2. 특정 디렉토리와 파일의 권한 검사 (Permission)

탈옥과정 진행 중 변화하는 파일 혹은 디렉토리의 권한을 보고서도 필터링 하기도 한다.

(사례 추가 필요)

 

  • 탈옥 프로세스 진행 중 루트 파티션 권한을 수정함. ==> 루트 파티션이 read/write 권한이라면 탈옥이다.

3. 디렉토리와 파일 크기 검사 (Size)

탈옥하면서 대체되는 파일들을 알고있다면 크기 검사를 통해서도 필터링 할 수 있다.

 

/etc/fstab 크기 변화 검사 (안..쓰이지 않니..?)

fstab 파일은 파일시스템의 마운트 지점을 저장하는 파일.

대부분의 탈옥 툴이 root filesystem을 읽기-쓰기 가능한 상태로 만들기 위해 이 파일을 수정 또는 대체한다.

 

샌드박스 앱에서 이 파일을 읽을 수는 없지만 크기정보 정도는 stat을 통해 조회할 수 있다.

struct stat s;
stat("/etc/fstab", &s);
return s.st_size;

다만 버전별로 기본 파일의 크기도 달라질 수 있으므로 버전별로 파일 크기를 다 기록해놔야 쓸 수 있겠지.. (효율적이진 않다.)


4. 심볼릭 링크 검사 

(안..쓰이지 않니..?)

탈옥 도중 small system partition이 덮어쓰인다. 따라서 기존의 몇몇 디렉토리와 파일들을 보존하기 위해 larger data partition으로 옮기되, 기존의 파일 경로를 망가뜨리면 안되므로 small system partition에는 심볼릭링크로 대체하는 경우가 있다.

그러므로 심볼릭 링크로 대체되는 리스트를 기억해두고 검사한다면 탈옥 감지에 활용할 수 있다.

 

/Library/Ringtones

/Library/Wallpaper

/usr/arm-apple-darwin9

/usr/include

/usr/libexec

/usr/share

/Applications

 

(사례 추가 필요)

 


5. 파일생성 검사

탈옥 장치에서는 앱을 샌드박스 바깥인 /Applications 아래에 설치할 수 있고, 물론 루트 권한을 준다.

따라서 샌드박스 밖에서 파일을 생성,수정할 수 있는지를 확인하여 탈옥탐지에 활용할 수 있다.

ex) /private 디렉토리에 임의 파일 생성이 되는지 확인. ==> 정상 생성된다면 탈옥장치다.

 

반응형