본문 바로가기

ios 탈옥탐지4 - 루프백 테스트 (서비스 탐지) ios 탈옥탐지4 - 루프백 테스트 장치를 탈옥시키고 가장먼저 하는 행위가 Cydia 설치 및 OpenSSH 설치. 따라서 127.0.0.1:22 로 루프백 테스트 했을 때 정상 연결된다면 탈옥으로 간주할 수 있다. 다만 공격자 입장에서는 그냥 ssh 포트를 바꾸면 그만이다... 이외에도 탈옥장치에서는 정상장치에서 돌릴 수 없는 각종 서비스들도 돌릴 수 있다. 앞서 말한 ssh가 대표적인 예시이고, 이같은 방법으로 다른 서비스들도 탐지 목록에 추가하면 된다.
ios 탈옥탐지3 - system(0) (ios 11이후 사용불가) 탈옥탐지3 - system(0) system(0); 함수 호출 시 반환값을 보고 탈옥여부를 판단한다. /bin/sh가 있는지 여부에 따라서 return 값이 달라지므로 이걸 보고 판단하는 것. return 0 : 비탈옥장치 (정상장치) return 1 : 탈옥장치 예시코드(앱에 적용) +(BOOL)doShell{ if(system(0))//system(0) 호출결과를 보고 탈옥판단 return YES; return NO; } 우회코드(MobileSubstrate로 후킹) static int (*old_system)(char *) = NULL; int st_system(char* cmd){ if(!cmd) return nil; return old_system(cmd); } __attribute__((con..
ios 탈옥탐지2 - 파일시스템 검사 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) ..