• 카테고리
  • 멤버
  • 아티클
  • 카테고리
  • 멤버
  • 깃헙
© 2020 COSADAMA,
All Rights Reserved.
Data-Analysis

디지털 포렌식 4주차 스터디(2)

by 최예지

2-2. 파일시스템(File System) 분석

MBR(Master Boot Record) 및 볼륨 파티션(Partition) 분석

숨겨진 볼륨 및 파티션 영역은 없는가?

💡 파티션(Partition): 물리적인 디스크를 여러 독립적인 공간으로 구분해놓는 것을 의미한다. 이는 하나의 물리적인 저장 장치를 여러 개의 독립적인 저장 장치처럼 사용할 수 있게 구분해주는 역할을 한다.
💡 볼륨(Volume): 단일 파일 시스템을 사용하여 액세스 할 수 있는 저장 공간을 의미한다. 일반적으로 디스크를 파티션으로 구분하고, 각 파티션을 파일 시스템으로 포맷하여 볼륨을 만들어 사용한다.

디지털 증거의 이미징 절차를 수행한 후, 첫번째 분석 과정은 전체 섹터, 부팅영역 그리고 데이터 영역 등 사용자 활용 섹터(Sectors)를 확인하는 것이다. 해당 과정을 통해 하드디스크의 이미지 생성 시 하드디스크 전체의 섹터 수와 파티션에 할당된 섹터의 수가 동일한지 확인한다.

  1. MBR 정보 확인

    하드디스크의 첫 번째 섹터(sector 0)에 위치한 MBR 정보를 확인하고, 부팅 파티션의 BR(Boot Record)은 어떤 파일 시스템이고 파일 시스템 크기 등의 정보들이 저장되어 있다.

    두개의 파티션이 존재하는 하드디스크의 경우 첫번째 섹터에 MBR 영역이 존재하며, 이 MBR의 구조는 446 bytes의 부트코드, 64 bytes 파티션 테이블의 정보(= 16bytes * 4개)와 MBR 시그니처(0xAA55)가 저장되어 있다.

1.jpeg

  • MBR의 파티션 테이블 정보는 4개를 기록할 수 있다. 하나의 파티션 정보는 각각 16바이트로 이뤄져 있으며, 각 파티션의 부팅가능여부, 파일 시스템 종류, 파티션 시작번지, 파티션 크기 정보들이 기록되어 있다.

  • 아래의 표는 각 파티션 정보에 저장된 내용이다.

    2.jpeg

    1. Bootable Flag: 부팅 가능한 하드디스크임을 나타내는 플래그 값으로 부팅 가능한 파티션에는 0x80 값이 설정되고, 부팅 파티션이 아닌 경우에는 0x00이 설정된다.
    2. Starting CHS Address: CHS 주소지정방식으로 표시할 때 파티션의 시작번지를 표현하였으나 LBA 주소지정방식을 사용하는 현재는 사용하지 않아 입력하지 않아도 된다.
    3. Partition Type: 해당 파티션에 대한 파일시스템 타입을 표시하는 영역으로 NTFS 파일시스템은 0x07과 같이 표시된다.
    4. Ending CHS Address: CHS 주소지정방식으로 표시할 때 파티션의 끝 번지를 표현하였으나 현재는 LBA 주소지정방식을 사용하여 필요가 없다.
    5. Starting LBA Address: LBA 주소지정방식으로 표시할 때 파티션의 시작번지를 표현하며 시작은 0번부터 시작한다.
    6. Size in Sector: 해당 파티션에서 사용하는 LBA의 총 섹터의 개수를 표시하며, 파티션의 총 용량은 “[Size in Sector] x 512 Bytes”가 된다.

⭐ 데이터 저장방식이 “리틀엔디언 방식”으로 저장된다는 점을 주의해야 한다.

💡 **리틀 엔디언 방식**: 낮은 주소에 데이터의 낮은 바이트부터 저장하는 방식으로, 이 방식으로 저장된 데이터는 평소 우리가 숫자를 사용하는 선형 방식과 반대로 거꾸로 읽어야 한다.
  1. VBR(Volume Boot Record) 정보 확인

    1. NTFS의 Boot Record

      • NTFS 파일시스템의 부트레코드 섹터의 내용은 처음 3 바이트가 점프코드인 0xEB5290 값을 저장하고 있고, 다음 8 바이트는 NTFS라는 OEM ID의 파일시스템 시그니처 값이 저장되어 있다
      • 그 뒤의 오프셋 0x0B~0x0C 2바이트는 섹터 당 바이트 수를 의미하는 값으로 0x0200(10진수: 512) 값이 리틀엔디언 방식으로 저장되어 있다.
      • 오프셋 0x0D 1바이트는 1개의 클러스터를 구성하는 섹터의 수 0x08(10진수: 8)이 저장되어 있다.
      • Total Sector은 오프셋 0x29~0x2F의 8바이트를 리틀엔디언 방식으로 읽으면 0x80 1F FF(10진수: 8,396,799)이다.

      ✨ MBR과 VBR의 파티션 총 섹터수가 1 섹터의 차이가 있는 이유

      : NTFS 파일시스템의 경우 VBR 백업본이 맨 마지막 섹터의 위치하고 있기 때문에 이 1섹터를 포함하면 MBR의 총 섹터 수와 일치한다.

    b. FAT32의 Boot Record

    • FAT32 파일시스템에서 부트레코드의 섹터 내용은 처음 오프셋 0x00~0x02영역의 3 바이트는 점프코드인 0xEB5890 값을 저장하고 있고, 다음 8바이트는 MSDOS5.0라는 OEM ID의 파일시스템 시그니처 값이 저장되어 있다.
    • 그 뒤의 2바이트는 섹터를 구성하는 바이트의 수를 나타내는 정보로서 여기서는 0x0200(10진수: 512) 값이 리틀엔디언 방식으로 저장되어 있다.
    • 그 다음의 1바이트는 1개의 클러스터를 구성하는 섹터의 수 0x08(10진수: 8)이 저장되어 있다.
    • FAT32 파티션의 총 섹터 수는 오프셋 0x20~0x23의 0x6E 50 00 (10진수: 7,229,440)이다.
  • DOS 파티션을 사용하면서 인식 가능한 하드디스크의 최대 사이즈는:

    [Size in Sector] 필드가 4 byte이고 하나의 섹터 크기가 512 byte이므로 계산해보면 2Tbyte 정도 된다.

    → 위 크기만큼의 디스크를 사용하기 위해서는 FAT32 또는 NTFS 파일시스템을 사용해야 한다.

Previous Post
디지털 포렌식 4주차 스터디(1)
Next Post
임베딩 전반적으로 이해하기
  • 코사다마
  • 소개
  • 영입
  • 관련 사이트
  • 홈페이지
  • 커리큘럼
  • 깃헙
  • 문의
  • 이메일
  • 채널톡
  • 카카오톡
  • Built with ⛰ by Peniel Cho