프리다(Frida)를 이용한 안드로이드 루팅 감지 우회

2022. 10. 3. 19:23IT/Android

반응형

닌텐도 스위치에 리니지 OS에서 포팅된 안드로이드 10을 올려서 사용을 하다보니,
각종 앱들이 루팅 감지로 막히는 사례를 보고 있습니다.

쿠팡 플레이가 그러했으며, EBS 관련 앱 들도 루팅 감지를 해서 실행 불가했습니다.

EBS 초등 앱 실행 - 루팅 감지 결과로 실행이 안된다.

이번 포스팅은 프리다(Frida)를 이용한 루팅 감지 우회 방법입니다.
먼저, 루팅 앱 중 하나인, Magisk를 설치 하는 방법입니다.


Magisk 설치

복잡합 탐지 솔루션이 적용되지 않은 앱의 경우, Magisk의 Deny 기능을 통해 간단히 우회할 수 있습니다.

1. 파일을 다운로드 받아 줍니다.
- https://github.com/topjohnwu/Magisk/releases

Releases · topjohnwu/Magisk

The Magic Mask for Android. Contribute to topjohnwu/Magisk development by creating an account on GitHub.

github.com

Magist-vXX.apk 를 다운로드 받고, 확장자 apk를 zip으로 바꿔주세요.
그리고 Magist-vXX.apk 파일을 다시 다운로드 받아주세요.

이제 동일한 파일명을 가진 apk와 zip파일이 준비 되었습니다.

실제로 Magisk 깃헙의 Installation 가이드대로 설치하면 잘 안되는 경우가 있어, 제가 따로 성공한 가이드 입니다.

2. 닌텐도 스위치(안드로이드)와 PC를 USB케이블로 연결해 줍니다.

3. 아까 준비한, apk와 zip파일을 마이크로 SD카드에 복사합니다.
저의 경우, zip파일은 루트(최상위) 폴더에, apk파일은 Downloads 에 각각 다르게 복사하여 넣었습니다.

4. TWRP 리커버리 모드로 진입합니다.
4-1. 전원 OFF
4-2. RCM 로더를 이용한 hekate로 진입
4-3. Tools - Partition Manager - Flash Android를 이용해 TWRP로 진입

5. Install 선택, 복사한 Magist-vXX.zip 선택하여 설치.

6. Reboot System

7. 설치된 Magisk 실행

만약 '설치됨'에서 어떠한 버전 정보도 뜨지 않는다면, 제대로 설치되지 않은 경우 입니다.

정상 설치

8. (정상 설치 되지 않은 경우) 안드로이드에서 Magisk 앱을 삭제해주세요. '파일' 앱을 실행시켜, 복사해둔, Magist-vXX.apk 파일을 선택해서 설치해줍니다. -> 저의 경우, 보통 이렇게 재설치하면 정상적으로 적용되었습니다.

9. Magisk 앱 실행 후, 설정 메뉴로 진입합니다.

10. Zygisk 옵션을 켜주시고, DenyList 적용도 이후 같이 켜줍니다. 그리고 안드로이드 재부팅 해주세요.


11.다시 Magisk 설정 메뉴에서 DenyList 구성을 선택해서, 루팅으로 실행이 되지 않은 앱을 선택해주세요. (거부 = Hide라고 생각하면 편합니다.)

12. 이제 EBS 초등 안드로이드 앱의 경우 정상 동작합니다.


하지만 쿠팡 플레이의 경우, 또 다른 루팅 탐지 솔루션이 적용되어 있습니다.
이 경우, 프리다(Frida)를 이용하면 쉽게 우회가 되었습니다.

문제는 루팅 우회가 후킹이란 기술을 사용하기 때문에, 앱이 재실행되어 루팅을 탐지하는 절차를 진행하면 PC와 연결되어 프리다를 이용해 후킹 서비스를 적용해줘야 한다는 점입니다.

그렇기 때문에, 이러한 앱을 이용하실 계획이라면, 다른 방법을 이욯하는 것을 추천 드립니다.
그리고 그렇게 할 시간에, 그냥 안드로이드 정식 기기를 사용하는 것이 당신의 시간을 절약하는 길이라 생각됩니다.


1. 프리다를 이용하기 위해서는 PC에 파이썬3 이 설치되어 있어야 합니다.
저는 아나콘다 설치 서비스를 이용해서 전체 설치하였습니다.
> https://guleum-zone.tistory.com/136

아나콘다(Anaconda) 설치

개요 Anaconda는 수백 개의 패키지를 포함하고 있는 배포판으로 기존의 파이썬에서는 pip라는 소수의 명령어를 사용할 수 있지만 Anaconda를 이용하면 이외의 scipy, pandas, numpy 등 머신러닝, 데이터 분

guleum-zone.tistory.com

반드시 아나콘다를 설치할 필요는 없으며, 불필요하다고 생각되시는 경우, 파이썬3을 알아서 검색해 설치하여 설정 완료하시면 됩니다.

2. 아래와 같이 커맨드창 또는 PowerShell에 입력하여 프리다를 설치합니다.

pip install frida-tools

설치 확인 방법 : 아래 커맨드 입력후 버전 확인하기

frida --version

3. 프리다의 경우, 스마트폰(iOS, Android)에서 서버가 동작하며 앱을 모니터링하며, PC는 이 서버와 통신하며 후킹을 시도하게 됩니다. 즉, 안드로이드(닌텐도 스위치)에 프리다 서버를 동작시켜주는 작업이 필요합니다.
https://github.com/frida/frida/releases

Releases · frida/frida

Clone this repo to build Frida. Contribute to frida/frida development by creating an account on GitHub.

github.com

프리다 릴리스 깃헙에서 Assets을 눌러, frida-server-{버전}-android-arm64.xz을 다운로드 받습니다. 그리고 압축을 해제해주세요.(반디집 이용함)

압축해제된 파일(frida-server-15.2.1-android-arm64)을 안드로이드에 넣어줍니다.

4. 안드로이드 adb 이용을 위해 아래 링크에서 다운로드 받아 압축 해제 합니다.
> https://developer.android.com/studio/releases/platform-tools

SDK 플랫폼 도구 출시 노트  |  Android 개발자  |  Android Developers

Android SDK 플랫폼 도구는 Android SDK의 구성요소입니다.

developer.android.com

5. PC와 안드로이드(닌텐도 스위치)가 케이블로 연결되어 있어야 하며, 개발자 옵션에서 USB디버깅도 켜주세요.

6. adb push 명령어를 통해 3에서 압축해제한 (frida-server-15.2.1-android-arm64)을 안드로이드 /data/local/tmp 로 복사합니다.

7. 잠시 안드로이드로 돌아갑시다. Magisk에서 adb에 su권한을 줘야 합니다.(주지 않으면 권한 없음 오류 발생) 설정에서 '슈퍼유저 액세스'를 '앱 및 ADB'로 변경해주세요

8. 다시 커맨드창으로 돌아와 adb 명령어를 준비합시다.

adb shell
cd /data/local/tmp
chmod 755 frida-server-15.2.1-android-arm64

9. 슈퍼 유저 권한으로 변경하여, 프리다 서버를 안드로이드에서 구동시켜 줍시다.

su
./frida-server-15.2.1-android-arm64 &

여기까지 따라왔다면, 안드로이드의 설정은 끝났습니다. 이제 후킹 서비스를 위한 내용을 준비해야 합니다.

10. 안드로이드 훅 깃헙 프로젝트를 최신을 다운로드 받아서 압축 해제 합니다.
https://github.com/noobpk/frida-android-hook/releases

Releases · noobpk/frida-android-hook

A script that helps you trace classes, functions, and modify the return values of methods on Android platform - noobpk/frida-android-hook

github.com


11. 명령어를 통해 빌드해주세요. 여기서 'cd frida-android-hook/'는 압축해제된 폴더로의 이동을 간략히 설명한 것입니다.

cd frida-android-hook/
pip3 install -r requirements.txt
python setup.py
cd frida-android-hook\methods

12. frida-ps -Ua 입력해서 설치된 앱 패키지의 이름과 패키지 ID 를 확인합니다. 그리고 명령어를 통해 실행시켜 주면 후킹 및 실행 완료!



https://youtu.be/UP-off-F0Gg

반응형