Android 모바일 해킹 - FridaLab(1)

Woongmur·2025년 1월 11일

들어가기에 앞서

이번에 해볼 것은 FridaLab이다.
Uncrackable을 먼저 시도하려 하였으나 찾아본 결과 FridaLab을 먼저 하는 것이 기초를 잡는 것에 도움이 될것 같아 먼저 해보려 한다.

이번 실습에서 사용하는 환경은 Android studio에서 에뮬레이터로 (Pixel 4XL,S (Android 12))진행한다.
원래 루팅하였던 공기계로도 진행을 하였는데 안드로이드 7 버전에서 발생하는 메모리 문제 때문에 프리다 사용에 제한이 있어 아쉽게도 바꾸었다.

설치

우선 FridaLab.apk를 설치하여야 한다.
https://rossmarks.uk/blog/fridalab/
위의 URL에 접속하여 apk 파일을 설치할 수 있다.
(여기 블로그 들어가지는 확률이 아주 복불복이다. 운이 좋아 접속하였다면 다운로드 할 수 있을것이다.)

이제 adb install FridaLab.apk 명령어를 사용하여 안드로이드 디바이스에 애플리케이션을 다운로드 받는다.

이번 실습에서는 apk 파일을 디컴파일 하여 코드 분석을 진행하여야 하는데 이때 사용할 프로그램으로 jadx를 가져왔다.
https://github.com/skylot/jadx/releases
위의 깃헙 URL에서 최신 버전의 jadx 압축파일(jadx-1.5.1.zip)을 받아 남는 드라이브에 놓고 압축풀기 하였다.
jadx는 jre가 기본적으로 설치되어 있어야 하니까 꼭 java --version 명령어를 통해 jre가 설치되어 있는지, 버전이 8 이상인지 확인하여주자.
압축풀기를 하고 내부 폴더에 보면 bin 폴더가 있는데 그 안에 있는 jadx-gui.bat를 실행하면 사용할 수 있다.

참고로 CLI에서도 사용이 가능하니 각자 편한 방법으로 사용하도록 하자.


실행을 하면 다음과 같이 창이 뜨게 되는데 파일 열기를 통해 apk파일을 디컴파일 해도 되고 apk파일을 드래그앤 드랍 해서 디컴파일 해도 된다.

apk파일을 열었을때 위와 같이 디컴파일된 내용들이 나오게 된다.

일단 기본적인 구성으로는 여기까지 충분하다.

1번 도전과제


FridaLab을 실행시키면 다음과 같이 도전과제가 1번부터 8번까지 보이게 된다.
1번 도전과제로는 challenge_01의 변수 chall01를 1로 바꾸는 것이다.

먼저 안드로이드에서 프리다 서버를 열어준 다음에

정상적으로 작동하는지 frida-ls-devices에서 에뮬레이터를 찾아주고 frida-ps -D [에뮬레이터] 명령어로 해당 기기의 프로세스를 받아올수 있는지 본다.

정상적으로 연결이 되는것 같으니 본격적으로 풀어보겠다.

jadx를 통해 디컴파일한 내용을 보면 challenge_01클래스가 존재 하는 것을 알수 있다.

클래스 안의 코드를 보니 간단하게 변수를 바꾸어주면 될 것 같다.

Java.perform(function(){
	var Chall01 = Java.use("uk.rossmarks.fridalab.challenge_01");
    Chall01.chall01.value = 1;
    console.log("[+] chall01의 값이 1로 변경되었습니다.");
 })

위의 Chall01.js의 코드에는 프리다에서 주요 사용되는 문법이 있는데 Java.perform과 Java.use다.

  1. Java.perform은 현재의 스레드가 가상머신에 연결되어 있는지 확인하고 function을 불러온다.
  2. Java.use는 변수와 메서드에 액세스 할 수 있는 클래스 객체를 반환한다.(위의 코드에서는 uk.rossmarks.fridalab패키지의 challenge_01의 클래스를 사용하도록 선언 하였다.)

이외에도 더 있지만 추후 다른 글에서 추가로 설명하도록 하겠다.
간단한 코드에 맞게 그대로 해석하면 된다.
uk.rossmarks.fridalab의 challenge_01클래스의 chall01변수를 1로 변경하고 [+]chall01의 값이 1로 변경되었습니다.라는 문구를 출력하도록 한것이다.

바로 frida -l Chall01.js -U -f uk.rossmarks.fridalab 명령어로 확인해 보겠다.

..여담..

-f 옵션을 이용하면 강제로 시작( 콜드 스타트 ) 하기 때문에 앱을 초기화하여 실행하는게 아니라면 그냥 frida -U -l (js파일) (앱 프로세스) 로 하는 것이 좋다고 생각한다.


오류없이 출력되는 것을 보아하니 코드에 오류는 없는듯 하다.
에뮬레이터로 돌아가 check 버튼을 눌러보면

1번 과제가 통과되어 초록색으로 바뀐것을 볼수 있다.

-다음 포스트에 계속...

profile
Pentest Study & Life Blog

0개의 댓글