[목차]

 

 

1. 추가 진단 환경 구성 - Frida

    (1) Frida 개요

    (2) Frida 환경 구성

          - 프리다 구조

          - 프리다 패키지 설치

                - frida 설치

                - frida-tools 설치

                - frida 설치 오류 해결

          - 프리다 서버 설치

   (3) Frida 사용 예

 

 

 

 

 

 

[추가 진단 환경 구성 - Frida]

 

 

1. Frida 개요 (https://frida.re/)

: Frida(이하 프리다)는

 

이미지 출처 :  https://techmonitor.ai/technology/software/frida-tool-software-reverse
 

위 사진의 주인공인

Ole André Vadla Ravnås가 개발한

DBI(Dynamic Binary Instrumentation) 프레임워크로

 

파이썬(Python) 기반의 라이브러리와 Command로 구성되어 있고

JS Injection을 이용하여 Windows, macOS, Linux, iOS, Android,

and QNX 기반의 Native App에 대한 후킹(Hooking)을 통해

동적 분석을 진행할 수 있는 도구이다.

 

일반적으로 iOS, Android 등

모바일 분석 때문에 알려져 있으나

다른 플랫폼에서도 사용이 가능하기 때문에

확장성 면에서 또한 좋으며, 모바일 앱 분석과 관련해

주요 기능을 정리해 보면

 

실행 중인 앱(프로세스)를 후킹 및 추적하여

- 코드 명령어 삽입

- 애플리케이션 디버깅 및 분석

- 함수 후킹(함수 재 작성, 특정 함수에 연결하여 반환 값 변경 등)

- 실시간 트래픽 스니핑

- 암호 해독

등이 되겠다.

 

탈옥 또는 루팅 되지 않은 단말기에서도 사용이 가능하며

앱 진단을 함에 있어 빼놓을 수 없는 필수 도구라 할 수 있다.

 

 

 


 

 

 

2. Frida 환경 구성

 

(1) 프리다 구조

프리다는 '패키지'와 '서버'로 이루어져 있는데

분석을 진행할 호스트 PC에는 프리다 패키지를,

앱이 실행되는 디바이스(단말기 또는 에뮬레이터)에는

서버를 설치해야 한다.

 

Host PC = Frida Packages

단말기 = Frida-Server

 

 

 

(2) 프리다 패키지 설치

프리다는 현재 python 3.x 버전에서만 지원되기 때문에

pip 또한 3 버전을 사용해 설치해야 하며, 설치 중에

여러 가지 오류가 발생할 수 있는데 내 경우 발생했던

오류에 대한 해결 방안을 하단에 기재해 두었다.

 

(2-1) frida 설치

 

 

frida-tools 설치

 

 

 

(2-2) 정상 설치 여부 확인

프리다가 설치된 경로를 환경변수에 추가해 준 뒤

(C:\Users\타쿠대디\AppData\Local\Programs\Python\Python38\Scripts)

실행해 보면

 

정상 작동 확인

 

 

(2-3) frida 설치 시 오류 해결

ㄱ. pip3 버전 업그레이드

 

 

ㄴ. wheel 패키지 설치

하단 이미지를 보면 frida-tools 설치 중에

wheel 패키지가 설치되어 있지 않다는

안내문이 나오는데

 

 

 

이 상태에서 프리다를 실행시키는 경우

다음과 같은 에러가 발생하며

프리다가 정상 실행되지 않는다.

 

 

 

이런 경우

설치했던 frida, frida-tools를 삭제해 주고

 

 

wheel 패키지를 설치한 뒤

 

 

프리다 패키지를 재설치 하면

해결된다.

 

 

 

 

(3) 프리다 서버 설치

프리다 서버의 경우는 앱이 구동되는 단말기 또는

에뮬레이터(녹스) 등에 각각 설치해야 하는데

릴리스 페이지에서 다운로드가 가능하며

https://github.com/frida/frida/releases

 

설치 시 주의사항으로는

설치하려는 디바이스별 플랫폼 및 비트별로

버전이 구분되어 있어 자신의 환경에 맞는

버전을 받아 설치하면 된다.

 

 

(3-1) 녹스 기동 후 버전 확인

# 녹스 연결
C:> adb connect 127.0.0.1:62001

# 녹스 연결 확인
C:> adb devices

# 비트 확인
C:> adb shell getprop ro.product.cpu.abi
 

 

 

(3-2) 릴리스 페이지(https://github.com/frida/frida/releases)에서 서버 다운

: 2022년 6월 21일 기준, 프리다 서버 안드로이드 최신 버전 15.1.27

 

: 참고로 혹시 몰라 x86_64 버전도 같이 받아둠

 

 

 

(3-3) 압축 풀기

 

 

: 해당 폴더에 들어가면 파일이 있는데

편의를 위해 파일 복사 후 이름을 변경해둠

 

 

(3-4) adb를 통한 push

: 연결된 장치(녹스)로

frida-server 파일을 넣어주고

C:\> adb push C:\App_study\frida-server\frida-server-15.1.27-android-x86\frida-server /data/local/tmp
 

shell에 접속 후 정상 push 여부 확인

 

 

(3-5) 실행권한 부여 및 실행

 

백그라운드로 실행시켜줬고 (PID-4209)

 

 

쉘을 빠져나와서 프로세스를 확인해 보면

 

정상 기동 중 확인

 

 

 

 

 

 

3. Frida 사용 예

 

 

프리다는 크게 두 가지 방법으로 사용되는데

첫 번째는 Console mode,

두 번째는 Code에서 라이브러리를 불러

사용하는 형태이다.

 

안드로이드나 IOS, PC 어떤 것이든

훅을 걸 포인트를 찾는 것이 가장 중요한데

 

코드를 볼 수 있는 환경이면 코드로 훅을 걸어 진입,

Black Box 테스팅의 경우 리버싱 및 추가적 분석을 통해

살펴볼 함수의 위치를 찾아야 한다.

 

찾은 후에는 로직을 변경, 조작하여 앱의 동작을

변경시킬 수 있는데 이때 발생하는 이벤트는

javascript의 이벤트와 동일하기 때문에

onload / onleave 등으로 받아 처리하면 된다.

(프리다 공식 홈 참고)

var hook = ObjC.classes.MyClass["- myFunction"]
Interceptor.attach(hook.implementation, {onload(args){ console.log('takudaddy')  }});
 

 

참고 : https://www.hahwul.com/2017/08/31/hacking-frida-hooking-to-multi-platform/

 

 

 

728x90
반응형

+ Recent posts