1. NTFS 파일 시스템의 구조
- Boot Sector (VBR): 파티션 정보
- Master File Table(MFT): 파일 및 디렉토리 관리를 위한 정보
- Data: 실제 데이터 저장
2. VBR 구조
- 파일 시스템 시그니처: Jump boot code+OEM Name
- BPS: 볼륨에 할당된 섹터크기 => 0x200(512byte)으로 고정
- SP: BPS*SP=해당 볼륨에서 사용하는 사용자지정 클러스터(파일 입출력 단위) 크기/보통 8개
- Total Sectors: 해당 볼륨에서 사용하는 총 섹터 수=MBR에 기록된 섹터 수 -1
- Start Cluster for MFT: MFT 시작 주소
- Start Cluster for MFT Mirr: MFT Mirr(MFT의 백업본) 시작 주소\
- Serial Number(8Byte): 해당 볼륨 ID
3. MFT 추적
- MFT 영역 = VBR 시작주소 + (Start MFT * SP)
- 실제 MFT 데이터 영역은 예약된 MFT 영역 이후에 저장
- 실제 데이터 영역 = MFT 영역 + 70 (= 0x23 * 2)
4. MFT 구성
-
24개(0~23)의 entry
-
MFT 한 개의 영역은 1024 Byte(2sector)로 구성
-
0x10: $Standard_Infromation (SI) 시간 정보(생성/접근/수정)
-
0x30: $File_Name(FN) 파일 이름 & 파일 이동 /수정 등의 시간 정보
-
0x80: $DATA 파일 내용
5. MFT 헤더
- 속성 정보(4Byte): 0x10 00 00 00
- 전체 속성 길이(4Byte)
- 시간 정보(8Byte씩 4개)
7. $File_name 구조
- 속성 정보(4Byte): 0x30 00 00 00
- 전체 속성 길이(4Byte)
- 시간 정보(8Byte씩 4개)
- 파일 이름(8byte)
8. $DATA 구조
- 속성 정보(4Byte): 0x80 00 00 00
- 전체 속성 길이(4Byte)
실습
- 보유한 NTFS 파일 시스템 기반의 E01파일을 마운트 후 Disk Editor로 분석
1. MBR
- VBR 주소: 0x0800 = 2048 sector
- Total sector: 0x0FA000=1024000
2. VBR
- Sector #2048 (0x800)
- SP: 8
- Total sector: 0x0F9FFF=1023999
- Start Cluster for MFT: 0xA6AA
- Serial Number: 0x922CFFDB 2CFFB875 (*32-bit 일때는 좌측 4Byte만)
3. MFT
MFT = VBR 시작주소 + (Start MFT SP) = 2048 + (0xA6AA 8) = 2048 + 42666 *8 = 343376
- Bitmap: 0x01 => 삭제되지 않은 파일
-시간정보: 생성시간/수정시간/MNT시간/접근 시간
2) $File_name
3) $Data
4. 실제 데이터 영역
5. 파일 정보 분석
1) 파일 정보
- 파일 이름: Reload.xml
- 시간정보: Standard_Information의 수정시간 & MFT 시간만 변화=> 수정됨
2) 파일 위치
*Resident & Non-Resident
- Resident: MFT엔트리 내부(1024Byte)에 모든 내용을 저장
- Non-Resident: 새로운 클러스터에 데이터 저장/보통 데이터 크기 700Byte 이상
- Non-Resident => 클러스터 런
- 클러스터 런: 0x 21 01 30 09 00 00 00 00
- 할당된 클러스터 크기: 0x01
- 클러스터 시작 주소: 0x0930
*클러스터 런 분석
- 첫 바이트 중 앞부분: 클러스터 시작 주소 (Offset)
- 첫 바이트 중 뒷부분: 할당된 클러스터 크기 (size)
- 주소: OffsetSP + VBR = 0x09308 + 2048 = 2352*8 + 2048 = 20864
6. 삭제된 파일
-
파일 이름: Recovery.txt
-
Flag: 0x00 => 삭제됨
-
시간 정보
-
2016.11.20 15:49
-
모든 시간 정보 동일 => 삭제된 파일