본문 바로가기

Programming/Android

Android/Tool/Frida 사용법

반응형
# Frida
-파이썬 기반의 라이브러리 + Command, Native App의 후킹을 통한 분석가능
  • JS Injection을 이용
  • 대상 : WIndows, macOS, Linux, IOS, Android, and QNX 기반 네이티브 앱

설치 (ubuntu)

$ sudo pip install frida
설치 (Windows)

python -m pip install frida
 
디바이스 연결용 frida 에이전트 설치

# adb에서 android 버전 체크
# adb shell getprop ro.product.cpu.abi

$ wget https://github.com/frida/frida/releases/download/11.0.6/frida-server-11.0.6-android-arm.xz

$ unxz frida-server-11.0.6-android-arm.xz

$ cp frida-server-11.0.6-android-arm frida-server

$ adb push ./frida-server /data/local/tmp

$ adb shell "chmod 777 /data/local/tmp/frida-server && /data/local/tmp/frida-server &"

  • 에이전트 트러블 슈팅 (지니모션)
    • ./frida-server: not executable: 32-bit ELF file
    • 에뮬레이터는 x86이므로 x86용 server를 다시 준비해서 설치
    • arch 문제가 대부분이므로 arm, arm64, x86, x86_64를 다 구비해놓고 환경이 달라질 때마다 가지고 있는게 시간효율적.
  • 서버 실행 확인
$ adb shell "ps | grep server"
 
frida -h
 

Usage: frida [options] target

Options:

  --version             show program's version number and exit

  -h, --help            show this help message and exit

  -D ID, --device=ID    connect to device with the given ID

  -U, --usb             connect to USB device

  -R, --remote          connect to remote frida-server

  -H HOST, --host=HOST  connect to remote frida-server on HOST

  -f FILE, --file=FILE  spawn FILE

  -n NAME, --attach-name=NAME

                        attach to NAME

  -p PID, --attach-pid=PID

                        attach to PID

  --debug               enable the Node.js compatible script debugger

  --enable-jit          enable JIT

  -l SCRIPT, --load=SCRIPT

                        load SCRIPT

  -c CODESHARE_URI, --codeshare=CODESHARE_URI

                        load CODESHARE_URI

  -e CODE, --eval=CODE  evaluate CODE

  -q                    quiet mode (no prompt) and quit after -l and -e

  --no-pause            automatically start main thread after startup

  -o LOGFILE, --output=LOGFILE

                        output to log file

사용할 옵션
  • -D : 연결할 디바이스 ID > [IP주소]:[Port번호]
  • -R : 원격 프라다 서버 연결
  • -U : usb 연결
  • -H : 원격 프라다 서버가 있는 호스트 연결
  • -P : 후킹을 원하는 pid 입력
 
연결 작업
  • frida 백그라운드 실행 후 pid 확인

$ adb shell "/data/local/tmp/frida-server &"
$ adb shell "ps | grep server"

  • adb device로 device IP주소 확인 후 연결

$ adb devices
$ adb -D 192.168.85.102:5555 -p 1864

 

 
 
frida tools 설치 (Windows) - frida-ps 도구
# python -m pip install frida-tools

 

프리다 frida-server가 열려있으면 원격으로 process list 를 확인가능
 

$ frida-ps -D "192.168.85.102:5555"

 

PID  Name

----  -------------------------------

142  adbd

1218  android.ext.services

1430  android.process.acore

1373  android.process.media

266  audioserver

1907  batteryd

267  cameraserver

1489  com.android.calendar

1546  com.android.camera2

1071  com.android.deskclock

1524  com.android.dialer

1564  com.android.email

1587  com.android.gallery3d

722  com.android.inputmethod.latin

1321  com.android.launcher3

1410  com.android.managedprovisioning

1603  com.android.messaging

1623  com.android.onetimeinitializer

835  com.android.phone

1268  com.android.printspooler

1468  com.android.providers.calendar

1448  com.android.quicksearchbox

898  com.android.settings

760  com.android.systemui

1249  com.genymotion.genyd

1653  com.genymotion.superuser

124  debuggerd

126  debuggerd:signaller

257  diskiod

268  drmserver

1956  frida-helper-32

1864  frida-server

138  gatekeeperd

277  genybaseband

283  healthd

   1  init

269  installd

270  keystore

259  lmkd

254  local_camera

255  local_camera

253  local_opengl

516  logcat

115  logd

258  logwrapper

271  media.codec

273  media.extractor

272  mediadrmserver

274  mediaserver

275  netd

260  network_profile

139  perfprofd

136  redis

276  rild

737  sdcard

261  servicemanager

262  settingsd

527  sh

1825  sh

264  su

464  surfaceflinger

574  system_server

  97  ueventd

263  vinput

125  vold

718  wpa_supplicant

265  zygote

 
frida-trace
  • 함수 호출에 대하여 앱을 실행 후에 동적으로 거쳐가는 fucntion을 추적해준다.
 
frida-dump 사용하기
  • 덤프하기

> py -2 .\fridump.py -u -s [대상 앱 패키지명]

# EXAMPLE

usage: fridump [-h] [-o dir] [-u] [-v] [-r] [-s] [--max-size bytes] process

# -s : 모든 덤프파일의 문자열도 덤프, ./dump/strings.txt로 떨어짐

> py -2 .\fridump.py -u -s com.genymotion.superuser

 

 

반응형