[목차]

 

 

1. 프리다 소개

2. 프리다 환경 구축

    - 설치 도구 목록

    - 도구 별 설명 및 설치

        : 녹스

        : 아나콘다 + conemu + Gow

        : 프리다

        : 프리다 서버

 

 


 

 

 

1. 프리다 소개

 

 

 

# 프리다는

Ole가 개발한 DBI(Dynamic Binary Instrumentation)

프레임 워크로, 프로세스를 모니터(추적, 분석) 및 디버깅하는 데 

사용할 수 있는 툴킷

 

 

# 프리다 특징

- 다양한 플랫폼에서 프로세스에 대한 인젝션이 가능해 큰 확장성을 가짐

- 윈도우, 맥OS, GNU/Linux, iOS, Android 및 QNX에서 자바스크립트를

네이티브 앱(공식 스토어를 통해 받은 앱)에 삽입 가능

 

 

# 프리다 주요 기능

- AppMon과 Needle 등의 도구에서 프리다를 기반으로 사용

: AppMon은 맥 OS, iOS 및 안드로이드에서 기본 앱의 시스템 API 호출을

모니터링하고 변경하는 자동화된 프레임 워크

: Needle 2016년 8월 블랙햇 USA에서 출시된 iOS 보안 테스팅 프레임 워크

: 안드로이드의 드로저와 비슷한 도구

 

- 함수 후킹 (특정 함수에 연결하여 반환 값 변경, 함수 재작성(로그출력, 내부로직 변경) 등)

- 애플리케이션 디버깅 가능

- 힙 메모리 내 객체 인스턴스 검색 및 사용

- 실시간 트래픽 스니핑 또는 암호 해독

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

 

 

# 프리다 통신 방식

 

 


 

 

2. 프리다 환경 구축

 

# 설치 도구 목록

- 녹스 앱플레이어(Nox) + ADB 환경설정

(루팅 된 단말기 사용하는 경우 adb 환경설정만 진행)

- 아나콘다(파이썬)

- 프리다

- 프리다 서버(Android)

 

 

 

# 도구 별 설명 및 설치

ㄱ. 녹스 앱플레이어 (Nox)

- 무료 안드로이드 에뮬레이터

- 간단한 설치를 통해 사용 가능

- 실제 디바이스와 거의 동일한 환경에서 진단이 가능

- 안드로이드 스튜디오에서 제공하는 가상 앱(AVD)과 비교 했을 때 속도가 빠름

 

- 설치 방법은 생략하고

녹스가 설치되면 [시스템설정 > 일반]

메뉴에서 ROOT켜기 체크해 주고

 

 

  

 

ADB(android debug bridge)의

간편 사용을 위해 환경 변수 설정

 

환경 변수 설정이 완료되면

터미널 열고 테스트

$ adb

$ adb shell

정상 접속 완료!

 

 

* 참고로 루팅 된 단말기를 사용하는데

& adb shell 이 수행되지 않는 경우

 

설정 > 개발자옵션 > USB디버깅을

해제했다 다시 설정해 주면 해결되며

허용!

 

단말기 연결한 뒤

다시 허용!

 

 

adb로 붙어지긴 하는데 root로 변환 시

permission denied 뜨는 경우

magisk에서 슈퍼유저 권한 허용해 주면 됨

 

 

 


 

 

ㄴ. 아나콘다(파이썬)

 

프리다는 파이썬 기반으로 동작하는데

경우에 따라 파이썬 버전을 변경해

사용해야 한다(주로 3 버전 사용)

 

이때 아나콘다를 사용하면

효율적인 파이썬 버전 관리가 가능하기에

필수 사항은 아니지만 설치를 권고하는 바인데

 

아나콘다의 콘다를 이용하면

독립된 파이썬 실행환경 구축이 가능하기

때문이가.

 

 

 

# 아나콘다 파일 다운로드 경로

https://www.anaconda.com/products/distribution#download-section

 

# 설치 전 주의 사항으로

1) 아나콘다 설치 전 이미 파이썬이 설치되어 있는 경우 반드시 제거할 것!

(아나콘다 패키지에 파이썬이 포함되어 있어 같이 설치되는 경우 환경변수 꼬임)

 

# 설치 중 주의 사항으로

1) 설치 시 환경변수 설정 반드시 해줄 것!

 

둘 다 체크!

 

 

# 정상 설치 여부 확인

 

 

 

# 편리한 터미널 프로그램 추천

conemu

https://conemu.github.io/

 

conemu 설치 후

Gow라는 프로그램을 추가 설치하면

윈도우 cmd 환경에서 리눅스 명령어가

사용 가능해진다.

https://github.com/bmatzelle/gow/releases

 

위 두 가지는 필수 사항은 아니나 추천 사항!

 

 

 

 

# 콘다 가상환경 생성

파이썬 2, 3 버전의 가상환경을 각각 하나씩 생성한다.

c:> conda create -n takudaddy_android_py3 python=3.9 -y
c:> conda create -n takudaddy_android_py2 python=2.7 -y
 

 

 

 

# 콘다 가상환경 생성 확인

# 가상환경 활성화
$ conda activate takudaddy_ios

# 비활성화
$ conda deactivate

# 구축한 가상환경 삭제
conda env remove --n takudaddy_ios
 

 

가상환경 두 개 모두 정상 생성되었고

파이썬도 버전별로 잘 깔렸다!

 

 

 


 

 

ㄷ. 프리다 및 프리다 서버 설치

# 프리다 설치

c:> pip install frida-tools
 

 

 

설치 후 버전 확인을 반드시 해준다!

본 실습의 경우는 16.0.6 버전

 

 

 

 

# 프리다 서버 설치

1) 단말기 비트 확인

adb로 shell 접속 후,
# getprop ro.product.cpu.abi
 

arm64 버전!

 

 

 

2) 서버 다운 및 설치

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

프리다 설치 버전 및 단말기 비트에 맞는

서버 버전을 받은 뒤

 

 

 

압축을 해제하고

 

 

디렉터리 안에 있는 서버 파일을

adb로 단말기에 넣어준 뒤

c:> adb push frida-server /data/local/tmp
 

 

 

 

adb shell로 붙어 해당 파일에

실행 권한 주면 끝!

c:> adb shell
# cd /data/local/tmp
# chmod +x frida-server
 

 

 

 

 

# 프리다 실행 테스트

adb shell의 프리다 서버 경로에서 프리다 서버 실행
# ./frida-server
 
 

만약 해당 포트가 바인딩 중이라

서버 실행이 안 된다고 나오는 경우

netstat 명령어로 활성화 중인 tcp

포트를 확인 후

 

 

해당 프로세스를 kill 해준 뒤 다시 실행하면

서버 정상 작동!

 

 

 

frida로 연결된 디바이스에 붙어보면

c:> frida-ps -U      // -U 는 USB로 연결되어 있는 디바이스
 

 

정상 확인 가능!

 

프리다 구축 완료!

 

 

 

728x90

+ Recent posts