루팅(Rooting)이란 안드로이드 기기에서 최고 권한(root)을 얻는 것을 의미한다. 루트 권한을 획득하면 사용자는 시스템 파일과 설정에 완전한 접근이 가능해진다. 이를 통해 시스템 내부 저장소 접근, 권한 변경 등 다양한 작업을 수행할 수 있습니다.
안드로이드에서는 기기의 안정적인 동작을 보장하기 위해 일반 사용자에게 루트 권한을 제한하고 있다. 따라서, 앱의 안정성과 무결성을 유지하고, 사용자 데이터를 보호하며, 악성 행위를 방지하기 위해 루팅 탐지가 필요하다.
루팅 우회는 Frida를 통해 이루어지기 때문에 Frida 서버가 먼저 실행중이어야 한다. 기기에 Frida 서버가 있는지 확인을 먼저 해야한다.
안드로이드 기기로 점검을 진행한다면 USB 케이블로 기기와 PC를 연결한다.
**usb 디버깅을 켜줘야 한다.
PC 에 깔린 Nox Player로 점검을 진행한다면 Root를 켜주고 아래 명령어를 통해 PC와 Nox player를 연결한다.
*시스템 설정 - 기본 설정 - ROOT 켜기
> adb connect 127.0.0.1:62001
> adb devices
> adb shell
> cd /data/local/tmp
> ls -al
📍 기기에 프리다 서버가 없다면 설치된 프리다 서버를 기기에 전송해주어야 한다.
3-1. 새로운 cmd 창을 열어서 아래 명령어를 실행한다.
* adb shell 이 아닌 윈도우 cmd에서 진행하여야 한다.
> cd [윈도우에서 frida-server가 설치된 경로]
> adb push frida-server-xx.x.x-android-arm64 /data/local/tmp/
3-2. 애뮬레이터에 다시 접속하여 기기에 프리다 서버 설치 여부를 확인한다.
> adb shell
> cd /data/local/tmp
> ls -al
3-3. 프리다 서버를 실행하기 위해 실행권한을 부여한다.
chmod 755 /data/local/tmp/frida-server-xx.x.x-android-arm64
기기에 Frida Server가 설치되어 있는 것을 확인하고 실행권한을 부여했다.
🌱 프리다 서버를 이용하여 루팅 우회를 진행하는 과정에서 bypass_root.js 파일이 루트 우회만 하는 스크립트가 작성되어 있다. 따라서 frida 탐지를 하는 Oh bank 앱에서 루트 우회를 하기 전에 frida 우회를 한 후 실행시키고, 루트 우회를 해야 한다. Frida 안티디버깅 우회를 먼저 해보자.
안티디버깅은 디버깅을 방지하여 소스코드 분석을 하지 못하도록 하는 기술이다.
안티디버깅 우회를 한다는 것은 애플리케이션이 디버거(Frida 포함)의 존재를 감지하는 방법을 우회하는 것을 의미한다.
Oh bank의 경우 프리다의 기본 포트(27042)를 사용하고 있는지 확인함으로써 Frida 탐지를 하고 있다. 따라서 Frida를 실행할 때 기본 포트를 사용하지 않으면 프리다 감지를 하지 않을 것이다. 이 방법으로 우회를 진행해보자.
> adb forward tcp:17000 tcp:17000
> nox_adb forward tcp:17000 tcp:17000
> adb shell /data/local/tmp/frida-server-16.1.4-android-arm64 -l 0.0.0.0:17000 &
> frida-ps -Ua
-> Oh bank 앱에서 frida-server 가 실행중이다.
아래 링크에서 frida로 루트 우회하는 js 파일을 다운받는다.
>frida-android-hook > methods > bypass_root.js
이 외에 다양한 스크립트가 있으니 참고해보면 좋을 것 같다.
새로운 윈도우 CMD 에서 frida로 루팅 우회하는 스크립트를 실행하여 루팅 우회를 시도한다.
frida -U -f com.app.damnvulnerablebank -l C:\Users\MBD-N-05\Desktop\frida-android-hook-master\frida-android-hook\methods\bypass_root.js
❓ com.app.damnvulnerablebank란?
실행중인 프로세스의 identifier 이다.
> frida-ps -Ua