이 글은 아래의 책 5장을 읽고 공부 목적으로 작성됨.
이상진, 「디지털 포렌식 개론」, 이룬, 2015
목차
1. 파일 시스템 이해
2. 파티션과 MBR
3. FAT 파일 시스템
파일 시스템 : 디지털 데이터를 하나의 객체(파일)로 취급하면서 쉽게 사용할 수 있도록 관리하는 방식
1. 파일 시스템 이해
1) 파일 시스템 소개
원하는 파일을 빠르게 읽고 쓰기 위해서는 파일 시스템의 도움이 필요하다. 파일 시스템은 운영체제나 저장 매체별로 다양하게 사용된다.
윈도우 운영체제에서 사용하는 파일시스템 : FAT, NTFS
2) 파일 시스템 구조
각 운영체제는 독자적인 파일 시스템을 사용하지만, 대부분 메타 영역과 데이터 영역으로 나뉘는 추상화된 구조를 가진다.
메타 영역 | 데이터 영역 |
메타 영역 : 파일의 이름, 위치, 크기, 시간 정보 등을 기록
데이터 영역 : 사용자가 생성한 파일의 내용을 기록
3) 파일 시스템의 주요 요소
① 주소지정방식(Addressing) : 크게 CHS 방식과 LBA 방식으로 나뉜다.
CHS(Cylinder-head-sector) : 디스크의 물리적인 구조에 기반한 방식이다. 디스크 용량 문제로 ATA-6부터 표준에서 제외되었다.
LBA(Logical Block Addresses) : 물리적인 구조를 고려할 필요 없이 디스크의 마지막 섹터까지 순차적으로 주소를 지정하는 방식이다. 관련 소프트웨어들은 물리적인 구조에 대한 정보 없이도 섹터의 번호만으로 쉽게 접근이 가능하다.
② 클러스터(Cluster) : 여러 개의 섹터(512 바이트) 묶음
하드 디스크와 관련된 읽기 쓰기 작업은 섹터 단위로 이루어진다. 그러나 시간 문제로 여러 개의 섹터를 묶어 한꺼번에 처리한다. 이때, 여러 개의 섹터 묶음을 클러스터라 한다.
윈도우 운영체제에서는 클러스터가 데이터의 입출력 단위이다. 즉 파일의 크기와 상관 없이 클러스터의 배수로 파일이 할당되며, 그만큼의 낭비되는 영역이 생긴다.
③ 슬랙 공간(Slack Space) : 물리적인 구조와 논리적인 구조의 차이로 발생하는 낭비 공간
슬랙 공간은 정보를 은닉할 수 있기 때문에 관찰할 필요성이 있으며, 파일 복구와 삭제된 파일의 파편을 조사할 때 유용하게 사용될 수 있다.
- 램 슬랙(RAM Slack) : 램에 저장되어 있는 데이터가 디스크에 저장될 때 512 바이트씩 기록되는 특성 때문에 발생되는 공간, 섹터 슬랙(Sector Slack)이라고도 한다.
램 슬랙은 0x00의 값으로 기록되므로, 램 슬랙을 이용하면 파일의 끝을 알 수 있다. 이는 삭제된 파일 복구 시 유용하다. - 파일 슬랙(File Slack) : 클러스터의 사용으로 인해 장비되는 공간 중 램 슬랙을 제외한 나머지 부분, 드라이브 슬랙(Drive Slack)이라고도 한다.
파일 슬랙은 이전의 데이터가 그대로 남아있으므로, 특정 파일이 해당 저장 매체에 존재하였는지 여부를 규명할 수 있다.
(클러스터=섹터 묶음, 슬랙 공간이 섹터 단위로 생기니 조금이라도 사용했지만 조금 남는 공간이 있는 섹터=램 슬랙, 아예 사용하지 않은 섹터=파일 슬랙) - 파일 시스템 슬랙(File System Slack) : 파일 시스템은 클러스터 크기의 배수만큼 사용할 수 있기 때문에 남는 공간이 발생하는데, 이때 파일 시스템 할당 크기와 볼륨 크기의 차이로 인해 발생되는 공간
- 볼륨 슬랙(Volume Slack) : 전체 볼륨 크기와 할당된 파티션 크기의 차이로 인해 발생하는 공간이며, 임의로 생성이 가능하다.
2. 파티션과 MBR
1) 파티션(Partition)
파티션 : 저장매체의 저장 공간을 사용용도 별로 논리적으로 분할하여 개별 공간으로 사용하는 것
예시) 운영체제를 설치하는 공간과 사용자가 생성한 데이터를 저장할 공간을 분할하여 사용하는 것
C:\ [Windows XP] |
단일 파티션
C:\ [Windows XP] |
D:\ [Windows 7] |
분할 파티션
Boot Record(BR) : 파티션의 크기, 위치, 설치된 운영체제 등의 정보를 담고 있는 영역이다. 윈도우 운영체제의 경우 파티션의 첫 번째 섹터에 위치한다.
2) MBR(Master Boot Record)
분할된 파티션의 경우, 각 파티션의 BR 영역을 관리할 필요가 있다. 이러한 BR을 관리하는 영역을 MBR이라고 하며, MBR에는 각 BR 영역을 찾아갈 수 있는 정보를 담고 있다.
MBR 구조
부트 코드(446 Byte) |
파티션 테이블(64 Byte) |
시그니처(2 Byte) |
- 부트 코드(Boot Code) 영역 : 파티션 테이블에서 부팅 가능한 파티션을 찾아, 해당 파티션의 부트 섹터(Boot Sector)를 호출하는 코드가 위치, BIOS에 의해서 해석되어 동작하는 영역
- 파티션 테이블(Partition Table) 영역 : 각 16바이트씩 총 4개의 파티션 정보를 저장할 수 있는 영역
0 : Bootable Flag => 해당 파티션이 부팅 가능한 파티션인지 표현하기 위해 사용한다. 부팅 가능 시 0x80, 부팅 불가능 시 0x00으로 설정된다.
1 - 3 : CHS 주소 방식의 시작 위치
4 : 파티션 유형 => NTFS는 0x07, FAT32는 0x0c, Solaris는 0x85로 설정된다.
5 - 7 : CHS 주소 방식의 끝 위치
8 - 11 : LBA 주소 방식의 시작 위치
12 - 15 : 총 섹터 개수 - 시그니처(Signature) 영역
MBR 영역의 파티션 테이블을 조작하여 해당 영역을 파티션으로 인식하지 못하게 함 -> 따라서 포렌식 조사 시, 직접 MBR 영역을 해석해 볼 필요가 있음.
3) 확장 파티션(Extended Partition)
MBR 영역에서 파티션 정보를 표현하는 공간은 64비트이고, 4개까지 파티션 분할이 가능하다. 확장 파티션은 이런 한계를 극복하기 위해 나온 개념이다. MBR의 구조를 그대로 사용하며, MBR의 마지막 4번째 파티션 테이블이 또 다른 MBR 영역을 가리키도록 하는 구조이다.
확장 파티션을 가리키는 파티션 정보는 1바이트의 값이 0x05나 0x0F로 설정된다.
윈도우 운영체제 : A부터 Z까지 26개의 파티션 사용 가능하나, 추가적으로 폴더에 가상으로 지정한 파티션에 접근하는 기능을 제공한다. 따라서 사실상 제한 없이 사용 가능하다.
3. FAT 파일 시스템
1) FAT 파일 시스템 소개
FAT : 기존에는 파일 시스템에서 파일의 위치 정보를 기록한 테이블을 지칭, 이후 MS-DOS 파일 시스템 자체를 가리키는 용어가 됨. 여기서는 둘의 구분을 위해 파일 시스템은 "FAT12/16/32" 또는 "FAT 파일 시스템"이라고 표현, 테이블은 "FAT 영역"이라고 표현한다. 파일 시스템의 12, 16, 32의 숫자는 파일 시스템에서 관리하는 클러스터의 개수를 의미한다.
exFAT는 기존의 클러스터 표현 비트수를 64비트로 늘려서 용량 제한이 거의 없고 비트맵을 사용해 효율적으로 클러스터를 관리한다. 이외에도 FAT32에서 제한되었던 많은 기능들이 확장되었다.
FAT 파일 시스템 구조
예약 영역 | FAT 영역 | 데이터 영역 |
2) 예약 영역
여러 개의 섹터를 포함한다. FAT12/16는 1개의 섹터, FAT 32는 32개의 섹터 사용.
첫 번째 섹터는 부트 코드를 포함하고 있는 부트 섹터로 사용한다. 부트 섹터에는 먼저 BPB(BIOS Parameter Block)을 지나 부트 코드로 점프하기 위한 명령어가 위치하며, 부트 코드는 파일 시스템의 여러 설정 정보를 나타내는 BPB를 참조하여 시스템을 부팅한다.
FAT32
섹터 0번 : 부트 섹터 / 섹터 1번 : FSINFO(File System Information) 구조체 저장 / 섹터 2번 : 부트 섹터의 부트 코드의 영역이 부족할 때 추가적으로 사용 가능한 영역 / 섹터 6번 : 섹터 0번의 백업 / 섹터 7번 : 섹터 1번의 백업 / 섹터 8번 : 섹터 2번의 백업
나머지 섹터는 만약을 대비해 예약해 둔 것으로 사용하지 않는다. 이 부분에 데이터가 존재하면 은닉된 데이터일 가능성이 있다.
3) FAT 영역
FAT 영역 : 데이터 영역의 클러스터 할당 상태를 표시한다. 일반적으로 두 개의 FAT 영역(FAT1, FAT2)이 존재한다. FAT2는 FAT1의 복사본(백업용)이다. FAT16은 16비트, FAT32는 32비트를 사용해 데이터 영역의 시작 클러스터부터 마지막 클러스터까지 할당 상태를 표시한다.
FAT Entry : FAT Entry의 값은 파일 시스템에서 데이터 영역의 각 클러스터가 사용되는지 여부를 나타낸다. 또한 특정 파일이 점유하고 있는 클러스터의 위치를 나타낸다.
- 미할당 상태에는 0x00의 값을 가짐
- 할당 상태에는 클러스터를 점유하고 있는 파일의 다음 데이터가 있는 클러스터를 가리킴
- 마지막 데이터가 있는 클러스터면 마지막을 나타내는 특정 값을 사용(FAT12 - 0xFF8보다 큰 값, FAT16 - 0xFF8보다 큰 값, FAT32 - 0xFFF FFF8보다 큰 값)
- 배드 섹터 포함된 클러스터 -> FAT12 - 0xFF7, FAT16 - 0xFFF7, FAT32 - 0x0FFF FFF7의 값을 가짐
FAT Entry 0, 1번은 저장 매체 종류와 파티션 상태를 표현하기 위해 예약되어 있다. FAT Entry 2번부터 데이터 영역의 클러스터와 대응된다.
4) 데이터 영역
FAT 파일 시스템을 포함한 대부분의 파일 시스템은 디렉터리 표현 시, 트리 구조를 사용한다. 여기서 가장 중요한 요소가 최상위 루트 디렉터리이다.
FAT12/16은 루트 디렉터리가 FAT 영역 바로 뒤~데이터 영역의 제일 앞부분, 즉 FAT Entry 2번이 루트 디렉터리의 시작이다.
FAT32에서 루트 디렉터리는 어디에나 위치할 수 있다. 특별히 설정하지 않았다면 FAT Entry 2번에 위치한다. 설정했다면 부트 섹터의 오프셋 44~47(Root Directory Cluster Offset) 값을 통해 루트 디렉터리의 위치를 찾을 수 있다.
데이터 영역에 저장되는 데이터는 크게 디렉터리와 파일로 나눌 수 있다.
- 디렉터리 : 디렉터리 내부에 포함되는 하위 디렉터리 및 파일의 이름, 확장자, 시간 정보, 크기 등을 표현하기 위해 Directory Entry라는 구조를 사용한다.
- 파일 : 해당 파일의 형식에 따라 실제 데이터가 저장된다.
5) 파일의 할당/삭제로 인한 변화 요소
*구체적인 설명은 생략하였으며, 자세한 내용은 해당 책의 247페이지를 확인할 것.
① 파일 할당
② 파일 삭제
'슈포스 > 디지털 포렌식 개론' 카테고리의 다른 글
[강의]인프런 : 기초부터 따라하는 디지털 포렌식 섹션3(3) (1) | 2024.11.19 |
---|---|
[강의]인프런 : 기초부터 따라하는 디지털 포렌식 섹션3(2) (0) | 2024.11.11 |
[7장]디지털 증거 분석 기술 (2) | 2024.11.05 |
[6장]디지털 증거 수집 기술 (0) | 2024.11.05 |
[강의]인프런 : 기초부터 따라하는 디지털 포렌식 섹션3(1) (1) | 2024.11.05 |