티스토리 뷰

1. 루팅(rooting)?
- 안드로이드 기기의 최상위 권한인 root 권한을 얻음으로 해당 기기에 걸려있는 제약을 해제하는 행위


2. 루팅(rooting) 탐지?
- 안드로이드 기기에서 루트 권한이 부여된 상태를 감지하는 것으로 대표적으로 아래 방법으로 루팅된 기기를 탐지
- su 명령어 탐지 
- 프로세스 리스트 탐지 
- 루팅 관련 어플 설치 여부 확인 (ex. Superuser, su 등)

 

루팅 탐지 우회를 위한 다양한 방법 중 오늘은 Frida를 이용한 루팅 탐지 우회를 시도해보겠다.

(현재 frida, frida-server 환경을 구축이 되어있다는 전제)

테스트앱 설치 경로 : https://github.com/lpilorz/flutter-app (jailbreak-release.apk 설치)

 

1) 루팅 단말기에서 앱 실행 시 루팅 탐지

 

2) 앱 디패키징 이후 분석을 통해 루팅 탐지 로직 분석 (isRooted() 메서드 사용)

 

3) isRooted() 메서드 오버로드 스크립트 작성

console.log("Loading flutter_jailbreak_detection bypass...");
setImmediate(function() {
  Java.perform(function () {
    var root = Java.use("com.scottyab.rootbeer.RootBeer");
    root.isRooted.overload().implementation = function() {
      console.log("isRooted() called, returning false");
      return false;
    }
  });
});

출처: <https://hackmd.io/@runicpl/flutter-android>

 

4) 스크립트 실행

frida -U -f pl.runic.ip -l frida-flutter-root-bypass.js

 

5) 루팅 탐지가 우회되며 앱 정상 실행

 

[범용적으로 사용 가능한 루팅 탐지 우회 스크립트]

https://codeshare.frida.re/@dzonerzy/fridantiroot/

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday