ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MBR (Master Boot Record)
    $ 포렌식 $/$ 포렌식 기술적 이론 $ 2019. 6. 24. 17:52

    MBR은 Master Boot Record의 약자로 저장 매체의 첫번째 섹터인 LBA 0에 위치하는 512바이트 크기의 영역입니다.

    다음 아래의 그림은 MBR의 기본적인 구조를 보여줍니다. 처음 446byte는 Boot code 영역 이라고 부르고 그다음 64byte는 Partition Table 영역, 2byte는 Signature 영역이라고 이야기 합니다.

     

    운영체제가 부팅될 때 POST(Power On Self-Test) 과정을 거친뒤 저장 매체의 첫 번째 섹터를 호출하는데 이때 해당 부트 코드가 수행됩니다.

    만약 부팅할 수 있는 파티션이 없는 경우에 미리 정의해 놓은 에러 메시지를 출력한다.

     

    MBR의 각 영역에 대한 범위를 나타낸 표 입니다.

     

     

    부팅 가능한 주 파티션을 생성한다면 위의 구조에 따르면 파티션 테이블은 각각 16 바이트씩 4개의 엔트리를 가지고 있다. 그렇다면 부팅 가능한 주 파티션은 4개 밖에 생성이 안될 것이다. 따라서 멀티 부팅을 할 경우에 최대 4개의 운영체제를 설치할 수 있다. 또한 주 파티션이 아닌 데이터 저장을 위한 논리 파티션은 4개 이상 생성하는 것이 가능합니다.

     

    16바이트의 파티션 테이블 엔트리의 구조에 대해서 한번 보겠습니다.

     

     

    부트 식별자(Boot Indicator)는 해당 파티션이 부팅 가능한 파티션인지 아닌지를 나타낸다. (00 이면 부팅 불가능, 80 이면 부팅 가능)

    CHS 주소가 나오는데 오늘날 대부분 LBA 모드를 사용하기 때문에 사용하지 않는다. 

    그리고 파티션의 시작 주소를 가르키는 LBA 주소값과 파티션의 전체 섹터의 수가 나옵니다.

    LBA 주소값이 파티션의 시작 주소 이기 때문에 LBA 값 + Total sectors 를 하면 파티션의 맨끝 주소가 나옵니다.

     

    Partition type에 포함되는 모든 값을 정리해 놓은 사이트가 있습니다.

    https://datarecovery.com/rd/hexadecimal-flags-for-partition-type/

     

    해당 사이트에 00 부터 FF 까지 의미하는 Partition Type를 확인할 수 있습니다.

     

     

    실제 MBR을 한번 구조와 비교해서 확인을 해보겠습니다.

     

    사용할 디스크는 디스크 1 인 10GB 디스크 입니다. 파티션은 총 3개로 나누어져 있기 때문에 맨 마지막 Partition table entry #4에는 00 으로 가득 채워져 있을 것입니다.

     

    HxD를 이용해서 한번 열어 보겠습니다.

     

     

    파티션 테이블 부분만 확인해 보겠습니다.

     

     

    각각의 파티션 테이블을 알아보기 전에 Partition Table의 구조를 한번 보겠습니다.

     

     

    이제 이 구조를 바탕으로 저위에 있는 실제 디스크1을 한번 비교 분석해보겠습니다.

     

    Partition table entry #1 : 00 20 21 00 07 4E 83 8B 00 08 00 00 00 A0 9F 00 

     

     - Boot Flag : 0x00 , 부팅 불가 파티션

     - CHS Start : 0x002120

     - Part Type : 0x07, Windows NT NTFS

     - End CHS : 0x8B834E

     - LBA Start : 0x00000800

     - Size in Sector : 0x009FA000,  10,461,184

     

    Partition table entry #2 : 00 4E 84 8B 07 02 F8 CA 00 A8 9F 00 00 20 4E 00

     

     - Boot Flag : 0x00 , 부팅 불가 파티션

     - CHS Start : 0x8B844E

     - Part Type : 0x07, Windows NT NTFS

     - End CHS : 0xCAF802

     - LBA Start : 0x009FA800

     - Size in Sector : 0x004E2000,  5,120,000

     

    Partition table entry #3 : 00 02 F9 CA 07 FE FF FF 00 C8 ED 00 00 28 52 00

     

     - Boot Flag : 0x00 , 부팅 불가 파티션

     - CHS Start : 0xCAF920

     - Part Type : 0x07, Windows NT NTFS

     - End CHS : 0xFFFFFE

     - LBA Start : 0x00EDC800

     - Size in Sector : 0x00522800 ,  5,384,192

     

    Partition table entry #4 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

     

     - Boot Flag : 0x00 , 부팅 불가 파티션

     - CHS Start : 0x000000

     - Part Type : 0x00, NO-Partition empty partition-table entry

     - End CHS : 0x000000

     - LBA Start : 0x00000000

     - Size in Sector : 0x00000000

     

    위에 나온 파티션 테이블은 전부 부팅이 불가능한 정보 저장용도의 디스크 였습니다.

     

    이번에는 운영체제가 설치 되어 있는 디스크를 한번 확인해 보겠습니다.

     

    Partition table entry #1 : 80 20 21 00 07 1D 17 46 00 08 00 00 00 28 11 00

     

     - Boot Flag : 0x80 , 부팅 가능 파티션

     - CHS Start : 0x002120

     - Part Type : 0x07, Windows NT NTFS

     - End CHS : 0x46171D

     - LBA Start : 0x00000800

     - Size in Sector : 0x00112800,  1,124,352

     

    Partition table entry #2도 있지만 생략..!

     

    위의 사진을 보면 Boot code에 해당하는 영역에 있는 문자열인데 해당 문자열 들은 Boot code를 수행하면서 정상적이지 않은 동작이 발생할 경우 출력하는 3가지의 에러 메시지 입니다.

     

    ※ Invalid partition table

    ※ Error loading operating system

    ※ Missing operating system

     

     

     

     

    댓글

Designed by Tistory.