[OWASP-MSTG] Uncrackable level 2 Write-Up

두비니

·

2021. 1. 22. 21:08

 

 

 

 

 

똑같이 root detection을 진행하네요. 이건 uncrackable1의 코드를 그대로 들고 왔습니다.

 

 

 

그러면 이렇게 잘 접속되는걸 볼 수 있습니다

 

 

 

진짜 문제는 여기서부터죵

근데 verify를 분석하기 전에 MainActivity 전체적인 구조를 먼저 봅시다...

 

코드 분석

 

일단 두가지만 보고 넘어갑시다

1. 새로운 라이브러리 호출

 

 

foo라는 라이브러리를 호출하는 것을 볼 수 있습니다. 따라서 저 라이브러리 내부의 함수를 활용할 경우, 라이브러를 분석해야할 수도 있죠?

 

 

2. AsyncTask 추가

 

onCreate함수 내부에 AsyncTask라는 클래스가 추가된 것을 볼 수 있습니다. AsynTask는 주로 멀티스레딩 코드를 작성할 때 사용하는데, 이 경우는 디버깅을 감지하네요.

 

 

특히 중간부분에 있는 donInBackground함수를 잘 봅시다. Debugger가 실행된걸 감지하는 경우 계속 잠재웁니다. 즉 후킹을 진행할 때 이부분을 염두하여야겠죵

 

 

 

 

Verify함수 분석

그럼 이제 verify함수를 봅시다.

 

 

 

보니깐 m.a메서드를 확인하네요

 

 

 

m이 CodeCheck 클래스로 선언된 벼수이기 때문에 내부를 확인해보면

a함수는 private native 메서드인 bar함수를 호출합니다.

native형인것으로 보아 아까전에 봤던 foo라이브러리 안에 있다고 유추할 수 있습니다.

 

 

이제 여기서 두가지 방법이 있습니다.

 

 

1. bar메서드를 후킹해서 무조건 true반환하도록 설계

2. 직접 비밀번호 찾기

 

1번방법은 저번 문제에서 하기도 했고 문제의도가 2번방법을 원하는 것 같아 2번방법으로 풀었습니다. 첫 번째 방법은 1번 풀이 참고하여 작성하면 될 것 같습니다!

 

문제풀이

 

 

libfoo.so파일을 분석하기 위해 libfoo.so파일을 ida로 분석해보았습니다.

 

libfoo.so파일은 uncrackable-level2.apk를 압축해제하면 됩니다. 다만 문제는 

 

 

각 폴더 안에 libfoo.so 파일이 각각 있다는 건데요,

이건 본인이 앱 후킹을 시도할 안드로이드 OS버젼만 찾으면 됩니다. 방법은 아래와 같이 찾으면 됩니다!

 

- 확인 명령어

  powershell - C:\> adb shell getprop ro.product.cpu.abi

  adbshell - # getprop ro.product.cpu.abi

 

 

 

 

아무튼 해당 버전에 맞는 libfoo.so파일을 열고 나면, 기본적으로 어셈들이 뜰텐데 무시하고 Exports를 누르면 bar함수를 확인할 수 있습니다. enter버튼을 눌러 들어가봅시다

enter를 누르면 맨 처음에는 플로우 그래프가 나오는데, 여기서 F5를 누르면 자동으로 c언어 변환을 해줍니다. 

 

 

그럼 이렇게 함수를 확인할 수 있는데, strncmp를 후킹해 놓으면 들어오는 패스워드값도 확인할 수 있겠죠?

 

그럼 코드를 작성해 봅시다.

 

 

1. exit함수 우회

2. 디버깅 우회

3. libfoo.so파일 안에 stncmp 후킹, 길이가 23이면 각 파라미터 출력

 

 

이렇게 잘 나오는거 확인!

이때 길이 23인거 제한 안두면 난리납니다

 

 

 

 

와앙~

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

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