-
[Frida] Uncrackable level 1 풀이Learning/Android 2023. 12. 18. 13:57
owasp에서 만든 apk 문제이다
우선 앱을 들어가면 루팅이 탐지되어 앱이 종료된다.
메인 액티비티의 onCreate 함수를 보면 c.a(), c.b(), c.c()를 체크하여 루팅을 탐지하는 것으로 보인다.
c 클래스를 보면 a 메서드에서는 su라는 파일이 있는지 체크, b메서드에서는 Build.TAGS에 test-keys라는 항목이 있는지 체크, c 메서드에서는 여러 루팅 관련 어플리케이션이 있는지 탐지한다.
b메서드의 경우 루팅되어있을 경우에는 ro.build.tags=release-keys라는 값을 가지고 있고, 루팅이 되어있지 않다면 ro.build.tags=test-keys라는 값을 가지고 있다.
결국 삼중으로 되어있는 루팅 체크를 우회해야한다.
근데 정말정말 간단한 방법이 있다.
앱 종료 로직을 보면, OK버튼의 onClick 이벤트로 System.exit를 호출한다. System.exit을 호출하지 않도록 하면 루팅이 탐지되어도 앱 사용이 가능할 것이다.
setImmediate(function() { Java.perform(function() { console.log("[*] Script start"); let AnonymousClass1 = Java.use("sg.vantagepoint.uncrackable1.MainActivity$1"); AnonymousClass1["onClick"].implementation = function (dialogInterface, i) { console.log("pass exit func"); }; console.log("[*] Script finish"); }); });
해당 onClick 이벤트를 후킹하는 코드이다 한 번 테스트해보자
루팅이 탐지되었지만
OK버튼을 눌러도 exit 함수가 호출되지 않으면서 앱 사용이 가능하다. 이제 Secret string만 알아내면 된다.
이제 Secret String을 알아낼 차례다
메인액티비티의 입력값 검증 코드이다
a.a(obj)에서 true가 반환되면 비밀번호가 맞다고 판단되는 것 같다.
검증 로직이다! sg.vantagepoint.a.a.a(arg1, arg2)를 통해 bArr의 값을 만들어주고, 우리의 입력값과 같은지 확인하는 것을 볼 수 있다.
해당 코드이다. AES 복호화를 하는 것을 볼 수 있고, 앞서 넘겨준 두 인자는 복호화를 위한 값들인 것을 알 수 있다.
근데 복호화를 하며 시간낭비하기 아까우니 해당 메서드를 후킹하며 반환값을 훔쳐오자
setImmediate(function() { Java.perform(function() { console.log("[*] Script start"); let AnonymousClass1 = Java.use("sg.vantagepoint.uncrackable1.MainActivity$1"); AnonymousClass1["onClick"].implementation = function (dialogInterface, i) { console.log("pass exit func"); }; let a = Java.use("sg.vantagepoint.a.a"); a["a"].implementation = function (bArr, bArr2) { let result = this["a"](bArr, bArr2); console.log(`a.a result=${result}`); return result; }; console.log("[*] Script finish"); }); });
해보자!
VERIFY버튼을 누르면 우리의 입력값은 틀렸다고 나오지만, 콘솔에 올바른 리턴값이 찍히는 것을 볼 수 있다.
cyberchef로 돌려보니 비밀번호는 "I want to believe"라는 것을 볼 수 있다.
1번 끝!
'Learning > Android' 카테고리의 다른 글
[Frida] Uncrackable 4 (r2pay) 풀이 (1) 2024.01.20 [Frida] Uncrackable level 3 풀이 (0) 2023.12.29 [Frida] Uncrackable level 2 풀이 (0) 2023.12.18 [Frida] FridaLab 1~8 풀이 (1) 2023.12.16 [Frida] 환경 세팅 (0) 2023.11.14