Search

파일시스템

대분류
보안
소분류
디지털 포렌식
유형
파일시스템
하드디스크
MBR과 파티션
최종 편집 일시
2024/10/30 15:58
생성 일시
2024/10/30 15:51
15 more properties

파일 시스템이 필요한 이유

저장 매체의 용량이 증가함에 따라 저장되는 파일의 수도 급격히 증가
원하는 파일을 읽고 쓰는 기본적인 기능부터 데이터를 검색, 저장, 관리 하기 위한 규약이 필요

파일시스템

디지털 데이터를 효과적으로 관리하기 위해 파일을 체계적으로 기록하는 방식
사용자에게 파일과 디렉터리를 계층 구조로 데이터를 저장하도록 하는 메커니즘
파일이 어디에 저장되어 있는지 조직화하고, 사용자의 데이터를 구조적 으로 정의

파일 시스템 종류

저장매체
운영체제
파일 시스템
디스크장치
Windows
FAT(FAT12,FAT16,FAT32,exFAT), NTFS
디스크장치
Linux
Ext2, Ext3, Ext4
디스크장치
Unix-like
UFS
디스크장치
OS2
HPFS
디스크장치
Mac OS
HFS, HFS+
디스크장치
Solaris
ZFS
디스크장치
HP-UX
ODS-5, VxFS
광학장치
ISO 9660, UDF

파일시스템 구조

파일시스템의 기본적인 동작은 운영체제가 각 파일을 사용하기 위해 저 장되어 있는 위치로 접근하여 해당 데이터를 읽도록 함
또한 데이터의 위치를 파악하기 위하여 사용자가 저장된 파일의 목록을 확인할 수 있도록 지원 함

파일시스템 추상화 구조

사용자가 생성한 파일의 내용은 데이터 영역에 기록
메타 영역에는 파일 관리를 위한 파일의 이름, 위치, 크기, 시간 정보 등 이 기록
파일 시스템은 이러한 메타 정보를 유지 관리함으로써 파일 시스템을 효 과적으로 관리
파일 크기를 확인하고자 할 때는 메타 영역에만 접근
파일을 읽고자 할 때는 메타 영역에서 위치를 확인하여 파일에 접근 Heade

하드디스크

Interface or Controller

IDE (Integrated Drive Electronics) Controller
SCSI (Small Computer System Interface)
SATA (Serial Advanced Technology Attachment) Controller
RAID (Redundant Array of Inexpensive Disks)

구성

Sector

섹터의 위치를 구분하기 위한 고유 번호 저장에 59 bytes 사용
총 571 bytes = 59 bytes +512 bytes
실제 데이터 저장으로 사용되는 영역은 512 bytes (Sector size)
데이터 기록의 가장 기본 단위

Addressing (주소 지정 방식)

LBA (Logical Block Addressing) 방식
디스크의 0번 실린더, 0번 헤드, 1번 섹터를 첫 번째 블록으로 지정
디스크의 마지막 섹터까지 순차적으로 주소를 지정
물리적인 구조에 대한 정보 불필요(일종의 선형 주소 공간)
초기에는 28bit로 처리하여 약 127GB가 최대 용량이었음
228 * 512 bytes = 137,438,952,960 bytes
현재는 48bit 어드레스 방식을 사용하고 있음

클러스터

Sector
물리적인 최소 단위 , 512bytes
디스크와 관련된 작업은 모두 Sector 단위로 수행됨
파일이 큰 경우 많은 시간이 요구 됨 => 이를 보완하기 위해 Cluster 단위 로 처리
Cluster
디스크 입출력 횟수를 줄이기 위함
클러스터의 배수로 파일이 할당 됨
1Cluster가 4KB인 경우 100Byte 파일도 실제 할당된 크기는 4Kb가 됨
FAT32 클러스터 크기
볼륨 크기
클러스터 크기
32MB~8GB
4KB
8GB~16GB
8KB
16GB~32GB
16KB
32GB
32KB
NTFS 클러스트 크기
볼륨 크기
클러스터 크기
512MB 이하
512Byte
512MB~1GB
1KB
1GB~2GB
2KB
2GB 이상
4KB

Slack Space

물리적인 구조와 논리적인 구조의 차이로 발생하는 낭비 공간
파일이 물리적으로 할당된 공간이지만 논리적으로 사용할 수 없는 공간을 의미하며 은닉할 수 있기 때문에 디지털 포렌식 관점에서 유의해서 관찰할 필요가 있음
RAM Slack (Sector Slack) 파일 카빙에 활용(파일의 끝을 알 수 있기 때문에 파일 복구에 사용)
데이터가 디스크에 저장될 때 512Byte씩 기록되는 특성 때문에 발생하는 공간, Sector Slack 이라고도 함
윈도우 메모리 관리 정책 때문에 slack 영역은 0x00의 값이 기록됨
File Slack (Drive Slack) 이전에 사용한 데이터가 존재, 흔적 조사에 활용
Ram Slack 을 제외한 나머지 부분으로 Drive Slack이라고도 함
이 영역에는 이전의 데이터가 그대로 남아 있음
File System Slack
cluster로 할당하다 보면 볼륨 크기간의 차이로 인해 발생되는 공간이 생김
Volume Slac
전체 볼륨 크기와 할당 된 파티션 크기의 차이로 인해 발생하는 공간
다른 Slack은 자동으로 발생되는 반면 Volume Slack은 임의로 생성 가능함

MBR과 파티션

파티션

논리적으로 분할하여 개별 공간으로 사용하는 것
다수의 운영체제를 독립 공간에 설치하거나 운영체제와 데이터 영역 을 분리하여 활용하기도 함

BR(Boot Record)

파티션의 크기, 위치, 설치된 운영체제 등의 정보를 포함
파티션의 첫 번째 섹터에 위치

MBR(Master Boot Record)

여러 개로 분할된 파티션의 BR 영역을 관리
각 BR 영역을 찾아갈 수 있는 정보를 보관

파티션 테이블 영역

16 바이트씩 총 4개의 파티션 정보가 저장
0x0000
첫 번째 값인 부트 플래그(Bootable Flag)는 해당 파티션이 부팅 가 능한 파티션인지를 나타내며, 부팅 가능한 파티션일 경우 해당 부트 플래그의 값이 0x80
MBR의 부트 코드는 파티션 테이블을 검색하여 부트 플래그 값이 0x80 값을 갖는 파티션의 부트 섹터 위치로 점프하는 역할을 수행
0x0001 - 0x0003, 0x0005 - 0x0007 : CHS 관련 부분은 요즘은 사 용하지 않아 의미 없는 값이 부여됨, 호환성 때문에 존재
0x0004 : 파티션 유형
NTFS : 0x07FAT32, LBA : 0x0C or 0x0B
FAT16 : 0x07
리눅스 : 0x83
확장 파티션 : 0x05(CHS), 0x0F(LBA)
0x0008 - 0x000B, 0x000C - 0x000F : LBA 시작 위치와 섹터 개수 를 통해 해당 파티션의 시작 위치와 크기를 계산할 수 있음
파티션 영역을 조작하여 파티션으로 인식하지 못하게 하는 기법이 사용 되기도 하므로 운영체제에서 보이는 파티션 영역만이 아니라 디스크 전 영역을 확인해야 함
파티션 FAT 32
Start Sector(00 08 00 00) 2,048
Partition Size(00 20 4E 00) 5,120,000
끝 : 5,122,048 -1
파티션 NTFS
00 28 4E 00 = 5122,048
00 C8 31 00 = 3,262,464
끝 : 8,384,512 -1

확장 파티션

4개의 파티션 한계를 극복하기 위함
마지막 4번째 파티션 테이블이 가리키는 위치가 또 다른 MBR영역을 가리켜 추가적으로 파티션을 담을 수 있도록 하는 구조
파티션 유형이 0x05, 0x0F으로 설정 됨
보통 최대로 26개까지 확장 가능

실습