이번 글에서는 HFS+ 에서 제일 핵심적인 Catalog File 영역에 대해서 알아 볼 것이다.
앞서 말했듯이 카탈로그 파일 영역은 b-tree 구조라고 하였다. 그렇기에 모든 노드와 인덱스들은 키를 가지고 있으며 또 노드들의 레코드들은 네 가지 종류로 나뉘어져 있다.
다음은 카탈로그 노드들의 레코드 종류이다.
각 레코드 별로 다른 구조를 가지고 있는데 그 구조는 아래와 같다.
- 폴더 레코드 : 폴더의 정보를 기록하며 88byte의 크기를 가지고 있다.
- 파일 레코드 구조 : 파일의 정보를 기록하며 248byte의 크기를 가지고 있다.
파일과 디렉토리 레코드를 보면 플래그 필드가 존재하는데 두 플래그는 동일한 플래그 목록을 지닐 수 있으며 그 목록은 다음과 같다.
[Catalog File]
해당 영역은 파일의 주요 메타데이터들을 저장하고 있는 영역으로 b-tree 구조이다. 각 노드는 최소 4KB의 크기를 가지고 있으며 Mac OS X에서 파일이나 디렉토리에는 Catalog ID가 할당 되는데 각 ID 숫자 별 의미는 다음과 같다.
[그림 1 - CatalogID 목록]
앞서 말했듯이 카탈로그 파일 영역은 b-tree 구조라고 하였다. 그렇기에 모든 노드와 인덱스들은 키를 가지고 있으며 또 노드들의 레코드들은 네 가지 종류로 나뉘어져 있다.
[그림 2 - CatalogKey 오프셋 구조]
다음은 카탈로그 노드들의 레코드 종류이다.
[그림 3 - 레코드 종류]
각 레코드 별로 다른 구조를 가지고 있는데 그 구조는 아래와 같다.
- 폴더 레코드 : 폴더의 정보를 기록하며 88byte의 크기를 가지고 있다.
[그림 4 - 폴더 레코드 구조]
- 파일 레코드 구조 : 파일의 정보를 기록하며 248byte의 크기를 가지고 있다.
[그림 5 - 파일 레코드 구조]
- 스레드 레코드 : 폴더와 디렉토리 구별 없이 스레드 레코드 구조는 동일하며, 크기는 264byte이다.
[그림 6 - 스레드 레코드 구조]
파일과 디렉토리 레코드를 보면 플래그 필드가 존재하는데 두 플래그는 동일한 플래그 목록을 지닐 수 있으며 그 목록은 다음과 같다.
[그림 7 - 플래그 목록]
이제 노드와 b-tree의 구조를 알아보자. b-tree는 크게 세 가지 구성 된다. 헤더 노드, 인덱스 노드, 리프 노드로 구성이 되는데 헤더 노드는 첫 번째 리프 노드와 루트노드, 마지막 리프 노드의 포인터를 가지고 있으며 인덱스 노드는 리프노드의 포인터를 가지고 있고 리프 노드가 실질적인 데이터를 가지고 있다. 간단하게 그림으로 표현하면 아래와 같다.
노드는 다음과 같은 구조이며 노드의 구분은 노드의 노드 기술자에서 정의하고 있다.
다음은 노드 기술자의 구조이다.
- 노드 종류 : 헤더 노드, 인덱스 노드, 리프 노드를 구별 지어주는 필드이다. 각 노드들은 아래와 같은 값들로 구별지어진다.
노드 기술자 다음으로는 헤더 레코드가 위치한다. 헤더 레코드에는 노드의 여러가 정보가 기록되어 있다. 헤더 레코드 구조는 다음과 같다.
- 속성 : 속성 목록은 아래와 같다.
[그림 8 - b-tree의 노드 관계]
노드는 다음과 같은 구조이며 노드의 구분은 노드의 노드 기술자에서 정의하고 있다.
[그림 9 - 노드 구조]
다음은 노드 기술자의 구조이다.
[그림 10 - 노드 기술자 구조]
- 노드 종류 : 헤더 노드, 인덱스 노드, 리프 노드를 구별 지어주는 필드이다. 각 노드들은 아래와 같은 값들로 구별지어진다.
[그림 11 - 노드 종류 목록]
노드 기술자 다음으로는 헤더 레코드가 위치한다. 헤더 레코드에는 노드의 여러가 정보가 기록되어 있다. 헤더 레코드 구조는 다음과 같다.
[그림 12 - 헤더 레코드 구조]
- 속성 : 속성 목록은 아래와 같다.
[그림 13 - 속성 목록]
카탈로그 파일은 데이터를 가지고 있는 파일로 HFS+ 파일시스템에서 포렌식적으로 의미있는 파일이다. b-tree 구조를 파악하여 헤더 레코드를 통해 첫 번째 리프 노드를 확인 한 후 각 노드의 헤더 기술자를 확인하여 리프노드인지 계속 확인해 나가면서 삭제 된 데이터를 검색 할 수 있다.
'[+] Forensic' 카테고리의 다른 글
이메일 헤더 분석 (0) | 2012.04.02 |
---|---|
File System - HFS+ (5) (0) | 2012.03.24 |
File System - HFS+ (3) (0) | 2012.03.23 |
File System - HFS+ (2) (0) | 2012.03.22 |