Logical 획득/IOS

Digital Forensic Wikipedia
둘러보기로 가기 검색하러 가기

파일 전송 프로토콜 사용[편집]

로지컬 획득 프로그램[편집]

1. USBMuxd
로지컬 획득을 위해서는 공통적으로 USBMuxd라는 과정이 반복되어야 한다. PC와 iDevice가 통신하려면 iDevice가 USB pipe를 통하여 PC와 연결되고 PC와 iDevice가 통신할 수 있도록 하는 USBMuxd 과정이 진행된다.

아래 그림과 같이 USBMux Client인 PC가 iDevice와 응답을 주고받으면서 잘 연결되었는지 확인한다. 연결이 이루어졌으면 iDevice가 PC에 Device ID를 전송하고 PC는 USB Pipe를 통한 TCP 연결 요청을 보낸다.

USBMuxd

2. 통신 개요
로지컬 획득 프로그램에서 서비스생성을 위한 프로세스를 개시하면 iDevice가 연결된 PC를 신뢰할 수 있는지 검증하는 Pairing 과정이 실행되고 검증이 완료되면 iDevice가 PC에 통신 포트 번호를 전송한다.
서비스 생성 후에는 iDevice에 요청된 서비스를 실행하는 데몬 프로세스가 동작하고 이 프로세스와 통신할 수 있는 TCP socket 핸들이 로지컬 획득 프로그램에 반환된다.


통신 개요


3. 프로그램 종류
USBMuxd 과정을 구현한 오픈 소스를 기반으로 한 로지컬 획득 프로그램으로 Libimobiledevice[1]가 있다.

Libimobiledevice는 Nikias Bassen이 개발한 크로스 플랫폼 소프트웨어 라이브러리로 iDevice가 지원하는 대부분의 프로토콜을 지원한다.

Pymobiledevice[2]는 Libimobiledevice를 파이썬으로 구현한 프로그램으로 iDevice가 지원하는 프로토콜 중에서 가장 중요한 프로토콜인

AFC, MobileBackup2, File Relay, Installation Proxy, House Arrest 등을 지원한다.


신뢰성 검증[편집]

각 프로토콜 별로 어떤 종류의 데이터가 획득되는지 테스트하기 위하여 오픈소스로 구현된 프로토콜 획득 프로그램인 Libimobiledevice와 Pymobiledevice를 사용하였고 각각의 프로토콜 별 구현된 기능을 신뢰할 수 있는지에 대하여 검증하였다.

1 검증 방법
각 프로토콜을 이용하여 데이터를 획득한 후에 아래 그림과 같이 dd 명령어를 사용하여 iOS 기기의 데이터 파티션 영역 “rdisk0s1s2”에 대한 이미징을 수행하였다. 각 프로토콜 별 획득 데이터와 덤프한 이미지에 있는 데이터를 비교하여 일치하는지 확인하였다.
2 검증 결과
2-1 AFC
AFC 서비스를 이용하여 “/var/mobile/Media” 경로에 있는 데이터를 획득할 수 있다. 아래그림은 AFC를 이용하여 획득한 DCIM 내의 그림 파일과 덤프이미지에서 획득한 DCIM 내의 그림 파일을 EnCase로 확인한 화면이다.

두 방식 동일하게 IMG_0001.JPG, IMG_0002.JPG, IMG_0003.JPG 세 개의 파일이 추출되었다.

AFC를 이용하여 획득한 DCIM 내의 파일덤프 이미지에 저장된 DCIM 내의 파일

2-2 Mobile Backup2
Mobile Backup2 서비스를 이용하여 획득한 데이터와 덤프 이미지에 저장된 데이터를 비교한 결과 두 방식의 저장된 데이터가 동일하였다.

아래 그림은 MobileBackup2를 이용하여 획득한 데이터 중 “Data\wireless\Library\Preferences” 경로에 있는 데이터를 iTools로 열람한 화면과 덤프 이미지에 저장된 같은 경로의 데이터를 EnCase로 열람한 화면이다.

MobileBackup2를 이용하여 획득한 Preferences 파일 덤프 이미지에 저장된 Preferences 파일

2-3. File Relay
File Relay 서비스를 이용하면 위의 표에 있는 데이터를 획득할 수 있다. File Relay 서비스를 이용하여 획득한 데이터와 덤프 이미지에 저장된 데이터를 비교한 결과 두 방식의 저장된 데이터가 동일하였다.

아래 그림은 File Relay를 이용하여 획득한 데이터 중 “/Library/Preferences/SystemConfiguration” 경로에 있는 데이터를 리눅스 운영체제에서 열람한 화면과 덤프 이미지에 저장된 같은 경로의 데이터를 EnCase로 열람한 화면이다.

File Relay를 이용하여 획득한 SystemConfiguration 파일 덤프 이미지에 저장된 SystemConfiguration 파일

2-4 Installation Proxy
Installation Proxy 서비스를 이용하여 iOS 기기에 설치되어 있는 애플리케이션 목록을 획득할 수 있다.

아래 그림은 iPhone 기기에 실제 설치된 애플리케이션과 Installation Proxy를 이용하여 애플리케이션 목록을 출력한 화면이다.
실제 기기에 설치된 애플리케이션과 Installation Proxy를 이용하여 출력한 목록에 있는 애플리케이션이 일치하였다.

iPhone 기기에 설치된 애플리케이션 Installation Proxy를 이용하여 열람한 애플리케이션 목록

AFC (Apple File Connection)[편집]

1. 특징

AFC는 iOS 기기와 iTunes 간에 파일 교환을 위해 사용되는 서비스로 /var/mobile/Media 이하에 있는 파일 및 디렉토리의 입출력 서비스를 제공한다.

2. 조건

AFC 프로토콜을 사용하기 위해서는 iOS 기기의 비밀번호 해제가 필요하다. 아이폰 5S의 경우 지문인식이 설정되어있다면 해제해야한다. 또한 iOS 기기가 컴퓨터에 연결될 때 “이 컴퓨터를 신뢰하시겠습니까?” 라는 메시지가 뜨면 “신뢰”를 클릭하여야 한다.

3. 데이터 획득 방법

3-1. AFC 서비스 생성
AFC 서비스는 “com.apple.afc” 서비스를 호출하여 시작된다.

AFC 서비스 생성

3-2 데이터 획득
아래 표에 명시된 API를 이용하여 “/var/mobile/Media” 내의 디렉토리를 재귀적으로 순회하면서 데이터를 획득한다.
AFC Directory/File I/O API
구분 API 설명
디렉토리
AFC_OP_MAKE_DIR 디렉토리 생성
AFC_OP_READ_DIR 디렉토리 읽기
AFC_OP_REMOVE_PATH 디렉토리 삭제
AFC_OP_RENAME_PATH 디렉토리 이름 변경
파일
AFC_OP_FILE_OPEN 파일 열기
AFC_OP_FILE_CLOSE 파일 닫기
AFC_OP_READ_FILE 파일 일기
AFC_OP_WRITE_FILE 파일 쓰기
AFC_OP_FILE_SEEK 파일 포인터 이동
AFC_OP_FILE_TELL 파일 포인터 위치 읽기
AFC_OP_GET_FILE_INFO 파일 정보 얻기
기타
AFC_OP_GET_DEVINFO 기기 정보 얻기
3-3 데이터 획득 과정
명령 프롬프트에서 “afc.py”를 입력하여 Pymobiledevice의 afc 프로토콜을 실행시킨다.

afc.py 실행

ls 명령어로 디렉토리 목록을 확인한 후 원하는 디렉토리로 이동한다.

afc 디렉토리 목록 확인

afc 디렉토리 이동

“pull <파일이름>” 명령어로 데이터를 획득한다. 데이터는 “afc.py”가 존재하는 폴더 내에 저장된다.

afc 데이터 획득

Mobile Backup2[편집]

1. 특징

MobileBackup2는 iOS 기기의 “/var/mobile/Media”, “/var/mobile/Library”, “/var/mobile/Applications”에 존재하는 사용자 데이터 및 설정 정보를 고속으로 백업하는 서비스이다.
MobileBackup (com.apple.mobilebackup)은 iOS 4 이전 버전에서 사용된 프로토콜이고 iOS 4 부터는 mobilebackup2 (com.apple.mobilebackup2) 프로토콜이 사용된다.
SMS, 통화기록, 애플리케이션 데이터 등 다양한 사용자 정보 획득이 가능하지만 사용자가 백업 암호를 설정한 경우 모든 데이터가 AES-256-CBC 알고리즘으로 암호화되어 획득되고,
증거로서 가치가 있는 “/var/tmp”, “/var/mobile/Library/SafeHarbor”, “/Library/Logs/CrashReport” 및 “/var/mobile/Media” 경로의 일부 데이터를 획득하지 않는 문제가 있다.
MobileBackup2 서비스로 백업된 데이터는 SHA1으로 인코딩된 이름으로 아래 표에 있는 사용자 컴퓨터의 디렉토리에 저장된다.
SHA1으로 인코딩된 파일의 iOS 기기 내의 경로는 Backup 디렉토리 내의 Manifest.mbdb 파일을 참조하여 디코딩할 수 있다.

MobileBackup2 파일 백업 경로
운영체제 백업 경로
Windows XP
C:\Documents and Settings\[UserName]\Application Data\Apple Computer\MobileSync\Bakcup
Windows 7/8
C:\Users\[UserName]\AppData\Roaming\Apple Computer\MobileSync\Backup
Mac OS X
~\Library\Application Support\MobileSync\Backup

2. 조건 Mobile Backup2 프로토콜을 사용하기 위해서는 iOS 기기의 비밀번호 해제가 필요하다. 아이폰 5S의 경우 지문인식이 설정되어있다면 해제해야한다.
또한 iOS 기기가 컴퓨터에 연결될 때 “이 컴퓨터를 신뢰하시겠습니까?” 라는 메시지가 뜨면 “신뢰”를 클릭하여야 한다.

3. 데이터 획득 방법

(가) MobileBackup2 서비스 생성
MobileBackup2 서비스는 “com.apple.mobilebackup2” 서비스를 호출하여 시작된다.

MobileBackup2 서비스 생성

(나) Info.plist 파일 생성

기기 이름, GUID, 전화번호, 제품 종류, 제품 버전 등이 저장되는 Info.plist 파일을 생성한다.

Info.plist 파일 생성

(다) 데이터 획득
MobileBackup2 서비스는 정해진 프로토콜에 따라 송수신하며 데이터를 획득한다.

MobileBackup2 데이터 송신

MobileBackup2 데이터 수신

(라) 데이터 획득 과정
명령 프롬프트에서 “idevicebackup2.exe backup [경로]”를 입력하여 libimobiledevice의 mobilebackup2 프로토콜을 실행시킨다. “[경로]”에는 백업 파일이 저장될 경로를 입력한다.

idevicebackup2 실행

아래 그림과 같이 데이터를 송수신하며 지정한 경로에 데이터를 백업한다.

mobilebackup2 데이터 백업 과정

데이터 백업이 완료된다.

mobilebackup2 데이터 백업 완료

아래 그림과 같이 지정한 경로에 데이터가 백업되어 있는 것을 확인할 수 있다.

mobilebackup2로 백업된 데이터

File Relay[편집]

1. 특징

File Relay는 연결된 iOS 기기에서 아래 표에 정의된 데이터 소스를 백업하여 cpio.gz로 묶어서 반환해주는 서비스이다.
다음 표는 File Relay가 백업하는 데이터 소스 목록이다. File Relay 서비스는 백업 암호 잠김 유무에 상관없이 tmp, cahce, SafeHarbor 등 증거로서 가치가 있는 데이터를 획득할 수 있다는 장점이 있다.

File Relay 서비스 데이터 소스 및 파일/디렉토리
데이터 소스 파일/디렉토리
AppleSupport
/var/logs/AppleSupport
Caches
/var/mobile/Library/Caches
CrashReporter
/Library/Logs/CrashReporter
/var/mobile/Library/Logs/CrashReporter
Mobile WirelessSync
/var/mobile/Library/Logs/MobileWirelessSync
Lockdown
/var/root/Library/Lockdown 이하
activation_records, data_ark.plist,
par_records
/Library/Logs/lockdownd.log
MobileInstallation
/var/mobile/Library/MobileInstallation 이하
ArchivedApplication.plist,
ApplicationAttributes.plist,
SafeHarbor.plist
SafeHarbor
/var/mobile/Library/SafeHarbor
Network
/var/log 아래
ppp, racoon.log, eapolclient.en0.log
System Configuration
/Library/Preferences
/SystemConfiguration
UserDatabases
/var/mobile/Library 이하
Addressbook, CallHistory, Mail/Envelope Index,
SMS, NOtes
VPN
/var/log/racoon.log
WiFi
/var/lo/wifimanager.log
/var/lo/eapolclient.en0.log
tmp
/var/tmp
unknown
/var/mobile/Media

2. 조건 FileRelay 프로토콜을 사용하기 위해서는 iOS 기기의 비밀번호 해제가 필요하다. 아이폰 5S의 경우 지문인식이 설정되어있다면 해제해야한다.
또한 iOS 기기가 컴퓨터에 연결될 때 “이 컴퓨터를 신뢰하시겠습니까?” 라는 메시지가 뜨면 “신뢰”를 클릭하여야 한다.


3. 데이터 획득 방법

(가) File Relay 서비스 생성
File Relay 서비스는 “com.apple.mobile.file_relay” 서비스를 호출하여 시작된다.

File Relay 서비스 생성

(나) File Relay 데이터 요청
데이터 소스는 하나 이상의 조합으로 표현이 가능하다. File Relay 서비스가 제공하는 모든 데이터를 한 번에 획득하려면 아래 그림과 같이 sources 키를 “All“로 설정하면 된다.

“All”로 데이터를 요청할 경우 이전 표에는 식별되지 않았지만 /var/mobile/Media 경로의 DCIM, PhotoData, PhotoStreamsData 디렉토리의 데이터가 획득된다.

File Relay 데이터 요청

4. 데이터 획득 과정 명령 프롬프트에서 “file_relay.py”를 입력하여 Pymobiledevice의 file relay 프로토콜을 실행시킨다.

File Relay 실행

데이터는 “file_relay.py”가 존재하는 폴더에 fileRelayTest.gz 라는 압축파일로 저장된다. gz 파일은 백업을 위한 대용량 압축 파일이다.
이 파일은 리눅스에서 zcat 명령어를 사용하여 압축을 해제할 수 있다. 아래 그림과 같이 리눅스 터미널에서 “zcat [파일명] | cpio –idmv”를 입력하여 압축을 해제한다.

zcat 명령어

아래 그림과 같이 압축이 해제되어 Library 폴더와 var 폴더가 생긴 것을 볼 수 있다.

cpio 압축 해제

Installation Proxy[편집]

1. 특징

Installation Proxy는 Applications 디렉토리에 설치된 앱을 관리하는 서비스이다. 설치된 애플리케이션 리스트, 기기에 애플리케이션 인스톨 ․업그레이드․ 언인스톨, 보관된 애플리케이션 리스트 등의 기능을 수행한다.
또한 “ApplicationArchives” 디렉토리에 ZIP으로 애플리케이션을 압축하여 보관하고 언인스톨하는 기능도 수행한다. 따라서 Installation Proxy 서비스를 이용하여 iOS 기기에 어떤 애플리케이션이 설치되었는지 확인할 수 있다.

2. 조건

Installation Proxy 프로토콜을 사용하기 위해서는 iOS 기기의 비밀번호 해제가 필요하다. 아이폰 5S의 경우 지문인식이 설정되어있다면 해제해야한다.
또한 iOS 기기가 컴퓨터에 연결될 때 “이 컴퓨터를 신뢰하시겠습니까?” 라는 메시지가 뜨면 “신뢰”를 클릭하여야 한다.

3. 데이터 획득 방법

(가) installation_proxy 서비스 생성
Installation proxy 서비스는 “com.apple.mobile.installation_proxy” 서비스를 호출하여 시작된다.
(나) iDevice에 설치된 앱 목록 요청
아래 그림은 패킷을 사용하여 “/var/mobile/Applications” 아래 설치된 전체 애플리케이션 목록을 요청하는 과정이다.

installation_proxy 서비스 생성과 애플리케이션 목록 요청


4. 데이터 획득 과정

명령 프롬프트에서 “apps.py -l”을 입력하여 Pymobiledevice의 Installation Proxy 프로토콜을 실행시킨다. 아래 그림과 같이 iOS 기기에 설치되어 있는 애플리케이션 목록을 획득할 수 있다.

Installation Proxy를 이용하여 획득한 데이터

House Arrest[편집]

1. 특징

House Arrest는 앱스토어(AppStore)에서 구매한 애플리케이션이 저장된 디렉토리 (/var/mobile/Applications) 내부 파일의 획득을 위해 사용하는 서비스이다.
House Arrest 서비스는 요청된 애플리케이션의 디렉토리 접근만 허용하므로 이 서비스를 사용하기 전에 Installation Proxy 서비스를 이용하여 iOS 기기에 어떤 애플리케이션이 설치되어 있는지 먼저 확인해야 한다.

2. 조건

House Arrest 프로토콜을 사용하기 위해서는 iOS 기기의 비밀번호 해제가 필요하다. 아이폰 5S의 경우 지문인식이 설정되어있다면 해제해야한다.
또한 iOS 기기가 컴퓨터에 연결될 때 “이 컴퓨터를 신뢰하시겠습니까?” 라는 메시지가 뜨면 “신뢰”를 클릭하여야 한다.

3. 데이터 획득 방법

(가) House Arrest 서비스 생성
House Arrest 서비스는 “com.apple.mobile.house_arrest” 서비스를 호출하여 시작된다.

House Arrest 서비스 생성

(나) 애플리케이션의 루트 디렉토리 접근 권한 획득
아래 그림과 같이 정의된 패킷을 mobile_house_arrest에 전송하여 사용자가 접근하고자 하는 애플리케이션 디렉토리의 접근 권한을 획득한다.

애플리케이션의 루트 디렉토리 접근 권한 획득

(다) 데이터 획득
AFC 서비스와 동일하게 표에 기술된 API를 이용하여 “/var/mobile/Applications” 아래 설치된 애플리케이션 디렉토리를 순회하면서 획득한다.


4. 데이터 획득 과정 Installation Proxy 프로토콜을 실행시켜서 iOS 기기에 설치되어 있는 애플리케이션 목록을 획득한다. 획득한 목록 중에서 앱스토어에서 다운로드한 애플리케이션이 존재하는지 확인한다.
아래 그림과 같이 명령 프롬프트에서 “apps.py –a [애플리케이션 이름]” 을 입력하여 Pymobiledevice의 House Arrest 프로토콜을 실행시킨다.

House Arrest 실행

아래 그림과 같이 ls 명령어로 데이터 목록을 확인한다.

House Arrest 데이터 확인

“pull <파일이름>” 명령어로 데이터를 획득한다. 데이터는 “apps.py”가 존재하는 폴더 내에 저장된다.

House Arrest 데이터 획득

iTunes 사용[편집]

1. 특징

iTunes는 애플사가 만든 멀티미디어 플레이어 및 아이팟용 동기화 프로그램이다. 아이튠즈는 컴퓨터 내의 음악과 동영상을 관리하고, 아이튠즈 스토어와 앱스토어에 접속하여
음악이나 뮤직 비디오, 영화, 앱 등을 구매할 수 있으며, 아이팟과 애플 TV 등 아이튠즈와 연동되는 장치에 데이터를 전송하고 관리하며 iOS를 업그레이드 할 수 있는 기능을 갖고 있다.
iTunes는 iOS 기기에 있는 대부분의 데이터를 백업할 수 있다. 백업되는 정보로는 구입한 음악, TV 프로그램, App 및 카메라 롤의 사진 및 비디오, 장비 설정(예: 전화 즐겨찾기, 배경화면 및 Mail, 연락처, 캘린더 계정),
App 데이터, 홈 화면 및 App 구성, 메시지(iMessage, SMS 및 MMS), 벨소리 등이 있다.

2. 과정

기기를 연결하고 아래 그림의 “지금 백업”을 클릭한다. 다른 백업 경로를 설정하지 않는 한 백업된 데이터는 “C:\Users\[UserName]\AppData\Roaming\Apple Computer\MobileSync\Backup“ 경로에 저장된다.

iTunes 백업 화면

3. 획득한 데이터

iTunes로 백업된 데이터는 SHA1으로 인코딩된 이름으로 MobileBackup2 서비스와 마찬가지로 [표 6-9]에 있는 사용자 컴퓨터의 디렉토리에 저장된다.
SHA1으로 인코딩된 파일의 iOS 기기 내의 경로는 Backup 디렉토리 내의 Manifest.mbdb 파일을 참조하여 디코딩할 수 있다.

iTunes로 백업된 데이터