DVIA라는 iOS 점검 실습용이 있는데, 실습용으로도 좋고 평소 안드로이드만 하다보니 iOS이 너무 약해서 공부할겸 풀어보고 있는데 괜찮은 앱인 것 같아 포스팅하려 합니다.
http://damnvulnerableiosapp.com/
앱 다운로드 주소는 다음과 같고, 현재 v2까지 나와있는데 v1부터 풀어보도록 하겠습니다.
앱 설치 후에 왼쪽 상단 [Menu] - [Jailbreak Detection]으로 들어갑니다.
그럼 다음과 같은 화면을 볼 수 있는데, Jailbreak Test 1,2를 각각 클릭하면 탈옥여부를 탐지하여 Alert창을 띄워줍니다.
그럼 실행파일을 IDA를 통해 분석해보겠습니다.
함수명 중 "jail"이란 문자가 들어간 함수명을 검색했을 때 왼쪽상단과 같이 출력됩니다. Test1,2가 있는것으로 보아 각각 Test1,2를 클릭했을 때 실행되는 함수로 추측이 가능합니다.
소스코드 중 빨간 네모박스 위의 $OBJC_CLASS_$_DamnVulnerableAppUtilities의 isJailbroken함수로 넘어가네요.
즉, jailbreakTest1Tapped: 함수에서 isJailbroken함수를 호출하는 것을 알 수 있습니다.
isJailbroken함수를 살펴보면 bool return형을 가진 함수고 내부 탈옥탐지 로직을 확인할 수 있습니다.
위 사진에서는 Cydia.app만 보이지만 소스코드를 더 살펴보면 /bin/bash, apt, 등등이 있는지 확인하는 것을 알 수 있습니다.
그 후에 해당 파일이 존재하면 true(탈옥), 존재하지 않다면 false(미탈옥)을 리턴해서 탈옥여부를 확인합합니다.
Frida를 통해 리턴함수를 조작하여 탈옥탐지를 우회하도록 하겠습니다.
if (ObjC.available) { try {
Interceptor.attach(hook.implementation, { } else { console.log("Objective-C Runtime is not available!"); } |
위 소스파일을 js파일로 저장한 후, 파일을 저장한 경로에서 frida -U -l [js파일].js DVIA를 통해 실행하면
다음과 같이 탈옥탐지 우회가 가능합니다.
iOS는 Android와 다른 부분이 꽤 존재하는데 이부분때문에 상당히 시간이 많이 걸렸네요... 차후에 Try&Err과 주의점(?)도 포스팅 하겠습니다.
Frida가 Android는 자료가 많아지는데 iOS는 아직 많이 없는 것 같아 차근차근 올려보겠습니다.
출처 : https://blog.attify.com/bypass-jailbreak-detection-frida-ios-applications/
'Mobile' 카테고리의 다른 글
Cydia Impactor 에러 모음 (1) | 2019.09.03 |
---|---|
DVIA (Jailbreak Detection 2 ... Frida) (0) | 2019.08.28 |
iOS 12 - 12.1.2 Jailbreak(with. Unc0ver) (1) | 2019.07.10 |
Can't connect to App. Have you connected the device?(with.Frida) (0) | 2019.05.08 |
Waiting for USB device to appear...(With.Frida) (0) | 2019.05.08 |