본문 바로가기

Penetration/Mobile

디버깅 탐지기능 적용을 확인하는 방법

오래오래 간만에 점검 방법에 대해서 하나씩 쓰려다 보니 오늘(주말)이 되어 하나 써보려고 합니다.

앱을 점검하다 보면 디버깅여부를 앱이 탐지하는지 확인해야 하는 경우가 있습니다. 이를 어떻게 점검하면 되는지 알아보려고 합니다.

 

준비물
1. 디버깅을 해줄 디바이스(및 에뮬레이터) -> 저는 디바이스로 진행하겠습니다.
2. 디버깅을 진행할 IDA
3. adb 및 pid를 간편하게 확인할 수 있는 frida

이렇게 준비하고 앱을 동적으로 분석할 수 있도록 준비해줍니다. 

오늘 동적으로 분석해볼 앱은 테스트용 앱으로 유명한

uncrackable1 입니다.

해당 앱의 후킹 관련해서는 따로 작성하려고 합니다.

 

일단 앱의 동작을 동적으로 분석하기 위해서 디바이스의 운영체제를 확인해보려고 합니다.

adb shell

su

getprop ro.product.cpu.abi

해당 디바이스는 갤럭시9이고, 여기에 맞는 운영체제는 arm64-v8a입니다.

이 운영체제에 맞는 IDA 서버를 확인해야 합니다. 확인 경로는 IDA설치폴더에 있는 dbgsrv 경로에서 찾습니다. 저는 arm64-v8a이므로 android_server64를 모바일 디바이스에 올려주기로 하였습니다.

이제 본격적으로 해당 경로에서 터미널을 작동시켜서 해당 파일을 모바일 기기로 올려줍니다. 과정 자체는 frida-server를 모바일 디바이스에 넣어주는 과정과 똑같습니다.

해당 경로로 이동한다
adb push android_server64 /data/local/tmp
adb shell
모바일 쉘
su
cd /data/local/tmp
chmod 777 android_server64
./android_server64 &

 

본격적으로 작동시켰으므로 adb를 이용해서 로컬 PC와 디바이스 사이에 연결을 시도합니다. 명령어는 아래와 같습니다.

adb forward tcp:23946 tcp:23946

이제 동작시킨 이후에 그냥 바로 PID가 잡혀서 가능한 앱이 있고 아닌 앱들이 있습니다. 저는 android:debuggable 옵션이 true로 되어있다고 가정하고 진행하겠습니다.

 

IDA에 접속하여 Debugger탭 > Attach > Remote ARM linux/Andorid debugger 옵션에 접속합니다.

이후에 점검하고자 하는 앱의 PID를 확인해서 앱에 접근합니다. 저는 frida-ps -Ua 옵션을 통해서 현재 켜져있는 앱을 확인하겠습니다.

PID를 찾아서 IDA에 해당하는 앱으로 접속합니다.

아래와 같이 동적 디버깅이 가능한 것을 확인할 수 있습니다.

이상입니다~