Frida 란
프리다는 파이썬 기반 라이브러리로 일반적인 상태의 어플리케이션을 후킹하여 분석할 수 있게 해주는 툴이다. 해당 툴은 안드로이드나 iOS에 주로 사용되며 윈도우나 MacOS, Linux 플랫폼에서도 사용이 가능하다.
우선 프리다를 사용하기 위해선 해당 기기에서 frida-server
을 실행시켜야 한다. 이때 adb (Android Debug Bridge - 기기와 통신할 수 있는 다목적 명령줄 도구) 를 이용해 해당 기기에 삽입하게 된다. 일반적으로 frida-server
을 사용할 시 루팅이나 탈옥같은 관리자 권한을 획득한 기기들만이 사용이 가능하며, 그 외 기기에서 사용하기 원할 시에 frida-gadget
을 이용하여 어플리케이션에 주입 이후 해당 어플리케이션을 실행하여 작업을 진행하게 된다.
frida-server
와 frida-gadget
등 프리다 관련 파일 다운로드 링크
Frida For Android
해당 링크에 접속하게 되면, 굉장히 많은 파일이 출력되게 되는대, 이 중에서 자신이 테스트 하고자 하는 환경과 일치하는 파일을 다운받아 사용하면 된다. 콘솔 창에서 해당 명령어를 입력하게 되면 테스트 기기의 환경을 알 수 있다.
- adb shell > getprop ro.product.cpu.abi
- adb shell 'getprop ro.product.cpu.abi'
※ 주의사항 : adb를 이용하여 해당 파일은 넣은 후, 권한 부여가 필요하다.
프리다는 파이썬 기반으로 작성되었으므로 이용하기 위해서 파이썬 설치 이후, 명령어를 통하여 설치해 주자. → pip install frida-tools
모든 준비가 완료되고 나서, 이제 자주 등장할 명령어인 frida-ps -U
를 입력하게 되면 현재 테스트 하고자 하는 기기에서의 프로세스 리스트를 볼 수 있다. 언제나 주의해야할 점은 프리다 사용 시, frida-server
가 동작해야 한다는 사실이다.
그렇다면 프리다를 사용하는건 알겠는대, 후킹은 어떻게 할까 궁금할 수 있다. 프리다 후킹의 경우 파이썬 코드를 이용하여 jscode
를 실행시키거나, 아니면 다이렉트로 jscode
를 프리다를 이용하여 실행시키므로써 후킹을 할 수 있다. (이후 더 설명을 하겠지만, 후킹으로 데이터 변조를 포함하여 다른 여러가지 작업이 가능하다.)
참고 링크
Frida 기본 명령
우선 Frida 내 존재하는 옵션에 대해 파악할 필요가 있다.
Frida는 앞서 언급한 대로, 일반적인 상태의 어플리케이션 후킹 분석 시에 주로 이용된다.
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
--certificate=CERTIFICATE
speak TLS with HOST, expecting CERTIFICATE
--origin=ORIGIN connect to remote server with “Origin” header set to
ORIGIN
--token=TOKEN authenticate with HOST using TOKEN
--keepalive-interval=INTERVAL
set keepalive interval in seconds, or 0 to disable
(defaults to -1 to auto-select based on transport)
--p2p establish a peer-to-peer connection with target
--stun-server=ADDRESS
set STUN server ADDRESS to use with --p2p
--relay=address,username,password,turn-{udp,tcp,tls}
add relay to use with --p2p
-f FILE, --file=FILE spawn FILE
-F, --attach-frontmost
attach to frontmost application
-n NAME, --attach-name=NAME
attach to NAME
-p PID, --attach-pid=PID
attach to PID
-W PATTERN, --await=PATTERN
await spawn matching PATTERN
--stdio=inherit|pipe stdio behavior when spawning (defaults to “inherit”)
--aux=option set aux option when spawning, such as “uid=(int)42”
(supported types are: string, bool, int)
--realm=native|emulated
realm to attach in
--runtime=qjs|v8 script runtime to use
--debug enable the Node.js compatible script debugger
--squelch-crash if enabled, will not dump crash report to console
-O FILE, --options-file=FILE
text file containing additional command line options
-l SCRIPT, --load=SCRIPT
load SCRIPT
-P PARAMETERS_JSON, --parameters=PARAMETERS_JSON
parameters as JSON, same as Gadget
-C CMODULE, --cmodule=CMODULE
load CMODULE
--toolchain=any|internal|external
CModule toolchain to use when compiling from source
code
-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
--eternalize eternalize the script before exit
--exit-on-error exit with code 1 after encountering any exception in
the SCRIPT
frida 를 설치한 이후, 사용법에 대해 알기 위해 frida -help 를 입력하게 되면 frida의 옵션들과 해당하는 옵션의 사용법이 나오게 된다. 시간적 여유가 된다면 뒤에 추가적으로 설명하고, 일단 우선적으로 사용되는 -Uai 와 -l, -p 를 서술하고자 한다.
frida -U
-U 옵션의 경우, --usb
옵션과 동일한 효과이며, USB로 연결된 장치를 frida 로 연결시키라는 의미다.
frida
'Tools > Frida' 카테고리의 다른 글
FridaLab - Challenge (0) | 2023.08.30 |
---|---|
Frida SSL Pinning (0) | 2023.08.24 |
Frida - Application Dump (0) | 2023.08.22 |
Frida-iOS-DUMP IPA (0) | 2023.08.22 |
Frida ERROR - SyntaxError: unexpected character (0) | 2022.08.25 |