안녕하세요 EnIaC 입니다. 

[제 2강] 에 이어 바로 3강 진행 하도록 하겠습니다. 이번에 공부할 것은 바로 MBR 이라는 영역 입니다. 포렌식에서 어쩌면 가장 친숙한 영역이라고 볼 수 있겠죠. 고정되어 있는 틀에서 비슷한 값들을 많이 볼 수 있으니까요. 우선 MBR 을 보기 전에 OS 가 어떻게 부팅되는지 부팅 과정을 한번 살펴 보도록 하겠습니다.



1. PC Boot Step

부팅 절차는 기본적으로 BIOS에 의해 POST(Power On Self-Test) 과정이 수행되고, 이후에 추가적인 BIOS(SCSI, Video등)가 로드 됩니다. 그리고 POST 과정에 의해 처리된 데이터들도 로드하게 됩니다. 이러한 하드웨어적인 테스트를 모두 마치게 되면, 주(Primary) 하드디스크 드라이브의 MBR의 부트 코드를 호출합니다. 간단히 말해, MBR의 부트 코드는 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 VBR의 부트 코드를 호출하는 역할을 합니다. VBR의 부트 코드는 운영체제를 로드하게 됩니다.(윈도우는 NT Loader). 이를 간략히 그림으로 나타내면 다음과 같습니다.



[그림 1. Boot Step]



2. MBR, Master Boot Record

우선 포렌식 공부에 가장 기초적인 부분이 PC 부팅 과정입니다. 그중에서 저희는 현재 가장 많이 사용하고 있는 MBR 이라는것에 대해서 공부 하겠습니다.

MBR은 Master Boot Record 의 약자로써 단어 뜻만 보셔도 대충 어떤 역할을 하는지 감이 오실겁니다. MBR 은 하드디스크의 가장 첫번째 섹터에 위치하게 되며 처음 446Byte 는 부트코드(Boot code) 영역이며, 64Byte 는 파티션 테이블(Partition Table), 그리고 마지막 2Byte 는 MBR 영역의 훼손 여부를 알리는 시그니처(Signature) 를 나타냅니다.


[그림 2. MBR 구조]


실제 MBR 영역으로 이동하여 살펴보면 좀더 자세히 알 수 있습니다. 사용 프로그램은 무료로 다운로드 가능한 HxD 를 이용 하였습니다. (http://mh-nexus.de/en/hxd/) 다운로드


[그림 2-1. MBR 상세 구조]


저희가 중요시 보아야 할 점은 446Byte 의 Boot Code 가 아닌 64Byte 의 Partition Table 과 마지막 부분인 0xAA55 즉, 시그니처 영역을 중요시 봐야 합니다.



3. Partition Table

본격적으로 MBR 영역에서의 Partition Table 을 분석 해 보도록 하겠습니다. 우선 한 파티션당 16Byte 씩 즉, 4개의 주 파티션을 구성할 수 있습니다. 근데 여기서 의문이 하나 생깁니다. 4개의 파티션만 생성할 수 있다면 나머지 파티션은 어떻게 생성할 수 있는가? 그래서 확장 파티션이라는게 생겼습니다. 확장 파티션은 마지막 부분에 다음 영역을 기록하는 방식으로 파티션을 확장하는 방식입니다. 자세한건 나중에 다뤄보도록 하구요, Partition Table 을 좀더 자세히 살펴 보도록 하겠습니다. [그림 3] 을 참고 하시길 바랍니다.



[그림 3. Partition Table Layout]


보시는 바와 같이 Partition Table 은 위와 같이 이루어져 있습니다. 표로 정리 해 보겠습니다.



 

설 명

 Boot Flag

 0x80 이면 부팅 가능한 파티션임을 뜻한다.

 Starting CHS Addr

CHS 의 시작 주소 

 Partition Type

 0x0B 와 0x0C 는 FAT32 를, 0x07 은 NTFS 를 뜻한다.

 Ending CHS Addr

 CHS 의 종료 주소

 Starting LBA Addr

 LBA 의 시작 주소 (파티션 시작의 주소)

 Size in Sector

 해당 파티션의 총 섹터 개수 (즉, 해당 디스크의 총 용량 계산 가능)



그럼 이제 [그림 4] 를 이용하여 실제 Partition Table 을 계산 해보도록 하겠습니다.


[그림 4. Partition Table Calc]


 No.1 Partition

설 명

 Boot Flag

 0x80, 부팅 가능 파티션

 Starting CHS Addr

0x002120

 Partition Type

0x07, NTFS 파티션

 Ending CHS Addr

 0x0C13DF

 Starting LBA Addr

0x00000800 (2048 Sector)

 Size in Sector

 0x032000



위와 같이 MBR 에서 Partition Table 을 분석할 수 있게 되었습니다. LBA Addr 은 10진수로 변환하여 실제 Sector 위치를 계산할 수 있으며 Size in Sector 또한 10진수 변환 후 섹터 = 512byte 이므로 10진수 값 * 512 /1024 /1024 /1024(단위 변환) 해주면 GB 단위로 용량 계산이 가능 합니다. 다른건 몰라도 LBA Addr 정도는 스스로 계산 가능 해야 합니다. 솔직히 계산이랄 것도 없는.. 그런 계산이죠. 계산기로 10진수로만 바꿔주면 되니까요.


다음 강의에서는 FAT32 파일 시스템에 관해 이야기 하도록 하겠습니다.


WRITTEN BY
EnIaC
WhiteHackerGroup 『LockDown』 EnIaC 입니다.

,