본문 바로가기

Kitri_NCS3기 보안과정/디지털포렌식

170426 NTFS 에서 MBR , VBR 복구해보기

가상장치에 로드되는 윈도우 7 파일을 실습대상.

현재 이 파일은 어떤 영역이 HASTATI라는 글자로 덮어씌워졋다. 

어떤 영역인지 어떻게 복구하는지 알아보자!


HxD 로 열어본 win 7

VMDK 가보인다. 가상장치의 구조는 하드와는 조금다르다. 처음 시작은 MBR 아닌 VMDK의 헤더이다. MBR을 찾기위해선 VMDK의 헤더를 분석해야 한다. VMDK 에서 MBR의 시작위치는 offset 40 ~ 47에 있다.

28 80 이다. (리틀엔디안 방식이기 때문)

0x2880 = 10368 이므로 

10368 섹터로 이동하자

MBR의 영역이 HASTATI. 글자로 덮어 씌워진것을 확인 할 수 있다. 

HASTATI로 검색을 더 해보니 

10496 섹터와 15616 섹터에서 확인 할 수 있었다. 

10368 = MBR

10496 = VBR 

15616 = VBR

이라는걸 예상할 수 있다.


오늘 실습에 사용한 복구 방식은 다음과같다 . 

- MBR : 정상 MBR + partition table 수정 + 디스크시그니쳐 수정

- VBR : 백업을 이용한 복구


다른 MBR 을 가져다 쓰려면 Partition table 의 구조가 다를것이다. 이부분은 내가 복구할 partition table에 맞게 수정해서 넣어야 한다.


※ partition table

부팅값(1byte) + 00 00 00(3) + 파티션타입 (1) + 00 00 00(3) + 파티션 시작 위치(4) + 총 섹터 (4)


값을 구성하기위해 VBR을 확인해야 한다. VBR은 백업을 이용해 복구하기로 했으니 백업의 위치를 알아보자

FAT32 방식은 백업이 VBR+6섹터 이후에 있고, NTFS 방법은 VBR이 처음과 마지막섹터에 위치한다.

VBR에서 + 6섹터를 해서 백업이 있다면 FAT32 방식, 마지막 섹터( = 다음 VBR - 1섹터)에 있을 것이다.


확인결과 NTFS 방식으로 마지막 섹터에 백업값이 위치해 있는걸 확인 했다. 10496섹터에 덮어 씌운다.

두번째 VBR (= 마지막 파티션의 VBR) 의 백업은 시그니쳐값을 이용해서 찾아야 한다.

[ EB 52 90 4E 54 53 20 20 20 ] 을 검색하자.

(VBR과 비슷한 형식의 섹션이 몇가지 나왓는데  마지막에 검색된것이 맞다고함. 뒤에서부터 찾는게 빠르다. )

백업을 찾앗다. 15616자리에 덮어씌운다.

MBR 에서 Partition 값을 채워보자 

나중에 확인 할 수 있지만 부팅플래그는 두번째 파티션에서 설정한다.

첫번째 파티션에서는 

 내용 

오프셋 

부팅정보 

00 

CHS 시작주소 

00 00 00 

파티션 타입 

07 (NTFS)

CHS 마지막 주소 

00 00 00 

BR시작 주소 

 00 08 00 00    (0x800) 

total sector 주소 

00 20 03 00 (0x32000)


[ 00 00 00 00 07 00 00 00 00 08 00 00 00 20 03 00 ]의 값이 들어갈 것이다.

시작주소는 HASTATI의 시작(FTK파일에서 확인가능) 0x100000  / 0x200(512) = 0x800 으로 계산된다.

총 섹션은 

(백업위치 + 1 - 시작위치) / 512

(0x6500000 - 0x100000)/0x200 = 0x32000

파티션 테이블 1을 수정해준다. 


같은 방법으로 파티션 테이블 두번째도 수정해준다. 


 내용 

오프셋 

부팅정보 

08 

(이 파티션이 부트코드를 가지고 있다. 점프하겠다)

CHS 시작주소 

00 00 00 

파티션 타입 

07 (NTFS)

CHS 마지막 주소 

00 00 00 

BR시작 주소 

00 28 03 00    (0x32800) 

total sector 주소 

00 D0 FC 04 (0x4FCD000)


HASTATI로 감염된 부분에 MBR , VBR(partition1), VBR(partition2)의 내용으로 복구한다.




이렇게 복구를 해주면 FTK에서 확인해보면 정상적으로 파티션의 구조가 나오는걸 볼 수 있다.


하지만 정상적으로 파티션이 나온다고 부팅이 되는건 아니다. 

우리가 사용한 MBR은 다른곳의 시스템에서 정상적으로 작동하는 MBR에 파티션 테이블의 정보만 수정 했기 때문에 

디스크 시그니쳐 의 값이 다르다.

디스크 시그니쳐의 값은 

MBR [offset 440 ~ 443] 에 위치한다.

\Windows\System32\config\폴더에 저장되어있다.

SYSTEM 파일을 추출해 레디스트리 에디터로 하이브해서 확인해보자

HKEY_LOCAL_MACHINE을 선택하면 [파일]탭에서 하이브로더가 활성화 된다.

추출한 파일을 로드 하면 

MountedDevices 에서 디스크 시그니쳐 들을 확인할 수 있다. C: 의 값을 넣어야 하므로 78 6d ef 00 을 디스크 시그니쳐에 넣어주자


결과


음... 원래는 윈도우 이미지 파일이 정상적으로 실행되야 하나 파일의 문제인지 실행이안된다..


'Kitri_NCS3기 보안과정 > 디지털포렌식' 카테고리의 다른 글

170428 FAT32  (0) 2017.04.28
170427 사고대응과 분석 실습  (0) 2017.04.27
170426 NTFS - VBR(Volume Boot Record)  (0) 2017.04.26
170424 MBR  (0) 2017.04.24
170424 디지털포렌식 개요  (0) 2017.04.24