Digital Forensics/File System 10

#3 FAT - File Deletion

Table of Contents Abstract 본 글에서는 FAT 볼륨에서 파일 삭제 시 어떤 변화가 일어나는 지 관찰하여 정리한 글이다. 파일을 삭제할 경우 디렉토리 엔트리는 삭제 플래그인 0xE5 값을 파일 이름의 첫 바이트에 넣고, 파일이 점유하고 있던 클러스터를 모두 Free 상태로 만들기 위해 File Allocate Table 영역에서 파일이 점유하고 있던 클러스터의 체인을 따라가며 모두 0으로 변경한다. 마지막으로 파일 삭제 후 새 파일을 생성할 때 삭제된 파일 데이터가 어떻게 되는지도 알아본다. FAT에 대한 상세 내용은 아래 링크들을 참고하길 바란다. #1 FAT - File Allocate Table https://geun-yeong.tistory.com/75 #2 FAT - Dire..

#2 FAT - Directory Entry

Table of Contents Abstract 본 글에서는 FAT 파일 시스템에서의 파일 테이블 표현을 위한 디렉토리 엔트리의 구조, Long File Name을 위한 LFN 엔트리와 LFN 엔트리의 해석법, 마지막으로 트리 구조의 폴더 구조를 FAT에서는 어떻게 표현하는지를 설명한다. FAT에 대한 개요와 BPB, FAT 해석 및 FAT Chain 분석법은 앞선 글을 참고하길 바란다. #1 FAT - File Allocate Table https://geun-yeong.tistory.com/75 Directory Table Root Directory 트리 구조의 파일 구조를 지원하는 모든 파일 시스템은 디렉토리와 파일 위치의 최초 시작 지점인 루트 디렉토리가 존재한다. 리눅스 시스템에선 '/'가 루트..

#1 FAT - File Allocate Table

Table of Contents Abstract FAT는 MS에서 DOS 등 운영체제의 기본 파일 시스템으로 사용하기 위해 개발된 파일 시스템이다. Windows 2000 쯤 부터 NTFS로 기본 파일 시스템이 바뀌었지만 지금도 USB 메모리 등 다양한 곳에서 쓰이고 있다. FAT는 오늘날처럼 수십 GB 크기의 스토리지를 고려해 만든 파일 시스템이 아니기 때문에 제법 간단한 구조를 가진다. 본 글에서는 FAT 파일 시스템의 개요와 FAT 파일 시스템으로 포맷된 볼륨의 부트 섹터 구조를 FAT12/16/32 별로 구분해 설명하고 전체 클러스터 사용 내역과 파일 데이터가 저장된 클러스터 체인이 저장되는 파일 할당 테이블(FAT)도 분석하는 내용을 서술했다. 분량 상 디렉토리 엔트리는 다음 글로 미루었다. F..

File System 개론

Table of Contents Abstract 본 글에서는 파일 시스템을 이해하는 데 필요한 파일 시스템 구성 요소와 더불어 파일 시스템이 왜 필요한지, 무엇인지에 대해 얘기해보려 한다. 파일 시스템은 디스크에 데이터를 저장하는데 있어 편리함과 효율을 챙기기 위해 만들어졌으며, I/O 효율을 위해 디스크는 섹터라는 단위를, 파일 시스템은 클러스터라는 단위를 사용해 데이터를 읽고 쓴다. I/O 작업의 최소 단위에 의해서 발생하는 빈 공간인 슬랙과 자칫 헷갈릴 수 있는 파티션과 볼륨에 대한 설명도 함께 작성했다. File System Why do we need a File System? 메모장에 작성한 텍스트를 파일로 저장하지 않고 메모장을 닫으면 그 내용을 두 번 다시 볼 수 없다. 즉 메모리 상의 데이..

#3 GPT - GPT 복구

Table of Contents Abstract 이번 글에서는 Backup GPT에 대한 보다 자세한 설명과 함께 Backup GPT를 사용해 Primary GPT를 복원하는 방법에 대해 알아본다. 백업 GPT는 주 GPT에 오류가 발생했을 때 이를 복구하기 위해 존재하는 공간이며, 어렵지 않은 방법으로 주 GPT를 복구할 수 있다. GPT에 대한 설명은 아래 링크를 참조하길 바란다. #1 GPT - GUID Partition Table (1) https://geun-yeong.tistory.com/70 #2 GPT - GUID Partition Table (2) https://geun-yeong.tistory.com/71 Backup GPT GPT Disk Layout GPT는 Primary GPT 뿐..

#2 GPT - GUID Partition Table (2)

Table of Contents Abstract 저번 글에서는 UEFI와 GPT에 대한 개요, Protective MBR에 대해 설명했다. 본 글에서는 GPT의 주요 내용인 GPT 헤더와 파티션 테이블, 백업 GPT에 대한 설명을 진행한다. UEFI와 GPT에 대한 개요, Protective MBR에 대한 설명이 필요하다면 아래 링크를 따라가면 된다. #1 GPT - GUID Partition Table (1) https://geun-yeong.tistory.com/70 GPT 본 글을 작성하는 데 사용한 GPT VHD 이미지는 아래 링크에서 다운로드 할 수 있다. https://drive.google.com/file/d/1BjRI-70riDwOUxK8C0MxT4vtb2t3lRFq/view?usp=sha..

#1 GPT - GUID Partition Table (1)

Table of Contents Abstract 본 글과 다음 글에서는 GUID Partition Table에 대해 알아볼 것이다. GPT는 EFI에서 사용하는 디스크 파티션 구조로, BIOS 시스템의 MBR을 개선하기 위해 만들어졌으며, 더 큰 주소 비트를 지원하기 때문에 더 큰 디스크를 인식할 수 있게 되었고, 더 많은 파티션을 생성할 수 있게 됐다. GPT를 알아보기 전에 EFI에 대한 설명을 간략하게 할 것이다. 다만 내용이 길어 본 글에서는 UEFI와 GPT의 개요, 기존 BIOS 시스템과의 호환성 유지를 위한 Protective MBR에 대해 설명하고 주요 내용인 GPT 헤더, 파티션 테이블, 백업 GPT에 대한 설명은 다음 글에서 이어 하도록 하겠다. GPT UEFI(Unified Exten..

#3 MBR - 파티션 테이블 복구

Table of Contents Abstract 본 글에서는 지워진 파티션 테이블 엔트리를 복구하는 법을 알아본다. 먼저 디스크 이미지 내에서 사라진 파일 시스템과 해당 파일 시스템의 BPB(Bios Parameter Block)에서 볼륨의 크기를 알아낸 후 이를 통해 파티션 테이블 엔트리에 적절한 값을 채워넣는 방법을 서술할 것이다. Recovering a Partition Table Scenario 4GB 크기의 VHD를 만들고, 2040MB 크기의 파티션과 FAT 볼륨 2개를 생성했다. 그리고 두번째 FAT 볼륨이 위치한 파티션을 가리키는 파티션 테이블 엔트리를 모두 삭제했다. 이제 두번째 파티션을 복구해보자. 예제 이미지 파일은 아래 링크에 있다. https://drive.google.com/fi..

#2 MBR - Extended Partition Table

Table of Contents Abstract 본 글에서는 MBR(또는 도스 파티션)에서 사용하는 확장 파티션에 대한 설명과 분석 방법을 설명한다. MBR의 주 파티션 테이블은 최대 4개 까지만 파티션을 나타낼 수 있기 때문에 4개를 넘는 파티션을 정의하기 위해 확장 파티션이라는 걸 사용한다. 확장 파티션은 하나의 일반 파티션과 (필요한 경우) 그 다음 확장 파티션의 정보를 가진다. 파티션이 4개를 초과할 경우 주 파티션 테이에는 첫번째 확장 파티션의 위치를 가리키고, 첫번째 확장 파티션은 4번째 파티션의 정보를 가진다. 파티션이 5개라면 첫번째 확장 파티션은 두번째 확장 파티션의 위치를 가리키고, 두번째 확장 파티션은 5번째 파티션의 정보를 가진다. 본 예제에서는 8GB 크기의 VHD를 MBR로 만들..

#1 MBR - Master Boot Record

Table of Contents Abstract MBR은 도스 파티션 시스템의 다른 이름이다. 본 글에서는 볼륨과 파티션의 차이에 대해 간단하게 짚어보고 도스 파티션 시스템을 해석하는 방법을 알아본다. 도스 파티션은 446 바이트의 부트 코드와 64 바이트의 파티션 테이블, 2 바이트의 부트 레코드 시그니처로 나뉜다. 부트 레코드는 운영체제가 설치된 부팅 가능한 파티션을 찾아 해당 파티션에 저장된 VBR로 점프하는 역할을 하며, 파티션 테이블은 파티셔닝 된 디스크에서 각 파티션의 시작 위치와 크기를 나타낸다. MBR Partition & Volume 먼저 파티션과 볼륨에 대해 알아보고 넘어가자. 흔히 파티션과 볼륨을 혼용해서 쓰기도 하고, 크게 구분하지 않는 탓에 동일한 것으로 취급하지만 둘은 엄연히 다..