디지털포렌식과 친해지기
  • 디지털포렌식전문가 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-5) $MFT의 위치
  • 2-6) MFT Entry 분석
  1. 디지털포렌식과 친해지기
  2. 1. BIT의 저장
  3. 4) 파일시스템 기초 분석
  4. 4-3) NTFS 기초 분석

4-3.2) $MFT와 MFT Entry

Previous4-3.1) NTFS 기초 분석(NTFS BR과 DATA 영역)Next4-3.3) MFT Entry의 주요 속성1($SI,$FILE,$DATA)

Last updated 11 months ago

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

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

2-5) $MFT의 위치

  • 사실 파일시스템의 가장 처음 공부할때 만만한 것은 것은 내가 파일을 만들어 놓고 거기에 접근해보는 과정을 살펴보는 것입니다. 다른 많은 옵션들을 알면 좋으나 단순 외우는 것들이라 크게 눈에 들어오지 않습니다. 추후에 제대로 분석할 때 살펴보도록 합시다.

  • FAT32에서는 루트디렉토리에 가면 디렉토리 엔트리가 있어서 해당 파일 정보와 위치등을 파악 할 수 있었습니다. 그런데 NTFS는 FAT영역, Reserved 영역도 없이 전체가 데이터 영역입니다. 그렇다면 어떻게 루트 디렉토리에 우선 갈 수 있을까요?

  • 결론적으로 NTFS는 MFT 영역에 파일 관련 정보가 파일 형태로 저장하고 있습니다. 이제 실습을 통해 이해를 해보도록 합시다! 다만 MFT를 어느정도 분석 후에 파일로 접근해보도록 합시다. 아직 우리는 아는게 없으니 MFT Entry 최상위 부분을 살펴보도록 합시다.

  1. 먼저 NTFS BR에서 MFT 시작 클러스터 위치를 알려주고 있습니다. 우선 복사본이나, 기본 MFT 영역이나 어디든 이동 해봅시다. - Start of MFT : 8,533 클러스터 - Start of MFTMirr : 2 클러스터 (MFT 복사본)

  2. 8,533 클러스터로 이동 해봅시다. 파티션 시작섹터 + (클러스터 번호 X 클러스터 당 섹터 수)= 해당 클러스터 섹터 위치 -1 하는 이유는 0번 클러스터 부터 시작하기 때문입니다. 128 + (8,533 X 8) = 68,392 섹터 또는 FTK Imager에서 이동 후 섹터 번호를 확인 해봅시다.

  3. 해당 섹터를 가보면 시그니처(섹터의 맨 앞 부분)을 보면 FILE~로 시작하는데 이 부분이 MFT 으로 FTK Imager에서 보면 $MFT 영역을 보면 동일한 부분을 가리키고 있는 것을 알 수 있습니다.

2-6) MFT Entry 분석

  1. 68,392섹터에 MFT 영역이 시작되기 때문에 해당 영역으로 이동해보도록 하겠습니다.

    또는Primary NTFS - $MFT 영역으로 이동도 가능합니다. 해당 도구가 이미 중요한 영역을 바로 접근 할 수 있게 위의 우리가 계산한 것과 동일하게 이동할 수 있도록 설정해 두었습니다.

  2. 68,392섹터의 가장 첫부분에 우클릭 - Set Template Position 설정 후 Templates에서 NTFS MFT File Record로 설정하면 MFT 영역의 분석을 하기 편하도록 해줍니다.

  3. 우선 우리가 제일 처음 부분인 MFT Entry Header 부분을 분석해 봅시다.

  4. 위에 내용을 한번 살펴봅시다. - Signature : 46 49 4C 45 (FILE - 아스키 값으로 고정된 값) - Offset Fixup Array : 30 00 -> 00 30 (16진수) => 48 (10진수) (MFT Entry 내에 Fixup 배열이 어디쯤 저장되어 있는지 위치를 담고 있다.) - Count Fixup Value : 03 00 -> 00 03 => 3 (Fixup 배열 관련 갯 수) - LSN($LogFile Sequence) : 51 51 10 00 00 00 00 00 -> 00 00 00 00 00 10 51 51(1,069,393) NTFS 로그 파일($LogFile)에서 각 트랜잭션에 대해 부여되는 고유한 번호입니다. - Sequence Value : 01 00 -> 00 01 (해당MFT Entry가 재할당 할 때 상승, 단순 수정은 증가 안 함) - Hard Link Count : 01 00 -> 00 01 (하드링크 개수 1) - Offset to First Attribute : 38 00 -> 00 38 => 56 (다음 속성의 위치 offset) - Flag : 01 00 -> 00 01 (파일) 0001 - 파일 / 0002 - 디렉토리 0004 - 시스템 파일 / 0005 - 파일+시스템파일 - Used Size of Entry : A0 01 00 00 -> 00 00 01 A0 => 416 (해당 MFT Entry 크기) - Allocated Size of Entry : 00 04 00 00 -> 00 00 04 00 => 1,024 bytes (엔트리 크기, 즉 2섹터) - File Reference to Base MFT Entry : 00 00 00 00 00 00 00 00 - Next Attribute ID : 07 00 -> 00 07

  5. 음.. 뭔가 많은데 하나씩 정리하여 봅시다. [Fixup Array와 Update Sequence Number] 우선 파일 접근에 있어 중요한건 아니나 안정성 확보를 위해 있는 Fixup에 대해서 한번 살펴봅시다. - Offset Fixup Array : 30 00 -> 00 30 (16진수) => 48 (10진수) (MFT Entry 내에 Fixup 배열이 어디쯤 저장되어 있는지 위치를 담고 있다.) - Count Fixup Value : 03 00 -> 00 03 => 3 (Fixup 배열 관련 갯 수) > 이 뜻은, 48오프셋에 Fixup 배열 관련 정보가 3개가 있는 의미입니다. 02 00 / 00 00 / 00 00 [3개로 Count Fixup Value 3의미] 우선 MFT Entry Header 가장 처음 위치를 클릭한 상태로 Navigate - Go to Offeset 로 48번 바이트로 가봅시다. (Current position 선택)

    48번으로 가면 MFT Entry Header 보다 벗어난 곳에 Update Sequence Number 가 있고, 그 다음에는 update sequence array가 위치합니다. Update Sequence Number 의 경우 운영체제가 임의로 지정하나 보통 00 02가 들어가고, MFT Entry 가 변경되면 해당 번호가 상승합니다. (모든 파일이 다 그런건 아님) FF FF 까지 변하면 다시 01 00 또는 02 00로 되돌아 갑니다. 그 뒤에 해당 값을 해당 섹터 마지막 2byte와 자리를 바꿉니다.

    그리고 그 다음 섹터도 동일하게 바로 다음 섹터의 마지막 부분과 바꾸는 것입니다.

    정리하면, Update Sequence Number를 해당 MFT Entry 가 있는 섹터 마지막에 기록하는 것입니다. 만약 Update Sequence Number와, 해당 MFT Entry 의 해당 섹터마다 마지막 2바이트가 다르다면, 훼손된 것으로 볼 수 있는 것이죠. 또한 MFT Entry 의 크기가 커서 사용하는 섹터가 많을 수록 Update Sequence Number를 넣을 수 있는 Array가 많이 필요할 것입니다.

[참고] Update Sequence Number의 경우 파일을 변경할때 마다 1씩 상승하는데 그렇다면 몇번이하 파일이 변경되었는지 예측해볼 수도 있을 것입니다. 만약 FF FF 인 65535번 이상 변경 하면 다시 00 01로 돌아가기 때문에 모르겠지만..

그런데 MFT의 경우 매우 자주 바뀔건데 2번이네요.. 확인해보니 몇몇 파일은 이렇게 낮게 설정해둔 것도 있다고 하니 파일을 몇 번 수정했는지 정확히 파악하기에 사용하는 값으로는 살짝 어려운 느낌이네요! 그래도 충분히 살펴볼만한 값이긴 한 듯 합니다. 일반 파일의 경우 65535번(정확히는 1번 제외, 00 00 은 안되니..) 하나의 파일을 바꾸는 경우는 얼마나 될까요?

  1. [LSN]의 경우 $LOGFILE과 관련이 있습니다. 추후에 $LOGFILE 기능은 따로 살펴보도록 하겠습니다. (포렌식적으로 주요한 의미를 가졌기에 따로 분석해보도록 하겠습니다.)

  2. MFT 엔트리 크기에 대해 알아봅시다. - Used Size of Entry : A0 01 00 00 -> 00 00 01 A0 => 416 (해당 MFT Entry 크기) - Allocated Size of Entry : 1,024 bytes(2섹터) 2섹터 이후에는 다른 MFT Entry가 시작되는 것을 확인할 수 있습니다. 섹터를 보면 하단쯤에 FF FF FF FF 값을 가진 부분이 있으며 MFT Entry의 마지막 값입니다. 그러나 00 00 00 00 을 포함해야 416 bytes에 해당합니다. 16바이트로 단위로 구분하고 있습니다. (실제로는 412가 필요하나 4바이트를 더 확보합니다.) 중간에 있는 것은 속성으로 Header 분석 이후에 확인해보도록 합시다.

  3. File Reference to Base MFT Entry의 경우 MFT Entry 가 1개로 모자랄 경우 이 영역을 이용하여 MFT Entry 를 확장하여 사용하게 됩니다. 이는 다음에 알아볼 속성등의 정보가 많이 추가될 경우 MFT Entry의 크기 1,024bytes(2섹터)보다 커질 수 있고, 이 경우 추가 MFT Entry 가 필요하게 되겠죠. 이 영역에 값이 있는 경우 해당 엔트리 번호의 확장 엔트리이며 값이 없는 경우 기본 엔트리가 됩니다. 이 부분은 지금 분석해도 감이 오지 않는 값이기 때문에 실제로 사용할 때 제대로 살펴보도록 합시다!

  4. [속성 관련] 정보를 알아봅시다. - Next Attribute ID : 07 00 -> 00 07 먼저 Next Attribute ID는 새로운 Attribute가 할당될 경우 속성 ID가 7번이 부여된다는 의미입니다. 현재 속성이 4 정도인데 Next가7로 숫자가 큰 이유는 기존에 삭제되거나 재할당 되었을 경우에도 계속해서 숫자가는커지기 때문에 현재보다 많이 클 수가 있는 것입니다. - Offset to First Attribute : 38 00 -> 00 38 => 56 (다음 속성의 위치 offset) 이제 실제로 의미가 있는 First Attribute 위치를 알려주고 있습니다. 해당영역으로 이동하여 봅시다.

    이동하면 새로운 분석 영역으로 들어가게 됩니다.

NTFS 분석은 Active Disk Editor와 FTK Imager로 같이 보면서 확인해보도록 하겠습니다. Active Disk Eidtor 설치 관련 :

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