디지털포렌식과 친해지기
  • 디지털포렌식전문가 2급 실기와 친해지기(실기)
    • 1. 디지털 포렌식 실기 준비하기
      • 1. BIT, BYTE, 파일 그리고 Hash
      • 2. 섹터와 사본 이미지 생성
        • 2-1. FTK Imager 활용 물리이미징(Registry 쓰기방지)
        • 2-2. EnCase 활용 물리이미징(EnCase 쓰기방지)
        • (연습용) 가상디스크 만들기
      • 3. 파티션과 파일시스템 복구
        • 3-1) 파티션과 파티션 테이블
          • 3-1.1) GPT 헤더, 파티션 Entry 복구
        • 3-2) 파일시스템과 파일시스템 복구
        • 3-3) 파일시스템 복구 실전 연습
      • 4-1. 무료도구 활용 분석연습
        • 0) 이미지 획득 및 파일시스템 복구
        • 1) 저장매체와 파일시스템 분석
        • 2) 파일과 친해지기
        • 3-1) 파일 관련 분석 1
        • 3-2) 파일 관련 분석 2
        • 4-1) 윈도우 아티팩트1
        • 4-2) 윈도우 아티팩트2
        • 5) 주요 응용 프로그램 아티팩트
          • 5-1) Sqlite 열어보기
        • 6) 키워드 검색 / Base64 Decode
        • 7) bitlocker
        • 8) 가상머신(참고)
        • 무료도구 활용 분석연습 정리
      • 4-2. EnCase 활용 분석연습
        • 0) 이미지 획득 및 파일시스템 복구
        • 1) 저장매체와 파일시스템 분석
        • 2) 파일과 친해지기
        • 3-1) 파일 관련 분석 1
        • 3-2) 파일 관련 분석 2
        • 4-1) 윈도우 아티팩트1
        • 4-2) 윈도우 아티팩트2
        • 5) 주요 응용 프로그램 아티팩트
          • 5-1) Sqlite 열어보기
        • 6) 키워드 검색 / Base64 Decode
        • 7) bitlocker
        • 8) 가상머신(참고)
        • EnCase를 활용한 분석연습 정리
      • 5. 주관식 - 기본 절차 및 증거법 관련
        • (정리 중) 디지털 증거관련 주요 판례
      • 6. 답안 제출 및 보고서 작성
      • 7. 요령 및 주의사항
    • 2. 실력 다지기
      • 1. 문제 저장매체 만들고 풀어보기
        • 기초 연습문제1-분석해보기(무료도구)
        • 기초 연습문제1-분석해보기(EnCase)
      • 2. 파일시스템 복구 연습
      • 3. NTFS 로그 분석 연습
    • 3. 실전 연습 문제
      • 2018 실전 연습 문제
        • 2018 실전 연습 - 분석해보기(무료도구)
        • 2018 실전 연습 - 분석해보기(EnCase)
      • 2019 실전 연습 문제
        • 2019 실전 연습 - 분석해보기(무료도구)
        • 2019 실전 연습 - 분석해보기(EnCase)
      • 2020 실전 연습 문제
        • 2020 실전 연습 - 분석해보기(무료도구)
        • 2020 실전 연습 - 분석해보기(EnCase)
      • 2023 실전 연습 문제(종합유형)
        • 2023 실전 연습 - 분석해보기(무료도구)
        • 2023 실전 연습 - 분석해보기(EnCase)
      • 2024 실전 연습 문제
        • 2024 실전 연습 - 분석해보기(무료도구)
        • 2024 실전 연습 - 분석해보기(EnCase)
    • 4. 기출 유형
  • 디지털포렌식과 친해지기
    • 1. BIT의 저장
      • 0) 준비사항!
        • 0-1) 주요 분석 도구 간단 소개 및 설정
        • 0-2) Python 을 이용한 개발 환경 구성
        • 0-3) Python 소스로 실행파일 만들기
      • 1) BIT, BYTES와 파일 그리고 Hash
        • 1-1) Hex Viewer 만들기
        • 1-2) BIT의 저장(참고)
      • 2) 저장매체와 섹터 그리고 물리이미징
        • 2-1) 가상 디스크 설정
        • 2-2) 물리이미징(raw) 실습
        • 2-3) 물리이미징 수집 도구 만들기(기초)
      • 3) 파티션
        • 3-1) MBR 파티션 테이블 구조
        • 3-2) GPT(GUID Partition Table) 구조
        • 3-3) 파티션 분석 도구 만들기(기초)
      • 4) 파일시스템 기초 분석
        • 4-1) 파일시스템 직접 만들어 보기
        • 4-2) FAT32 분석
          • 4-2.1) FAT32 분석(BR, Directory Entry - 데이터의 접근)
          • 4-2.2) FAT32 분석 2(FAT, LFN, 삭제)
          • 4-2.3) FAT32 분석 3 (특징과 분석 도구)
        • 4-3) NTFS 기초 분석
          • 4-3.1) NTFS 기초 분석(NTFS BR과 DATA 영역)
          • 4-3.2) $MFT와 MFT Entry
          • 4-3.3) MFT Entry의 주요 속성1($SI,$FILE,$DATA)
          • 4-3.4) MFT Entry의 주요 속성2(인덱스1, resident/Nonresident)
          • 4-3.5) MFT Entry 찾기(인덱스2, $ATTRIBUTE_LIST)
          • 4-3.6) NTFS 에서 파일의 접근 정리
          • 4-3.7) NTFS 주요 메타데이터 파일
          • MFT Entry 분석용
      • 5) 파티션과 파일시스템
      • 6) 사본 이미지 생성(논리/물리이미징)
      • 7) 파일과 친해지기
Powered by GitBook
On this page
  • 1. MBR(Master Boot Record)
  • 2. MBR 분석
  • 1-1) 준비물 - 가상디스크
  • 1-2) 가상 디스크 인식
  • 1-3) MBR 생성 실습
  • 3. 파티션 테이블 구조
  • 3-1) 파티션 테이블 생성
  • 3-2) 파티션 엔트리 수동 생성
  • 3-2) 확장 파티션 테이블
  1. 디지털포렌식과 친해지기
  2. 1. BIT의 저장
  3. 3) 파티션

3-1) MBR 파티션 테이블 구조

Previous3) 파티션Next3-2) GPT(GUID Partition Table) 구조

Last updated 5 months ago

1. MBR(Master Boot Record)

MBR에 대해 설명 해줘. (ChatGPT 답변)

MBR(Master Boot Record)은 하드 디스크나 다른 저장 장치의 맨 처음 섹터(보통 0번 트랙의 0번 섹터)에 위치하는 특별한 부트 섹터입니다. 이 구역은 운영 체제가 컴퓨터를 부팅하는데 필요한 정보를 담고 있으며, 주로 다음과 같은 네 가지 주요 구성 요소로 이루어져 있습니다.

  1. 부트 코드 (Bootstrap Code):

    • 이 부분은 주로 446바이트를 차지하며, 기본 입출력 시스템(BIOS)이 하드 디스크에서 운영 체제를 불러오기 위해 사용하는 코드입니다.

    • BIOS는 MBR의 부트 코드를 메모리로 로드하고 실행하여, 설치된 운영 체제를 찾아 그 제어를 넘깁니다.

  2. 디스크 시그니처 (Disk Signature):

    • 4바이트 크기의 디스크 식별자로, 때때로 디스크 시그니처라고도 하며, 특정 하드 디스크를 고유하게 식별하는 데 사용됩니다. 이 시그니처는 일부 운영 체제에서 디스크를 구별하는 데 사용되며, 일부 고급 설정에서 필요할 수 있습니다.

  3. 파티션 테이블 (Partition Table):

    • MBR에는 64바이트 크기의 파티션 테이블이 포함되어 있으며, 하드 디스크의 파티션 구조를 설명합니다.

    • 이 테이블은 최대 4개의 주 파티션을 정의할 수 있는데, 각 파티션은 시작 섹터, 끝 섹터, 타입 등의 정보를 가지고 있습니다.

    • 4개의 주 파티션으로 충분하지 않은 경우, 확장 파티션을 사용하여 더 많은 파티션을 간접적으로 지정할 수 있습니다.

  4. 부트 시그니처 (Boot Signature):

    • MBR의 마지막 2바이트는 0x55와 0xAA로 설정되어 있는 부트 시그니처입니다.

    • 이 시그니처는 해당 섹터가 실제로 부팅 가능한 MBR임을 BIOS에 알려줍니다.

간단하게 0번 섹터(0~512 bytes 영역)에 위치하며, 저장매체에 가장 처음 섹터영역에 위치한다.

그러나!! MBR이 필요하지 않는 저장매체의 경우는 MBR이 없을 수도 있다.

2. MBR 분석

  • 윈도우를 이용하여 MBR 및 파티션 테이블을 만들어 봅시다.

1-1) 준비물 - 가상디스크

  1. 가상 디스크 설정 방법 : 2-1) 가상 디스크 설정

  2. 생성한 가상 디스크가 없을 경우 다운 받아서 활용

1-2) 가상 디스크 인식

  1. 가상디스크를 우클릭 - 탑재 하거나, 디스크관리에서 가상디스크를 연결(읽기전용은 해제)

1-3) MBR 생성 실습

  1. 우리 가상디스크는 test를 데이터를 입력한 것 외에는 어떠한 작업을 하지 않았습니다. 즉, 윈도우가 무엇을 어떻게 저장하고 있는지 모르기에 초기화가 안되어 있습니다. 우클릭 - 디스크 초기화에서 MBR을 선택하고 확인을 하여보면. 절대 다른 디스크를 초기화하면 큰일납니다. 민트색(?)으로 된 가상디스크만 초기화 하도록 합시다.

  2. 이제 MBR 초기화가 되었습니다.

  3. 관리자권한으로 HxD를 열고, 도구 - 디스크 열기에서 우리가 초기화 한 가상디스크를 선택하도록 합시다. 다른거 선택하면 큰일나니 꼭 여러번 확인한다. 추가로 읽기전용은 해제!

  4. 아직 우리는 16진수가 익숙하지 않으니 오프셋 기반 - 10진수로 해서 살펴봅시다.

  5. 부트코드 영역은 0~439 총 440 바이트 부분 그 뒤에 4바이트는 디스크 시그니처 부분 마지막 뒤에 2bytes (55 AA) 는 부트 시그니처로 55 AA가 아니면 MBR로 인식하지 않습니다. 즉, 고정값 입니다

  6. 그렇다면 설명하지 않은 중간 영역이 파티션 테이블이라고 하며, 4개의 파티션 정보를 나눠서 표시합니다. 각각 파티션 정보를 가진 영역을 파티션 엔트리라고 합니다. 예약 영역으로 큰 의미없는 영역으로 보면 됩니다. 각 파티션 정보 부분을 파티션 엔트리라고도 불리며, 16bytes 길이를 갖습니다.

잠깐 장난을 한번 쳐보자! (참고)

부트 시그니처를 다른 값으로 바꾸고 저장 한 뒤 디스크 관리에서 F5를 눌러 새로고침을 하면 우리가 초기화 한 가상 디스크가 다시 초기화 안됨으로 돌아간다.

당연하게도 인식을 제대로 하게 된다.

  • 부트코드에 경우 포렌식 관점에서 자주 분석하는 주요 대상이 아니긴 하다. 다만 침해사고 대응과 같이 부트코드 부분이 변조되었거나 하면 또 충분히 분석이 필요한 영역일 수 있습니다.

  • 우선 디지털포렌식과 친해지기에서는 부트코드 부분은 생략하고, 조금 더 상세히 알고자 한다면 따로 공부를 해보는 것을 추천합니다. (추후 따로 분석하는 부분에 대해서 공유할만한 좋은 자료들을 찾거나 만들게 되면 공유 하겠습니다.)

3. 파티션 테이블 구조

3-1) 파티션 테이블 생성

  • 우선 우리는 파티션 테이블이 어디에 위치하는지 파악 하였습니다. 가상 디스크를 이용하여 파티션을 생성을 해보도록 합시다. 우선 윈도우가 생성해주는 것을 확인해보면

  1. 이제 HxD로 다시 한번 열어봅시다. 관리자 권한으로 HxD를 실행 한 후 읽기전용 해제 한 후 열어봅시다.

  2. 새로 추가된 영역이다. 이 부분을 보다 상세히 분석해봅시다. (값 자체는 실습 환경마다 약간은 다를 수 있습니다.)

  3. 조금 더 확대한 뒤 해당 영역을 하나씩 분석해서 보면 아래와 같습니다.

[1번 파티션 엔트리 분석]

위치
설명
값
해석

0

부트 플래그 (부팅 가능한 파티션인지 여부)

00

부팅불가

1-3

파티션의 시작 섹터(CHS)

02 03 00

4

파티션의 파일 시스템 타입

06

FAT16

5-7

파티션의 끝 섹터(CHS)

48 07 01

8-11

파티션의 시작 LBA (Logical Block Address)

80 00 00 00

128 섹터

12-15

파티션의 크기 (섹터 단위)

00 50 00 00

20,480 섹터

  • 위의 내용은 파티션 엔트리 위치별 정해진 약속으로 무조건 고정해 해당 합니다. 해석 해보면..

    • 0 / 부트플래그

      • 00 또는 0x00: 부팅 가능하지 않은 파티션을 나타냅니다.

      • 80 또는 0x80: 부팅 가능한 파티션을 나타냅니다.

    • 1-3 / 파티션의 시작 섹터(CHS)는 HDD(원판 하드디스크)에만 주로 해당. 최근에는 거의 의미 없음.

      • Cylinder: 02 (2)

      • Head: 03 (3)

      • Sector: 00 (0)

      • 따라서 이 값은 Cylinder=2, Head=3, Sector=0인 위치에서 파티션이 시작됨을 의미합니다.

    • 4 / 파티션의 파일 시스템 타입

      • 06 으로 FAT16을 나타냄 / 아직 파일시스템에 대해 배우진 않앗으나 이런게 있다고 참고

      • 주요 파일 시스템 타입 종류 (0x 는 16진수를 의미)

        • 0x01: FAT12 파일 시스템을 가진 주요 파티션

        • 0x04: FAT16 파일 시스템을 가진 주요 파티션 (32MB 이상의 파티션에 사용)

        • 0x05: 확장 파티션

        • 0x06: FAT16 파일 시스템을 가진 주요 파티션 (32MB 이상의 파티션에 사용)

        • 0x07: NTFS 파일 시스템을 가진 주요 파티션

        • 0x0B: FAT32 파일 시스템을 가진 주요 파티션

        • 0x0C: FAT32 파일 시스템을 가진 주요 파티션 (LBA 모드로 사용)

        • 0x0E: FAT16 파일 시스템을 가진 주요 파티션 (LBA 모드로 사용)

        • 0x0F: 확장 파티션 (LBA 모드로 사용)

    • 5-7 / 파티션의 끝 섹터(CHS)로 HDD(원판 하드디스크)에만 주로 해당. 최근에는 거의 의미 없음

      • Cylinder: 48 (72)

      • Head: 07 (7)

      • Sector: 01 (1)

      • 따라서 이 값은 Cylinder=72, Head=7, Sector=1인 위치에서 파티션이 끝남을 의미합니다.

    • 8-11 / 파티션의 시작 LBA (Logical Block Address), 즉. 파티션 시작 섹터 번호

      • 저장된 값) 00 00 00 80 -> 128 섹터(10진수 계산한 값)

        • 저장된 값 80 00 00 00 을 계산 하기 위해서 00 00 00 80 (16진수)를 10진수로 계산하면 128이 된다.

          • 리틀 엔디안: 숫자의 가장 낮은 바이트부터 시작하여 높은 바이트까지 나열됩니다.

          • 빅 엔디안: 숫자의 가장 높은 바이트부터 시작하여 낮은 바이트까지 나열됩니다.

    • 12-15 / 파티션의 크기 (전체 섹터 수 ) ,

정리하면 1번 파티션의 시작 위치는 128 섹터이고, 20,480의 전체 섹터 수를 가진다. 아직은 우리는 아무 것도 없이 파티션만 나눠논 거기 때문에 운영체제, 파일시스템 관련은 의미는 없는 부분이다.

3-2) 파티션 엔트리 수동 생성

  • 그렇다면, 이번엔 2번 파티션은 우리가 직접 만들어 봅시다.

  • 우선 1번 파티션은 128섹터에 시작해서 20,480섹터까지 사용합니다. 그렇다면 128+20480 섹터인 20,608섹터보다 뒤인 20,610섹터부터 원하는 크기까지 파티션을 만들어 볼 수 있습니다. 20MB 로 해보도록 하자. 20 X 1024 X 1024 = 20971520 =20MB 필요한 섹터 수는 20,971,520(전체용량) / 512(1섹터 크기)= 40,960섹터

  • 임의로 파티션 시작 위치를 정해봅시다. 시작LBA : 20,610 섹터 전체섹터 수 : 40,960 섹터

  • 시작 섹터와 전체 섹터 수를 16진수로 변환한 뒤 리틀엔디안이 적용 후 저장되어야 할 값을 구해봅시다.

    • 시작LBA : 20,610 -> 50 82 (16진수) / 00 00 50 82 -> 82 50 00 00 (리틀엔디안)

    • 위에서 구한 값을 파티션 2번 엔트리에 저장 파티션 타입의 경우 파티션 1번과 동일한 값(06)을 저장 (파티션 타입은 추후에 변경 예정) CHS 값의 경우 큰 의미가 없음으로 빈값

  • 디스크관리에서 F5(새로고침)을 하면 MBR을 새로 읽어 오는데 정상적으로 수동으로 파티션 나눴다면 아래와 같이 2개의 디스크를 구분하여 줍니다. 즉, 윈도우에서 파티션을 정상적으로 구분하고 있는 것입니다.

  • 이 과정을 통해 윈도우에서는 디스크관리자에서 파티션, 확장 파티션을 만들 때 어떤 원리로 만드는지 이해가 되었을 것입니다.

정리하면 파티션 1번 파티션은 128섹터 부터 20,480만큼 사용하며, 섹터 번호로는 128~20,607섹터 (총 20,480섹터 사용)

2번 파티션은 20,610섹터 부터 40,960섹터를 사용한다. 섹터 번호로는 20,610~61,569 (총 40,960섹터 사용) (시작 섹터 번호 + 총 섹터 수 - 1)을 하면 해당 파티션의 마지막 섹터번호를 확인할 수 있습니다. -1의 이유는 시작섹터도 총 섹터 수에 포함하기 때문입니다.

3-2) 확장 파티션 테이블

그렇다면 파티션 테이블은 총 4개만 가능한 것일까? 5~6개는 불가능 한걸까? 이 부분은 처음 공부하거나, 자격증만 목표로 할 경우에는 필수 사항이 아니니 참고만 하도록 하자. 다만 제대로 분석을 위해서 이 구조를 잘 알고 있어야 나중에 응용 및 재미난 장난을 칠 수 있다.

  • 4개 이상의 파티션을 사용하기 위해서 확장파티션을 활용하여 더 많은 파티션을 만들 수 있다. 우선 윈도우에서 어떻게 만들어주는지 확인하여 봅시다.

  1. 디스크 관리에서 할당되지 않은 영역에 파티션을 추가해봅시다. 용량은 10M짜리로 3개를 더 추가

    추가하다가 녹색영역에 우클릭 [새 단순 볼륨]을 추가하여 기존과 동일하게 파티션을 추가

  2. 총 5개 파티션 생성되면 아래와 같이 표시됩니다.

  3. 관리자 권한으로 실행한 HxD에서 도구 - 디스크 열기에서 가상 디스크를 열어봅시다. 이번엔 읽기전용

  4. 파티션 테이블을 보면 4번 파티션 테이블을 보게 되면 파티션 타입이 05(확장파티션)

    4번 파티션에서 의미있는 것만 보면

    • 파티션 타입 (05) : 확장파티션

    • 시작섹터 (00 41 01 00) : 00 01 41 00 ->82,176 섹터

    • 전체섹터 수(00 D0 01 00) : 00 01 D0 00 -> 118,784 섹터 = 60,817,408 Bytes = 58MB 즉, 82,176~200,959 영역에 해당하는 영역이 확장 파티션에 영역이다.

  5. 그렇다면 확장 파티션이 있는 시작 위치를 한번 가봅시다. 확장 파티션의 시작 섹터인 82,176섹터로 이동 MBR의 파티션 테이블과 같은 구조의 파티션 테이블이 보이고 마지막에 55 AA 인 것을 확인할 수 있습니다.

  6. 확장 파티션(82,176섹터)의 가장 위에 보이는 파티션 정보를 분석(사실상 4번 파티션)

    • 파티션 타입 (06) : FAT16

    • 시작섹터 (80 00 00 00) : 00 00 00 80 -> 128 섹터

    • 전체섹터 수(00 50 00 00) : 00 00 50 00 -> 20,480 섹터

    • 그렇다면 4번 파티션의 위치는 어떻게 될까? 128번 섹터는 이미 1번 파티션의 시작위치이다. 여기서 부터는 확장파티션을 기준이 된다. 그렇다면 확장파티션 섹터 + 시작 섹터가 실제 시작 섹터가 되고, 마지막 섹터 번호는 시작섹터 + 전체섹터 수 -1이 된다.

    • 시작섹터 = 82,176 + 128 = 82,304 섹터 마지막섹터 = 82,304(시작 섹터) + 20,480(전체 섹터 수) - 1 = 102,783 즉, 82,304 ~ 102,783가 4번 파티션 영역이다.

  1. 확장 파티션테이블(82,176섹터)에서 2번째 파티션 엔트리를 분석

    • 파티션 타입 (05) : 확장파티션

    • 시작섹터 (80 50 00 00) : 00 00 50 80 -> 20,608섹터

    • 전체섹터 수(80 50 00 00) : 00 00 50 80 -> 20,608 섹터

    • 82,176(확장파티션 있는 섹터) + 20,608(시작섹터) + 20,608 - 1 = 123,391 102,784 ~ 123,391 섹터가 다시 또 확장파티션의 범위가 됩니다.

  2. 우리는 끈질기기에 마지막 확장 파티션으로 가보면 위에서 확인한 섹터 102,784를 가면 확장파티션이 있고 또 동일한 파티션 테이블 정보를 표시합니다.

  3. 확장파티션테이블에서 1째 파티션 엔트리를 분석해보자.(사실상 5번 파티션)

    • 파티션 타입 (06) : FAT16

    • 시작섹터 (80 00 00 00) : 00 00 00 80 -> 128섹터

    • 전체섹터 수(00 50 00 00) : 00 00 50 00 -> 20,480섹터

    • 102,784(확장파티션 있는 섹터) + 128(시작섹터) + 20,480 - 1 = 123,391 102,912 ~ 123,391 섹터가 다시 또 확장파티션의 범위가 되는 것입니다.

  4. 위에서 계산 했던 모든 값들을 대략 정리해보면 아래의 그림처럼 생각해볼 수 있다. 흠.. 확장파티션으로 가면 갈수록 복잡해지는 것을 알 수 있습니다. (3번 파티션은 직접 구해봅시다.)

    이제 아래 그림에서 Boot Sector와 Data 영역 제외하고 대부분 충분히 이해 할 수 있을 것입니다.

  5. 그렇다면 다른 분석 도구에서도 동일하게 나올까? FTK IMAGER에서 확인해봅시다. FTK Imager 에서 File - Add Evidence item 후 Phisical Drive 를 선택 한 뒤 우리가 분석하던 가상디스크를 선택

  6. [View - Properties]를 선택하면 해당 영역의 분석 내용을 확인할 수 있습니다. Partition을 클릭 하면 해당 파티션의 시작섹터 번호, 총 섹터수를 확인할 수 있으며, 파티션의 스크롤을 가장 밑으로 내린 뒤 마지막 섹터를 클릭 한 뒤 가장 밑으로 내리면 마지막 섹터 번호를 확인할 수 있습니다. (Phy sec)

  7. log sec는 해당 파티션 기준으로 섹터 번호를 나타낸다. 파티션 시작 섹터 기준으로 몇 번 섹터인지 확인할 수 있으며, 전체 섹터 수 -1 인 것을 확인할 수 있습니다. Physical Sector와 Logical Sector의 차이를 확실히 알고 계산을 할 수 있어야 합니다.

  8. 확장 파티션의 주요 내용을 모두 확인하였습니다. 그런데 하면 할수록.. 뭐랄까.. 비효율적인거 같습니다. 계속 확장 파티션을 만들고 한 섹터의 파티션 테이블도 최대 3,4개 정도만 되니 불편하구요.. 최근 스마트폰 등등의 경우 파티션이 기본 8~10개가 넘어가는 경우도 많은데 말이죠...

  9. MBR의 단점을 보완한 GUID Partition Table(GPT)가 등장하였고, 최근에는 많이 사용되는 방식으로, 이제 GPT를 상세히 알아보도록 합시다.

그런데 전체 섹터 수가 FF FF FF FF 를 넘어가면 어떻게 되는거지..?(참고)
  1. 그런데.. 한번 생각 해보자...

  2. 위 처럼 전제 섹터 수가 FF FF FF FF 까지 최대 값을 표현할 수 있습니다. FF FF FF FF 는 4,294,967,295 섹터를 나타내며, 2,199,023,255,040 bytes / 1024 = 2,147,483,647.5 Kbytes / 1024 = 2,097,151.9 Mbytes / 1024 = 2,047.9 Gbytes / 1024 = 약 2TBytes

  3. 약 2T가 넘어가면 32bit(4bytes)로는 전체 섹터 수를 정확히 표현할 수 없습니다. 최근에는 2T넘는 하드디스크는 매우 많은데 말이죠... 이전에는 MBR 파티션 테이블을 만들때는 2T정도는 충분할거라고 생각했나봅니다... 어쩌면 이래서 다른 파티션 테이블 구조가 필요했을지도 모르겠습니다.

  • 생각해보니.. 포렌식 필기 문제에 이런 문제가 더러 있었습니다. XX 파티션이 지원하는 최대 용량은?? XX 파일시스템에서 단일 파일은 4G 이상 저장할수 없다 등등등... 이론상은 알았지만 앞으로 왜 그런지 우리가 직접 분석해보면서 친해져보도록 합시다. 앞으로도 이런게 엄청나게 많습니다!

3줄 요약

  1. 파티션은 저장매체의 섹터 번호를 나눠논 것 근데 나눠 놓고 무엇을 할까?(이후에 자세히 알아보자)

  2. 파티션 테이블 분석은 한번만 제대로 해보자... 왜!?? 도구가 잘 해줄것입니다.. 도구가 마땅치 않으면.. 우리는 원리를 알기 때문에 만들어서 사용합시다.

  3. 앞으로 이런식의 Hex 값을 분석하는 것이 계속 나오게 될 것입니다.!! (슬슬 머리 아파지기 시작합니다. 다만 많이 하면 할수록.. 경험이 쌓이면 자동으로 hex 값만 봐도 대충 어떤 데이터인지 감이 잡히는... 전문가로 발전할 것입니다. )

아래와 같이 부트시그니처 부분을 다른 값으로 수정하면 어떤일이 벌어질까?

그럼 다시 55 AA로 수정해놓으면 어떻게 될까?

그렇다면... 이 0번 mbr을 그대로 복사해두었다가 쓸 수 있을까? 이건 나중에 디지털 포렌식과 더 친해지기 / 놀아보기 등에서 해보기로 해자.

부트코드 분석 참고 사이트 :

아래와 같은 순서로 세팅을 해봅시다. 1) 우선 할당되지 않은 부분을 우클릭 후 [새 단순 볼륨 선택] 2) 단순 볼륨 크기 10 MB 3) 드라이브 문자 또는 드라이브 경로를 할당 하지 않음 4) 이 볼륨을 포맷하지 않음

정상적으로 완료하면 아래와 같이 표시가 됩니다.

에서 보다 다양한 정보 확인가능

일반 pc에서 리틀 엔디안 저장하기 때문에 저장된 데이터를 해석 할때는 아래와 같이 바이트 단위로 순서를 역순으로 배치한 16진수를 10진수로 계산해야한다.

저장된 값) 00 00 50 00 -> 20,480섹터(10진수 계산한 값)

전체 섹터: 40,960 -> A0 00 (16진수) / 00 00 A0 00 -> 00 A0 00 00 (리틀엔디안)

http://forensic-proof.com/archives/439
https://en.wikipedia.org/wiki/Partition_type
115KB
test 저장매체.zip
archive