[목차]
1. iOS 파일 시스템
- APFS (Apple File System)
2. IPA 파일 구조 (압축 해제 시 파일 구조)
- 이론
- IPA 파일 추출 실습
3. IPA 파일 구조 (앱 설치 시 파일 구조)
- 이론
- 실습
4. iOS 파일 시스템
- root 디렉터리
- 환경변수 PATH
1.iOS 파일 시스템
# APFS (Apple File System)
> 볼륨의 용량을 동적으로 할당 가능
(가상 머신 디스크 용량 동적 할당과 비슷한 개념)
> Copy-on-Write 은 리눅스에서 link와 비슷한 개념
2. IPA 파일 구조 (압축 해제 시 파일 구조 - takudaddy.ipa)
-이론-
- Info.plist : 앱을 설치하고 실행하기 위한 구성 정보가 포함됨 (버전정보, 앱 권한 등 확인 가능)
- 참고 : 앱을 설치 후 해당 앱을 IPA 파일로 추출하는 경우, 추출 된 파일 중 바이너리 파일(ex:maps.app)에는
애플 자체에서 거는 DRM이 걸려있는데 해당 DRM을 풀어줘야 해당 바이너리 파일 분석이 가능함
- 위 샘플처럼, 설치된 특정 앱의 IPA 파일을 추출하거나 설치된 앱의 내부 구조에 있는 데이터를
확인하기 위해서는 탈옥이 필요함
-IPA 파일 추출 실습-
1. Cydia에서 'IPA Installer' 설치
: IPA 파일 추출을 위해 필요한 도구
2. 3utools + putty를 통한 SSH 접속
먼저 3utools에서 Open SSH Tunnel 클릭!
클릭 시 정상 활성화 되고
ID/PW 잘 기억한 후
Putty로 붙어보면
접속 성공!
3. ipainstaller을 통한 IPA 파일 추출 실습
1에서 설치한 ipainstaller가 정상 실행 되는지 확인
-b 옵션을 통해 백업(추출) 가능!
4. 샘플 앱 설치 후 추출
4-1) 앱스토어에서 아무 앱 설치
4-2) 파일 위치 확인
4-3) 파일 구조 확인
3utools에서 그냥 확인해도 되지만
추출 실습을 위해 우선 해당 경로에 들어간 뒤
iTunesMetadata.plist 확인 (번들 식별자가 들어있음)
- Software 식별자 확인
softwareVersionBundleId
pjt.rn.ios.catchDeal
확인된 번들 아이디
'pjt.rn.ios.catchDeal'를
복사 후 ipainstaller를 통한 백업(추출)시도
경로 확인 후
백업된 경로에 들어가 보면
정상적으로 생성된 백업 파일 확인이 가능하며
export 시킨 뒤
압축을 풀어주면
IPA 파일 구조 확인 가능!
Payload > catchDeal.app 경로에 들어간 뒤
파일 정렬을 크기순으로 설정하는 경우
데이터가 크기가 가장 큰 녀석이 바이너리 파일!
정식 앱 스토에서 받은 것이기 때문에
애플에서 제공하는 DRM이 걸려있다는 점
참고!
추출 실습 끝!
3. IPA 파일 구조 (앱 설치 되었을 때 파일 구조)
-이론-
# Sandbox 내부 구조
> Sandbox 내
Bundle, Data, iCloud Container로 이루어져 있고
하나씩 살펴보면
# Bundle Container
# Data Containter
/$uuid 가 빠졌지만 마찬가지로 포함,
디렉터리가 읽거나 식별이 어려운
고유 식별자로 되어 있어 원하는 앱 찾기가
쉽지 않기 때문에 해당 폴더에 들어가서는
수정 날짜를 최신으로 정렬해 확인하는 방법을 추천
> 데이터가 저장된 컨테이너이기 때문에
사용자 및 앱에 관련된 중요한 데이터가
노출 되는지 여부 확인이 가능
# iCloud Container
> 실제 진단을 할 때는
해당 컨테이너를 따로 진단하지 않음
(따로 데이터나 중요 정보들이 저장되거나
보이지 않기 때문)
-실습-
1) Bundle Container
우선 번들 컨테이너 구조를 다시한번 살펴보고
3utools로 캐치딜 앱 경로 접속
: Modified Date 설정을 최신 순으로 정렬하는 습관을 들이면 편하다.
위 catchDeal.app 폴더는
앱에 대한 번들로 원래는
읽기만 가능하며 쓰기가 불가능하지만
탈옥을 한 상태이기 때문에 가능함
들어가서 사이즈 큰 순으로 정렬을 하면
바이너리 파일 확인이 가능!
2) Data Container
데이터 컨테이너는
Documents, Library, Temp 등으로
이루어져 있고 역할은 다음과 같으며
# 다시 한 번 정리하면 다음과 같다.
추가로 /Library/Preferences 경로는
앱에 대한 중요한 설정이 담겨있는 폴더로
중요 정보가 노출 될 수 있으므로
진단 대상에 포함된다.
icloud container는 생략,
실습은 3utools에서,
/var/mobile/Containers/Data/Application
경로에 접근하면 고유식별자들이 보이는데 이 상태로는
우리가 설치한 앱이 무엇인지 확인이 어렵기 때문에
Modified Date로 정렬해 해 최신 수정 디렉터리를
찾으면 된다.
맨 위 디렉터리에 들어가보면
Data 컨테이너의 3개 디렉터리 확인이 가능하고
앱 사용을 안해서
안에 들어가봐도 기록된 데이터는 없다.
(후에 취약한 앱으로 실습 시 확인 가능)
4. iOS 파일 시스템
# root 디렉터리
# 환경변수 PATH
# 내용 및 일부 이미지 출처
: 보안프로젝트 김태영 팀장 iOS 모바일 앱 모의해킹(기초) 강의 PDF
'APP 진단 > iOS' 카테고리의 다른 글
5. 취약한 애플리케이션 환경 구성 (DVIA-v2) (0) | 2022.11.05 |
---|---|
4. iOS 애플리케이션 구조 (1) | 2022.11.01 |
2. 진단 환경 구성 (아이폰 탈옥) (0) | 2022.10.22 |
1. iOS 구조 이해 (0) | 2022.10.22 |
실습 환경 구축 - 아이폰 탈옥 (Unc0ver & Checkra1n) (0) | 2022.01.24 |