Digital_forensic/File_system

[NTFS] MFT Entry에서 Cluster Runs를 활용한 파일 카빙

neck392 2024. 6. 11. 02:13

NTFS(New Technology File System)

한 섹터당 512 바이트로 구성

16진수 데이터 02 00은 십진수로 512

 

앵간한 파일 시스템은 00 02 08로 시작함 EB 52 땡땡은 점프 코드

 

볼륨 섀도우 카피는 컴퓨터가 만드는 경우(생성증거)와 사람이 만드는 경우(보관증거) 두가지가 있음

컴퓨터가 만드는 경우는 생성증거이기에 법정에서 쓸 수 있음 이 파일이 이 날짜에 있다고 타임라인에 끼워둘 수 있음

 

삭제된 파일인데 왜 카빙이 가능한가?

NTFS 뿐만이 아니라 FAT 등의 파일 시스템은 실제 클러스터에 저장된 내용을 삭제하는 것이 아니라 파일에 할당된 클러스터를 사용 가능한 상태로 바꾸어 클러스터들이 다른 파일에 할당될 수 있게 한다.

따라서, 이미 덮어 써진 파일은 복구가 불가능하지만 그렇지 않은 지워진 파일들은 복구가 가능


 

Little-Endian & Big-Endian

리틀 엔디안 방식과 빅 엔디안 방식 = 데이터를 저장하는 순서 차이

몇 비트마다 한 개의 데이터를 저장하는지에 따라 달라짐.

빅 엔디안: 상위 바이트를 먼저 저장

리틀 엔디안: 하위 바이트를 먼저 저장(mft entry는 리틀 엔디안 방식으로 저장되어있음. 읽을 때도 리틀 엔디안 방식으로 읽음)

주의: 읽는 방식에 있어서 단위에 따라 달라짐. 몇 비트(바이트) 씩 끊어 읽느냐에 따라 다름. 리틀 엔디안이든 빅 엔디안 모두 해당. 따라서 몇 비트 혹은 바이트 단위로 끊어서 읽느냐를 먼저 파악해야할 필요가 있음


 

Cluster Runs

섹터와 클라스터는 가변적이다.

 

속성 확인, Non-Resident 일 경우 별도의 클러스터를 할당하여 내용을 저장 그 부분을 분석 함.

 

과정: 각 데이터의 시작과 끝 오프셋을 구하고 블록을 추출하여 데이터를 복원함

파일 카빙: 메타데이터가 아닌 파일 자체의 바이터리 데이터를 이용하여 디스크 비활당된 영역에서 복구

 

Using Tools : NTFS walker, HxD(HEX editor), 010 editor, FTK Imager

 

 

BPB(BIOS Parameter Block) 영역 확인

<NTFS 파일 시스템에서의 BPB>

 

MFT strat Offset : C000 * 8(Cluster 당 섹터 수) * 200(1섹터당 512바이트 HEX 값)

 

 

<MFT Cluster Runs 분석 >

 

 

시작위치 : Logical Cluster Offset(Dec)

끝위치 : Run Length(Dec)

Start : Logical Cluster Offset부터 시작

End : Logical Cluster Offset 값 + Run Length까지

< Cluster Runs data >

 

 


 

 

Q&A

Q1. Run Cluster Offset과 Run Length를 이용하여 각각의 Logical Cluster Offset을 구하고, 그 오프셋에 접근해 보았는데 누가봐도 파일 중간 부분부터 접근댐

 

A1. Run Cluster에 음수 값이 존재함 NTFS 안의 MFT에 파일 데이터를 write하는 과정에서 빈 공간을 효율적으로 사용하기 위하여 데이터를 무조건 순차적으로 저장하지 않음. 따라서 Logical Cluster Offset을 구하는 과정에서 음수 값이 올 수 있음. 무조건 값을 더하는 것이 아니라 16진수 값의 바이너리 데이터를 확인하여 음수이면 그 값만큼 빼줘야함.

 

Q2. 그렇다면 Run Cluster 의 바이너리 데이터가 음수 값임을 어떻게 알 수 있음?

A2. 2의 보수, -8의 이진 값 등에 대한 지식 필요

2's complement 체계에서 덧셈과 뺄셈은 signed, unsigned를 구별하지 않고 그냥 연산함 곱셈과 나눗셈은 각 연산방식이 다름

음수야 양수는 인식의 차이이지 표현의 차이가 아님

 

Q3. 나누어진 바이너리 데이터들은 하나의 파일이 분할되어 저장될 수 있다.(Q1데이터를 연속적으로 저장하지 않음) 따라서 MFT에서 데이터의 위치 정보를 구하고 그 데이터들을 하나의 데이터로 합하는 과정이 필요하다. 어떻게?

A3. NTFS Walker 프로그램 이용?