[목차]
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
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
압축을 해제하고
디렉터리 안에 있는 서버 파일을
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로 연결되어 있는 디바이스
정상 확인 가능!
프리다 구축 완료!
'APP 진단 > Android 2' 카테고리의 다른 글
5. 프리다 기본 실습 2 (0) | 2022.12.07 |
---|---|
4. 프리다 기본 실습 (1) | 2022.12.03 |
3. 프리다 기본 문법 (이론) (0) | 2022.12.02 |
2. 프리다 기능 살펴보기 (0) | 2022.12.02 |
프리다를 이용한 안드로이드 앱 모의해킹 과정 커리큘럼 (0) | 2022.11.28 |