3-2) 파일시스템과 파일시스템 복구
Last updated
Last updated
시험에서는 주로 NTFS, FAT32, exFAT 정도가 나오고 있습니다. 다만 포렌식 도구에서 대부분 잘 분석해주고 시험에서 요구하는 부분은 도구의 어떤 부분을 살펴봐야 하는지 연습이 되어야 합니다.
파일시스템의 시작 위치는 항상 파티션의 시작 위치입니다. 따라서 파티션의 위치로 이동했는데 파일시스템의 시작 데이터(BR)이 훼손되어 있으면, 파일 구조를 확인할 수 없습니다. 즉, 파티션이 없거나 훼손되어 있는 것입니다.
연습용 이미지
FTK Imager에서 "파일시스템 연습용.zip" 압축 해제 후 이미지를 열어봅시다.
NTFS Boot Record 기본 구조
- Bytes Per Sector : 00 02 -> 02 00(16진수) => 512 (10진수) - Sector per Cluster : 08 => 8섹터 (1클러스터에 1섹터: 8 X 512 = 4,096 bytes) - Total Sector 32 : FF 8F 01 00 -> 00 01 8F FF => 102,399 섹터 - Serial Number : 7D AA 9A 08 8F FF 79 19 => 19 79 FF 8F 08 9A AA 7D
NTFS의 경우 복사본 BR은 해당 파티션, 저장매체의 맨 마지막 섹터에 위치합니다.
기존에 시험에 출제된 문제 유형으로는 아래와 같이 나옵니다.
클러스터 크기를 구하라.
전체 가용 용량을 구하라
볼륨시리얼을 구하라
이런 문제는 포렌식 도구로 확인이 가능합니다.
FTK Imager - 클러스터 크기 : Cluster Size - 가용용량 : Cluster Count X Cluster Size - 전체 클러스터 수 : Cluster Count - Volume Serial Number : Volume Serial Number
EnCase - 클러스터 크기 : Sectors per cluster X Bytes per sector = 8 X 512 = 4,096 - 가용용량 : Total Capacity - 전체 클러스터 수 : Total Clusters - Volume Serial Number : Serial Number
FAT32 Boot Record기본 구조 아래와 같으나 포렌식 도구가 분석해 주기 때문에 이런게 있다 정도로만 한번만 보시면 됩니다.
- Bytes Per Sector : 00 02 -> 02 00(16진수) => 512 (10진수) - Sector per Cluster : 01 => 1섹터 (1클러스터에 1섹터: 1 X 512 = 512 bytes) - Total Sector 32 : 00 90 01 00 -> 00 01 90 00 => 102,400 섹터 - Backup Boot Sec : 06 (백업본 위치 6번 섹터) - Volume ID : 93 B1 67 76 -> 76 67 B1 93
FAT32의 경우 복사본 BR은 6번 섹터에 위치합니다.
기존에 시험에 출제된 문제 유형으로는 아래와 같이 나옵니다.
클러스터 크기를 구하라.
전체 가용 용량을 구하라
볼륨시리얼을 구하라
이런 문제는 포렌식 도구로 확인이 가능합니다.
FTK Imager - 클러스터 크기 : Cluster Size - 가용용량 : Cluster Count X Cluster Size - 전체 클러스터 수 : Cluster Count - Volume Serial Number : Volume Serial Number
EnCase - 클러스터 크기 : Sectors per cluster X Bytes per sector - 가용용량 : Total Capacity - 전체 클러스터 수 : Total Clusters - Volume Serial Number : Serial Number
exFAT의 경우 FAT32와 동일 한 방식으로 FTK Imager, EnCase 등을 이용하면 됩니다. 구조 분석의 경우 참고로만 살펴보시길 바랍니다.
사실 시험을 위해서 파일시스템의 상세한 구조를 모두 외우거나 확인 하는 것 보다는 도구의 사용법이나 시험에서 주로 나오는 부분과 용어 위주로 정확히 알고 있으면 됩니다. 파일시스템의 시리얼넘버와 USB의 시리얼넘어 차이, 전체용량과 가용용량의 차이 등 몇 가지 주요 용어만 확실하게 정리하면 됩니다. 다만 이러한 부분도 추후에 연습문제를 풀다보면 반복적으로 확인하기에 금방 익숙해 질 것입니다. 처음 공부할 때는 이런 식으로 보는구나 정도로만 보고 넘어갑니다.
시험에 주로 나오는 파일시스템 복구 문제는 기본적으로 파일시스템의 VBR영역을 훼손하게 됩니다. 이를 복사본 VBR을 이용하여 복원하게 되면 정상적으로 파일시스템 복구합니다.
복구 방법은 여러가지가 있으나, FTK Imager를 이용하여 최대한 쉽게 복구하는 연습을 해보도록 하겠습니다.
기본적으로 NTFS의 BR복사본은 파티션, 저장매체 마지막 섹터에 위치합니다. 이를 이용한 연습을 해보도록 하겠습니다.
먼저 VBR은 Volume Boot Record 또는 BR(Boot Record) 라고 하며 파일시스템의 가장 처음에 위치하고 있습니다. 이 VBR은 파일시스템의 크기가 얼마인지, 몇 번 섹터부터 파일을 저장 하는지에 대한 정보를 가지고 있는 가장 중요한 부분입니다.
VBR은 매우 중요한 부분이기에 VBR을 복사본을 만들어 둘 필요가 있습니다. FAT32 파일 시스템의 경우 6번 섹터, exFAT 파일 시스템의 경우 12번 섹터, NTFS 파일 시스템의 파티션의 마지막 섹터에 저장 합니다. 이외에도 Ext4와 같은 파일시스템 등이 있으나, 시험에는 주로 FAT32, NTFS가 출제되고 있습니다.
단순하게 생각한다면 원래 VBR이 위치해야 할 0번 섹터에 문제가 있다면, 복사본을 복사하여 덮어써 복구가 가능한 것입니다.
연습 이미지 다운로드 - 다운로드 후 압축 해제 후 아래 실습에 사용하시길 바랍니다.
FTK Imager를 이용하여 NTFS.001 파일을 열어보도록 하겠습니다.
우선 파티션 넘버가 보이긴 하나, 용량도 그렇고 내용을 확인하려고 하면 아래와 같이 에러가 발생합니다. 이 경우 파일시스템 훼손된 것으로 보면 됩니다.
추가로 0번 섹터를 보면 상단이 비어있고 조금 내려서 1번 섹터를 보면 BOOTMGR 이란 글자가 보이면 0번 섹터가 사실상 NTFS BR위치에 해당합니다. 즉, NTFS BR이 훼손되어 복원이 필요한 상황입니다.
그럼 이제 NTFS의 BR의 복사본의 위치를 알고, 0번 섹터에 복사본을 붙여넣으면 되는 것입니다. 먼저 해당 저장매체의 가장 마지막으로 이동해보도록 하겠습니다. (용량이 큰 경우 스크롤만 내려서는 마지막 까지 안가는 경우가 있으니 PageDown 버튼을 활용하여 끝 지 내려봅니다.) 해당 위치로 이동하면 NTFS가 보이고, 마지막에 55 AA가 보입니다. 즉, BR의 복사본이 위치 합니다. 섹터 번호는 163839번 임을 알게 되었습니다.
이제 HxD를 이용하여 복원을 해보도록 하겠습니다. 도구 - 디스크 이미지 열기를 통해 NTFS.001을 열어보도록 하겠습니다. 디스크 이미지로 열어야 섹터 단위로 이동이 가능합니다.
맨 마지막으로 가면 163839섹터가 보이고, 이 부분을 복사하여 봅시다.
복사한 영역을 0번 섹터의 가장 첫 부분에 우클릭 - 붙여넣기 쓰기 하여 덮어쓰도록 합시다. 해당 이미지를 저장합니다.
이 후 FTK Imager를 이용하여 NTFS.001을 불러오면 아래와 같이 파일 구조를 확인할 수 있습니다.
이렇게 내부 구조를 볼 수 있을 경우 이후에 포렌식 분석 도구들로 분석을 할 수 있습니다.
FTK Imager를 이용하여 FAT32.001 파일을 열어보도록 하겠습니다. 파일시스템이 훼손되어 있습니다.
FAT32의 경우 파일시스템의 6번 섹터에 복사본 BR이 위치합니다. (exFAT의 경우 12번 섹터에 복사본 BR이 위치합니다.) 이 6번 섹터의 데이터를 0번 섹터로 덮어쓰면 복구가 되는 것입니다.
HxD를 이용하여 도구 - 디스크 이미지 열기를 통해 FAT32.001을 열어보도록 하겠습니다. 6번 섹터를 복사하여 봅시다.
0번 섹터에 가장 앞 부분에서 우클릭 - 붙여넣기 쓰기 한 뒤 저장하여 봅시다.
이 후 FTK Imager를 이용하여 FAT32.001을 불러오면 아래와 같이 파일 구조를 확인할 수 있습니다.
MBR(Master Boot Record)라 함은 가장 처음 위치(0번 섹터)에 파티션이 몇 번 섹터에 위치 하는지, 크기는 몇 인지를 저장하고 있습니다. 이 파티션 범위에 파일시스템이 구성됩니다. (파티션 복구 = 파일 시스템 복구 : 파티션이나, 파일시스템은 거의 같은 의미로 사용되나 파티션은 구분의 목적, 파일시스템은 실제 데이터가 구성된 차이점이 있으나 혼용에서 사용하기에 동일한 용어로 이해하시는 것이 편리할 것입니다.)
2개의 파티션이 있고 두 파티션이 모두 VBR이 훼손 되었다면, 아래 그림과 같이 파일시스템의 종류에 따라서 VBR의 복사본을 찾고, 그것을 정상 VBR 위치에 덮어쓴다면 복구가 가능하게 되는 것입니다.
복구 연습을 해보도록 하겠습니다.
파티션 별로 파일시스템을 복구 하기 위해선 파티션 마다 시작 위치와, 복사본의 위치를 알아야 할 필요가 있습니다. FTK Imager를 이용하여 쉽게 분석할 수 있습니다. 먼저 FTK Imager를 이용하여 "파티션2개 훼손.001" 이미지 파일을 열어보도록 하겠습니다. 파티션 1, 파티션 2번에 대해서 파일시스템의 파일시스템이 훼손되어 있어 보이지 않고 있습니다.
파티션 1번을 선택하면 파일시스템 시작 위치 섹터 번호를 확인할 수 있습니다. 그리고 파티션 1번의 0번 섹터에 FAT32 또는 NTFS 파일시스템의 BR이 없기 때문에 내부 구조가 보이지 않는 상태인 것 입니다.
우리는 FAT32의 경우 6번 섹터, 마지막 섹터에는 NTFS의 복사본이 있는 것을 알고 있습니다. 아직은 우리는 파티션 1번이 어떤 파일시스템인지 알 수 없습니다. 따라서 6번 섹터, 그리고 마지막 섹터를 확인해서 복사본이 위치하는 것을 보고 어떤 파일시스템인지 알 수 있는 것입니다. 그래서 128 + 6 = 134번 섹터를 확인해보도록 합니다. FAT32의 복사본이 있는 것을 알 수 있습니다.
즉, 파티션 1번의 134번 섹터의 값을 -> 128번 섹터에 덮어 쓸 수 있습니다.
파티션2 또한 동일하게 살펴보도록 하겠습니다.
파티션 2번이 FAT32라면, 6번 섹터에 복사본이 있겠지만, 6번 섹터를 살펴보면 FAT32, NTFS의 BR이 없는 것을 알 수 있습니다.
NTFS 라면 파티션의 가장 마지막 섹터에 NTFS의 복사본 BR이 위치합니다. 즉, 마지막섹터 327807-> 163968 섹터에 복사, 붙여넣기 하면 복원되는 것입니다.
정리하면 아래와 같습니다. HxD를 이용하여 저장하도록 하겠습니다. - 파티션 1번은 134번 -> 128번
- 파티션 2번은 327807 -> 163968번
위의 파일시스템의 VBR영역을 정상적으로 복구 한다면 아래와 같이 내용을 확인할 수 있습니다.
파일시스템 복구는 결국 파일시스템의 시작, 복사본의 섹터번호를 정확하게 알면 복원이 가능합니다. 추가적인 복구 방법으로 BR의 복사본을 검색하는 방법도 있습니다. 추후에 검색 방법을 이용한 방법도 확인해보도록 하겠습니다.
파일시스템 복구를 위해 파티션 엔트리 등을 계산하여 섹터 번호를 확인하는 방법도 있으나, 도구를 이용하여 쉽고 빠르게 접근하여 봅시다.
앞으로 연습 문제에는 항상 파일시스템 복구 문제가 포함될 것이니 반복해서 연습해보도록 하겠습니다. 이번 장에서는 기본적인 개념만 확인하였습니다. 다음장, 그리고 실력 다지기에서 계속해서 복구 연습을 할 수 있습니다.
파일시스템 복구가 되면 포렌식 분석 도구를 이용하여 시험 문제를 해결할 수 있게 됩니다.
파일시스템 관련하여 보다 상세히 알아보고 싶은 경우 아래 내용을 참고해보는 것을 추천합니다. > 4-1) 파일시스템 직접 만들어 보기 > 4-2) FAT32 분석 > 4-3) NTFS 기초 분석