
APFS(Apple File System)
1. 특징
HFS+를 대체하는 Apple의 차세대 파일 시스템
*SSD/플래시 저장 장치에 최적화
iOS 10.3 이상부터 지원 (2017)
2. 주요 기능
*스냅샷 : 특정 시점의 파일 시스템 상태를 저장하여 빠른 백업/복구 가능. *CoW 방식으로 변경사항만 기록.
*강화된 암호화 : 파일별, 메타데이터별 등 개별 암호화 지원. File Key는 파일 내용만 암호화, Class Key는 파일 접근 권한과 관련된 정보를 암호화.
공간 활용 : 여러 볼륨이 하나의 파티션 공간을 공유. 64비트 *inode로 대용량 저장소와 수십억 개의 파일 처리 가능
성능과 안정성 : 파일 복사, 이동, 삭제가 매우 빠름. 원자성 보장으로 데이터 무결성 유지
*추가 설명
1) 플래시 메모리 : 비휘발성 메모리의 한 종류. HDD와 달리 (셀의 이동)전기 신호만으로 데이터를 읽고 씀. 데이터를 블록 단위로 처리하고, 셀의 수명 제한이 존재함.
2) SSD는 NAND 플레시 메모리에 저장하는 방식으로, 속도가 빠르고, 용량이 크며 저렴함.
3) CoW(Copy-on-Write) : 데이터 수정시, 기존 데이터는 복사하지 않고, 변경 사항만 새로운 블록에 기록하는 방식.
중복 파일의 용량을 1/n로 줄여줌 → 셀 수명 보호, 공간 공유 → 불필요한 쓰기를 방지, TRIM 지원 → 성능 유지, 암호화 강화 → 플래시 메모리에 저장된 데이터 보호
4) 스냅샷 생성 이후, 삭제된 파일은 원본 데이터가 남아있을 가능성이 높음. 타임라인 분석으로 파일이 변경된 시점을 알 수 있음.
5) jailbroken device의 키 체인 접근 → 비밀번호, 토큰 등 정보 추출할 수 있을 가능성 있음.
6) inode : 유닉스 계열 파일 시스템에서 파일의 메타데이터를 저장하는 자료구조. 파일 자체의 정보를 가지며, 파일 명은 디렉터리 엔트리에 저장되고 inode 번호와 연결됨.
Literature Review
1. jailbroken
iOS 보안 제한을 우회하여 루트 권한을 획득하는 것.
iOS 보안으로는 *샌드박스, 코드 서명, 루트 접근 차단 등이 있음.
jailbroken device - 키체인 전체 데이터 추출. 메시지나 파일 추출. 스냅샷을 통해 삭제된 파일 복구. APFS 암호화 해제 등을 시도해볼 수 있음.
- Tethered/Semi-Tethered : *DFU 모드 exploits를 통해 램디스크 부트스트랩 및 커널 패치를 수행하여 시스템 권한을 획득. 재부팅 시 탈옥 해제.
- Untethered Jailbreak : 탈옥 툴 사용. 부트 체인 과정에서 영구적인 커널 패치가 이루어짐.
non-jailbroken device - 아이폰 백업 프로토콜(iTunes)
knowledgeC.db(iOS 11~) - (메신저 앱 동작시) 유저ID, 닉네임, 채팅방ID, 메시지 송·수신 행위, 통화 수·발신 행위, 타임스탬프 등의 로그 기록
iOS 16에서는 Biome의 SEGB 파일이 knowledgeC.db를 대체하는 것으로 알려져 있음.
둘 다 메신저 앱에 대한 주요 로그가 binary plist 형태로 기록, 내용 동일함.
1) knowledgeC.db
ZOBJECT : 타임스탬프, 행위 정보, 외래키 → 앱 삭제와 동시에 레코드 삭제
ZSOURCE : Bundle ID
ZSTRUCTUREDMETADATA : 데이터의 송수신 여부, (BLOB 데이터 분석)타임스탬프
→ 두 테이블은 앱 삭제 후 약 10시간 보존
2) 사용자 행위 추적
| 메시지 송신 | 메시지 수신 | 통화 수신 | 통화 발신 | |
| 카카오톡 | 일반, 비밀채팅방 존재 | 일부 기록 | 없음 | 없음 |
| 텔레그램 | 일반 채팅방 존재 | 일부 기록 | 비밀채팅방 부재중만 | 있음 |
| 라인 | 일반 채팅방 존재 | 없음 | 없음 | 있음 |
| 페이스북 | 일반 채팅방 존재 | 없음 | 있음 | 있음 |
| 인스타그램 | 일반 채팅방 존재 | 없음 | 없음 | 없음 |
3) Biome SEGB
앱 삭제 이후, 카카오톡과 라인의 로그는 보존되지 않음.
4) 자동화 구현
knowledgeC.db 입력 → 데이터 송·수신 파악 → 메시지 송·수신, 통화 수·발신 행위 구분 → BLOB 데이터에서 타임스탬프 추출 → 사용자 식별 정보 수집
3. iOS 톡화녹음 애플리케이션 아티팩트 분석 (2024)
'에이닷' (앱. iOS 16 이상 지원) - 상대에게 통화 녹음 안내 → 법적 효력을 가짐.
DB Browser SQLite 활용
1) jailbroken device
/var/mobile/Containers/Data/Application/{$UUID} - CallModel.sqlite(통화별 중요 키워드 및 요약본), Cache.db(통화 관련 주요 아티팩트)
/var/mobile/Containers/Shared/AppGroup/{$UUID} - 통화녹음 파일(연락처_날짜_시간.aac)
2) non-jailbroken device
백업으로 얻은 데이터는 임의의 난수 값으로 존재 → Manifest.db 파일 분석
4. 아이폰으로 촬영된 디지털 이미지의 파일 구조 (2021)
1)디지털 이미지 파일 구조 비교
JPEG의 SOI 마커 : 디지털 이미지의 시작. 위치 고정.
APPn 마커~ : EXIF(카메라 상태, 제조사 등 메타 정보) 포함
DQT, DHT 마커~ : 양자화 테이블 및 허프만 테이블 정의
SOFn, SCNAn 마커~ : 허프만코딩 정보 및 압축된 디지털 이미지 데이터
2) 디지털 이미지의 인코딩 비교
EXIF 정보 : 이미지 조작 또는 JPEG 재인코딩 할 경우, 소프트웨어 및 촬영시간 변경.
양자화 테이블 : 편집 툴을 통한 재인코딩 시, 어떠한 품질로 저장하는지에 따라 양자화 테이블의 차이가 발생.
JPEG 마커 및 순서 : JPEG로 압축된 디지털 이미지의 마커 및 그 순서가 해당 휴대전화 고유의 특징이 될 수 있음.
3) 아이폰에 기록된 미디어 로그 분석
1) 잠금 해제
지문 인식 해제 : 'Lock status changed', 'locking to unlocked'
비밀번호 해제 : 'AppleKeyStore : operation failed'
2) 전원
USB 연결 : 'AppleCableDetet 1(해제 시 0)', 'AppleUSBCableType USBHost'
부팅 : 'Homed'라는 태그를 가진 로그
3) 애플리케이션
애플리케이션 패키지명이 포함됨
실행 'launchd', 종료 'service exited', 다운로드 'Added', 삭제 'Removed', 업데이트 'Installing software package'
4) 네트워크
와이파이 : AP의 MAC 주소, SSID
핫스팟 : 연결된 PC 또는 휴대기기의 MAC 주소와 기기명
AirDrop : 파일 송·수신 모두 시작, 종료 로그 기록. 송신 시, 상대 기기에 대한 정보 남음.
5) 기타
SMS 수·발신 : 발신 'mms: queued', 수신 'Message received notification', 삭제 'Delete chat items'
백업 : 'Starting backup'
GPS : 'Received source available from "Location"'
6. 맥 포렌식을 통한 아이폰 아티팩트 분석 (2016)
Apple의 데스크톱 운영체제인 OS X(macOS)와 스마트폰 운영체제인 iOS 간의 기밀 정보 동기화 및 통화/문자 메시지를 연동할 수 있는 점을 이용.
문자 메시지(iMessage), 전화는 아이클라우드를 통해 동기화 가능.
키체인 시스템 : Apple에서 제공하는 패스워드 관리 시스템.
1) 문자 메시지({사용자 홈 디렉터리}/Library/Messages/chat.db) : SQLite3 포맷. 저널링 방식으로 *WAL 사용.
2) 통화내역 분석({사용자 홈 디렉터리}/Library/Application Support/CallHistoryDB/CallHistory.storedata) : 저널링 방식으로 WAL 사용. SQLite 포맷. 송신자 정보를 암호화하여 보관하는 ZADDRESS 필드 복호화 과정 필요. ZADDRESS 필드의 암호화 알고리즘은 *AES-GCM을 사용(→ 현재는 *FairPlay 보안 기술을 기반으로 필드를 보호하며, macOS 키체인으로 복호화)
3) 아이클라우드 키체인({사용자 홈 디렉터리}/Library/Keychains/[UUID]) : 키를 저장하는 데이터베이스 파일(keychain-2.db)과 데이터베이스 내의 데이터를 암호화하는 키 저장소인 키백(Keybag; user.kb)으로 이루어짐.
'iChainbreaker' : 아이클라우드 데이터베이스 키백이 저장된 디렉터리, 사용자 패스워드를 인자로 데이터를 복호화하는 툴.
*추가 설명
1) 샌드박스 : 자기 영역 외의 앱에 접근할 수 없음.
2) DFU 모드 : Apple 기기의 부트로더 복구 모드. 펌웨어를 복구하거나 커스텀 펌웨어를 주입.
DFU Expoit 예시 : checkm8 exploit (iPhone X 이하. DFU 모드에서 코드 실행 가능)
Ramdisk : 부팅 시 RAM에 로드되는 작은 OS 이미지. DFU 모드에서 NAND 접근이 어렵기 때문에, 수정된 루트 파일 시스템을 로드하는 데 사용.
커널 패치 : iOS 커널은 기본적으로 코드 서명을 검증하기 때문에, 커널 패치를 통해 비공식적인 소프트웨어 실행 및 탈옥 가능.
3) WAL : Write-ahead Logging
4) AES-GCM : 대칭키. 보안성이 좋고, 속도가 빨라 TLS와 같은 네트워크 통신에 사용함. 기밀성과 무결성을 동시에 보장하여, 암호화와 무결성 검증(인증)을 한 번에 처리함. 고유한 12바이트 Nonce(IV)를 권장함. AAD(암호화 없이 인증만 처리 가능). Galois Field 연산으로 인증 태그를 빠르게 생성함.
암호화 과정 : Key, Nonce 설정 → 평문으로 암호문 생성 → Galois Field 연산으로 인증 태그 생성
복호화 과정 : 암호문과 인증 태그 입력 → 평문 복호화 → 인증 태그 검증하여 무결성 입증
5) FairPlay : Apple 기기 및 계정과 연동하여 보안 관리, 암호화된 데이터는 macOS/iOS 키체인을 통해서만 복호화 가능, DRM(디지털 저작권 관리)과 데이터 보안을 동시에 적용.
암호화 과정 : 보호할 데이터 → AES 기반 암호화 → FairPlay 키 관리 시스템을 통해 저장
복호화 과정 : 인증된 기기 & 사용자 확인 → macOS/iOS 키체인 접근 → 복호화된 데이터 제공