1) 저장매체와 파일시스템 분석
Last updated
Last updated
먼저 한가지 비교를 해보도록 하겠습니다. 이미지 획득 시 추가했던 방식으로 Physical Drive 로 추가하고 파일시스템 복구한 Raw 이미지를 추가하고 Properties를 한번 비교해보면 약간은 다른 정보를 확인할 수 있습니다.
만약 가상디스크가 아닌, USB나 실제 하드 디스크를의 피지컬 정보를 보면 저장매체의 시리얼 넘버를 확인할 수 있습니다. 개인 PC의 다른 하드디스크를 피지컬로 한번 열어보시면 확인할 수 있습니다. USB나 하드디스크를 FTK Imager 로 이미지 획득 후 로그에는 드라이브 시리얼 넘버도 포함됩니다. 그런데 왜 Raw 이미지에는 드라이브 정보가 없을까요? 기본적으로 아무것도 저장되지 않은 저장매체는 가장 처음에 0번 섹터부터 마지막 섹터까지 모두 00 으로 데이터 영역에 저장됩니다. 저장매체 자체에 내장된 저장매체의 정보를 데이터 영역에 저장하지 않는 것입니다. 윈도우는 내장된 정보를 읽어오고, FTK Imager와 같은 도구들도 내장된 정보를 가져와서 볼 수 있는 것입니다. 반면 Raw 이미지는 데이터 영역만 저장하기에, 저장매체의 내장된 정보를 따로 저장하지 않습니다. 이러한 특성을 이해하고 있어야 합니다. 실제 시험에서 저장매체(USB) 자체의 식별번호(Serial Number)를 물어본다면 Raw 이미지 에서는 알 수 없고 이렇게 피지컬 드라이브로 연결하거나 이미지 획득 로그를 살펴봐야 합니다. USB를 FTK Imager로 이미지 획득 시 생성되는 로그에서 확인이 가능합니다. 즉, 이미지 획득 후 로그에 저장된 해시값, 시리얼 넘버, Drive Model 등을 잘 살펴봐야 합니다.
저장매체의 해시값은 위에서 이미지 획득 시 로그 등에서 확인이 가능합니다. 혹시나 수집한 이미지를 다시 해시값을 확인해보고 싶다면 FTK Imager에서 해시값을 다시 획득할 수 있습니다. 최상위 선택 후 [Verify Drive/Image..] 선택합니다. [파일시스템 복구 전 원본 저장매체 해시값 획득] - MD5: a587fbb2823458234810c19991eebdd4 - SHA1: 793082e384c2f98f7226a2046ff5cb751e958800
저장매체는 섹터 단위로 번호를 매겨 저장합니다. 즉, 섹터 수 X 섹터 단위 크기 하면 저장매체의 전체 용량이 나옵니다. FTK Imager, HxD에서 마지막 섹터 번호를 참고하면 섹터의 갯수를 확인할 수 있습니다.
다시 한번 복습해보겠습니다. 1개의 섹터에는 512 bytes 입니다. 4bit는 1개의 16진수를 표현할 수 있으며 4비트 2개는 8bit로 1bytes 입니다. 즉, 512 bytes = 512 X 8 = 4096 bit를 표현하고 있는 것입니다. 1bit는 0 또는 1만 저장할 수 있습니다. 00110011`~~~~~ 로 4096 비트가 1섹터가 되는 것입니다. 대부분의 저장매체는 512 bytes를 1섹터로 저장합니다.
저장매체의 용량이 점점 방대하게 커지고 있기 때문에 1섹터의 크기도 커질 수 있을 것이지만 아직 대부분 512 바이트 단위가 1섹터 입니다.
따라서 USB 저장내의 어떤 데이터가 있던 간에 1섹터 크기 X 전체 섹터 수 = 전체 용량 크기가 됩니다. 512 X 4,194,304 = 2,147,483,648 bytes = 2,147,483,648 bytes / 1024 = 2,097,152 Kbytes = 2,097,152 Kbytes / 1024 = 2,048 MBytes = 2,048 / 1024 = 2 GBytes 실제 시험에서는 정확하게 바이트 단위를 작성해야 합니다.
아쉽게도 시험장에서 제공하는 무료도구에서는 디스크 서명을 바로 찾아주는 도구가 없어 위치를 외워야 합니다. (시험 출제빈도는 낮습니다.)
만약 파티션이 존재하는 저장매체의 경우 디스크 서명이 포함됩니다. 아래 그림과 같이, 해당 영역에 서명정보가 저장됩니다. - 디스크 서명 : 01 0A AF 45 (리틀엔디안) -> 45 AF 0A 01 (답안용 값)
다만, 처음부터 파일시스템으로 시작하는 저장매체의 경우 디스크 서명이 포함되지 않습니다. (이 부분은 뒤에서 살펴보도록 합시다.)
사실 파티션 분석은 크게 의미가 없고 시험에서도 거의 나오지 않습니다. 다만 기본 개념만 한번 살펴보도록 하겠습니다.
파티션을 살펴보면 Starting Sector, Sector Count 가 있습니다. 즉, 저장매체에서 파티션 1번은 128번 섹터부터 3,145,728 개를 사용하고 파티션 2번은 3,145,856번 섹터부터 1,042,432를 사용하고 있습니다.
만약 시험에서 물어볼 만한 게 있다면 파티션 크기 정도일 것 입니다. 시험에서는 나오지 않았으나 살펴보자면 아래와 같을 것입니다. - 파티션 1 섹터 범위 : 128섹터 ~ 3,145,855 섹터 (사용 섹터 수: 3,145,728) - 파티션 1 크기 : 3,415,728 X 512 (섹터 크기) = 1,610,612,736 bytes = 1,536MBytes
- 파티션 2 섹터 범위 : 3,145,856 섹터 ~ 4,188,287섹터(사용 섹터 수: 1,042,432) - 파티션 2 크기 : 1,042,432 X 512 (섹터 크기) = 533,725,184 bytes = 509 Mbytes
GPT 파티션 테이블 구조에서 시험에 혹시나 나올 법 한 부분을 한번 살펴보겠습니다. 이런게 있구나 정도만 알아도 되니 추후에 GPT 분석 시 한번 확인 정도만 해보시길 권장합니다.
GPT 파티션의 경우 아래와 같이 해당 파티션을 클릭 하면 Properties에 GUID 관련 내용이 보입니다. - Partition Type GUID : 파티션 타입 종류 - Unique Partition GUID : 파티션 고유 번호(운영체제가 랜덤으로 설정)
만약 시험에 출제된다고 한다면 Unique Partition GUID 정도를 물어보지 않을까 싶네요! (실제로 시험에 출제된 적은 없는 것으로 알고 있습니다.)
항상 시험에 자주 나오는 단골 문제로 파일시스템에 주요 분석 값을 물어봅니다. 정확히 무엇을 요구하는지 확인 후 답안 작성에 활용하도록 합시다.
NTFS 파일시스템을 살펴보면 시험에서 주로 물어보는 대부분의 내용이 포함되어 있습니다.
먼저 클러스터의 경우 여러 섹터를 묵어서 하나의 클러스터 단위로 관리합니다. 이미 섹터가 있는데 왜 굳이 또 클러스터로 묶는 이유는 점점 용량이 커지면서 대용량의 파일을 저장할 때에는 여러 섹터를 묶어서 활용하는 것이 효율적이기 때문입니다. NTFS에서는 이렇게 묶는 단위를 클러스터라고 하며, 다른 파일시스템에서는 블록 등으로 다른 명칭으로도 사용합니다. 시험에 주로 출제되는 NTFS, FAT32의 경우 클러스터 단위로 사용 합니다. 파티션 내의 파일시스템 부분을 클릭 하면 Properties 에서 관련 내용을 확인할 수 있습니다.
파일시스템의 전체 섹터 수(Total Sectors) : FF FF 2F 00 00 00 00 00 -> 2F FF FF => 3,145,727 + 1(NTFS의 VBR) = 3,145,728 섹터
파일시스템의 전체 크기(Total Size) : 3,145,728(전체섹터) X 512 = 1,610,612,736 bytes = 1572864 Kbytes = 1536 Mbytes
클러스터 크기(Cluster Size) : 4096 bytes
클러스터 당 섹터 수 : Cluster Size / 512 Bytes = 8 섹터
클러스터 수(Cluster Count) : 393,215 클러스터
가용 용량(데이터 저장이 가능한 전체 용량) -> 클러스터 크기 X 클러스터 수 = 4096 X 393,215 = 1,610,608,640 bytes = 1,610,608,640 / 1024 = 1,572,860 Kbytes = 1,572,860 / 1024 = 1535 Mbytes = 1.49GBytes
Volume Serial Number : 0263-EA61 // 리틀엔디안을 변경 > FTK Imager에는 표시되지 않지만 NTFS의 Full Serial Number는 16bytes 입니다. > 61 EA 63 02 FB 63 02 0A (리틀엔디안) -> 0A 02 63 FB 02 63 EA 61 ( FULL 시리얼 넘버)
파티션 2번에 있는 파일시스템을 분석해봅시다.
Properties에 위에 NTFS와 동일하게 내역 확인이 가능합니다.
클러스터 크기(Cluster Size) : 4096 bytes
클러스터 당 섹터 수 : Cluster Size / 512 Bytes = 8 섹터
클러스터 수(Cluster Count) : 129,280 클러스터
가용 용량(데이터 저장이 가능한 전체 용량) -> 클러스터 크기 X 클러스터 수 = 4096 X 129,280 = 529,530,880 bytes = 529,530,880 / 1024 = 517,120 Kbytes = 505 Mbytes
Volume Serial Number : 0263-EA61 // 리틀엔디안을 변경
Volume Label : 파일연습
FAT32의 VBR 확인을 위해서 Partition2를 선택하여 첫 섹터를 확인하면 전체 섹터 수를 확인 가능
FAT32 파일시스템의 전체 섹터 수(Total Sector) : 00 E8 0F 00 -> 00 0F E8 00 -> 1,042,432 섹터
FAT32 파일시스템의 전체 크기 : 1,042,432(전체 섹터) X 512 = 533,725,184 bytes -> 521,216 Kbytes = 509 Mbytes
아쉽게도 FTK는 한글과 친하지 않아서 따로 한글을 확인하여야 합니다. 먼저 FAT32 파일시스템의 시작 부분을 선택하면 가장 처음 8바이트는Volume Label 값을 저장합니다. 우클릭 Copy hex 한 뒤 HxD에서 파일을 새로 생성한 뒤 붙여넣기를 한 뒤 확장자를 txt로 저장해봅시다.
해당 파일을 메모장으로 열어보면 한글로 변경된 것을 알 수 있습니다. 메모장에서 확인이 가능합니다.
이 부분은 한번 읽어만 보시면 됩니다. 도구가 모두 해주기 때문에 외울 필요 없습니다.
저장매체의 전체 섹터 수는 큰 고민 없이 저장매체의 0번 섹터 부터 마지막 섹터까지 입니다.
반면 파일시스템의 전체 섹터 수는 파일시스템의 BR에 따로 전체 섹터 수를 보여주고 있습니다. [NTFS 전체 섹터 수]
즉, NTFS 파일시스템의 전체 섹터 수는 3,145,727 섹터 입니다. 그런데 파티션 1번의 전체 섹터 수는 3,145,728 입니다. 1섹터 차이나는 부분이 NTFS 파일시스템 BR의 복사본입니다. 따라서 사실상, NTFS 파일시스템 크기는 전체 섹터 수 + 1 하는 것이 적절합니다. - 전체 용량 : 3,145,728 X 512 = 1,610,612,736 Bytes = 1,572,864 Kbytes = 1,536Mbytes [FAT32] 전체 섹터 수
즉, FAT32 파일시스템의 전체 섹터 수는 1,042,432섹터 입니다. - 전체 용량 : 1,042,432 X 512 = 533,725,184 Bytes = 521,216Kbytes = 509Mbytes FAT32의 경우 파일시스템 BR이 6번 섹터로 파일시스템 내에 포함되어 있기 때문에 NTFS처럼 더할 필요가 없습니다. 파티션2번 크기와 완전히 동일하게 설정되어 있습니다.
가용용량과 파일시스템 크기의 차이
[파티션 1] - NTFS 가용용량(클러스터 크기 X 클러스터 수) = 1,610,608,640 bytes - NTFS 전체용량(전체 섹터 수 X 섹터 크기)= 1,610,612,736 Bytes *전체 용량 - 가용용량 = 4096 bytes, 8섹터(1 클러스터) 차이 발생 [파티션 2] - FAT32 가용용량(클러스터 크기 X 클러스터 수) = 529,530,880 Bytes - FAT32 전체용량(전체 섹터 수 X 섹터 크기)= 533,725,184 Bytes * 전체용량 - 가용용량 =4,194,304 bytes, 8,192 섹터 차이 발생
NTFS의 클러스터 수는 파일시스템에서 전체 섹터 수(NTFS BR 1섹터 제외한 값) / 클러스터 당 섹터 수 처음부터 클러스터로 시작합니다. 다만 NTFS BR 복사본 때문에 1섹터가 제외되면서 클러스터당 섹터 수로 나눠 떨어지지 1클러스터 크기만큼 제외되어 구성됩니다. - NTFS 전체 섹터 수 / 클러스터 당 섹터 수 : 3,145,727/ 8 = 393,215 클러스터 (만약 NTFS 전체 섹터 수가 3,145,728이 였다면 클러스터 수가 393,216로 393,216 X 4096 = 161,0612,736 Bytes로 전체 용량과 동일한 크기가 됩니다.)
FAT32의 경우 처음부터 바로 클러스터가 시작하는 것이 아닌, 예약영역, FAT 라는 영역이 존재하고, 해당 부분을 제외한 영역부터 클러스터가 시작됩니다.
FAT 영역은 만약을 위해 동일한 FAT영역을 하나 더 갖습니다. 따라서 데이터 영역을 제외한 섹터는 > 예약영역 + FAT1 + FAT2(FAT 복사본) = 6,170 + (1,011 X 2) = 8,192 섹터 입니다. 전체 섹터 수 - {예약영역 + FAT1 + FAT2(FAT 복사본)} = 데이터 영역 이 데이터 영역을 클러스터 당 섹터 수로 나누면 사용 가능한 클러스터 수가 됩니다. - {FAT32 전체 섹터 수 - (예약영역 + FAT1+FAT2)} / 클러스터 당 섹터 수 = {1,042,432 - (6,170 + 1,011 + 1,011)} / 8 = 1,034,240 / 8 = 129,280 클러스터
정리하여 봅시다. - 전체 섹터 수 / 전체 용량 = 저장매체의 전체 섹터 수 / 전체섹터 수 X 512 BYTES - 파일시스템의 전체 섹터 수 / 전체 용량 = 파일시스템의 전체 섹터 수 / 전체 섹터 수 X 512 Bytes - 파일시스템의 가용 용량 = 전체 클러스터 수 X 클러스터 크기 > 기출문제 유형에서 다시 한 번 정리하여 살펴봅시다.
Autopsy 에서도 어느정도 파일시스템 분석이 가능합니다. 먼저 Case -New Case 를 선택하여 Case를 생성해봅시다.
Data Source 에서 Disk Image 를 선택해서 파일시스템 복구한 이미지를 선택하여 봅시다.
Ingest(프로세싱) 하는 부분이 있는데 이는 추후에 파일 등 기타 분석 시 활용하도록 하겠습니다. 우선은 모두 해제 후 다음 하여 Finish 하여봅시다.
저장매체 부분에서 우클릭 -Properties 를 선택하면 저장매체 사이즈를 확인할 수 있고 파티션 정보도 파악이 가능합니다.
파티션을 선택 후 우클릭 - File System Details 를 선택 시 블록(클러스터) 수와 블록(클러스터) 크기를 확인할 수 있으나.. 아쉽게도 윈도우에서 블록 크기가 정확히 잘 보이지 않습니다. -> FTK Imaer 활용하는 것 추천 (프로그램 버그라고 봐야할듯 합니다 ㅠㅠ)
기출문제 중에서 파티션이 없이 처음부터 파일시스템으로 시작하는 경우도 출제되었기 때문에 살펴보도록 하겠습니다.
먼저 아래 이미지와 같이 Partition 1번을 선택 후 Export Disk Image를 선택하도록 하겠습니다. 이후 Add 를 클릭 한 뒤 DD(raw)이미지를 생성하여 봅시다.
생성한 이미지를 FTK Imager로 열게 되면 처음부터 NTFS 시작인 파일시스템을 확인할 수 있습니다. 실제 USB를 이미징을 하였을 때 아래와 같은 형태를 가집니다. 이후 분석은 동일합니다. 이 경우에도 파일시스템이 훼손될 수 있으며, 파일시스템 복구를 하여야 합니다. 이 경우, 처음부터 NTFS의 BR이기 때문에 디스크 시그니처가 있을 수 없습니다.
MBR이 없는 파일시스템 분석 이미지를 만들어 보고 자 하는 경우 이전 자료를 활용해보시길 바랍니다. > 3-3) 파일시스템 복구 실전 연습
저장매체 정보 관련 문제는 도구가 대부분 표시해주기에 믿고 답안 작성에 활용하면 됩니다. 또한 최근 시험에는 배점이 매우 낮거나, 사실상 출제되지 않는 경우도 있는 실정입니다.
기출 문제 유형
[필수] 원본 저장매체의 해시값을 구하라 > 파일시스템 복구 전에 최초의 저장매체의 해시값을 구해야 하며, 보고서 작성등에 꼭 포함
원본 저장매체의 시리얼 넘버를 구하라 > 파일시스템의 시리얼 넘버, 윈도우 분석에서 연결된 USB의 시리얼 넘버와 혼돈하지 말아야 한다.
복구한 파일시스템의 종류 전체섹터 수, 전체용량, 가용용량, 볼륨시리얼넘버를 구하라. > 시험 문제에서 "~의 전체 용량을 구하라!" 고 할 경우, 저장매체인지, 파일시스템인지, 어떤 파티션의 파일시스템인지 정확히 작성해야 한다. 전체용량인지 가용용량인지 정확히 구분하여 작성한다. *문제에서 정확히 지칭하지 않은 경우 모두 작성 > NTFS의 경우 Full 시리얼 넘버를 포함한다.
NTFS, FAT32 파일시스템의 클러스터 크기, 클러스터 당 섹터 수를 구하라. > 단위를 정확히 작성한다.
Volume Label : Win10 (참고) FTK Imager의 경우 아래와 같이 NTFS의 구조를 분석해서 보여주고 직접 분석해도 되지만 도구를 사용하면 따로 분석할 필요는 없습니다. >
가상디스크 자체를 복구하여 확인하면 실제로 확인이 가능합니다. >