디지털 포렌식 정리 #6 (MBR)

0

디지털포렌식

목록 보기
76/115

Q. MBR 이란?

A. Master Boot Record. 컴퓨터를 Booting 할 때 필요한 Boot code와, Partition Table의 정보를 저장하고 있는 공간이다. "첫 번째" 섹터에 저장되어 있다. (0번 섹터) 총 512 byte로 이루어져 있으며 각각의 구성은 다음과 같다.

  • 파티션 별로 각각 다른 운영체제, 파일시스템이 적용되는데, 그러한 구분을 인식하기 위해 파티션 테이블 엔트리를 기록하고 있는 것이다.
Byte Range설명
0 - 445Boot code
446 - 461Partiton table entry 1
462 - 477Partiton table entry 2
478 - 493Partiton table entry 3
494 - 509Partiton table entry 4
510 - 511Signature (0x55AA)
  • Boot code : Boot strap code : OS를 부팅시키기 위해서는 부트 파티션(active partition)을 찾아서, 해당 파티션의 MBR의 Boot code, 즉 BootStrapCode를 실행한다

추 후에 다른 게시글로 작성할테지만,
1. MBR의 경우 보는 것 처럼 4개의 파티션 테이블만을 저장할 수 있다. 이러한 한계점을 극복한 것이 GPT 구조이다. GPT는 128개의 파티션 테이블 엔트리를 저장할 수 있다.
2. 단일 2TB 이상의 하드디스크를 지원하지 않는 MBR과는 달리 GPT는 64 bit partition 크기를 지원하여 최대 8.04ZB까지 지원한다. 이는 이론적인 크기이며, 실질적으로는 18EB까지 지원한다.

다시 본론으로 돌아와서, Partiton table entry는 16바이트의 길이로 구성되어 있다. 이는 다시 세분화 할 수 있는데, 다음과 같다.

Byte Range설명비고
1Boot Flag부팅 불가 : 0x00, 부팅 가능 : 0x80
3CHS 시작 주소
1파일 시스템 타입FAT32 : (0x0b/0x0C), NTFS : (0x07), Linux : (0x83), EFI : (0xee), Extended : (0x05)
3CHS 끝 주소
4(LBA)파티션 시작 주소섹터 단위
4파티션의 총 섹터 수

실제 코드를 통해 확인해보자.
검정 부분 까지는 boot code(0~445), 빨강색(446~461) 파랑색(462~477) 각각 파티션 엔트리.
다만 파티션 테이블 엔트리가 1개밖에 없기에 파랑 부분은 0으로 채워져있는 것. 나머지 2개의 파티션 엔트리도 마찬가지.

빨강 부분을 분석해보면, 00 (Boot flag), 02 03 00 (CHS 시작 주소), 07 (NTFS), FE 3F 81 (CHS 끝 주소), 80 00 00 00 (LBA 시작 주소), 00 E8 1F 00 (파티션 총 섹터 수).

다만 일반적으로 우리가 사용하는 수 체계와는 다르게 16진수이고, Little Endian으로 표기되어 있는 점은 유의해야 한다. 다시 말해서, 80 00 00 00 은, 실제로 의미하는 건 16진수로 00 00 00 80이 표기되어 있는 것이고, 다시 10진수로 변환하면 128을 나타낸 것이다. (LBA 시작주소)가 128섹터에 위치하고 있다는 뜻이다. 파티션 총 섹터의 경우, 00 1F E8 00을 표현한 것이고 (16진수로), 2,091,008개의 섹터로 구성되어 있다는 뜻이다.

또 마지막으로, 시그니처인 0x55 AA가 있음을 확인할 수 있다.

  • CHS - LBA 변환 공식
    LBA = ((CYLINDER x heads per cylinder + HEAD) x sectors per track) + SECTOR – 1
    CYLINDER =LBA/(sectors per track x heads per cylinder)HEAD
    = (LBA / sectors per track) % heads per cylinder
    SECTOR = (LBA % sectors per track) + 1

  • 파티션과 볼륨. 볼륨이 더 큰 개념이다.

  • 램 슬랙 : 램에 저장되어 있는 데이터가 섹터 단위로 생기는 비할당 공간 (섹터크기) 512바이트씩 기록되는 특성 때문에 발생한다. 섹터 슬랙이라고도 부른다. 0x00으로 채워진다. 섹터 단위로 기록되는 특징이 있다.

  • 드라이브 슬랙: 클러스터의 사용으로 낭비되는 공간이다. 클러스터 단위로 봤을 때 데이터를 할당하고 남은 공간을 의미.

  • 파일 슬랙 : 램슬랙와 드라이브 슬랙을 통합하여 부르는 용어.

  • 파일 시스템 슬랙 : 파일 시스템을 생성할 때, [섹터아님] 클러스터 크기의 배수만큼 사용할 수 있기에, 파일 시스템 끝부분에 공간이 남아 생긴다. (볼륨의 크기와 파일시스템 할당 크기의 차이)

  • 볼륨 슬랙 : 볼륨 전체 크기와 할당된 파티션 크기의 차이로 발생하는 공간.

참고 : https://galid1.tistory.com/56
https://melonicedlatte.com/computerarchitecture/2019/09/11/171200.html
인프런 강의
디지털 포렌식 기술 (책)

0개의 댓글