APP 진단/iOS

3. iOS 파일 시스템 이해

takudaddy 2022. 10. 23. 23:00

 

 

 

[목차]

 

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

 

728x90