디지털포렌식과 친해지기
  • 디지털포렌식전문가 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 기본 구조
  • 2. GPT 헤더 복구
  • 3. GPT 헤더 복구 실습
  • 4. GPT Partition Entry 복구
  1. 디지털포렌식전문가 2급 실기와 친해지기(실기)
  2. 1. 디지털 포렌식 실기 준비하기
  3. 3. 파티션과 파일시스템 복구
  4. 3-1) 파티션과 파티션 테이블

3-1.1) GPT 헤더, 파티션 Entry 복구

Previous3-1) 파티션과 파티션 테이블Next3-2) 파일시스템과 파일시스템 복구

Last updated 5 months ago

GPT 파티션 테이블의 GPT 헤더를 복구해야하는 시험문제는 거의 출제된 적이 없는 것으로 알고 있습니다. 따라서 다른 부분의 공부가 충분히 완료된 후에 여유가 있을 때 연습해보시길 추천합니다.

1. GPT 기본 구조

  • MBR과 마찬가지로 디스크에 대한 정보를 담는 영역으로 EFI(Extensible Firmware Interface)라 하여 좀 더 개선된 펌웨어에서 파티션 구분에 사용하고 있는 방식입니다.

  • 실습 테스트를 해보고자 한 경우 아래 파일을 다운 받은 후 압축 해제 합니다.

  • GPT의 경우 먼저 MBR의 파티션 테이블 엔트리에서 위치를 지정하고 있습니다. FTK Imager에서 "(GPT)파티션2개훼손.001"를 열어봅시다.

    0번 섹터의 파티션 테이블의 값을 확인할 수 있습니다.

  • 파티션 엔트리 1번의 값을 보면

  • 시작 섹터를 1번 섹터로 하고 있다. 이 1번 섹터의 경우 Primary GPT Header의 시작 영역입니다.

  • GPT Header를 확인하면 아래와 같이 구역별로 의미를 가지게 됩니다.

    여기서 주의해서 볼 부분으로는 - Current LBA : GPT Header가 위치한 섹터 번호 - Backup LBA : Header 백업본이 위치하는 섹터 번호 - Starting LBA of Entries: 실제 파티션 별 정보(Partition Entry)가 있는 섹터 번호 - Disk GUID (참고) - First Usable LBA : 파티션을 할당 할 수 있는 섹터 번호 - Last Usable LBA : 파티션을 할당 할 수 있는 마지막 번호

  • Starting LBA of Entries 값이 2이기 때문에 2번 섹터를 확인해보면 Partition Entry Array로 아래와 같이 FTK Imager에서 확인할 수 있습니다. 이 영역을 분석하면 실제 파티션 별 정보를 확인할 수 있습니다.

  • 2번 섹터에 Partition Entry가 모여 있습니다. 파티션 엔트리 구조는 아래와 같으며

    리틀엔디안으로 저장되어 있는 주요 부분을 값을 분석하면 아래와 같은 값이 확인 가능합니다. - First LBA : 파티션 시작 섹터 번호 > 80(16진수) = 128 (10진수) - Last LBA : 파티션 끝 섹터 번호 > 1907F(16진수) = 102527 (10진수) *7F 90 01 00 00 00 00 00 -> 00 00 00 00 00 01 90 7F -> 1907F (16진수)

  • 위의 내용을 기반으로 정리하면 - 파티션 1번: 128 ~ 102527번 섹터 - 파티션 2번: 102528 ~ 200831번 섹터 FTK Imager에서 이를 보여줍니다.

  • GPT 헤더에서 Last Usable LBA(204766) 바로 다음 섹터에 파티션 엔트리 백업본이 위치합니다. 즉, 204767번 섹터부터 파티션 엔트리가 위치하는 것입니다. *Last Usable LBA : 31FDE (16진수) -> 204,766 (10진수)

  • GPT 헤더 Backup LBA의 값은 204799 섹터를 가리키고 있습니다. *31FFF (16진수) -> 204,799 (10진수)

  • 정리를 하면 아래 그림과 같이 확인할 수 있습니다. 복사본을 이용해서 GPT 헤더를 복구할 수 있는 것입니다.

2. GPT 헤더 복구

  • GPT 헤더를 Bakcup LBA로 복구함에 있어 먼저 알고 있어야 할 부분으로 Current LBA와 Backup LBA , 그리고 Starting LBA of Entries 값이 있습니다. (LBA : 섹터 번호) 실제로 Backup LBA 가 복구해야 할 Current LBA 섹터에 복구 되고 나면 백업본의 Current LBA, Backup LBA, Starting LBA of Entries 값으로 때문입니다. 아쉽게도 Backup LBA의 값은 정상 GPT Header의 있어야 할 값과 구조가 살짝 다릅니다. 다만 조금만 수정하면 정상 GPT Header 복구에 활용 가능합니다.

3. GPT 헤더 복구 실습

  • 연습 이미지 - 이미지를 다운로드 후 압축을 해제하면, GPT 헤더가 훼손된 Raw이미지 입니다.

  • GPT 메인 헤더가 훼손된 경우를 살펴봅시다. (GPT)GPT 훼손.001 파일을 FTK Imager 에서 열어보면 아래와 같이 파티션1은 보이나, 내용은 확인이 불가능합니다.

    그리고 파티션 타입 부분이 EE (GPT) 일 경우 GPT 구조를 갖는 것입니다.

  • 그러나 막상 1번 섹터를 가보면, 훼손되어 있습니다.

  • GPT 백업 헤더의 경우 가장 마지막에 복사본이 위치하기 때문에 맨 밑으로 가봅시다. GPT 헤더의 경우 "EFI PART"로 시작합니다. 즉 복사본이 위치하는 것을 알 수 있습니다.

  • HxD 마지막 섹터를 복사한 뒤 원래 GPT 헤더가 있어야 할 1번 섹터에 덮어쓰기를 진행합니다. 정리하면 GPT 복사본 섹터 -> 1번 섹터로 덮어쓰기 합니다.

  • 1번 섹터에 붙여넣기를 하였으나 백업 LBA 이기 때문에 메인 헤더에 맞게 수정해야 합니다.

  • 간단히 복사본의 Backup LBA와 Current LBA를 서로 바꿔줍니다. Starting LBA of Entries 부분을 2로 수정합니다. [필수는 아니나 완전 복구용] (보통 바로 다음 섹터에 Partition Entry 가 위치합니다.) *만약 Partition Entry 섹터가 훼손되면 백업 GPT 헤더에서 Partition Entry 섹터를 찾아가서 이를 복사하여 활용합니다.

  • 아래와 같이 수정하여 저장한 뒤 FTK Imager에서 불러옵니다.

  • 파티션 정보를 정확하게 불러오는 것을 확인할 수 있습니다.

4. GPT Partition Entry 복구

  • 연습 이미지

    - 이미지를 다운로드 후 압축을 해제하면, GPT 엔트리가 훼손된 Raw이미지

  • 해당 이미지를 FTK Imager에서 열어보면 파티션이 보이긴 하나, 모두 보이는 상황은 아닙니다. 그리고 Primary Partition Entry Array (2번 섹터)를 살펴보면 파티션 관련 정보가 안보이네요!

  • 반면, Backup Partition Entry Array에서는 파티션 관련 정보를 확인할 수 있습니다. 즉, Bakcup Partition Entry Array의 데이터를 2번 섹터에 복사하여 덮어쓴다면 파티션 엔트리를 복구할 수 있는 것입니다.

  • 204,767 섹터를 2번 섹터에 복사 후 덮어쓰기 하여 저장합니다.

    저장 후 다시 FTK Imager에서 열어보면 정상적으로 파티션을 구분하여 볼 수 있는 것을 알 수 있습니다. 다시 파일시스템을 복구하면 됩니다.

3줄 요약

  1. GPT 헤더의 복사본(맨 마지막 섹터)을 이용하여 GPT 헤더를 복구합니다. 수정한 GPT 헤더에서 Backup LBA와 Current LBA를 서로 바꿔주고 Starting LBA of Entries 부분을 복원한 GPT 헤더 섹터번호 +1섹터(대부분 2번 섹터 입니다.)로 변경하여 복원합니다.

  2. Partition Entry 섹터가 훼손되면 백업 GPT 헤더에서 Partition Entry 섹터를 찾아가서 이를 복사하여 활용합니다. (추후에 실습자료 추가 예정)

  3. 시험에서는 잘 안 나오는 유형은 아니니, 다른 것이 익숙하였을 때 실습 및 개념을 이해 해보도록 합시다.

1MB
GPT훼손.zip
archive
1MB
(GPT 엔트리)파티션2개훼손.zip
archive
1MB
GPT 구조 확인용, 파티션2개 훼손.zip
archive