본문 바로가기
App/AndroGoat

AndroGoat.apk | 루팅 탐지 (Frida)

by 09337 2021. 9. 20.

초반 내용은 이전 글과 동일하다.

https://lyk00331.tistory.com/93

 

안드로이드 AndroGoat.apk | 루팅 탐지 (smali)

0. 기본 세팅 AndroGoat.apk 파일을 다운받은 후, 에뮬레이터(Nox)로 옮겨준다. 나는 Nox 자체 설정에서 루팅을 켜놓았다. 1. 루팅 탐지 어플리케이션을 실행한 후, Root Delection에 들어가 루팅 탐지를 해

lyk00331.tistory.com

위 게시물을 참고하여 2번까지 진행한 후, 이번 글은 Frida와 관련된 내용으로 3번부터 작성했다.

 

3. frida 서버 실행

adb shell에 접속한 후, 안드로이드 기기에 설치해둔 frida server를 실행한다. (이때 frida가 PC와 모바일에 동일 버전으로 설치되어있어야 한다.)

 

4frida script 작성

//root_detect.js

console.log("Script loaded successfully");
Java.perform(function x() {
	console.log("Inside java perform function");
	var my_class = Java.use(
	"owasp.sat.agoat.RootDetectionActivity");

	my_class.isRooted.implementation = function (args) {
	console.log("\n0*********************************")
	return false;
	};
})

위 스크립트는 루팅을 탐지하는 영역에 접속한 후, return 값을 false로 반환하면서 루팅 탐지가 되지 않았다며 후킹해주는 코드다.

 

5frida script 실행

PC에 frida가 설치되어있는 경로에서 다음과 같이 frida를 통해 방금 작성한 스크립트를 실행한다.

frida.exe -U -f owasp.sat.agoat -l [경로]\root_detect.js --no-pause

 

6. 실행 결과

그럼 위와 같이 "Device is not rooted" 라는 문구가 뜨며 루팅 탐지가 되지 않았다는 것을 확인할 수 있다.

 

7. 번외

4번에서 작성한 script의 내용 중 return 값을 false가 아닌, true로 바꾼 후 후킹을 진행하면 다시 루팅이 탐지된다.

//root_detect.js

console.log("Script loaded successfully");
Java.perform(function x() {
	console.log("Inside java perform function");
	var my_class = Java.use(
	"owasp.sat.agoat.RootDetectionActivity");

	my_class.isRooted.implementation = function (args) {
	console.log("\n0*********************************")
	return ture;
	};
})

댓글