지금까지 살펴본 내용을 바탕으로 데이터 복구 실습을 한다.

지금 할 실습은 FAT32 파일 안에 존재하는 데이터를 긁어 파일을 추출하는 실습이다.

* 실습에 사용할 프로그램은 HxD 에디터와 FTK Imager이다.


FAT32.zip


우선 위 압축 파일을 받아 압축을 해제한다.

그러면 FAT32라는 파일이 나타난다. 이 파일을 복구하도록 한다.



1. MBR 확인


HxD 에디터로 FAT32 파일을 열어 MBR을 보면 위와 같다.

빨간색으로 표시된 부분은 각각 파티션 타입, VBR 위치, 파티션 크기를 나타낸다.

파티션 타입이 00 으로 되어 있는 것을 봐선 변조되어 있음을 알 수 있다. MBR에서 파티션의 타입을 확인할 수 없으니 일단 해당 파티션의 VBR로 가보자,



2. VBR 확인


VBR의 위치는 위 그림에서 빨간색 박스가 있는 부분을 보면 된다.

80 00 00 00 이라고 되어 있으며 이는 Little Endian 방식이다. 계산을 하면 128이 나온다.

VBR에서 확인해야 하는 부분은 위 그림에서 빨간 박스 부분들이다.

순서대로 파티션 시그니처, SP, RS, Hidden, FAT Size 이다. 모두 Little Endian으로 표기되어 있다.

> 파티션 시그니처 ⇒ MSDOS5.0 = FAT32

> SP = 0x04 = 4

> RS = 0xF619 = 6,646

> Hidden = 0x80 = 128

> FAT Size = 0x503 = 773



3. FAT 확인


FAT의 위치는 RS + Hidden 으로 6,646 + 128 = 6,774 이다.

FAT은 파일에 대한 데이터가 어디에 위치하는 지 알려주는데, 하나의 파일에 대한 정보를 4바이트로 담고 있다. 

처음 2개( 8 바이트 )는 사용하지 않으며 일종의 FAT이라는 시그니처를 담고 있다.


4. Root Directory 확인


Root Directory에 대한 정보가 있는 위치는 다음과 같이 계산할 수 있다.


6,774( FAT 1 시작위치 ) + 773×2( FAT 1, FAT 2의 크기 )  = 8,320

계산한 위치로 이동해보면 다음과 같다.

Root Directory를 보면 어떤한 데이터도 존재하지 않는다.

즉, Root Directory가 변조되어 있어 어떤 파일들이 존재하는지 알 수 없다.

이는 Root Directory를 이용해 어떤 파일이 존재하는지 알 수 없음을 의미한다.

파일을 복구하기 위해 FAT을 분석하자.



5. FAT 테이블 분석


FAT 테이블 정보를 보면 다음과 같다.

블럭영역이 첫번째 파일에 대한 정보이다.

FAT 테이블에는 파일에 대한 정보가 4바이트씩 저장된다고했다. 이를 이용해 분석을 하자.

우선 파일의 데이터가 11번째 ~ 35번째 까지 있음을 알 수 있다.

파일의 시작위치와 끝 위치를 계산하는 법은 다음과 같다.


- 시작위치

11 - 2( 시그니처 ) = 9

9 × 4( SP ) = 36

36 + 8320( Root Directory ) = 8356


- 끝 위치

35 - 2( 시그니처 ) = 33

33 × 4( SP ) = 132

132 + 8320( Root Directory ) = 8452


파일의 시작위치로 가보면 다음과 같다.

해당 파일이 PNG 파일임을 알 수 있다.

파일의 끝은 8452 섹터인데, 이 값은 해당 클러스터의 시작 위치이기 때문에 클러스터 크기만큼 더해줘야 한다. 클러스터 크기가 4이기 때문에 8452부터 4섹터인 8455 섹터까지 블럭지정을 한다.

위와 같이 [Edit] - [Select block] 을 이용하면 오프셋을 이용해 블럭 지정할 수 있다.

블럭지정한 데이터 부분을 복사해서 [새파일]을 눌러 붙여넣기 한다.

그리고 다음과 같이 'File1.png' 로 저장한다.

그리고 해당 파일이 제대로 열리는지 확인해보자.

위와 같은 이미지 파일이 열리는 것을 확인할 수 있다.


이제 두 번째 파일을 보도록하자.

두 번째 파일은 39번째 ~ 41번째에 있다.

첫번째 파일을 찾은 것과 같은 방식으로 계산을 하면 다음과 같다.

두 번째 파일의 시작 위치는 8468, 파일의 끝 위치는 8476 이다.

두 번재 파일은 jpg 파일임을 알 수 있다.

해당 데이터를 모두 복사해서 'File2.jpg' 파일로 저장하자.

해당 파일을 열어보면 다음과 같다.

다음 파일을 찾아보면 다음과 같다.

42번째 ~ 126번째

파일의 시작 위치와 끝 위치는 각각 8480, 8816이다.

해당 파일의 시작위치를 보면 다음과 같다.

이 파일도 PNG 파일임을 알 수 있다.

해당 데이터를 추출해 'File3.png'로 저장하면 다음과 같다.

이와 같은 방식으로 데이터를 추출해 낼 수 있다.

Posted by Imp3rio