iOS IPA 추출하기
포스팅 시간 기준 아래 버전들로 테스트 하였습니다.
( macOS Catalina( 10.15.3 ) )
$ frida --version
12.8.14
( iPhone8 11.4.1 )
root# /usr/sbin/frida-server --version
12.8.11
추출 환경 구성
.ipa 파일은 iOS 앱을 저장하는 iOS 애플리케이션 아카이브 파일입니다.
각 .ipa 파일에는 바이너리가 포함되어 있으며 iOS 장치에만 설치할 수 있습니다.
확장자가 .zip으로 변경되고 압축이 풀리면 확장자가 .ipa 인 파일을 압축 해제 할 수 있습니다.
분석을 위한 첫번째 단계로 해당 앱 바이너리를 얻을 필요가 있습니다.
개발자라면 TestFlight나 직접 만든 ipa를 분석 하면 되지만 우리는 보통 그렇지 못하니까요^^.
그래서 ipa 추출 툴인 frida-ios-dump를 소개하려고 합니다. (bfinject tweak 이슈 해결 가능)
준비
1) 탈옥된 아이폰 , Cydia , Frida
- openssh , frida가 설치 되어야 합니다.
- Cydia > 소스 > 편집 > 추가 https://build.frida.re 입력
2) 맥에서 frida 설치 ( frida 공식사이트 )
- pip3 install frida frida-tools **( python2,3 버전 이슈로 python 버전 명시하는것을 추천)**
3) frida가 잘 설치 되었는지 확인하기 위해 연결 확인 ( usb연결 후 )
$ frida-ps -U
PID Name
---- --------------------------------------------------------
980 Betternet
1743 Chrome
637 Cydia
633 Electra
606 Mail
955 MailCompositionService
997 MusicUIService
1691 Safari
1015 ScreenshotServicesService
...
4) frida-ios-dump repo 다운
git clone https://github.com/AloneMonkey/frida-ios-dump.git
cd frida-ios-dump
sudo pip3 install -r requirements.txt --upgrade
ipa 추출
1) frida-ios-dump는 ssh를 통해 가지고 오기 때문에 ssh 접속이 되는지 확인 해야 합니다.
ssh id / pw 는 기본 root / alpine 입니다.
2) git에서 받아온 dump.py 코드중 아래 Host와 Port를 수정합니다.
User = 'root'
Password = 'alpine'
Host = 아이폰 IP
Port = 22
3) 코드를 수정하고 패키지 목록을 가져옵니다. 저는 Chrome을 추출해봤습니다.
$ python3 dump.py -l
PID Name Identifier
---- ------------------- -----------------------------
980 Betternet com.betternet
1743 Chrome com.google.chrome.ios
637 Cydia com.saurik.Cydia
633 Electra org.coolstar.electra1141
606 Mail com.apple.mobilemail
1691 Safari com.apple.mobilesafari
...
4) python3 dump.py [Display name] or [Bundle identifier]
5) 이제 추출된 ipa로 열심히 리버싱 고고
Leave a comment