Windows Forensic/Partition Recovery & Bitlocker Recovery

[Digital Forensic] Partition Recovery Analysis

DF_m@ster 2023. 12. 30. 09:00

Partition Analysis

분석하려는 디스크의 특정 파티션에 접근이 불가능할 때, 파티션 복구가 필요하다. 파티션 복구가 필요한 경우에는 MBR의 Partition Entry가 훼손된 경우와 VBR의 Boot Sector가 훼손된 경우로 두 가지가 있다. 이 경우 FTK Imager에서 Evidence Tree에 디스크를 업로드했을 때, 각각 Recoverd, Unrecognized File System으로 표기된다. 두 경우 모두 E01 파일로는 복구가 불가능하며, RAW(dd) 파일로 만 복구가 가능하다.

 

Recoverd, Unrecognized File System의 경우를 직접 훼손하여 적용해 보고 복구해 보기 위해 디스크를 생성하였다.

디스크는 Partition 1(이름: 첫 번째, 40MB), Partition 2(이름: 두 번째, 45MB), Partition 3(이름: 세 번째, 55MB), Partition 4(이름: 네 번째, 60MB), Partition 5(60MB)를 포함한 203MB 크기의 MBR 디스크(훼손 전.vhd)이다.

 

아래는 FTK Imager의 Evidence Tree에 디스크를 업로드한 결과이다. 특징으로는 네 번째 Partition은 extended partition이고, FAT32 파일 시스템이 적용된 파티션은 다섯 번째 파티션으로 논리 파티션이다. 4개의 Partition(1, 2, 3, 5)이 모두 정상적으로 열리는 모습이다. 각 파티션의 순서 구분을 위해 해당 이름과 크기를 적용하였다.

훼손 전

 

 

 

Partition Damaged

Recovered

먼저 MBR에서 Partition 2의 Partition Table Entry를 '0x00'으로 채우는 과정이다. MBR의 두 번째 Partition Table Entry(연두색 영역)로 해당 영역을 '0x00'으로 채운다.

Partition 2의 Partition Table Entry를 '0x00' 채우기 전
Partition 2의 Partition Table Entry를 '0x00' 채운 후

 

Unrecognized File System

아래는 Partition 3의 VBR에서 Boot Sector를 모두 '0x00'으로 덮는 과정이다. 먼저 Partition 3의 VBR에 접근하기 위해 MBR에서 Partition 3의 Partition Table Entry에 존재하는 Starting LBA을 계산한다. MBR에서 Partition 3의 Starting LBA는 0x02 A8 80으로 이는 174,208번 섹터에 해당한다. 해당 섹터에 NTFS의 Boot Sector가 존재하며 다음 섹터에 'BOOTMGR'또한 존재한다. Boot Sector를 '0x00'으로 채운다.

Partition 3의 Boot Sector를 '0x00' 채우기 전
Partition 3의 Boot Sector를 '0x00' 채운 후

 

아래는 Partition 5의 VBR에서 Boot Sector를 모두 '0x00'으로 덮는 과정이다. Partition 5는 논리 파티션이기 때문에 MBR에서 네 번째 Partition Table Entry인 Extended Partition Table Entry에 존재하는 Starting LBA를 계산하여 네 번째 파티션인 확장 파티션에 접근하고 추가적으로 이후에 Partition 5에 접근해야 한다. MBR에서 네 번째 Partition Table Entry(Extended Partition Table Entry)의 Starting LBA는 0x04 60 80으로 이는 286,848번 섹터에 해당한다. 해당 섹터는 Partition 4인 확장 파티션으로 Partition Table Entry가 하나 존재하며, 해당 Partition Table Entry는 FAT32를 의미하는 Partition Type인 '0x0C'가 존재하고, Starting LBA를 계산하여 Partition 5에 접근이 가능하다. Starting Sector of Partition VBR은 0x80으로 10진수로는 128이고, 286,976(286,848 + 128)번 섹터가 Partition 5의 Boot Sector가 존재하며 다음 섹터에 'RRaA'또한 존재한다. Boot Sector를 '0x00'으로 채운다.

Partition 4 (주 확장 파티션)
Partition 5의 Boot Sector를 '0x00' 채우기 전
Partition 5의 Boot Sector를 '0x00' 채운 후

 

아래는 FTK Imager에서 Evidence Tree에 디스크를 업로드한 결과이다. Partition 1은 정상적으로 열리나, Partition 2는 [Recovered]라는 문구와 함께 Partition 1으로 일반 파티션 이후의 순서로 존재한다. 이때 파티션의 내부 Tree 구조 정보를 제공하는데, 이는 FTK Imager가 복구한 것이 아닌 임시로 보여주는 것이다. Partition 3, Partition 5는 이하에 Unrecognized File System 문구와 함께 이하 Tree 구조 정보를 제공하지 못하는 모습이다.

훼손 후

 

 

 

Partition Recovery

Recoverd: MBR의 Partition Table Entry가 훼손 된 경우이다. 바로 Autopsy에서 분석이 가능하지만 복구가 필요한 경우 Partition Table Entry의 값을 계산하여 덮어써 복구해야한다.

Unrecognized File System: Boot Sector가 존재하지 않아 이하의 디렉터리 계층 구조에 접근할 수 없는 경우이다. Boot Sector의 백업본을 찾아 기존의 Boot Sector에 덮어써 복구해야한다. FAT32와 NTFS의 Boot Sector 백업본은 각각 '기존의 Boot Sector +6 섹터'와 '파티션의 마지막 섹터'에 존재한다.

 

1. Recovered Case

위의 경우에서는 Partition 2의 경우이다. 실제로 분석할 때에는 어떤 Partition의 Partition Table Entry가 훼손된 Partition인지 모른다. 이를 추측하기 위해서는 FTK Imager에서 Partition 2가 존재하지 않는다는 점과 [Recovered] Partition 하나가 존재한다는 정보를 통해 Partition 2(두 번째 파티션)의 Partition Table Entry가 훼손되었음을 추측할 수 있다. MBR의 Partition Table Entry를 직접 분석해도 된다.

 

복구 시 분석 할 디스크를 FTK Imager의 Evidence Tree에 업로드하고, [Recovered]가 포함된 Partition을 선택하면 Partition Information에서 Starting Sector와 Sector Count 정보를 확인 할 수 있다. 또한 파일 시스템은 NTFS이고, 내부 구조를 살펴보면 OS가 존재하지 않는다. 해당 정보를 조합하여, Partition Table Entry의 일부를 완성하고 해당 MBR의 Partition Table Entry에 덮어 쓰면 복구가 가능하다.

 

Starting Sector: 82,048 = 0x14080 0x80 40 01 00

Sector Count: 92,160 = 0x16800  0x00 68 01 00

Partition Table Entry: 0x00 ?? ?? ?? 07 ?? ?? ?? 80 40 01 00 00 68 01 00

MBR의 Partition Table Entry 복원

 

 

 

2. Unrecognized File System Case

위의 경우에서는 Partition 3, 5의 경우이다. MBR에서 Partition Table Entry를 참조하여 Partition 3와 Partition 5의 VBR에 접근하면 Boot Sector가 없는 모습을 확인할 수 있다.

복구 시 MBR에서 복구하려는 파티션(Partition 3, Partition 5)의 Partition Table Entry를 참조하여 파티션의 VBR에 접근하고, 파일 시스템 별로 Boot Sector의 백업본을 찾아 삭제된 Boot Sector에 덮어쓰면 복구가 가능하다.

 

아래는 MBR로 Partition 3의 Partition Table Entry(빨간색)와 Partition 5 접근에 필요한 Partition 4의 Extended Partition Table Entry(연두색)이다.

MBR

 

 

 

NTFS Partition Recovery

Partition 3의 Partition Table Entry에서 Partition Type은 0x07로 파일 시스템은 NTFS이고, NTFS의 Boot Sector 백업본은 파티션의 마지막 섹터에 위치한다. NTFS에서 Boot Sector의 백업본(파티션의 마지막 섹터)은 'Starting LBA + Size in Sector - 1'이므로, Starting LBA, Size in Sector 값을 알아야 한다. 각각의 정보는 Partition Table Entry에 존재한다.

 

이를 계산하면 Starting LBA는 0x2A880으로 174,208번 섹터, Size in Sector는 0x1B800으로 112,640 섹터가 되고, Boot Sector의 백업본은 286,847(174,208 + 112,640 - 1)번 섹터이다. 해당 섹터에서 Boot Sector를 복사하여, 원래 Boot Sector '174,208'번 섹터에 붙여넣기 쓰기(Ctrl + B)를 하여 덮어쓴다.

훼손된 Boot Sector
Boot Sector 백업본
NTFS Boot Sector 복원

 

 

 

FAT32 Partition Recovery

Partition 5의 Partition Table Entry에서 Partition Type은 0x0C로 파일 시스템은 FAT32이고, FAT32의 Boot Sector 백업본은 여섯 번째 다음섹터에 위치한다. FAT32에서 Boot Sector의 백업본은 'Starting LBA + 6'이므로, Starting LBA 값을 알아야 한다. 해당 정보는 Partition Table Entry에 존재한다.

 

Partition 5는 논리 파티션으로 Partition 4인 확장 파티션의 Partition Table Entry를 참조해야한다. 해당 과정은 앞에서 설명했으므로 생략한다. 결과적으로 Starting LBA는 286,976번 섹터이고, 백업본의 섹터는 286,982(286,976 + 6)번 섹터이다. 해당 섹터에서 Boot Sector를 복사하여, 원래 Boot Sector '286,976'번 섹터에 붙여넣기 쓰기(Ctrl + B)를 하여 덮어쓴다.

훼손된 Boot Sector
Boot Sector 백업본
FAT32 Boot Sector 복원

 

 

 

Result

아래는 파티션 복구 이후 디스크를 저장하고, FTK Imager의 Evidence Tree에 복구된 디스크를 업로드한 결과이다. Partition 1, Partition 2, Partition 3, Partition 5가 모두 복구 메시지 없이 이하의 계층구조가 정상적으로 열림을 확인할 수 있다.