Security/안드로이드 모의해킹

[안드로이드 모의해킹] UnCrackable1 Frida hooking -1

2er0127 2023. 8. 27. 22:47

# 경고

나열된 해킹 기법들은 학습의 목적으로만 사용해야하며,

악의적인 목적으로 사용 시 발생하는 모든 법적 책임은 악용한 본인에게 있습니다.

해당 글을 열람한다는 것은 위 내용에 동의함을 의미합니다. 

 

 

 

UnCrackable1 루팅(Rooting) 탐지 우회

환경 구성은 다음 글을 확인

https://seo1-say.tistory.com/39

 

[안드로이드 모의해킹] Android Hooking 환경 구성

▼▼▼▼▼ 기본적인 안드로이드 후킹 환경 구성하기 Android Hooking 에 필요한 최소 진단 도구 Python 2 / Python 3 Jadx-gui Platform-tools(adb) Nox Player 대상 APK 파일 Frida Frida-server 1. 파이썬 설치 Python 2버전

seo1-say.tistory.com

 

 

 

 

Nox Player 포트 연결

adb connect 127.0.0.1:62001

 

 

 

adb 쉘 접속

adb shell

 

 

쉘 접속 후에는 리눅스 명령어와 동일하게 사용가능하다.

 

 

 

Nox Player 안에 설치되어 있는 모든 앱의 패키지 명과 경로를 불러온다.

pm list packages -f

 

 

=를 기준으로 앞 부분은 실제 앱이 설치된 경로, 뒷 부분은 패키지명이다.

후킹을 할 때는 패키지명을 주로 이용한다.

 

 

 

 

녹스에 있는 앱의 APK 파일을 가져오는 명령어이다.

adb pull [apk 경로]

 

(단, 실제 앱의 apk 파일을 불러오면 집에 경찰이 올 수도 있으니 함부로 사용하는 것은 좋지 않다.)

 

 

 

 

실습에는 UnCrackable 이라는 안드로이드 보안 테스트용 앱을 사용한다.

안드로이드 앱 레벨은 1~3까지 있고, 해당 글은 레벨 1에 해당한다.

 

 

 

jadx-gui 에 UnCrackable1 APK 파일을 연다.

 

 

녹스에서 UnCrackable1 을 실행하면 루팅 탐지를 하고 있고, OK를 누르면 앱이 종료되는 것을 알 수 있다.

 

 

 

이제 이 루팅 탐지를 우회하여 앱이 종료되지 않도록 해본다.

 

 

 

 

우선 frida 사용을 위해 frida-server를 녹스에 넣어 백그라운드로 실행하는 작업이 필요하다.

adb connect 127.0.0.1:62001
adb push [frida-server 파일명] /data/local/tmp
adb shell

cd /data/local/tmp
ls -al
chmod 755 [frida-server 파일명]
./[frida-server 파일명] &

 

 

 

 

 

코드를 보면 MainActivityonCreate 함수에서 if문을 사용하여 루팅 및 디버깅을 탐지하고 있는 것으로 보인다.

참(true)일 때 a()를 실행하기 때문에 a, b, c 를 false로 만들어주면 후킹이 가능할 것 같다.

 

 

 

 

 

후킹 코드는 다음과 같다.

unc1_hooking.js

Java.perform(function() {
	console.log("[*] java perform function");
	var sg = Java.use('sg.vantagepoint.a.c');
	sg.a.overload().implementation = function() {
		console.log("[*] function a bypass");
		return false;
	};
	
	sg.b.overload().implementation = function() {
		console.log("[*] function b bypass");
		return false;
	};
	
	sg.c.overload().implementation = function() {
		console.log("[*] function c bypass");
		return false;
	};
});

 

 

adb 접속 후 녹스에 Uncrackable 앱을 실행한 상태로 진행한다.

 

 

 

먼저 패키지명을 확인한다.

pm list packages -f | grep uncrackable

 

owasp.mstg.uncrackable1

 

 

 

 

다음 명령어는 adb가 아닌 다른 cmd 창을 킨 후 윈도우에서 실행한다.

frida -U -f [패키지명] -l [실행할 후킹코드 경로]

frida -U -f owasp.mstg.uncrackable1 -l C:\android\02.frida_code\unc1_hooking.js

 

 

 

UnCrackable1 앱의 루팅 탐지가 우회되는 것을 볼 수 있다.

 

 

728x90