Everything is hacked.

There is no 100 % security.

Tools/Frida

Frida BASIC

Kai_HT 2023. 8. 22. 13:59

Frida 란

프리다는 파이썬 기반 라이브러리로 일반적인 상태의 어플리케이션을 후킹하여 분석할 수 있게 해주는 툴이다. 해당 툴은  안드로이드나 iOS에 주로 사용되며 윈도우나 MacOS, Linux 플랫폼에서도 사용이 가능하다.

우선 프리다를 사용하기 위해선 해당 기기에서 frida-server 을 실행시켜야 한다. 이때 adb (Android Debug Bridge - 기기와 통신할 수 있는 다목적 명령줄 도구) 를 이용해 해당 기기에 삽입하게 된다. 일반적으로 frida-server 을 사용할 시 루팅이나 탈옥같은 관리자 권한을 획득한 기기들만이 사용이 가능하며, 그 외 기기에서 사용하기 원할 시에 frida-gadget 을 이용하여 어플리케이션에 주입 이후 해당 어플리케이션을 실행하여 작업을 진행하게 된다.

frida-serverfrida-gadget 등 프리다 관련 파일 다운로드 링크

 

Releases · frida/frida

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

github.com


Frida For Android

해당 링크에 접속하게 되면, 굉장히 많은 파일이 출력되게 되는대, 이 중에서 자신이 테스트 하고자 하는 환경과 일치하는 파일을 다운받아 사용하면 된다. 콘솔 창에서 해당 명령어를 입력하게 되면 테스트 기기의 환경을 알 수 있다.

  • adb shell > getprop ro.product.cpu.abi
  • adb shell 'getprop ro.product.cpu.abi'

Untitled.png

※ 주의사항 : adb를 이용하여 해당 파일은 넣은 후, 권한 부여가 필요하다.

프리다는 파이썬 기반으로 작성되었으므로 이용하기 위해서 파이썬 설치 이후, 명령어를 통하여 설치해 주자.pip install frida-tools

모든 준비가 완료되고 나서, 이제 자주 등장할 명령어인 frida-ps -U 를 입력하게 되면 현재 테스트 하고자 하는 기기에서의 프로세스 리스트를 볼 수 있다. 언제나 주의해야할 점은 프리다 사용 시, frida-server동작해야 한다는 사실이다.

Untitled.png

그렇다면 프리다를 사용하는건 알겠는대, 후킹은 어떻게 할까 궁금할 수 있다. 프리다 후킹의 경우 파이썬 코드를 이용하여 jscode 를 실행시키거나, 아니면 다이렉트로 jscode 를 프리다를 이용하여 실행시키므로써 후킹을 할 수 있다. (이후 더 설명을 하겠지만, 후킹으로 데이터 변조를 포함하여 다른 여러가지 작업이 가능하다.)

Untitled.pngUntitled.png

참고 링크
 

mingzzi's blog

Frida는 Python 기반의 라이브러리로 Native App을 Hooking 하여 어플리케이션을 분석할 수 있게 해 주는 툴이다. JS Injection을 이용하며, Android와 iOS에 많이 사용하지만 Windows나 MacOS, Linux 등 다른 플랫폼

mingzz1.github.io

 


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