디지털 포렌식 - File system

1. 파일 시스템

1.1 파일시스템이란 ?

  • 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제

1.2 파티션과 볼륨

notion image
  • 파티션 : 저장 장치 내의 공간을 분리해 독립적인 공간을 만든 것
  • 볼륨 : 하나의 저정공간으로, 파일 시스템을 갖춘 저장 공간

nb) 일반적으로 하나의 볼륨은 하나의 파티션 내에 성성되기 때문에, 파티션과 볼륨은 혼용되어 사용되기도 함

1.3 파티션과 볼륨 실습

디스크 0의 가운데 파티션은 NTFS 파일 시스템, 디스크 1의 파티션은 FAT32 파일시스템이 있음
디스크 0의 가운데 파티션은 NTFS 파일 시스템, 디스크 1의 파티션은 FAT32 파일시스템이 있음
  • 볼륨에 파일 시스템을 다시 설치하는 것을 포맷이라고 함
자유롭게 파티션을 나누고 볼륨을 생성하거나 삭제할 수 있음
자유롭게 파티션을 나누고 볼륨을 생성하거나 삭제할 수 있음

1.4 파일시스템이란 ? - 2

  • 파일시스템이란 디지털 데이터를 효과적으로 관리하기 위해 파일을 체계적으로 기록하는 방식
  • 주요 기능 :

⑴ 저장장치 내 빈 공간 파악, 적절한 공간에 파일 저장

⑵ 사용자가 파일을 생성,수정,삭제 할 수 있도록 함

⑶ 파일 생성 시각, 수정 시각, 변경 시각 등을 관리

⑷ 파일 생성, 수정, 삭제에 대한 로그 기록하고 백업, 복구 등을 지원

⑸ 사용자에 따라 접근 권한 부여

1.5 파일 시스템의 종류

운영체제파일시스템특징
WindowsNTFSWindows NT 3.1 이후부터 현재까지 사용하고 있는 파일시스템
ReFSNTFS를 대체하기 위한 차세대 파일시스템
LinuxEXT4Linux에서 2006년부터 사용하고 있는 파일시스템
UnixUFSUnix 계열 운영체제에서 사용하는 파일시스템
macOSHFS+Apple 구형 파일시스템
APFSApple 신형 파일시스템
공통FAT / FAT32초기 Windows에 사용되었으나 현재는 USB 등에 주로 사용됨
exFATFAT32의 크기 단점을 개선하는 파일시스템

NTFS(New Technology File System)

1993년 Windows NT 3.1에 버전 v1.0로 처음 출시된 파일 시스템이며, 현재 사용되고 있는 v3.1으로 2001년에 발표되었습니다. 오늘날 주로 사용되는 Windows 7, Windows 10, Windows 11 등 버전에서 기본으로 사용하고 있습니다.

파일 및 폴더 암호화 기능, 저널링 기능, 손상된 파일 복구 기능 등 다양한 기능을 지원합니다.


ReFS(Resilient File System)

Microsoft에서 NTFS를 대체하기 위해 개발한 파일시스템입니다. 현재 기본으로 생성되는 파일시스템은 아니지만, Windows 8.1 이후부터 ReFS 파티션을 생성할 수 있습니다.

파일 무결성 검사, 데이터 복구 기능을 제공하며, NTFS에 비해 높은 성능을 보입니다.


EXT4(Extended File System 4)

EXT4는 EXT 파일시스템 중 가장 최신 버전의 파일시스템입니다. EXT4는 Linux 커널 2.6.19 부터 등장했으며, 2008년부터 안정화된 Linux 버전에 포함되었습니다.

기존 EXT2, EXT3에서 사용하던 블록 매핑 방식을 Extent 방식으로 바꾸면서, 더 많은 파일을 더 빠르게 접근할 수 있게 되었습니다. 또한 최대 볼륨 크기와 최대 파일 크기를 확장했으며, 하위 버전에 대한 하위 호환성을 지원합니다.


UFS(Unix File System)

UFS는 Unix 및 Unix 계열 운영체제에서 쓰이는 파일시스템입니다. Unix 기반 운영체제에서 사용하는 파일시스템들의 근간을 이루는 파일시스템입니다.


HFS+(Hierarchical File System Extended)

기존 Macintosh에서 사용하던 파일시스템인 HFS의 한계를 극복하고 더 많은 파일 개수, 파일 용량, 파티션 용량을 제공하도록 만들어진 파일시스템입니다. 1998년 macOS 8.1과 함께 발표되어 맥북, 아이팟 등에 사용되었습니다.


APFS(Apple File System)

APFS는 HFS+를 대체하기 위해 2016년 발표된 파일시스템입니다. macOS Sierra(10.12.4) 및 iOS 10.3 부터 현재까지 사용하고 있는 파일시스템입니다.

HFS+의 데이터 체크섬, 나노초 타임스탬프, 스냅샷 등 한계를 극복하고 암호화, 데이터 무결성 등 보다 나은 기능을 제공합니다.


FAT32(File Allocation Table)

FAT은 Microsoft에서 개발해 MS-DOS부터 이용되던 파일시스템으로, FAT을 기반으로 한 FAT32는 Windows 95부터 이용 가능합니다. FAT32는 최대 파티션 크기, 최대 파일 크기가 이전 파일시스템에 비해 향상되었습니다.

FAT32는 최대 파일 크기가 약 4GB로 작은 편이고, 최대 파티션의 크기가 8TB로 대용량의 파티션에서는 사용하기 힘듭니다. 또한 자료 구조가 단순하고, 데이터 복구와 같은 기능들을 지원해주지 않는다는 단점이 있습니다.

그러나 FAT32 파일시스템은 다양한 운영체제에서 널리 지원되어 호환성이 뛰어나며, 단순한 파일시스템 구조로 인해 다른 파일시스템에 비해 비교적 저장 공간을 많이 확보할 수 있다는 장점이 있습니다. 이러한 이유로 FAT32 파일시스템은 USB, SDCard 등 이동식 저장장치에서 여전히 많이 사용되고 있습니다.


exFAT(Extended File Allocation Table)

exFAT은 이전 FAT32의 한계를 극복하기 위해 Microsoft에서 개발한 파일시스템으로, FAT32에 비해 최대 파일 크기와 최대 파티션 크기가 확장되었습니다. 뿐만 아니라 디렉토리에 저장할 수 있는 파일의 최대 개수가 증가했으며, 더 정밀한 시간 데이터의 저장이 가능합니다.


1.6 파일시스템과 디지털 포렌식

  • 파일 시스템을 알아야 디스크 이미지의 분석 가능
  • 파일 시스템에 대한 정보 없이는 데이터의 저장 위치를 알아내기 어렵고, 데이터의 위치를 알아냈다 하더라도 메타데이터를 알아내기 위해서는 파일시스템 구조에 대한 이해가 반드시 필요함. 또한 파일시스템을 이해하면 파일의 변경 이력을 가져오거나 삭제된 파일을 복구하는 일이 가능해짐.
    excel의 메타 데이터 예시
    excel의 메타 데이터 예시
  • 대부분의 파일시스템에서는 저널링 기능을 지원함
💡

저널링 기능이란 ?

저널링 기능이란 시스템 충돌이나 정전을 대비해 데이터 쓰기 전후 상태를 기록하는 파일 시스템의 기능임. 저널링 과정에서 운영체제는 많은 로그를 생성하는데, 이는 디지털 포렌식의 주요 분석 대상이 됨.

1.7 MBR과 VBR

  • MBR(Master Boot Record)는 디스크(저장장치)의 가장 첫 섹터에 저장되는 데이터를 의미함. 섹터는 디스크의 최소 기억 단위이며 하드디스크에서는 512바이트 크기를 가짐.
    notion image
  • VBR(Volume Boot Record)는 볼륨의 가장 첫 섹터에 저장되는 데이터를 의미함. 하나 이상의 섹터로 구성되며 그 크기는 파일시스템과 클러스터 크기에 따라 달라질 수 있음.

1.8 MBR과 VBR의 역할

  • 컴퓨터의 부팅 과정에서 사용되는 데이터

MBR과 VBR은 컴퓨터의 부팅 과정에서 사용되는 데이터임. 컴퓨터 메인보드의 BIOS가 POST(Power On Self-Test) 과정과 기본적인 하드웨어 점검을 마치고 나면, MBR 내에 있는 부트 코드(Boot Code)를 호출함.


MBR은 저장 장치의 파티션 정보, 각 파티션에 설치된 볼륨의 정보를 가지고 있음. MBR 부트 코드는 이러한 정보를 바탕으로 부팅 가능한 볼륨을 식별하고, 해당 볼륨의 부트 코드로 실행 흐름을 넘기는 역할을 함. VBR 부트 코드는 MBR에서 실행 흐름을 이어 받아 해당 볼륨에서 컴퓨터가 부팅할 수 있도록 부트로더 및 커널을 로드하는 역할을 함.

notion image

위 사진에서 슬랙(Slack)은 파일시스템이나 데이터의 구조에서 빈 공간을 나타내는 표현. MBR 슬랙이란, MBR 이후 다음 자료 구조가 오기 전까지의 빈 공간을 의미함. MBR 슬랙 이외에도 파일 슬랙, RAM 슬랙 등 다양한 슬랙이 있음.

1.9 MBR의 구조

notion image
이름오프셋설명
부트 코드0x0 - 0x1BD부팅 과정에서 이용되는 코드
파티션 테이블 엔트리 #10x1BE - 0x1CD1번 파티션에 대한 파티션 정보
파티션 테이블 엔트리 #20x1CE - 0x1DD2번 파티션에 대한 파티션 정보
파티션 테이블 엔트리 #30x1DE - 0x1ED3번 파티션에 대한 파티션 정보
파티션 테이블 엔트리 #40x1EE - 0x1FD4번 파티션에 대한 파티션 정보
시그니처0x1FE - 0x1FF고정값 0x55 0xAA
notion image
이름오프셋설명
부트 플래그0x0 - 0x0 (1 Byte)부팅 불가(0x00), 부팅 가능(0x80)
CHS 시작 주소0x1 - 0x3 (3 Bytes)CHS 방식 기반 시작 주소(섹터)
파일시스템 타입0x4 - 0x4 (1 Byte)NTFS(0x07), FAT32(0x0C) 등
CHS 끝 주소0x5 - 0x7 (3 Bytes)CHS 방식 기반 끝 주소(섹터)
LBA 시작 주소0x8 - 0xB (4 Bytes)LBA 방식 기반 시작 주소(섹터)
파티션 총 섹터 개수0xC - 0xF (4 Bytes)섹터 개수 * 512 = 섹터의 크기

파티션 엔트리 #1

  • 부트 플래그: 부팅 불가(0x00)
  • CHS 시작 주소: 0x2120
  • 파일시스템 타입: FAT32(0x0C)
  • CHS 끝 주소: 0x7CC480
  • LBA 시작 주소: 0x800
  • 파티션 총 섹터 개수: 0xDAC000

nb) 리틀 엔디언 방식이다.

LBA 시작 주소, 파티션 총 섹터 개수의 단위는 섹터. 섹터는 512 바이트이고, 이는 16진수로 0x200

  • LBA 시작 주소: 0x800 (섹터) -> 0x800 * 0x200 = 0x100000
  • 파티션 크기: 0xDAC000 (섹터) -> 0xDAC000 * 0x200 = 0x1B5800000

실제로 0x100000 오프셋에는 VBR이 위치하는 것을 확인할 수 있음

1.10 VBR의 구조

  • VBR의 구조는 파일 시스템마다 전부 다름.
  • FAT32, NTFS 파일 시스템의 VBR 위주로 살펴보기


2. FAT32,NTFS 파일 시스템

2.1 FAT32 구조

  • FAT(File Allocation Table)은 파일이 저장되는 위치를 기록한 테이블을 의미함.
    Reserved Area : VBR을 포함하고 볼륨 전체의 설정 값들을 저장하는 영역. FAT Area : 2개의 FAT 테이블 저장되는 영역. DATA Area : 실제 파일이나 폴더가 위치하는 영역
    Reserved Area : VBR을 포함하고 볼륨 전체의 설정 값들을 저장하는 영역. FAT Area : 2개의 FAT 테이블 저장되는 영역. DATA Area : 실제 파일이나 폴더가 위치하는 영역

2.2 Reserved Area

  • 총 32개의 섹터, Boot Sector, FSINFO, BootStrap 의 구성요소를 가짐
  • 디지털 포렌식적으로 주요한 데이터는 Boot Sector에 위치함
    Boot Sector의 구조
    Boot Sector의 구조
  • FAT32 Boot Sector 구조
    이름오프셋설명
    Jump Command0x0 - 0x2부트 코드로 점프
    BPB(Bios Parameter Block)0x3 - 0x5A볼륨의 전반적인 설정을 포함
    부트 코드0x5B - 0x1FD볼륨 부트 코드
    시그니처0x1FE - 0x1FF고정값 0x55 0xAA
  • BPB 영역 구조
    BPB 1
    BPB 1
    BPB 2
    BPB 2
  • OEM ID: MSDOS5.0
    • FAT32의 경우 MSDOS5.0 으로 고정
  • Reserved Sector: 0x12DE
    • FAT 영역 이전에 존재하는 섹터 수
    • FAT 영역은 0x12DE * 0x200 = 0x25BC00에 위치함
  • Total Sector 32: 0xDAC000
    • 볼륨의 총 섹터 수
  • FAT Size 32: 0x3691
    • FAT Area 1개의 크기, 크기는 0x3691 * 0x200 = 0x6D2200
  • Volume Serial Number: 0x0E1EE980
    • 볼륨을 식별하는 4바이트로 구성된 숫자

FAT32 Boot Sector 구조 - Volume Serial Number

notion image
  • Volume Label: NO NAME
    • 사용자가 볼륨에 붙인 이름으로 사용자가 변경할 수 있는 값
  • File System Type: FAT32

2.3 FAT Area

  • FAT Area는 FAT 테이블 2개가 연속으로 존재하는 영역.
  • FAT Table은 FAT 파일시스템에 존재하는 파일 및 폴더에 대한 메타데이터를 저장하는 공간(하나는 손상을 대비한 백업용)
  • FAT32의 VBR 영역 중에서 Reserved Sector 값을 해석하면 FAT Area의 시작 주소를 찾을 수 있음

아..슬슬 잘 모르겠는데..

💡

GPT야 도와줘

MBR (Master Boot Record)

  • 디스크의 가장 첫 번째 섹터(Sector 0)
  • 크기: 512바이트
  • BIOS 시스템에서 가장 먼저 실행되는 코드 포함
  • 전체 디스크의 부트 정보 + 파티션 테이블 포함

구조

오프셋크기설명
0x000446B부트스트랩 코드 (1단계 부트로더)
0x1BE64B파티션 테이블 (4개 엔트리 × 16B)
0x1FE2B부트 시그니처 (0x55AA)

특징 요약

  • 디스크에 1개만 존재
  • 디스크 전체의 파티션 구조와 부트 정보를 포함
  • 부팅 시: MBR → 활성 파티션 → VBR

VBR (Volume Boot Record)

  • 파티션의 시작 섹터에 존재
  • 크기: 512바이트 (보통)
  • 해당 파티션(OS, 파일 시스템)의 부팅 정보 포함
  • 파일 시스템(FAT32, NTFS 등)에 따라 구조가 달라짐

구조 예시 (FAT32 기준)

오프셋크기설명
0x0003B점프 코드
0x0038BOEM Name
0x00B~나머지BIOS 파라미터 블록 (BPB), 부트 코드 등

특징 요약

  • 파티션마다 1개씩 존재
  • 해당 파티션의 부트 코드, 파일 시스템 정보 포함
  • OS 설치된 파티션이 부팅할 수 있게 도와줌

MBR vs VBR 비교

항목MBRVBR
위치디스크 시작 (Sector 0)파티션 시작
크기512B512B
개수1개파티션마다 1개
주요 정보부트 코드 + 파티션 테이블파티션 부트 코드 + 파일 시스템 정보
역할디스크 전체 부팅 제어해당 파티션 부팅 담당
사용 시점부팅 시 가장 먼저MBR이 넘겨준 다음 실행됨

포렌식 관점에서 주의사항

  • MBR은 파티션 구조, 부트코드 분석에 중요
  • VBR은 파일 시스템 종류, 파티션 부트 코드 분석에 사용
  • 부트킷 공격 시 MBR/VBR에 악성코드 삽입 가능 – 분석 필요