본문 바로가기

SWUFORCE/Dreamhack

[드림핵 스터디] 4주차 - 파일시스템

파티션과 볼륨

  • 파티션: 저장 장치 내의 공간을 분리해 독립적인 공간을 만든 것
  • 볼륨: 파일시스템을 갖춘 저장 공간, 드라이브라고도 부름 (C 드라이브라고 부르는 것이 바로 볼륨 지칭하는 것)

파티션과 볼륨

 

 

 

 

 

[파티션, 볼륨 실습]

- 여분의 저장 공간 필요, USB 사용이 가장 좋지만 가급적이면 운영체제가 설치되어 있지 않은 D, E 드라이브로 실습 진행

- 볼륨 포맷 실습은 잘못 진행하면 중요 정보가 모두 삭제되니, 정확히 따라 하고 있는지 중간중간 확인 필요

 

 

 

 

Windows + s 버튼 누르고 '파티션' 검색해 '하드디스크 파티션 만들기 및 포맷' 실행해 줌

파티션 및 볼륨 실습

 

디스크 0은 3개의 파티션으로 나뉘어 있고, 중간 파티션은 NTFS 파일시스템을 가지며, C 드라이브라는 문자가 부여됨

디스크 1은 1개의 파티션으로 구성되어 있고, FAT32 파일시스템이 설치되어 있으며, D 드라이브라는 이름이 붙여짐

 

 

 

 

 

파티션 및 볼륨 실습 - 삭제

 

볼륨 선택하고 우클릭한 후 위 사진처럼 '포맷' 버튼 눌러줌

 

* 포맷(Format): 볼륨에 파일시스템을 다시 설치하는 것

 

 

 

 

 

파티션 및 볼륨 실습 - 포맷

 

볼륨 레이블과 파일 시스템 선택해 줌

  • 볼륨 레이블: 볼륨 이름, 11자로 제한됨
  • 파일 시스템: FAT32, NTFS 중 선택 (뒤에서 자세하게 설명함)

 

 

 

 

파티션 및 볼륨 실습 - 삭제 전(왼) / 후(오)

 

볼륨 포맷할 때와 마찬가지로 볼륨 우클릭한 후 '볼륨 삭제' 버튼 눌러줌

→ 위의 오른쪽 사진과 같이 변함(볼륨 삭제되고 파티션만 남은 모습)

 

 

 

 

파티션 및 볼륨 실습 - 볼륨 재생성 1

 

'할당되지 않음' 영역 우클릭하고 '새 단순 볼륨' 클릭

 

 

 

 

파티션 및 볼륨 실습 - 볼륨 재생성 2

 

위 사진과 같이 시스템이 자동으로 넣어주는 값보다 훨씬 작은 값을 넣고 다음 버튼 눌러줌

→ 여기서 넣는 값이 파티션의 크기 결정

 

 

 

 

파티션 및 볼륨 실습 - 볼륨 재생성 3

 

별도 설정 없이 계속 다음 버튼 눌러줌 

 

 

 

 

파티션 및 볼륨 실습 - 볼륨 재생성 결과

 

위 사진과 같이 디스크 1에 2개의 파티션이 생성되었고,

파티션 1에는 FAT32 파일시스템이 설치된 볼륨(E 드라이브)이 위치하는 것을 확인할 수 있음

이 과정을 반복하면 파티션 2에는 NTFS 파일시스템이 설치된 볼륨 만들기도 가능

 

 

 

 


 

 

 

 

파일시스템 

  • 디지털 데이터를 효과적으로 관리하기 위해 파일을 체계적으로 기록하는 방식
  • 주요 기능
    • 저장장치 내에 비어있는 공간 파악, 적절한 공간에 파일 저장
    • 사용자가 파일을 생성·수정·삭제할 수 있도록 함
    • 파일 생성·수정·변경 시각 등 관리
    • 파일 생성·수정·삭제에 대한 로그를 기록하고 백업, 복구 등을 지원
    • 사용자에 따라 접근 권한을 부여하기도 함

 

 

 

 

파일시스템의 종류

 

 

NFTS(New Techonology File System)

  • 1993년 Windows NT 3.1에 버전 v1.0으로 처음 출시된 파일 시스템, 2001년에 현재 사용되고 있는 v3.1으로 발표
  • 오늘날 주로 사용되는 Windows 7, 10, 11 등 버전에서 기본으로 사용됨
  • 파일 및 폴더 암호화 기능, 저널링 기능, 손상된 파일 복구 기능 등 다양한 기능 지원

 

 

ReFS(Resilient File System)

  • Microsoft에서 NTFS를 대체하기 위해 개발한 파일시스템, 현재 기본으로 생성되지는 X
  • 파일 무결성 검사, 데이터 복구 기능 제공하며 NTFS 보다 높은 성능 보임

 

 

EXT4(Extended File System 4)

  • EXT 파일시스템 중 가장 최신 버전의 파일시스템
  • 기존 블록 매핑 방식을 Extent 방식으로 바꾸면서 더 많은 파일 더 빠르게 접근 가능
  • 최대 볼륨 크기와 최대 파일 크기 확장함, 하위 버전에 대한 호환성 지원

 

 

UFS(Unix File System)

  • Unix 및 Unix 계열 운영체제에서 쓰이는 파일시스템
  • Unix 기반 운영체제에서 사용하는 파일시스템들의 근간을 이룸

 

 

HFS+(Hierarchical File System Extended)

  • HFS의 한계를 극복하고 더 많은 파일 개수, 파일 용량, 파티션 용량 제공하도록 만들어짐
  • 1998년 macOS 8.1과 함께 발표되어 맥북, 아이팟 등에 사용됨

 

 

APFS(Apple File System)

  • HFS+ 대체하기 위해 2016년 발표된 파일시스템
  • macOS Sierra(10.12.4) 및 iOS 10.3부터 현재까지 사용 중
  • HFS+의 데이터 체크섬, 나노초 타임스탬프, 스냅샷 등 한계를 극복하고 암호화, 데이터 무결성 등 보다 나은 기능 제공

 

 

FAT32(File System Table)

  • Microsoft에서 개발해 MS-DOS부터 이용되던 파일시스템
  • 이전 파일시스템에 비해 최대 파티션 크기, 최대 파일 크기가 향상됨
  • 장점
    • 다양한 운영체제에서 널리 지원되어 호환성이 뛰어남
    • 단순한 파일시스템 구조로 인해 비교적 저장 공간을 많이 확보할 수 있음
    • 이런 이유로 USB, SDCard 등 이동식 저장장치에서 여전히 많이 사용됨
  • 단점
    • 최대 파일크기가 약 4GB로 작은 편, 최대 파티션의 크기가 8TB로 대용량 파티션에서는 사용하기 힘듦
    • 자료 구조 단순, 데이터 복구와 같은 기능 지원해주지 않음

 

 

exFAT(Extended File Allocation Table)

  • 이전 FAT32의 한계 극복하기 위해 Microsoft에서 개발
  • FAT32에 비해 최대 파일 크기와 최대 파티션 크기가 확장됨
  • 디렉터리에 저장할 수 있는 파일의 최대 개수 증가, 더 정밀한 시간 데이터의 저장 가능

 

 

 

 


 

 

 

 

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

- 포렌식에서 파일시스템이 중요한 이유는 파일시스템을 알아야 디스크 이미지의 분석이 가능하기 때문

 

1. 파일시스템에 대한 정보 없이는 데이터 저장 위치 알아내기 어려움

(파일 카빙 기법* 을 통해 일부 데이터의 위치 알아낼 수 있지만 정확도 떨어짐)

 

* 파일 카빙(File Carving): 파일 시그니처와 같은 파일의 구조적 특징을 이용해 파일시스템 메타데이터 없이 원본 파일을 복원할 수 있는 기법

 


2. 데이터의 위치를 알아냈다고 해도, 메타데이터를 알아내기 위해서는 파일시스템 구조에 대한 이해가 반드시 필요

  • 메타데이터(Metadate): 데이터에 대한 정보
    > 하나의 Excel 파일이 있다고 했을 때 파일 이름, 저장 경로, 파일 크기, 생성·수정·접근 시간 등을 나타낸 정보들을 말함
  • 파일의 데이터와 메타데이터들을 별도의 위치에 저장됨 (이후 파일시스템이 서로 다른 위치의 정보들을 하나로 모아서 사용자가 보기 쉽게 보여주는 것)
  • 따라서 파일시스템 구조에 대한 이해가 있다면 디스크 이미지로부터 이러한 메타데이터들을 추출할 수 있음

 

3. 파일시스템을 이해하면 파일의 변경 이력을 가져오거나 삭제된 파일을 복구하는 일이 가능해짐

  • 대부분의 파일시스템은 저널링(Journaling) 기능 지원
  • 저널링 기능: 시스템 충돌이나 정전을 대비해 데이터 쓰기 전후 상태를 기록하는 파일시스템의 기능
  • 저널링 과정에서 많은 로그 생성되는데, 이는 디지털 포렌식의 주요 분석 대상이 됨
  • Windows 시스템 복원 기능 또한 시스템의 변화를 추적하는 데에 직접적인 도움을 줌

 

 

 

 


 

 

 

 

MBR과 VBR

  • MBR(Master Boot Record): 디스크(저장 장치)의 가장 첫 섹터에 저장되는 데이터
    = 디스크 가장 처음 512 바이트 영역에 저장되는 데이터
  • VBR(Volume Boot Record): 볼륨의 가장 첫 섹터에 저장되는 데이터
    → MBR과 다르게 하나 이상의 섹터로 구성됨, 그 크기는 파일시스템과 클러스터 크기에 따라 달라질 수 있음

* 섹터: 디스크의 최소 기억 단위, 전통적인 하드디스크에서는 512 바이트 크기를 가짐

 

 

 

 

MBR과 VBR의 역할

- 컴퓨터 메인보드의 BIOS가 POST(Power On Self-Test) 과정과 기본적인 하드웨어 점검을 끝내면, MBR 내에 있는 부트 코드(Boot Code) 호출

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

MBR과 VBR의 역할

 

* 슬랙(Slack): 파일 시스템이나 데이터의 구조에서 빈 공간을 나타냄

** MBR 슬랙: MBR 이후 다음 자료 구조가 오기 전까지의 빈 공간

 

 

 

 

[MBR의 구조 - 실습]

- HxD를 관리자 권한으로 실행, 도구 탭에서 '디스크 열기' 클릭 후 물리 디스크 중 하나 선택 (가급적 '읽기 전용으로 열기')

- 최근 SSD는 MBR 대신 GPT(GUID Partition Table) 구조를 이용하므로 아래 실습과 구조가 다름 → USB 이용

 

 

 

MBR을 HxD로 열어본 모습

 

 

 

 

 

각각의 파티션 테이블 엔트리는 16바이트로 구성되며, 그 구조는 아래와 같음

파티션 테이블 엔트리 구조

 

파티션 엔트리 #1 해석

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

 

 

 

 

주소 지정 방식

  • CHS(Cylinder-Head Sector) 방식: 하드디스크의 실린더, 헤드, 섹터라는 물리적 특성 이용해 주소 표기, 현재 거의 사용 X
  • LBA(Logical Block Addressing) 방식: 저장장치 내의 모든 섹터들을 일차원적으로 배열하여 순서대로 숫자 지정해 주소 계산

 

LBA 시작 주소, 파티션 총 섹터 개수의 단위는 섹터임 → 섹터는 16진수로 0x200 (512 바이트이므로)

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

 

실제로 0x100000 오프셋에 VBR 위치함

 

 

 


 

 

 

VBR의 구조

- 파일시스템마다 전부 다르기 때문에 파일시스템 각각의 VBR 구조에 대해 공부해야 함 (다음 강의에서 살펴봄)

 

 

 

 


 

 

 

 

[VBR 실습]

문제 - 주어진 VBR 을 분석하고, 플래그를 계산하시오

  • A: 파일시스템이 FAT32면 1, NTFS면 2
  • B: 해당 볼륨의 크기
  • C: 볼륨 시리얼 번호

FLAG = DH{(A + B + C)} (단, 더한 값을 십진수로 변환할 것)

 

 

 

 

해당 파일을 HxD로 연 뒤, 각 바이트가 어떤 필드에 대응하는지 확인하면 문제 해결 가능

(값 읽을 때 리틀-엔디언 표기법으로 해석해야 함)

  • A: 1(FAT32)
  • B: 0x3E8000(0x20-0x23) * 0x200 = 0x7D000000
  • C: 0x0EA8EE8A(0x43-0x46)

 

따라서 정답은? DH{2343104139}

 

 

 


 

 

 

 

[실습] Corrupted Disk Image

문제 - 주어진 디스크 이미지 복원

  • FLAG 형식: DH{something}
  • something의 길이는 32자

 

실습 파일을 FTK Imager 로 열어봄

 

CorruptedDiskImage.E01 파일을 FTK Imager 로 열엇더니 이렇게 뜸

파일 raw 로 export 해서 HxD로 엶

 

 

 

실습 파일에선 안보이던 복구용 VBR 이 보임 (전형적인 NTFS 파일시스템의 구조)

해당 VBR을 이용해 NTFS 파일시스템의 복구가 가능

 

 

 

 

복구용 VBR 1개 섹터(0x200 Byte) 복사해 볼륨 맨 앞에 붙여넣기 해줌

저장하고 FTK Imager 로 다시 열엇더니

 

 

 

 

플래그 힌트 발견

바로 밑에 keyFile 을 sha-256로 계산하란 뜻인듯

 

 

 

 

HashCalc 이용해서 알아냄

정답은?

DH{e71e2b1230fd090aebd3a347310acac611e0161684fb4b7703135b6cc91bb7ac}