이전 포스팅에서 데이터를 추출하는 실습을 했다.

이번에 할 실습은 변조된 vhd를 복구시키는 실습이다.



  - [FAT32_2_1] 파일은 압수한 USB의 vhd 파일이다.



  1. 위의 이미지는 VBR영역과 FAT영역 일부가 손상되었다.

  2. 파일시스템이 정상적으로 동작할 수 있도록 손상된 데이터를 복구하시요.

  3. 정상적으로 작동하는지 가상디스크에 장착하여 확인하시요. 




* 실습파일( LINK )


다운로드 한 실습파일을 압축풀면 FAT32_2_1 파일이 만들어진다.

해당 파일을 FTK Imager로 열어보면 다음과 같이 나타난다.


파티션이 하나 있지만 어떠한 데이터도 존재하지 않는 것을 알 수 있다.

해당 파일을 HxD 에디터를 이용해 열어보면 다음과 같다.

빨간 박스로 표시된 부분을 보면 FAT32로 파티션 되어있는 것을 알 수 있다.

하지만 FTK Imager로 열었을 때 해당 파티션에서 데이터를 확인할 수 없었다.

FAT32의 VBR을 찾아가 보면 다음과 같다.

표시된 부분이 변조되어 있다.

순서대로 Byte per Sector, SP, RS, Hidden, Total Partition Size, FAT Size이다.

Hidden, Total Partition Size 부분은 알 수가 있다.

VBR의 위치가 128이기 때문에 Hidden은 80 00 00 00이다.

그리고 Total Partition Size 정보는 MBR에 나와 있다.

SP의 경우 기본적으로 512 바이트를 사용하며, 2048 바이트를 사용하기도 한다.

이를 토대로 수정한 VBR은 다음과 같다.

현재 확인할 수 없는 것들은 SP, RS, 그리고 FAT Size이다.

SP의 값을 찾기 위해 FSINFO 부분을 가면 다음과 같다.

표시된 부분은 남은 클러스터의 수와 다음에 할당할 클러스터에 대한 정보이다.

남은 클러스터의 수를 보면 D8 C0 07 00으로 이 값을 계산하면 508,120이다.

그리고 파티션의 총 크기는 앞서 본 것처럼 00 81 1F 00이며 이 값은 2,064,640이다.

즉, 508,120 을 4배하면 대략 총 크기와 비슷하다는 것을 확인할 수 있다.

이 말은 SP가 4임을 알 수 있다.( Sector 단위는 64바이트이기 때문이다. )


다음에 확인할 것은 Root Directory인데,  RS를 모르기 때문에 Root Directory를 찾아갈 수가 없다.

우선 FAT 테이블을 확인하기 위해 FAT의 시그니처 8F FF FF 0F 를 찾아가 보자.

12459 섹터에 FAT 테이블이 존재한다. VBR에서 FAT이 2개있음을 확인했다. 해당 섹터 이후에 FAT 테이블이 존재하는 지 확인해보자.

해당 시그니처는 더 이상 없는 것을 확인할 수 있다. 따라서 12459 섹터에 있는 FAT 테이블은 2 번째 테이블임을 추측할 수 있다. 즉, 위 어딘가에 FAT 1이 있음을 알 수 있다.


문제에서 USB의 vhd라는 힌트를 줬기 때문에 USB 문자열을 찾아보자.

그러면 위와 같이 16512 섹터가 탐색이 되며, 구조를 보면 Directory Entry의 구조를 갖고 있다.

이를 통해 FAT Size를 구할 수 있는데 계산은 다음과 같이 한다.

16,512( Directory Entry ) - 12,459( FAT 2 ) = 4,053

이제 FAT 1의 위치를 다음과 같이 구할 수 있다.

12,459 - 4,053 = 8406


해당 위치로 가보면 다음과 같은 화면을 볼 수 있다.

FAT 1의 데이터가 모두 변조되어 있음을 알 수 있다.

FAT 2의 데이터를 복사해 FAT 1에 붙여 넣자.

위와 같이 수정을 하고 VBR을 수정한다.

RS와 FAT Size를 수정해야 하는데, FAT Size는 4,053임을 알았다.

RS는 다음과 같이 구할 수 있다.

8,406( FAT 1 ) - 128 = 8,278

4,053과 8,278 을 16진수로 바꾸면 각각 0xFD5, 0x2056이다.

이 값들을 리틀엔디언으로 수정하면 다음과 같다.

이제 파일을 저장한 뒤 FTK Imager로 열어보면 다음과 같은 화면을 확인할 수 있다.


Posted by Imp3rio