디지털포렌식과 친해지기
  • 디지털포렌식전문가 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. GPT(GUID Partition Table)
  • 2. GPT 파티션 생성
  • 3. GPT 파티션 분석
  1. 디지털포렌식과 친해지기
  2. 1. BIT의 저장
  3. 3) 파티션

3-2) GPT(GUID Partition Table) 구조

Previous3-1) MBR 파티션 테이블 구조Next3-3) 파티션 분석 도구 만들기(기초)

Last updated 5 months ago

1. GPT(GUID Partition Table)

GUID Partition Table(GPT)는 뭐야? (ChatGPT 답변 + Wiki 백과) [참고]

GUID 파티션 테이블 (GPT, GUID Partition Table)은 최신 하드 드라이브 및 SSD의 파티션 정보를 저장하는 데 사용되는 표준입니다. GPT는 기존의 MBR(Master Boot Record)보다 더 강력하고 유연한 파티션 테이블 형식을 제공합니다. 다음은 GPT에 대한 주요 특징과 장점을 설명합니다.

주요 특징

  1. 확장된 파티션 수:

    • MBR은 최대 4개의 기본 파티션만 지원하며, 더 많은 파티션을 만들기 위해서는 논리 파티션을 사용하는 확장 파티션을 만들어야 합니다.

    • GPT는 이론적으로 무제한의 파티션을 지원하지만, 일반적으로 128개의 파티션을 허용합니다.

  2. 대용량 디스크 지원:

    • MBR은 최대 2TB(테라바이트)의 디스크 크기만 지원합니다.

    • GPT는 2^64-1 섹터까지 지원하므로, 섹터 크기가 512바이트인 경우 최대 9.4ZB(제타바이트)까지 지원합니다.

  3. 데이터 무결성 및 복구:

    • GPT는 파티션 데이터의 무결성을 확인하기 위해 CRC32(Cyclic Redundancy Check) 검사 값을 사용합니다.

    • GPT는 파티션 테이블의 두 복사본을 디스크의 시작 부분과 끝 부분에 저장하여, 하나가 손상되더라도 복구할 수 있습니다.

  4. UEFI 지원:

    • GPT는 UEFI(유니파이드 확장 펌웨어 인터페이스) 펌웨어와 함께 사용됩니다. UEFI는 BIOS의 현대적인 대체품으로, 더 나은 부팅 및 시스템 관리 기능을 제공합니다.

구조

GPT는 디스크의 시작과 끝 부분에 위치한 주요 구조체로 구성됩니다:

  1. 보호 MBR(Protective MBR):

    • 디스크의 첫 번째 섹터에 위치하며, GPT 디스크를 인식하지 못하는 오래된 MBR 기반 시스템이 디스크를 덮어쓰는 것을 방지합니다.

  2. GPT 헤더:

    • 보호 MBR 다음에 위치하며, GPT 디스크의 구조와 위치 정보를 포함합니다. 여기에는 파티션 엔트리의 위치와 크기, 파티션 엔트리 배열의 CRC32 검사 값 등이 포함됩니다.

  3. 파티션 엔트리 배열(Partition Entry Array):

    • GPT 헤더 뒤에 위치하며, 각 파티션의 GUID, 시작 및 끝 LBA(논리 블록 주소), 속성 등을 포함하는 개별 엔트리로 구성됩니다.

  4. 백업 GPT 헤더 및 파티션 엔트리 배열:

    • 디스크의 끝 부분에 위치하며, 주 GPT 헤더와 파티션 엔트리 배열의 복사본을 포함합니다.

장점

  • 안정성 및 복구 가능성: 파티션 테이블의 두 복사본을 유지하여 데이터 손상 시 복구 가능성을 높입니다.

  • 확장성: 더 많은 파티션을 만들 수 있으며, 대용량 디스크를 지원합니다.

  • 유연성: UEFI와 호환되며, 더 나은 시스템 부팅 및 관리 기능을 제공합니다.

GPT는 최신 시스템과 디스크에서 널리 사용되며, MBR의 한계를 극복하기 위한 표준으로 자리 잡았습니다. UEFI 펌웨어와 함께 작동하며, 최신 운영 체제(예: Windows, macOS, Linux)에서 지원됩니다.

  • 위키백과도 조금 더 상세히 나와 있으니 참고하도록 하자.

  • MBR 파티션 테이블의 한계나 불편한 점을 개선하기 위해 GPT가 나왓습니다!

  • 불편한점이 뭐였을까?

    • 파티션 여러개 만들때 마다 확장파티션테이블을 저장할 섹터가 필요합니다.

    • 전체 섹터 수 4 bytes(32bit) 다 보니 2T 넘는 파티션을 만들 수 없습니다. 이외에도 여러가지가있었을 것으로 예상됩니다.

  • 간단히이런것을 보완하여 나온게 GUID Partition Table 입니다!

  • 상세히 알고 싶은 분은 GPT 답변 + Wiki 백과를 참고(참고사항이니 필수는 아닙니다!)

2. GPT 파티션 생성

  1. 새로 가상 디스크를 생성하여 봅시다. 이번엔 200MB 로 설정!

  2. 새로 생성한 가상디스크를 초기화 이때 GPT로 파티션 형식을 선택한다.

  3. 새 단순 볼륨으로 파티션 크기 20M 짜리 파티션을 2개

  4. 2개를 제대로 만들었다면 아래와 같이 표시될 것입니다.

  5. 관리자 권한으로 HxD를 실행 한 뒤 이번엔 디스크 열기 아이콘을 클릭 한 뒤 디스크를 열어봅시다.

  6. 먼저 0번섹터를 생긴것을 보면 우리가 기존에 알던 MBR의 모습을 가지고 있습니다. 1번 파티션테이블 정보를 한번 살펴보도록 합시다.

  7. 분석을 해보면..

    파티션 타입 : EE -> GPT

    파티션 시작 : 01 00 00 00 -> 00 00 00 01 (1번 섹터) 전체 섹터 수 : FF FF FF FF -> 4,294,967,295 섹터 (그러나.. 저장매체 자체가 200MB 뿐이라 큰 의미는 없다.) *즉, 1번 섹터에서 부터 GPT 파티션 테이블 관련 정보가 시작된다는 것입니다.

3. GPT 파티션 분석

  1. Active Disk Editor를 실행하여 봅시다.

  2. 가상디스크를 초기화한 디스크를 선택 한 뒤 [Edit]를 선택

[참고] 너무 어둡다고 생각한다면 전체적인 색깔 테마를 바꿀 수 있습니다. [Tool - Preferences] - Environment 에서 Application sytle 에서 원하는 색깔로 변경하도록 합시다.

  1. 먼저 Temples 에서 Partition Records - Master Boot Record를 선택 한 뒤 데이터 영역에서 가장 처음 부분을 클릭한 뒤 우클릭 - Set Template Position 을 선택해봅시다. 지금까지 우리가 공부했던 부분을 다른 도구로 확인 하는 것이라고 보면 될 것입니다.

  2. 위에서 분석한 것 처럼, 파티션 테이블 1번 부분에 파티션 타입이 EE 이고, 파티션 시작 세터가 1임을 동일하게 확인할 수 있습니다. 이와 같이 이 도구는 우리가 공부한 부분을 계산해서 보여주는 도구인 것을 알 수 있으며, GPT 부분을 한번 살펴보면

  3. 섹터의 이동은 Navigate -> Go to Sector 에서 Sector 영역에서 이동할 수 있습니다. 선택한 부분의 섹터 번호는 하단에서 확인할 수 있습니다.

  4. 1번 섹터(GPT 헤더) 시작 부분에 우클릭 - Set Template Position 을 선택 한 후 템블릿을 Templates - GUID Partition Table 을 선택하여 봅시다. 즉, 1번 섹터 시작 부분부터 GPT 파티션 구조로 분석하여 보는 것입니다.

  5. 이번 친해지기에서는 MBR 파티션 테이블에서 파티션 영역을 구분하였던 것처럼 파티션을 구분하는 부분에 대해서 집중해서 알아보도록 합시다. 먼저 GPT가 시작하는 1번 섹터 영역(GPT 헤더)에서 중요한 것만 우선 살펴봅시다. - 0-7 영역(Signature) : 시그니처로 고정된 값을 가짐 - 24-31 영역(Currnet LBA) : GPT 헤더가 위치한 섹터번호 - 32-39 영역(Backup LBA) : 백업 GPT 헤더 위치한 섹터번호 - 72-75 영역(Starting LBA of Entries) : 파티션 엔트리가 시작되는 섹터번호(일반적으로 2) - 84-87 영역(Entry size) : 각 파티션 엔트리의 크기(일반적으로 128 바이트 ) *잘 알겠지만, 데이터영역은 16진수 리틀엔디안으로 표시됨, 계산시 10진수로 변환해야 함.

  6. 구조를 살펴보면 GPT 헤더에서는 파티션 엔트리 처럼 바로 파티션 섹터 번호를 지정하는 것이 아니라 따로 파티션 엔트리를 저장하는 섹터번호를 가리키고 있습니다. Starting LBA of Entries가 2번 섹터를 가리키고 있으니 2번 섹터로 이동해봅시다.

  7. GPT 헤더에서 확인한 것처럼 파티션 엔트리가 128 bytes 로 1섹터에 4개가 들어가는 크기입니다. 또한 GPT 헤더에 80-83 영역에 해당하는 파티션 엔트리 갯수(Number of entires)가 128로 파티션엔트리가 128개를 표시할 수 있다는 것은 파티션 128개를 나타낼 수 있다는 의미입니다.

  8. 우리가 파티션 2개를 생성하였는데 파티션이 3개가 있습니다. 우선 파티션 1번을 한번 간략히 파악해보자. 사실 중요한 것은 시작 섹터,마지막 섹터일 것입니다. 그렇다면 전체 섹터 수는 마지막 섹터 - 시작 섹터 + 1로 확인 할 수 있습니다. (예) 시작 섹터 5, 마지막 섹터 6 이라면, 총 2섹터를 사용 //6 (마지막 섹터) - 5(시작섹터)+1 = 2

  9. 도구를 이용해서 우리가 계산한게 맞는 지 확인해보도록 합시다. 추가로 Partition Type GUID, Parition name, Attribute flags 값 그리고 마지막 섹터번호가 추가된 것을 알 수 있다. (Attribute flags 는 추후에 더 상세히 알아보도록 하자.) 대신 전체섹터 수, CHS 값이 사라진 것을 알 수 있습니다.

  10. 파티션 영역을 한번 정리해보면.. - 파티션 1 : 34 - 32,767 섹터(총 32,734 섹터, 15MB) - 윈도우 자동생성 - 파티션 2 : 32,768 - 73,727 섹터(총 40,960 섹터, 20MB) - 우리가 직접생성 - 파티션 3 : 73,728 - 114,687 섹터(총 40,960 섹터, 20MB) - 우리가 직접생성

  11. 기본적인 GPT 파티션분석은 완료하였습니다. 자! GPT 헤더에서 새로 생긴 백업GPT 헤더를 나타내는 부분을 분석해봅시다. 이제 다시 1번 섹터 GPT 헤더의 Backup LBA 섹터를 가면 어떤것이 있는지 한 번 확인하여보자. Navigate - Go to Sector 를 선택한 뒤 백업 섹터 409,599로 가봅시다.

  12. 409,599 섹터를 보면 시그니처(EFI PART)를 확인할 수 있습니다. 다만 아쉽게도 이 도구에서는 기본 GPT Templates 에서는 백업 GPT 헤더 쪽은 구조분석을 해주지 않아서 항목별로 구분하여 보여주고 있지는 않습니다.

  13. 그렇다면 수동으로 중요한 부분만 값을 계산하여 봅시다. 1번 섹터의 GPT 헤더와 다른 부분만 살펴보도록 합시다. 다른 부분은 Current LBA와 Backup LBA값이 서로 반대의 값을 가지고 있습니다. 생각 해보면, 백업 GPT 해더 입장에서는 원래의 GPT 헤더가 백업본으로 볼 수 있어서 해논것으로 보이며, 파티션 엔트리가 시작하는 위치를 다른 값을 나타내고 있습니다. 실제로 계산을 해보도록 합시다. Starting LBA of Entires : DF 3F 06 -> 06 3F DF -> 409,567섹터

  14. 그렇다면 우리가 위에서 파악한 파티션 엔트리가 백업으로 된 영역이 따로 있는 것으로 보입니다. 해당로 섹터 409,567 로 이동하여 봅시다.

    tip. 보통 GPT 헤더의 다음 섹터에 파티션 엔트리가 있습니다. 따라서 409,567 바로 전 섹터인 409,566 섹터를 GPT 템플릿 시작점(우클릭 Set Template Position)으로 지정하면 분석 가능합니다.

  15. 위의 실습을 천천히 따라오셧다면, 아래 GPT 파티션 구조 그림이 충분히 이해가 될 것입니다.

  16. 이제 다른 도구를 통해서 GPT 파티션 분석을 한 부분에 대해서 확인해보도록 합시다. FTK Imager를 실행 후 Add Evidence Item - Physical Drive 에서 우리가 연결한 디스크드라이브를 선택해 봅시다.

  17. 디스크를 인식 한 뒤 View - Properties에서 시작 섹터, 전체섹터, 그리고 해당 파티션의 가장 마지막 섹터번호가 우리가 계산한게 맞는지 확인해 봅시다.

  18. 추가로 파티션영역이 아닌 GPT 영역을 클릭하여보면 FTK Imager에서 주요 영역을 섹터 단위로 접근해서 볼 수 있도록 해두었습니다. Protective MBR을 보면, 0번 섹터를 가리키고 있다. 즉, 가장 시작 MBR 부분인 것을 알 수 있습니다.

    이제 위에서 우리는 분석해봤기 때문에 해당영역이 어떤 값과 의미를 가지고 있는지, 그리고 해당 섹터번호를 어떻게 찾아갈 수 있는지 알 수 있습니다.

  19. 자! 이제 GPT 구조에 대해서 하나하나 확인해 보았으며, 해당 영역이 어떤 것인지 파악을 할 수 있었고, 다양한 도구들은 이러한 영역을 일일이 계산해서 보기 편하게 다양한 기능들을 넣어두었습니다.

    이번 친해지기에서는 구조 파악을 목표로 하였으나 이후 파일시스템 분석 이후에 보다 파티션과 파일시스템 등과 관련된 여러가지 장난을 쳐보고 어떤 현상을 보이는지 확인해보도록 합시다.

3줄 요약

  1. GPT 파티션은 헤더, 파티션엔트리를 저장하는 영역을 새로운 섹터에 만들어 두었습다.

  2. GPT는 헤더와 파티션 엔트리의 복사본이 저장매체의 마지막 부분에 위치하고 있습니다.

  3. 다양한 도구에서 이미 분석을 해주니 잘 활용하도록 하자, 대신 정확히 어떤 원리인지 알고 있다면 활용하거나 원하는 형태로 개발을 할 수 있습니다.

이번에는GPT 구조를 파악할 때는 Active Disk Editor을 이용하여 분석하여 봅시다. 참고

[참고] Partition Type GUID는 윈도우에서 고유 식별자로 따로 지정한 고정한 GUID입니다. >

https://ko.wikipedia.org/wiki/
GUID_파티션_테이블
https://ko.wikipedia.org/wiki/
GUID_파티션_테이블
https://ko.wikipedia.org/wiki/통일_확장_펌웨어_인터페이스
https://en.wikipedia.org/wiki/Partition_type
3. Active Disk Editor