Jailbreak Detection (1)

옥영진·2023년 1월 13일
0

DVIA-v2

목록 보기
3/7

[Jailbreak Test 1]


탈옥된 기기에서 Jailbreak Test 1을 터치하면 "Device is Jailbroken"이라는 메시지가 나타난다.

앱에서 탈옥을 탐지하고 있다는 의미인데, 이를 우회하는 방법을 찾아야 한다.

https://github.com/AloneMonkey/frida-ios-dump

일단, 위 url을 통해 frida-ios-dump를 다운로드하여 실행한 후, DVIA 앱을 복호화하여 원본 ipa 파일을 추출한다.


ipa 파일을 추출하고 나서 압축풀기를 한다.


압축풀기를 하고나서 디렉토리에 접근하면 앱 이름인 "DVIA-v2" 라는 파일이 있는데, 이게 바로 앱 실행파일이다.


IDA로 해당 파일을 열어, 앞서 메시지에 나왔던 문자열 "Device is Jailbroken"을 검색한다.


해당 문자열을 사용하는 부분을 더블클릭하면,


참조한 부분으로 이동할 수 있다.


위 TBZ 명령어의 결과에 따라 분기하는데, 왼쪽은 탈옥일 경우, 오른쪽은 탈옥이 아닐 경우이다.

따라서 TBZ 명령어 결과의 반대인 TBNZ로 수정하여 코드 패치해보기로 했다.


일단 TBZ 클릭 후 Hex View 탭을 클릭하면 해당 명령어의 hex 값을 알 수 있다.

hex 값이 60 1D 00 36인데, 이 중 명령어에 해당하는 부분이 어느 부분인지 확인하기 위해 TBZ를 사용하는 다른 곳을 찾아보았다.


TBZ를 사용하는 다른 곳에서 hex 값을 확인해보면 E3 00 00 36 으로 나오는데, 이를 통해 뒤 두자리 00 36을 수정해야 한다는 것을 알 수 있었다.


이제 TBNZ를 사용하는 부분을 찾아보면 hex 값이 00 0F 00 37 이라는 것을 알 수 있다.

다른 TBNZ도 찾아보면 뒤 두자리 00 37이 공통된 것을 알 수 있다.


이제 처음 변경하고자 했던 TBZ 부분의 hex 값을 뒤에 00 36 대신 00 37로 변경한다.


이제 IDA View 탭으로 확인해보면 TBZ 명령어가 TBNZ로 변경된 것을 알 수 있다.


수정 후 반드시 Edit - Patch program - Apply patches to input file... 을 통해 코드 패치 해주어야 한다.

단순히 저장만 하면 원본 파일에는 수정이 되지 않고 .i64 확장자의 신규 파일로 생성된다.

수정된 파일을 이제 아이폰 내 Bundle Container에 있는 실행파일과 교체해주어야 한다.


먼저 원본 파일을 백업해 두고, DVIA-v2 파일을 이동시킨다.

그 후, 반드시 수정한 파일의 권한을 수정해주어야 한다.

chmod 755 DVIA-v2

위 명령어로 원본 파일과 같은 권한으로 변경해준다.


실행 후 다시 테스트해보면 Device is Not Jailbroken 이라는 메시지로 변경되어 나타나는 것을 확인할 수 있다. (Test 2도 동일)

[Jailbreak Test 3]


Jailbreak Test 3을 터치하면 위와 같은 메시지가 출력된다.


Test 1에서 했던 것과 마찬가지로 앱 실행파일을 IDA로 열어 메시지에 출력된 문자열을 검색한다.


검색결과를 클릭하여 로직을 확인한다.


마찬가지로 00 36을 00 37로 변경하면 TBZ 명령어가 TBNZ로 바뀐다.


코드 패치 후 앱 실행해보면 Jailbreak Test 3 터치 시 탈옥되지 않은 장치라는 메시지를 확인할 수 있다.

[Jailbreak Test 4]


Jailbreak Test 4를 터치하면 위와 같은 메시지가 출력되며, 이 문자열을 검색해본다.


해당 로직에서 문자열을 사용하는 것을 알 수 있으며, 마찬가지로 TBZ 명령어로 분기하는 것으로 보아 이를 변경하기로 한다.


00 36 이었던 부분을 00 37로 변경한다.


TBNZ로 변경되었다.

이제 코드 패치를 하고 다시 아이폰에 있는 실행 파일과 교체한다.


앱 실행 후 다시 터치해보면 탈옥되지 않은 장치라는 메시지가 나온다.

[Jailbreak Test 5]


Jailbreak Test 5를 터치하면 위와 같은 메시지가 나오며, 해당 문자열을 IDA에서 검색해본다.


해당 문자열이 사용되는 로직을 확인하고, TBZ 명령어를 통해 분기함을 알 수 있었다.


마찬가지로 00 36 부분을 00 37로 변경한다.


TBNZ로 변경된 것을 확인하고, 코드 패치를 진행한다.

그 후 코드 패치된 파일과 원본을 교체한다.


앱 실행 후 다시 터치해보면 탈옥되지 않은 장치라는 메시지가 나온다.

profile
안녕하세요 함께 공부합시다

0개의 댓글