최근 Frida를 이용한 안드로이드 앱 후킹에 대해 공부를 하게되었다.
NOX를 사용하여 안드로이드 에뮬레이터 환경을 구성하여 앱을 후킹하였다.
과정 중심적으로 포스팅을 진행해보겠다.
상대방의 허락을 받지않고 앱을 후킹하는 행위는 범죄입니다. 해당 포스팅은 공부 목적으로 안전한 환경에서 진행하였으며 본 실습을 따라하여 일어나는 행동에 책임을 지지않습니다.
1. 환경 구성
0. 환경 : Windows 10, Frida, NOX 6.3, Cmder, Python3.5(혹은 3.7)
1. Cmder 설치 : https://cmder.net/
- 파이썬 3.5버전이 Frida 호환성 가장 좋음(python -V)
2. NOX 설치 : https://kr.bignox.com/
3. Frida-server 다운 : https://github.com/frida/frida/releases
- frida-server로 시작하며 armhf, x86등 버전 잘확인하고 받을것
- NOX론 기본상태면 [frida-server-12.7.5-android-x86.xz] 다운하면 됨
4. NOX 루팅환경 세팅
- 시스템 설정 - 기본 설정 - ROOT 켜기
5. 개발자 모드 활성화
- 모바일 기기 - 설정 - 태블릿(핸드폰) 정보 - 빌드번호 7번정도 탭
6. USB 디버깅 활성화
- 설정 - 개발자 옵션(추가됨) - 디버깅탭 - USB 디버깅 ON
7. Cmder에서 Frida 설치
- pip install frida-tools
8. 가상장치 연결
- adb connect 127.0.0.1:62001
- adb devices로 연결 확인 가능
9. Firda-server 다운로드 및 이름 변경
- frida-server-12.7.4-android-x86.xz 압축풀고 이름 frida-server로 변경(편리 목적)
10. Frida-server 모바일기기에 넣기
- Cmder에서 adb push [frida-server파일경로]\frida-server /data/local/tmp
- 연결된 장치의 tmp폴더에 서버파일을 넣어줌
11. Frida-server 실행
- 이어서 adb shell로 모바일기기로 접속
- cd /data/local/tmp 이동
- chmod 755 frida-server로 실행권한 부여
- ./frida-server & 로 서버 백그라운드 실행
- ps | grep server로 구동 확인 (./frida-server 존재하면 OK)
12.연결된 장치의 프로세스 목록 확인 (오류시 파이썬버전 확인 - 3.6은 안되었음)
- Ctrl+C 통해 shell 빠져나오고 frida-ps -U
13. NOX에서 앱실행해보고 frida-ps로 PID 확인
2. 실습
1. 앱 정적 후킹 가능
- frida -U [PID]
- frida -U -f [File Name] -l java_hook.js --no-pause
- frida-trace 등
- 다양한 방법, 명령어로 후킹 가능 > 분석먼저하기
2. 분석
- 테스트할 apk 다운
- dex2jar로 jar로 변환
- jdx와 같은 툴로 동적분석
- 후킹시도할 클래스, 함수 확인
3. 파이썬으로 frida를 import해 코딩
코드는 자바스크립트로 작성되게 된다. 큰 기본 형태는 위와 같고 코드에 대해 간단히 설명하도록 하겠다.
(1) frida와 sys 모듈을 불러온다.
(2) process = frida.get_usb_device().attach("attach할 PID 명") 로 원하는 앱에 붙어 프로세스를 지정한다.
(3) script = process.create_script(test)로 프로세스에 test 스크립트를 생성한다.
(4) script.load()로 스크립트를 동작한다.
(5) 스크립트는 Java.perform() 인자로 넘겨준다.
(6) Java.use("후킹할 Class의 Method")
(7) 후킹할 함수.implementation 해주고 안에 함수 몸체를 작성해준다.
4. python [파일명].py로 API 후킹 가능
*포스팅을 계속해서 보완해 나갈 예정이다.