1. iOS 애플리케이션 구조
1) 구조
- /Applications/$app_name.app
- /var/mobile/Containers/Data/Application/$uuid
- ios에서 제공하는 샌드 박스로 인해 탈옥 되지 않은 디바이스의 특정 앱에서만 접근 가능
- /var/Keychain/keycahin-2.db
- iOS KeyChain
- sqlite데이터베이스로 구성된 파일이며 모든 데이터는 암호화됨(리버싱 잘하면 복호화 가능)
2. Mach-O 및 Fairplay DRM 소개
1) Mach-O 바이너리 파일
- iOS디바이스에 설치된 앱은 Mach-O 바이너리 파일의 형태
- Mach-O (Mach object format)
- 앱스토어에서 다운한 앱은 FairPlay DRM을 통해 암호화 되어 있음
- 로더에 의해 런타임 중에 해독됨 (이후, 실행된걸 유저에게 보여줌)
2) Mach-O 바이너리 파일 형식
- Header
- Load Commands
- Data
- 실제 데이터, 하나이상의 세그먼트에 실제 데이터를 포함
3) Fairplay DRM
- 앱스토어에서 다운한 앱은 Fairplay DRM을 이용해 암호화 및 보호
- 암호화된 바이너리 파일은 커널의 Mach-O 로더에 의해 런타임 중 해독
- DRM적용 여부는 Otool 도구를 사용하여 확인 가능
- 바이너리 분석에서는 DRM 해독 필수 ! (Class-dump, frida-ios-dump 도구를 통해 해독 가능)