효투의 세상 로딩중...
효투의 세상 로딩중...
반응형

최근 탈옥우회 트윅들이 퀄리티가 좋지않다...

애용했던 FlyJB X도 개발이 멈춰 지원이 되지않고 ios 14.3 이하버전이 아니라면 호환이 되지않음 

그래서 어쩔수 없이 코드 분석을 통해 변조로 우회하거나 해야하는데

솔루션이 되어있거나 무결성검증까지 하고있는 앱이라면 힘들다.

그 때 Frida Hooking을 이용할 수 있음

 

https://github.com/noobpk/frida-ios-hook

 

GitHub - noobpk/frida-ios-hook: A tool that helps you easy trace classes, functions, and modify the return values of methods on

A tool that helps you easy trace classes, functions, and modify the return values of methods on iOS platform - GitHub - noobpk/frida-ios-hook: A tool that helps you easy trace classes, functions, a...

github.com

 

위 깃허브에서 아주 많은 후킹스크립트를 다운받을 수 있다.

 

스크립트 중에는 아래 모든 탈옥관련 경로와 파일들을 체크해서 탐지하는 코드가 있다면 우회해주는 스크립트도 있다.

보안솔루션이 되어있지 않은 앱이라면 이 스크립트 하나만으로도 트윅처럼 간단하게 우회가 가능하다.

 "/Applications/blackra1n.app",
        "/Applications/Cydia.app",
        "/Applications/FakeCarrier.app",
        "/Applications/Icy.app",
        "/Applications/IntelliScreen.app",
        "/Applications/MxTube.app",
        "/Applications/RockApp.app",
        "/Applications/SBSetttings.app",
        "/Applications/WinterBoard.app",
        "/bin/bash",
        "/bin/sh",
        "/bin/su",
        "/etc/apt",
        "/etc/ssh/sshd_config",
        "/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",
        "/Library/MobileSubstrate/DynamicLibraries/Veency.plist",
        "/Library/MobileSubstrate/MobileSubstrate.dylib",
        "/pguntether",
        "/private/var/lib/cydia",
        "/private/var/mobile/Library/SBSettings/Themes",
        "/private/var/stash",
        "/private/var/tmp/cydia.log",
        "/System/Library/LaunchDaemons/com.ikey.bbot.plist",
        "/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",
        "/usr/bin/cycript",
        "/usr/bin/ssh",
        "/usr/bin/sshd",
        "/usr/libexec/sftp-server",
        "/usr/libexec/ssh-keysign",
        "/usr/sbin/frida-server",
        "/usr/sbin/sshd",
        "/var/cache/apt",
        "/var/lib/cydia",
        "/var/log/syslog",
        "/var/mobile/Media/.evasi0n7_installed",
        "/var/tmp/cydia.log",
        "/etc/apt",
        "/Library/MobileSubstrate/MobileSubstrate.dylib",
        "/Applications/Cydia.app",
        "/Applications/blackra1n.app",
        "/Applications/FakeCarrier.app",
        "/Applications/Icy.app",
        "/Applications/IntelliScreen.app",
        "/Applications/MxTube.app",
        "/Applications/RockApp.app",
        "/Applications/SBSetttings.app",
        "/private/var/lib/apt/",
        "/Applications/WinterBoard.app",
        "/usr/sbin/sshd",
        "/private/var/tmp/cydia.log",
        "/usr/binsshd",
        "/usr/libexec/sftp-server",
        "/Systetem/Library/LaunchDaemons/com.ikey.bbot.plist",
        "/System/Library/LaunchDaemons/com.saurik.Cy@dia.Startup.plist",
        "/var/log/syslog",
        "/bin/bash",
        "/bin/sh",
        "/etc/ssh/sshd_config",
        "/usr/libexec/ssh-keysign",
        "/Library/MobileSubstrate/DynamicLibraries/Veency.plist",
        "/System/Library/LaunchDaemons/com.ikey.bbot.plist",
        "/private/var/stash",
        "/usr/bin/cycript",
        "/usr/bin/ssh",
        "/usr/bin/sshd",
        "/var/cache/apt",
        "/var/lib/cydia",
        "/var/tmp/cydia.log",
        "/Applications/SBSettings.app",
        "/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist",
        "/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist",
        "/private/var/lib/apt",
        "/private/var/lib/cydia",
        "/private/var/mobile/Library/SBSettings/Themes",
        "/var/lib/apt",
        "/private/jailbreak.txt",
        "/bin/su",
        "/pguntether",
        "/usr/sbin/frida-server",
        "/private/Jailbreaktest.txt",
        "/var/mobile/Media/.evasi0n7_installed",
        "cydia://package/com.example.package"

 

실제로 동작해보면 아래 그림과같이 우회되는 것을 볼 수 있다.

 

취약점 테스트용 ios 앱

https://damnvulnerableiosapp.com/

 

DVIA (Damn Vulnerable iOS App) | A vulnerable iOS app for pentesting

Downloads Swift Version (April, 2018) – Download the IPA file from here here Github – Here Make sure to read this for instructions on how to install the app on any device (jailbroken or not jailbroken), and how to compile the app with Xcode. This versi

damnvulnerableiosapp.com

 

하지만 조금만 탈옥탐지가 잘되어있는 앱이라면 우회가 불가하기 때문에 그냥 알아두면 좋고

중요한건 원하는 클래스 및 메소드를 후킹하는것이다.

IDA로 탈옥탐지하는 부분을 보면 

+[JailbreakDetection isJailbroken] 

JailbreakDetection이 클래스에 해당되고 isJailbroken이 메소드에 해당된다.

IDA로 확인하는 방법도 있지만 위에서 받은 스크립트로 확인하는 방법도 있다.

위 스크립트를 가지고 명령어를 입력해주면된다.

frida -U --no-pause -f [패키지명] -l [스크립트경로 및 파일명]

앱이 실행되면서 스크립트가 동작한다.

만약 앱 실행 중에 스크립트를 동작한다면 아래와같이 실행하면된다.

frida -U -l 스크립트명 앱이름

여기서 원하는 클래스명만 찾고싶다면 findstr 명령을 이용해서 검색하는 방향으로 하면된다.

리눅스는 grep -l 윈도우의 findstr i 옵션은 대소문자 구별하지 않는 옵션

frida -U -l find-all-classes.js DVIA-v2 | findstr /i jail

메소드도 똑같은 방법으로 확인할 수 있다.

후킹할 클래스와 메소드를 모두 파악했다면 후킹스크립트 수정이 필요하다

반응형

 

아래 스크립트에서 클래스명과 메소드명을 수정해야한다

메소드 명을 넣을 때는 제일 앞에 + - 기호까지 맞춰줘야한다 

각각 다른 메소드

function bypassJailbreakDetection() {
	try {
		var className = "JailbreakDetection"; // 클래스명 
        var funcName = "+ isJail"; // 메소드명
        var hook = eval('ObjC.classes.' + className + '["' + funcName + '"]');
        Interceptor.attach(hook.implementation, {
          onLeave: function(retval) {
            console.log("[*] Class Name: " + className);
            console.log("[*] Method Name: " + funcName);
            console.log("\t[-] Type of return value: " + typeof retval);
            console.log("\t[-] Original Return Value: " + retval);
            retval.replace(0x0);
            console.log("\t[-] Type of return value: " + typeof retval);
            console.log("\t[-] Return Value: " + retval);
          }
        });
        
	} catch(err) {
		console.log("[-] Error: " + err.message);
	}
}

if (ObjC.available) {
	bypassJailbreakDetection();
} else {
 	send("error: Objective-C Runtime is not available!");
}

수정 후 후킹스크립트를 실행해주게되면

아래 그림과같이 기존 리턴값 0x1 (True)에서 0x0 (False)로 변경되며

탈옥탐지 우회가 되는것을 볼 수 있다.

굉장히 간단한 방법이지만 강력해

이렇게 프리다 후킹을 통해서 솔루션 동작 자체를 안하게끔

리턴 주소값을 바꿔 솔루션도 우회할 수도 있다. 

반응형
  • hyotwo7658@gmail.com

복사 완료 👍