디지털포렌식과 친해지기
  • 디지털포렌식전문가 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
  • 2-2) NTFS Boot Record
  • 2-3) NTFS의 데이터 영역
  1. 디지털포렌식과 친해지기
  2. 1. BIT의 저장
  3. 4) 파일시스템 기초 분석
  4. 4-3) NTFS 기초 분석

4-3.1) NTFS 기초 분석(NTFS BR과 DATA 영역)

Previous4-3) NTFS 기초 분석Next4-3.2) $MFT와 MFT Entry

Last updated 11 months ago

아래 실습은 NTFS 가상디스크를 만들어서 분석하였습니다.

NTFS 분석 연습용 가상디스크 만들기 > > (가상디스크 연결 방법)

2-2) NTFS Boot Record

  1. 먼저 파티션에 NTFS 파일시스템이 구성되면 가장 먼저 위치로 가봅시다. 반복 했던 분들에게는 이제 매우 쉽겠지만, 다시 진행하여 익숙해 져봅시다.

  2. FTK Imager를 이용해 봅시다. 우선 Add Evidence Item 선택 후 Physical Drive 선택 후 NTFS 저장매체를 선택

  3. 자 먼저 해당 저장매체의 0번 섹터를 살펴봅시다. 0번섹터 마지막 55 AA 시그니처가 있는 것을 볼 수 있으며, 파티션 엔트리가 있는 것을 볼 수 있습니다. 1번 파티션 엔트리를 분석해보면.. - 시작LBA(시작 섹터 번호) : 80 00 00 00 (리틀엔디안) -> 00 00 00 80 (16진수) = 128 (10진수) 섹터 - 전체 섹터 수 : 00 20 03 00 (리틀엔디안) -> 00 03 20 00 (16진수) = 204,800 섹터 >> 204,800 X 512 (1섹터 크기) = 104,857,600 bytes = 100 MB

  4. 도구에서도 동일하게 파악 하는지 확인합시다. Parition 1을 선택 하면 하단에 Properties 시작섹터, 전체 섹터수를 확인할 수 있으며, 파티션 1번 시작영역에 NTFS 부트레코드가 위치하고 있습니다.

  5. NTFS 부트 레코드 구조 중 이번에는 포렌식과 친해지기에서는 중요하다고 생각되는 부분 위주로 살펴 보도록 하겠습니다.

  6. 위에 것을 한번 다시 한번 분석을 해보도록 합시다. - Bytes Per Sector : 512 (1 섹터의 크기 512 bytes) - Sector per Cluster : 8 (클러스터 당 섹터 수) / 클러스터 번호로 섹터를 이동할 때 항상 주의 - Reserved Sector Counter : 00 00 섹터 (예약된 영역으로 사용하지 않는 영역) - Total Sector : 204,799섹터 (전체 섹터 수) - Start of MFT : 8,533 클러스터 - Start of MFTMirr : 2 클러스터 (MFT 복사본) - Serial Number : F2 70 D7 09 70 D6 D4 07 -> 07 D4 D6 70 09 D7 70 F2 (FAT32에 비해 길이가 2배로 길어졌네요!) * 크게 중요하지 않은 것 - Media : 0xF8 고정 디스크(하드 드라이브) - MFT Entry Size : F6 (2의 보수 표현)= 1111 0110 (0 ->1 ,1->0 ) => 0000 1001 (1의 보수) 2의 보수 = 1의 보수 + 1 => 0000 1001 +1 = 0000 1010 (10) Entry Size 는 22의보수=2102^{2의보수} = 2^{10} 22의보수=210= 1,024 bytes (2섹터) - Index Block Size : 1 (인덱스 블럭 크기가 1 클러스터) *인덱스 블럭은 디렉터리 엔트리와 같은 데이터를 효율적 관리하고 빠른 검색을 위한 데이터 구조 이러한 정보를 토대로 FTK Imager가 필요한 부분을 분석해주고 있습니다.

  7. 우선 여기서 FAT32와 다른게 하나 있습니다. FAT32의 경우 부트레코드의 복사본이 있는데 NTFS는 BR에서 부트레코드 복사본을 나타내지 않네요. NTFS는 BR에서 부트레코드 복사본은 어디에 있을까요? 그리고 Total Sector를 한번 보면, 위에서 0번 섹터에서 파티션 테이블을 보면 파티션 1번의 전체섹터 수와 NTFS의 전체 섹터 수가 다릅니다. (1 섹터 작다) 굳이 왜 다르게 했을까요? 파티션 1번 다쓰면 좋은거 아닐까요?

  8. 결론부터 말하면 파티션의 마지막 섹터에 NTFS 복사본이 위치합니다. 우선 파티션 1번이 사용하는 섹터를 살펴봅시다. 128번 부터 시작해서 204,800섹터를 사용합니다. 즉, 128~204,927 까지 총 204,800섹터를 사용하게 됩니다. (128 처음부터 204,927 마지막까지 사용하기에 -1을 하여야 합니다.)

    그런데 NTFS BR에서는 204,799 가 전체 섹터 수 입니다. 그렇다면 NTFS가 사용하는 섹터가 128섹터 ~ 204,926섹터(총 204,799섹터)를 사용합니다. 정리하면 파티션 내에 파일시스템이 위치하는데 파티션은 128 ~ 204,927 내에 파일 시스템이 128~204,926 섹터를 사용하는 것입니다. 그리고 NTFS의 복사본은 파티션의 마지막섹터인 204,927 위치합니다. 즉, 엄밀히 따지면 NTFS의 복사본은 파일시스템 내에 위치하지 않고 파티션 마지막에 위치한다.

  9. 그럼 파티션의 마지막 섹터 위치를 계산해봅시다. 파티션 시작 위치 + 파티션 전체 섹터 수 - 1 섹터 128 + 204,800 - 1 = 204,927 섹터입니다.

  10. FTK Imager에서는 더 간단하게 접근이 가능합니다. 파티션 선택 후 가장 밑으로 내리면 마지막 섹터가 있습니다.

  11. 그렇다면 NTFS의 가장 마지막 섹터를 FTK Imager에서 가보고 싶네요! 우리 계산상이라면 128 + 204,799(NTFS 총 섹터 수) -1 = 204,926 가 나와야 하는데 실제로 그럴까? 우리 예상보다 낮은 204,919 값을 나타내고 있습니다.

2-3) NTFS의 데이터 영역

  1. 음 이상하다. 왜 그럴까요? 이제 NTFS 전체적인 데이터 구조를 정확히 파악하면 왜 그런지 알 수 있을 것입니다.

    먼가 굉장히 성의 없이 생겼지만 결론적으로 NTFS는모든 영역이 데이터 영역 입니다. 그런데 이전 FAT32 에서 디렉토리 엔트리에서 클러스터 위치를 나타내고 있고, FAT 영역도 모두 해당 클러스터의 상태를 활용하고 있습니다. 즉, 이 데이터 영역도 모두 클러스터 단위로 접근하게 됩니다. NTFS도 마찬가지입니다. 따라서 섹터로 계산해서 따로 접근 하는 부분이 없습니다.

  2. 이 전체 영역에 대해서 클러스터를 만들면 몇 개를 만들어야 할까요? 우선 위에서 우리가 확인한 Cluster per Sector 를 보면 8개인 것을 알 수 있습니다. 그렇다면 NTFS 파일시스템 전체 섹터 수 / 클러스터 당 섹터 수 하면 최대한 나올 수 있는 클러스터가 될 것입니다. 한번 계산해 봅시다. 204,799 / 8 = 25,599 클러스터

  3. 자 그렇다면 마지막 클러스터에 한번 접근해보도록 합시다. 25,599개의 클러스터 수를 가지며 0번 클러스터부터 시작하기에 마지막 클러스터 번호는 25,598이 될 것입니다. 128 + (25,598 X 8) = 204,912 (마지막 클러스터 시작 위치) 그럼 마지막 204,912 + 8 - 1 = 204,919 섹터입니다. (1 빼는 이유는 204,912섹터 를 포함하기 때문)

  4. 그렇다면.. 다시 정리하면.. NTFS 데이터 마지막 섹터 204,919 NTFS 전체 기준 마지막 섹터 204,926 총 7섹터가 차이나게 됩니다.

  5. 만약에 NTFS 부트레코드에서 전체섹터 수를 1올려서 파티션의 마지막 섹터까지 포함하였다면 클러스터가 하나 더 만들어지지 않을까요? 그렇다면 맨마지막 클러스터의 마지막 섹터에는 NTFS BR의 복사본이 위치하지 않을까? 만약.. 우리가 디스크를 꽉 채워서 맨마지막 클러스터의 모든 영역에 데이터를 쓴다면!!! NTFS BR의 복사본을 덮어 쓸 수 있지 않을까요? 아마 이런 이유로 안정성 확보를 위해 BR에서 전체 섹터 수를 1 제외하는 것으로 보입니다.

  6. 또한 204,920~204,926 까지는 사실상 데이터 영역이 아닌 빈 섹터가 될 것입니다. FTK Imager에서는 해당 영역을 따로 계산해서 보여주고 있습니다. 사실상 이곳은 운영체제가 건들지 않은 섹터에 해당하겠지요!! 이렇게 파일시스템 특성으로 생기는 빈 공간을 파일시스템 슬랙이라고 합니다. 그렇지만 우리는 알게 되었습니다. 이런 슬랙 영역도 주요 분석 대상이기에 후에 모아서 한번 살펴보도록 합시다.

2-1) NTFS 분석 준비
2. 가상디스크 연결