심볼릭 링크 검사

 

4. 심볼릭 링크 검사

 
iOS disks는 일반적으로 2개의 파티션으로 나뉜다.
  1. read-only, 비교적 작은 system partition
  1. 비교적 큰 user partition
 
  • 앱스토어, 사파리 등 pre-installed 앱은 기본적으로 system partition인 /Applications 폴더에 설치된다.
  • 탈옥 장치의 경우 third-party 앱도 /Applications 폴더 아래에 설치하여 샌드박스의 제한을 받지 않도록 하기 위해 read-only인 이 영역을 읽고 쓰기 가능하도록 덮어쓴다.
  • system partition은 용량이 작고 한정적이라 기존의 몇몇 디렉토리와 파일들을 보존하기 위해 user partition(더 크다)으로 옮기되, 기존의 파일 경로를 망가뜨리면 안되므로 심볼릭링크로 대체한다.
 
그러므로 일반적으로 심볼릭 링크로 대체되는 파일 목록를 기억해두고 검사한다면 탈옥 감지에 활용할 수 있다고 한다. (난 모르겠다~~~)

리스트

  • /Library/Ringtones
  • /Library/Wallpaper
  • /usr/arm-apple-darwin9
  • /usr/include
  • /usr/libexec
  • /usr/share
  • /Applications
 

코드 예시

//구조체 선언 struct stat s; //일반적으로 많이 변경된다는 파일을 검사하여 링크파일로 대체되었는지 확인 lstat("/Library/Wallpaper", &s); if(s.st_mode & S_IFLNK) printf(":The Device is jailbroken"); else printf("The Device is in Jail");
 

심볼릭 링크 예시

notion image
탈옥을 했을 때 일반적으로 링크 파일로 변환된다는 목록을 살펴보면 위 그림과 같다고 한다.
 
하지만 나의 경우 ios13.1 버전에 checkra1n으로 탈옥한 아이폰8의 경우 위 파일들 중 링크파일로 대체된 것이 단 하나도 없었다.
 
결론짓자면 참고정도는 할 만 한데, 직접 효과를 보진 못해서 와닿는 방법은 아닌 것 같다.