[OWASP-MSTG] Uncrackable level 1 Write-Up

두비니

·

2021. 1. 17. 19:48

 

 

 

우선 문제 파일을 열어보자.

 

 

실행시키면 무조건 Root detected라면서 앱을 종료하게끔 하고있다.

따라서 jadx로 다시 디컴파일 해보았다.

 

 

우선 아까 앱을 실행시켰을 때 볼 수 있었던 "Root detected!"부분을 찾아보았다. 

c.a, b, c함수를 찾아본 뒤 하나라도 해당이 되면 a함수를 실행시킨다.

 

다음은 a메서드 의 전체 부분이다. 텍스트를 출력시키고, ok버튼을 클릭하면 system.exit을 수행하도록 되어있다.

그럼 우리의 목표는 ok를 눌러도 프로그램이 종료되지 않도록 설계하는 것이다.

 

우리는 frida를 통해 hooking을 한다면 exit이 호출되어도 종료되지 안도록 할 수 있습니다.

 

기본적인 hooking 참고 : mingzz1.github.io/pentesting/android/2020/09/09/frida_install_for_android.html

 

[Android] Frida 사용 및 Hooking 방법 | mingzzi

Frida는 Python 기반의 라이브러리로 Native App에 대한 Hooking을 통해 어플리케이션을 분석할 수 있게 해 주는 툴이다. JS Injection을 이용하며, Android와 iOS에 많이 사용하지만 Windows나 MacOS, Linux 등 다른

mingzz1.github.io

 

코드는 다음과 같이 작성했습니다.

 

 

다음과 같이 작성하면 system.exit이 호출되도 단순히 콘솔창에 호출만 됩니다. 코드를 실행해봅시다

 

 

코드를 실행하면 다음과 같은 텍스트가 콘솔창에 뜨고, 

nox로 넘어가서 ok버튼을 눌러주면

 

WA!

 

 

끝일줄 알았는데 이제 시작이구나!

대충 원하는 값을 넣어줘야지 진짜 풀리는 것 같습니다.

jadx로 다시 돌아가봅시다.

 

 

위의 verify메서드인걸로 추정되네요.

보니깐 a.a(obj)가 true를 리턴하면 성공으로 처리되네요.

a.a()메서드를 확인해봅시다.

 

 

다음은 a클래스의 a메서드입니다.

8d127684cbc37c17616d806cf50473cc를 b메서드에 넣은 값과, 5UJiFctbmgbDoLXmpL12mkno8HT4Lv8dlat8FxR2GOc=를 base64 decoding한 값을 a.a.a를 호출하여 bArr의 값에 대입하네요.

 

 

그냥 단순히 AES를 decrypt하는 함수입니다.

 

 

여기서 2가지 방법으로 풀 수 있을 것 같습니다.

 

1. 클래스 a를 후킹

2. 직접 비밀번호 알아내기

 

각각 풀어보도록 하겠습니다.

 

 

1. 첫 번째 풀이

 

결론적으로 a의 값이 true를 리턴하면 되기때문에 메서드 a를 후킹하였습니다.

 

 

 

18번줄부터 22번줄이 새로 추가되었습니다.

 

 

 

잘 실행되는 것을 볼 수 있고, 실제 앱에서도

 

 

다음과 같이 무조건 success를 반환하는 것을 볼 수 있습니다.

 

 

 

2. 두 번째 풀이

 

이 풀이는 실제 비밀번호를 찾는 풀이이다.

 

 

우선 다음과 같이 스크립트를 작성할 경우 equals를 사용하는 모든 스트링들을 출력하고, true를 반환하도록 하고 있습니다.

 

 

 

그리고 실제로 실행시키면 이렇게 수많은 텍스트들이 나옵니다.

그럼 여기서 맞는 비번을 찾아내야겠져?

 

 

 

wa!

'SYSTEM HACKING > Hooking' 카테고리의 다른 글

[OWASP-MSTG] Uncrackable level 3 Write-Up  (8) 2021.05.17
[OWASP-MSTG] Uncrackable level 2 Write-Up  (6) 2021.01.22
[Frida-Lab] level 1~8 Write-Up  (0) 2021.01.10