가상장치에 로드되는 윈도우 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 |