1) 저장매체와 파일시스템 분석
Last updated
Last updated
EnCase 에서 케이스 생성 후 Add Evidence - Raw Image를 선택합니다. E01, Ex01 파일을 열 경우 [Evidence File]을 선택합니다.
중간쯤에 [New]를 선택 한 뒤 파일시스템 복구가 끝난 Raw 이미지 파일을 선택합니다.
이미지 Name을 클릭하면 내부 구조를 확인할 수 있습니다.
최상위 Entries 에서 Disk Image를 선택 후 하단의 [Report] 탭에서 저장매체에 주요 정보를 확인 할 수 있습니다.
바로 하위인 Disk Imager에서는 파티션에 있는 파일시스템 목록을 확인할 수 있으며, 파일시스템 별 주요 정보를 확인할 수 있습니다.
FTK Imager를 이용하여 저장매체, Raw 이미지 비교를 해보도록 하겠습니다. 이미지 획득 시 추가했던 방식으로 Physical Drive 로 추가하고(EnCase로 Local Drive 추가와 동일) 파일시스템 복구한 Raw 이미지를 추가하고 Properties를 한번 비교해보면 약간은 다른 정보를 확인할 수 있습니다.
E01, Ex01 파일로 이미징 할 경우 raw 데이터 이미징을 압축하면서 추가적으로 다양한 정보를 저장할 수 있습니다. E01 파일 내에 Serial Number와 같은 저장매체 정보 등을 추가로 저장 하는 것 입니다.
저장매체의 해시값은 위에서 이미지 획득 시 로그 등에서 확인이 가능합니다. 혹시나 수집한 이미지를 다시 해시값을 확인해보고 싶다면 FTK Imager에서 해시값을 다시 획득할 수 있습니다. 최상위 선택 후 [Verify Drive/Image..] 선택합니다. [파일시스템 복구 전 원본 저장매체 해시값 획득] - MD5: a587fbb2823458234810c19991eebdd4 - SHA1: 793082e384c2f98f7226a2046ff5cb751e958800
시험에서 문제로 나올 경우 살펴봐야 하는 부분을 살펴봅시다. 시험에서 저장매체의 전체 용량을 물어볼 경우 우선 저장매체는 섹터 단위로 번호를 매겨 저장합니다. 즉, 섹터 수 X 섹터 단위 크기 하면 저장매체의 전체 용량이 나옵니다. 최상에서 저장매체 [Report]에 마우스를 대고 우클릭 - Copy 를 한 뒤 메모장 등에 붙여넣기하여 필요한 부분만 사용하면 됩니다. 시험에서 저장매체의 전체 용량, 전체 섹터 수를 물어볼 경우 이 부분을 답안 작성에 활용합니다.
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 실제 시험에서는 정확하게 바이트 단위를 작성해야 합니다. EnCase에서는 계산을 해주니 바로 활용하도록 합시다.
만약 파티션이 존재하는 저장매체의 경우 디스크 서명이 포함됩니다. 아래 그림과 같이, 해당 영역에 서명 정보가 저장됩니다. - 디스크 서명 : 01 0A AF 45 (리틀엔디안) -> 45 AF 0A 01 (답안용 값) EnCase에서는 디스크 서명을 바로 확인할 수 있습니다.
[FTK Imager에서 확인 하는 법 - 고정 위치입니다. 외워야 합니다. ㅠㅠ]
다만, 처음부터 파일시스템으로 시작하는 저장매체의 경우 디스크 서명이 포함되지 않습니다. (이 부분은 뒤에서 살펴보도록 합시다.)
사실 파티션 분석은 크게 의미가 없고 시험에서도 거의 나오지 않습니다. 다만 기본 개념만 한번 살펴보도록 하겠습니다.
EnCase 의 Disk Imager에서 파티션 부분을 살펴봅시다. C, D 의 [Report] 탭에서 밑으로 내리면 Partition 정보를 확인할 수 있습니다.
파티션의 경우 시작 위치, 사용하는 섹터 수, 마지막 섹터 번호만 알고 있으면 사실상 다 아는 것입니다. [파티션1] - 파티션 1 섹터 범위 : 128섹터 ~ 3,145,855 섹터 (사용 섹터 수: 3,145,728) - 파티션 1 크기 : 3,415,728 X 512 (섹터 크기) = 1,610,612,736 bytes = 1,536MBytes [파티션2] - 파티션 2 섹터 범위 : 3,145,856 섹터 ~ 4,188,287섹터(사용 섹터 수: 1,042,432) - 파티션 2 크기 : 1,042,432 X 512 (섹터 크기) = 533,725,184 bytes = 509 Mbytes EnCase에서 최상위에서도 파티션 정보를 표시해주고 있으니 시험에서 관련 문제가 나오면 이 부분들을 살펴보면 됩니다.
GPT 파티션 테이블 구조에서 시험에 혹시나 나올 법 한 부분을 한번 살펴보겠습니다. 이런게 있구나 정도만 알아도 되니 추후에 GPT 분석 시 한번 확인 정도만 해보시길 권장합니다. 포렌식 도구 입장에서도 파티션 테이블은 단순히 영역을 구분한 것이기 때문에 MBR 분석과 크게 다르지 않습니다.
[실습용 VHD]
[EnCase] Raw 이미지 생성 후 Add Evidence - Add - Raw Image 선택 후 New에서 Raw 이미지를 추가 합니다.
이후에는 MBR 파티션 분석과 동일한 영역에서 확인할 수 있습니다.
Disk Image 선택 후 파일시스템 영역을 선택하면 파티션 정보를 확인 할 수 있습니다.
[FTK Imager] GPT 파티션의 경우 아래와 같이 해당 파티션을 클릭 하면 Properties에 GUID 관련 내용이 보입니다. - Partition Type GUID : 파티션 타입 종류 - Unique Partition GUID : 파티션 고유 번호(운영체제가 랜덤으로 설정)
만약 시험에 출제된다고 한다면 Unique Partition GUID 정도를 물어보지 않을까 싶네요! (실제로 시험에 출제된 적은 없는 것으로 알고 있습니다.)
항상 시험에 자주 나오는 단골 문제로 파일시스템에 주요 분석 값을 물어봅니다. 정확히 무엇을 요구하는지 확인 후 답안 작성에 활용하도록 합시다.
NTFS 파일시스템을 살펴보면 시험에서 주로 물어보는 대부분의 내용이 포함되어 있습니다.
먼저 클러스터의 경우 섹터 여러개를 묶어서 하나의 클러스터 단위로 관리합니다. 이미 섹터가 있는데 왜 굳이 또 클러스터로 묶는 이유는 점점 용량이 커지면서 대용량의 파일을 저장할 때에는 여러 섹터를 묶어서 활용하는 것이 효율적이기 때문입니다. NTFS에서는 이렇게 묶는 단위를 클러스터라고 하며, 다른 파일시스템에서는 블록 등으로 다른 명칭으로도 사용합니다. 시험에 주로 출제되는 NTFS, FAT32의 경우 클러스터 단위로 사용합니다. 파티션에 있는 파일시스템 영역을 살펴보면 파일시스템과 관련된 정보를 확인할 수 있습니다.
파일시스템 전체 섹터 수(Total Sectors) : 3,145,728 섹터
파일시스템 전체 크기(Total Size) : 3,145,728(전체 섹터 수) X 512 = 1,610,612,736 bytes = 1,572,864 Kbytes = 1536 MBytes = 1.5Gbytes
클러스터 크기(Cluster Size) : Sector per cluster X Bytes per sector = 8 X 512 = 4096 bytes
클러스터 당 섹터 수(Sectors per cluster) : 8 섹터
클러스터 수(Cluster Count / Total Cluster) : 393,215 클러스터
가용 용량(데이터 저장이 가능한 전체 용량, Total Capacity) -> 클러스터 크기 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 시리얼 넘버) (답안 작성시에는 Serial Number, Full Serial Number 모두 작성 추천)
다음 파티션의 파일시스템을 분석해봅시다.
[Report]에서 위에 NTFS와 동일하게 내역 확인이 가능합니다.
파일시스템 전체 섹터 수(Total Sectors) : 98,304 섹터
파일시스템 전체 크기(Total Size) : 98,304(전체 섹터 수) X 512 = 50,331,648 bytes = 49,152 Kbytes = 48 Mbytes
클러스터 크기(Cluster Size) : Sector per cluster X Bytes per Sector = 1 X 512 = 512 bytes
클러스터 당 섹터 수(Sector per cluster) : 1 섹터
클러스터 수(Cluster Count) : 90,112 클러스터
가용 용량(데이터 저장이 가능한 전체 용량) -> 클러스터 크기 X 클러스터 수 = 512 X 90,112 = 46,137,344 bytes = 46,137,344 / 1024 = 45,056 Kbytes = 44 Mbytes
Volume Serial Number : 1C3E-492F / 리틀엔디안을 변경
Volume Label : 파일연습
Report에서 보면 Volume Label 값이 깨져 보입니다. 한글이 잘 안보이는 경우 다른 방법을 이용하여 확인이 가능합니다. 먼저 FAT32 파일시스템의 데이터 시작 부분을 선택하면 가장 처음 8바이트는 Volume Label 값을 저장합니다. 다만 Codepage가 한글이 아니여서 잘 안보이네요!
Code Page - Code pages를 선택 한 뒤 Other의 Korean 을 찾아서 OK 한 뒤에 살펴보면 FAT32 파일시스템 데이터 영역 가장 처음 위치에 Volume Label을 확인할 수 있습니다.
이 부분은 한번만 읽어 보시면 됩니다. 도구가 모두 해주기 때문에 외울 필요 없습니다.
저장매체의 전체 섹터 수는 큰 고민 없이 저장매체의 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 클러스터 크기 > 기출문제 유형에서 다시 한 번 정리하여 살펴봅시다.
기출문제 중에서 파티션이 없이 처음부터 파일시스템으로 시작하는 경우도 출제되었기 때문에 살펴보도록 하겠습니다.
먼저 FTK Imager 에서 Partition 1번을 선택 후 Export Disk Image를 선택하도록 하겠습니다. 이후 Add 를 클릭 한 뒤 DD(raw)이미지를 생성하여 봅시다.
생성한 이미지를 EnCase로 열게 되면 처음부터 NTFS 시작인 파일시스템을 확인할 수 있습니다. 실제 USB를 이미징을 하였을 때 아래와 같은 형태를 가집니다. 이후 분석은 동일합니다.
이 경우에도 파일시스템이 훼손될 수 있으며, 파일시스템 복구를 하여야 합니다. 이 경우, 처음부터 NTFS의 BR이기 때문에 디스크 시그니처가 있을 수 없습니다. Entries 에서 저장매체 정보가 아닌 파일시스템 정보가 표시됩니다.
MBR이 없는 파일시스템 분석 이미지를 만들어 보고 자 하는 경우 이전 자료를 활용해보시길 바랍니다. > 3-3) 파일시스템 복구 실전 연습
저장매체 정보 관련 문제는 도구가 대부분 표시해주기에 믿고 답안 작성에 활용하면 됩니다. 또한 최근 시험에는 배점이 매우 낮거나, 사실상 출제되지 않는 경우도 있는 실정입니다.
기출 문제 유형
[필수] 원본 저장매체의 해시값을 구하라 > 파일시스템 복구 전에 최초의 저장매체의 해시값을 구해야 하며, 보고서 작성등에 꼭 포함
원본 저장매체의 시리얼 넘버를 구하라 > 파일시스템의 시리얼 넘버, 윈도우 분석에서 연결된 USB의 시리얼 넘버와 혼돈하지 말아야 한다.
복구한 파일시스템의 종류 전체섹터 수, 전체용량, 가용용량, 볼륨시리얼넘버를 구하라. > 시험 문제에서 "~의 전체 용량을 구하라!" 고 할 경우, 저장매체인지, 파일시스템인지, 어떤 파티션의 파일시스템인지 정확히 작성해야 한다. 전체용량인지 가용용량을인지 정확히 구분하여 작성한다. *문제에서 정확히 지칭하지 않은 경우 모두 작성 > NTFS의 경우 Full 시리얼 넘버를 포함한다.
NTFS, FAT32 파일시스템의 클러스터 크기, 클러스터 당 섹터 수를 구하라. > 단위를 정확히 작성한다.
만약 가상디스크가 아닌, USB나 실제 하드 디스크를의 피지컬 정보를 보면 저장매체의 시리얼 넘버를 확인할 수 있습니다. 개인 PC의 다른 하드디스크를 피지컬로 추가하여 열어보시면 확인할 수 있습니다. USB나 하드디스크를 FTK Imager로 이미지 획득 후 로그에는 드라이브 시리얼 넘버도 포함됩니다. 그런데 왜 Raw 이미지에는 드라이브 정보가 없을까요? 기본적으로 아무것도 저장되지 않은 저장매체는 가장 처음에 0번 섹터부터 마지막 섹터까지 모두 00으로 데이터 영역에 저장됩니다. 저장매체 자체에 내장된 저장매체의 정보를 데이터 영역에 저장하지 않는 것입니다. 윈도우는 내장된 정보를 읽어오고, FTK Imager와 같은 도구들도 내장된 정보를 가져와서 볼 수 있는 것입니다. 반면 Raw 이미지는 데이터 영역만 저장하기에, 저장매체의 내장된 정보를 따로 저장하지 않습니다. 이러한 특성을 이해하고 있어야 합니다. 실제 시험에서 저장매체(USB) 자체의 식별번호(Serial Number)를 물어본다면 Raw 이미지 에서는 알 수 없고 이렇게 피지컬 드라이브로 연결하거나 이미지 획득 로그를 살펴봐야 합니다. USB를 FTK Imager로 이미지 획득 시 생성되는 로그에서 확인이 가능합니다. 즉, 이미지 획득 후 로그에 저장된 해시값, 시리얼 넘버, Drive Model 등을 잘 살펴봐야 합니다.
아래 가상 드라이브를 Raw 이미지 획득 후 아래 실습을 진행하였습니다. (GPT 만들기 복구 연습) >
Volume Label : Win10 (참고) - FTK Imager의 경우 아래와 같이 NTFS의 구조를 분석해서 보여주고 직접 분석해도 되지만 도구를 사용하면 따로 분석할 필요는 없습니다. >
가상디스크 자체를 복구하여 확인하면 실제로 확인이 가능합니다. >