AirDrop 분석을 하다가 Frida를 쓸 일이 생겨서 처음으로 Frida를 사용했고... 그 기념으로 기록을 남기러 왔다!!
Frida는 동적으로 바이너리를 분석할 수 있게 해주는 툴입니당
Windows, macOS, GNU/Linux, iOS, Android 등에 있는 바이너리에다가 JS 코드를 삽입해서 클래스나 함수들을 후킹해서 흐름을 조작할 수 있게 해줍니다.
Frida로 앱을 분석하려면 루트권한을 가지고 있는것이 좋습니다... 없어도 할 수는 있겠지만 그만큼 접근할 수 있는 범위가 좁겠죠...?
저는 iOS 프로세스에 대한 분석을 진행하였기에 탈옥한 iPhone7을 가지고 Frida를 사용해보았슴다!
iOS 13.2.2에 Frida-server를 올리고 분석을 진행한 쪽은 Ubuntu 64bit를 사용했습니다.
※여기부터는 탈옥된 아이폰을 가지고 진행했습니다! 탈옥이 안된 경우는 다음에 작성하도록 하겠습니다 :(
1. 대상 기기(iOS)
대상이 되는 기기에는 frida-server를 올려주어야합니다! 올리는 방법엔 두가지가 있습니다.
첫번째 방법은 탈옥을 했으니! Cydia에서 간단히 소스 추가를 통해 진행하는 방법입니다.
먼저 Cydia에 들어가서 하단 두번재 메뉴에 있는 "소스"를 눌러줍니다. 상단에 "편집"을 누르면 맨 오른쪽과 같은 창이 나오는데 그때 왼쪽 상단에 "추가"를 눌러서 URL에 https://build.frida.re를 를 입력하여 소스를 추가해주시면 됩니다!
이게 가장 평범한 방법인데 저는 얼마전에 프리다 설치중에 계속 오류가 나서 해당 방법을 사용할 수가 없었어요ㅠㅠ 그래서 준비한 두번째 방법입니다.
https://github.com/frida/frida/releases
여기서.... 직접 다운로드 받아서 아이폰에 넣어주는 방법입니다...!!
해당 페이지에서 frida-server 검색하면 iOS용이 두가지가 있는데 32bit/64bit 구분해서 본인에게 맞는 것 받으면 됩니당
아 해당 방법을 이용할 때 받은 파일은 아이폰의 /usr/sbin 아래 넣고, 다운로드 받은 파일의 이름이 복잡하니까!!
cp 받은파일 frida-server
를 이용해서 이름을 바꿔줍시다
자 이렇게 설치를 완료했으면 frida-server를 구동 시켜야겠죠? 이를 위해서 아이폰에 ssh를 통해 원격으로 붙어줍시다
설정->Wi-Fi->연결된 와이파이 정보 확인하면 IP주소가 나와있으니 이를 통해 접속합시다!
저는 왜 그런진 모르겠는데... 아이폰에 frida-server를 설치하면 바로 프로세스로 돌더라구요
ps ux | grep frida
이처럼 프로세스를 확인했을 때 /usr/sbin/frida-server 프로세스가 존재한다면 제대로 돌아가고 있는겁니다
만약 프로세스가 동작하지 않는다면
cd /usr/sbin
./frida-server &
위 명령어를 통해 frida-server를 백그라운드 프로세스로 돌려줍시다 ㅎㅎ
여기까지하면 대상 기기에 설정할 부분은 끝입니다!
2. Host PC
사실 여기서는 .... 별게 없습니다
pip isntall frida
끝...! ㅋㅋㅋㅋㅋㅋ 파이썬 패키지로 제공을 하기 때문에 간단하게 설치가 가능합니다
but 파이썬 라이브러리만 생기는 건 아니구 CLI로 사용할 수도 있게 됩니다!
그러면 제대로 연결이 되었는지 확인 해봅시다
아이폰을 USB 케이블로 Host PC에 연결해줍니다! 이게 기기를 제대로 못 받아올 수 있어서 웬만하면 기기는 하나만 끼워놓고 하는것이 좋다고 하네요 ㅎㅎ
frida-ps -U
위 명령어를 통해 지금 USB 케이블을 통해 연결되어있는(-U) 기기의 프로세스들을 출력해줍니다!
제가 지금 비둘기 키우기 게임을 하고 있었는데 위에 PID 2408로 제대로 뜨네요 잘 된 것 같습니다.
엄청 간단히... 환경 설정은 끝났습니다 ㅎㅎ
다음 Frida 관련 글에서는 python 코드로 어떻게 프로세스세 붙어서 분석을 진행하는지에 대한 부분을 설명하겠습니다!
+) remote로 접속하기
./frida-server --listen=IP:port
frida-ps -D "IP:port"
frida-server를 실행시킬 때 IP와 port를 지정해주면 USB 케이블 없이 접속 가능합니다
'Mobile' 카테고리의 다른 글
[Android_Frida] 시작하기 (0) | 2019.12.31 |
---|---|
[Android] ADB install (0) | 2019.12.31 |
[Android] Nexus5 Rooting (0) | 2019.12.31 |
[iOS_Packet Capture] iOS Network traffic capture without Jailbreak (0) | 2019.11.14 |
[iOS_Jailbreak] checkra1n - 모든 버전 탈옥 가능! (0) | 2019.11.11 |