iOS App진단을 위해서는 프리다(Frida) 설치 및 실행은 필수이다. 하지만 각종 에러가 발생하며 프리다가 동작하지 않는 경우가 아주 많다. 아래는 필자가 격은 오류 및 해결방법을 정리한 것이니 참고하길 바란다.
오류 1 - 프리다 서버 오류.
프리다 설치 후 기기와의 연결(통신) 시 아래와 같은 오류가 발생하며 연결이 안 될 때가 있다.
오류원인 1). 기기에 설치된 프리다 버전이 기기의 iOS 버전과 맞지 않아 오류발생.
오류원인 2). PC에 설치한 프리다와 기기에 설치된 프리다 버전이 맞지 않아 오류 발생.
>frida-ps -U Waiting for USB device to appear... |
오류 1 해결방법 - 환경에 맞는 iOS 프리다 트윅 수동 설치.
자신의 환경에 맞는 버전의 프리다를 수동으로 설치하여 주면 해결된다.
아래의 사이트에 접속하여 자신의 기기에 맞는 버전을 다운로드한다.
https://github.com/frida/frida/releases
자신의 기기에 맞는 버전 선택 > "Assets" 클릭 > "frida_[버전]_iphoneos-arm.deb" 다운로드
※ iphone 6는 12.8.2 버전을 추천한다.
3uTools, FTP 등을 이용하여 다운로드한 파일을 기기로 옮김 > 기기에 설치된 탐색기앱(Filza)을 이용하여 옮긴 파일을 설치
설치도중 아래와 같이 "터미널에서 열수 없습니다"라는 에러가 발생한 경우, SSH 연결을 통해 명령어로 설치해주어야 한다.
3u Tools 등의 툴을 이용해 SSH로 기기에 접속 > dpkg -i [파일명] 명령어를 이용해 설치.
오류 2 - 프리다 연결 오류.
프리다 서버로 인해 발생하는 오류는 위의 과정을 통해 해결하였으나, 이번엔 아래와 같은 오류가 발생하며 기기와의 연결이 안 되는 경우가 있다.
오류원인 1). PC에 설치된 프리다 버전과 기기에 설치된 프리다 버전과 맞지 않아 오류 발생.
오류원인 2). PC에 설치된 프리다 버전이 기기의 iOS버전에 비해 너무 높아 오류 발생.
>frida-ps -U Failed to enumerate processes: this feature requires an iOS Developer Disk Image to be mounted; run Xcode briefly or use ideviceimagemounter to mount one manually |
오류 2 해결방법 - 환경에 맞는 PC 프리다 버전 수동 설치.
기존에 설치된 프리다 삭제 후, 자신의 환경에 맞는 프리다를 설치하면 해결된다.
1. 설치된 프리다 삭제
pip uninstall frida
pip uninstall frida-tools
※ 삭제가 제대로 되지 않는 경우 conda 가상머신을 새로 만들어 새로운 환경에서 시작하는 것을 추천한다.
2. 프리다 수동 설치
pip install frida==12.8.20
pip install frida-tools==2.2.0
※ 진단기기가 iphone 6일 경우 frida 12.8.20, frida-tools 2.2.0 버전을 추천한다.
오류 3 - 프리다 실행 오류
프리다 설치 후 실행 시키면 아래와 같은 에러가 발생할 때가 있다.
>frida --version *** Failed to load the Frida native extension: DLL load failed while importing _frida: 지정된 모듈을 찾을 수 없습니다. Please ensure that the extension was compiled for Python 3.x. *** Traceback (most recent call last): File "C:\Users\userid\AppData\Local\Programs\Python\Python310\Scripts\frida-script.py", line 33, in <module> sys.exit(load_entry_point('frida-tools==2.2.0', 'console_scripts', 'frida')()) File "C:\Users\userid\AppData\Local\Programs\Python\Python310\lib\site-packages\frida_tools\repl.py", line 24, in main import frida File "C:\Users\userid\AppData\Local\Programs\Python\Python310\lib\site-packages\frida\__init__.py", line 24, in <module> raise ex File "C:\Users\userid\AppData\Local\Programs\Python\Python310\lib\site-packages\frida\__init__.py", line 7, in <module> import _frida ImportError: DLL load failed while importing _frida: 지정된 모듈을 찾을 수 없습니다. |
오류 3 해결방법 - 파이썬 설치경로를 C:\Python으로 변경.
이 오류는 프리다가 파이썬(Python)의 경로를 찾지 못해 발생한 문제이다. 파이썬을 C:\Python에 재설치해주면 해결된다.
1. PC에 설치된 프리다 삭제
pip uninstall frida
pip uninstall frida-tools
2. PC에 설치된 파이썬 삭제
제어판 > 프로그램 및 기능 > Python [버전] 삭제
3. 파이썬 재설치
"Add Python 3.7 to PATH" 선택 > "Customize installation" 클릭 > 설치경로를 "C:\Python"으로 지정 > "Install" 클릭
※ 위에서 변경한 설정 외 선택사항은 모두 기본(default) 설정으로 한다.
4. 프리다 설치
pip install frida-tools
위의 해결방법을 모두 따라 했을 경우, 아래와 같이 제대로 실행되는 것을 확인할 수 있다.
오류4 - 시디아에서의 프리다 설치 오류.
시디아(Cydia)에서 프리다를 설치할때 아래와 같은 오류가 발생하는 경우가 있다.
오류원인 1). 기기의 iOS버전이 낮아 시디아를 통해 프리다 설치 불가.
Running Debian Packager dpkg-deb --control subprocess returned error exit status 2 Sub-process /usr/libexec/cydia/cydo returned an error code(1) |
오류 4 해결방법 - iOS 프리다 트윅 수동 설치.
기기의 iOS 버전에 맞는 하위버전의 프리다를 수동설치하면 정상적으로 설치된다.
본문의 최상단에 있는 오류1 해결방법을 참고하여 기기에 프리다 트윅을 수동 설치한다.
오류 5 - 한글깨짐 현상.
프리다로 기기에서 동작중인 앱을 확인할 때 한글로 된 앱들은 제대로 출력이안되는 경우가 있다.
오류원인 1). 기기에 설치된 프리다 서버의 버전이 낮아 한글지원이 안되는 경우 한글이 깨짐.
※ 12.8.20 버전의 프리다서버에서는 위와같이 한글이 제대로 출력 안됨.
오류 5 해결방법 - 높은 버전의 프리다 서버 설치.
"오류 1 해결방법"에서의 프리다서버 수동 설치 방법을 이용해 15버전 이상의 프리다서버를 기기에 설치하면 한글이 제대로 출력됨을 확인 할 수 있음.
오류 6 - pasteboard-monitoring.js 실행 오류.
pasteboard-monitoring.js 사용을 위해 frida -U -l 명령어 사용 중 아래와 같은 오류가 발생하는 경우가 있다.
오류 원인 1). pasteboard-monitoring.js 소스코드 내에 변수 a가 선언되어 있지 않아 오류 발생.
> frida -U -l pasteboard-monitoring.js DVIA-v2 ReferenceError: 'a' is not defined at <anonymous> (C:\pasteboard-monitoring.js:19) at apply (native) at <anonymous> (frida/runtime/core.js:59) |
오류 6 해결방법.
아래와 같이 pasteboard-monitoring.js 파일의 소스코드를 수정.
//17 line 주석처리
//a = "";
오류 7 - frida -U -l 명령어 디바이스 연결 오류.
외부 스크립트 사용을 위해 frida -U -l 명령어 사용 중 아래와 같은 오류가 발생하는 경우가 있다.
오류 원인 1). 디바이스의 iOS버전과 프리다 버전이 맞지않아 발생하는 문제.
Failed to attach: need Gadget to attach on jailed iOS; its default location is: C:\Users\ID\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-ios.dylib |
오류 7 해결방법.
본문 상단에 있는 오류2 해결방법을 참고하여 해결.
오류 8 - Failed to spawn 오류
오류 원인. 디바이스의 frida-server가 동작하지 않거나 깨져서 발생하는 문제.
오류 내용 |
Failed to spawn: need Gadget to attach on jailed Android; its default location is: C:\Users\...\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-android-arm64.so |
오류 8 해결방법.
디바이스에 설치된 frida server를 실행, 실행했는데도 동일한 문제가 발생할 경우 재설치
'Mobile App 취약점 진단 · 모의해킹 > iOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
[iOS 취약점 진단] 06강 - 부채널을 통한 데이터 유출(App Screenshot) (0) | 2023.02.12 |
---|---|
[iOS 취약점 진단] 06강 - 부채널을 통한 데이터 유출(Device Logs) (0) | 2023.02.12 |
아이폰 기기 별 강제 재부팅 방법 (0) | 2023.01.27 |
[iOS 취약점 진단] 05강 - 저장소 내에 중요 정보 평문 저장(YapDatabase) (0) | 2023.01.23 |
[iOS 취약점 진단] 05강 - 저장소 내에 중요 정보 평문 저장(Couchbase Lite) (0) | 2023.01.23 |