iOS IPA 추출하기

1 minute read

포스팅 시간 기준 아래 버전들로 테스트 하였습니다.

( 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