본문 바로가기
디지털포렌식/기초 이론

[디지털포렌식 - 기초] 윈도우의 심장, NTFS 파일시스템 들여다보기

by 컬스터디 2025. 5. 14.
반응형

Windows OS - PixaBay

안녕하세요!

지난 시간에는 USB 메모리나 SD카드에서 자주 만날 수 있는 FAT 파일시스템에 대해 알아보았습니다.

오늘은 우리에게 더욱 친숙한 윈도우 운영체제의 핵심 파일시스템, 바로 NTFS(New Technology File System)에 대해 깊이 있게 들여다보는 시간을 갖겠습니다.

우리가 매일 사용하는 컴퓨터의 파일들이 어떻게 관리되는지, 그 비밀을 함께 파헤쳐 볼까요?


1. 들어가며: FAT를 넘어, 왜 NTFS를 사용하게 되었을까?


이전에 다루었던 FAT 파일시스템은 USB 메모리와 같은 휴대용 저장장치에서 여전히 유용하게 사용됩니다. 하지만 우리가 사용하는 윈도우 PC의 하드디스크나 SSD는 대부분 NTFS라는 파일시스템으로 포맷되어 있습니다. 왜일까요?

기술이 발전하면서 저장 장치의 용량은 엄청나게 커졌고, 다루어야 할 파일의 크기도 점점 늘어났습니다. 

또한, 여러 사용자가 함께 컴퓨터를 사용하거나 중요한 데이터를 안전하게 보호해야 할 필요성도 커졌죠.

FAT 파일시스템은 이러한 현대적인 요구사항, 예를 들어 대용량 디스크 지원, 파일 및 폴더에 대한 접근 권한 설정, 데이터 손실 방지를 위한 안정성 등에서 조금씩 한계를 보이기 시작했습니다.

그래서 마이크로소프트는 더 강력하고, 안전하며, 효율적인 파일시스템이 필요하다는 것을 깨닫고 NTFS를 개발하게 된 것입니다. 

NTFS는 더 큰 파일과 디스크를 지원할 뿐만 아니라, 파일 접근 제어, 데이터 암호화, 디스크 공간 효율적 사용, 그리고 시스템 오류로부터 데이터를 보호하는 저널링(Journaling)과 같은 고급 기능을 제공합니다. 

덕분에 오늘날 윈도우 사용자들은 더욱 안정적이고 강력한 컴퓨팅 환경을 누릴 수 있게 되었죠.

2. NTFS란 무엇인가? (New Technology File System)


NTFS는 이름 그대로 "새로운 기술의 파일시스템"입니다. 1990년대 초 윈도우 NT 운영체제와 함께 등장한 이래로, 현재 우리가 사용하는 윈도우 10, 윈도우 11에 이르기까지 핵심 파일시스템으로 자리 잡았습니다.


주요 특징:

  • 대용량 지원:
    테라바이트(TB)급의 대용량 디스크와 파일을 지원합니다.
  • 보안성:
    파일 및 폴더별로 사용자 접근 권한을 세밀하게 제어할 수 있는 ACL(Access Control List) 기능을 제공하며, 파일 암호화(EFS)도 지원합니다.
  • 안정성 및 복구성:
    시스템 장애 발생 시 파일시스템의 일관성을 빠르게 복구할 수 있도록 저널링 기능을 사용합니다 (예: \$LogFile).
  • 압축 및 할당량:
    디스크 공간을 절약하기 위한 파일 압축 기능과 사용자별 디스크 사용량 제한(쿼터) 기능을 제공합니다.
  • 모든 것이 파일 (Everything is a file):
    NTFS의 흥미로운 특징 중 하나는 파일시스템을 관리하는 데 필요한 정보조차도 특별한 "파일" 형태로 저장한다는 것입니다.
    이를 메타데이터 파일(Metadata Files)이라고 부르며, 잠시 후에 더 자세히 살펴보겠습니다.

NTFS는 주로 인텔(Intel) 기반 프로세서에서 사용되도록 설계되었기 때문에 데이터를 저장할 때 리틀 엔디안(Little Endian)이라는 바이트 순서 방식을 사용합니다. 이는 포렌식 분석가가 데이터를 직접 해석할 때 고려해야 하는 중요한 사항 중 하나입니다.

3. NTFS의 핵심 구조: MFT와 메타데이터 파일


NTFS 파일시스템의 심장부에는 MFT(Master File Table)라는 매우 중요한 구조가 있습니다.

MFT는 NTFS 볼륨(파티션)에 있는 모든 파일과 디렉터리에 대한 정보를 담고 있는 거대한 목록 또는 데이터베이스라고 생각할 수 있습니다.

VBR (Volume Boot Record) / 부트 섹터:

NTFS VBR

FAT 파일시스템과 마찬가지로, NTFS 파티션의 가장 앞부분에는 VBR이 존재합니다. 

VBR에는 해당 NTFS 파티션의 기본 정보(예: 섹터당 바이트 수, 클러스터당 섹터 수, MFT의 시작 위치 등)와 운영체제를 부팅하기 위한 작은 프로그램(부트스트랩 코드)이 기록되어 있습니다.

MFT (Master File Table):

NTFS 볼륨 내의 모든 파일과 디렉터리는 이 MFT에 최소 하나 이상의 MFT 엔트리(또는 레코드)로 기술됩니다.

각 MFT 레코드는 고유한 번호를 가지며, 파일 이름, 크기, 시간 정보, 보안 정보, 그리고 실제 데이터의 위치 등 해당 파일이나 디렉터리에 대한 모든 세부 정보를 담고 있습니다.

놀랍게도, 이 MFT 자체도 \$MFT라는 이름의 메타데이터 파일로 관리됩니다!

주요 메타데이터 파일 (System Files):

주요 메타데이터 파일들

NTFS는 파일시스템을 유지하고 관리하기 위해 여러 개의 시스템 파일(메타데이터 파일)을 사용합니다. 

이 파일들은 보통 달러 기호(\$)로 시작하는 특별한 이름을 가집니다. 몇 가지 중요한 메타데이터 파일들은 다음과 같습니다:

  • \$MFT:
    마스터 파일 테이블 그 자체입니다. 모든 파일과 디렉터리의 정보를 담고 있죠.
  • \$MFTMirr:
    MFT의 중요한 앞부분(보통 처음 4개 레코드)을 복사해둔 미러 파일입니다. MFT 손상 시 복구를 돕기 위함입니다.
  • \$LogFile:
    파일시스템의 변경 사항을 기록하는 로그 파일입니다. 시스템이 갑자기 꺼지거나 오류가 발생했을 때, 이 로그를 참조하여 파일시스템의 일관성을 빠르게 복구(저널링)할 수 있습니다.
  • \$Volume:
    볼륨의 이름, NTFS 버전, 볼륨 레이블 등의 정보를 담고 있습니다.
  • \$AttrDef:
    파일이나 디렉터리가 가질 수 있는 다양한 속성(Attribute)들의 종류와 특성을 정의해둔 파일입니다.
  • \$Bitmap:
    볼륨 내의 각 클러스터가 현재 사용 중인지 아니면 비어있는지를 표시하는 비트맵 정보입니다. 파일에 새로운 공간을 할당할 때 참조됩니다.
  • \$Boot:
    부트 섹터(BSPB 포함)의 내용을 담고 있는 파일입니다.
  • \$BadClus:
    디스크의 불량 클러스터 정보를 기록해두어 해당 클러스터를 사용하지 않도록 합니다.

이 외에도 \$Secure(보안 정보), \$UpCase(대소문자 매핑 정보) 등 다양한 메타데이터 파일들이 NTFS 파일시스템을 구성하고 유지하는 데 중요한 역할을 합니다.

4. MFT 레코드와 속성(Attributes): 파일 정보는 어떻게 저장될까?


앞서 MFT는 파일과 디렉터리에 대한 정보를 담은 레코드들의 집합이라고 했습니다. 

각 MFT 레코드 안에는 해당 파일이나 디렉터리의 구체적인 정보들이 속성(Attributes)이라는 형태로 저장됩니다.

파일 이름, 생성 시간, 실제 데이터 내용 등 모든 것이 속성으로 표현됩니다.

속성의 종류:

거주 속성 (Resident Attribute): 

속성의 데이터 크기가 작을 경우, 데이터 자체가 MFT 레코드 안에 직접 저장됩니다. 

예를 들어, 아주 작은 파일의 내용은 MFT 레코드 내의 \$DATA 속성에 직접 기록될 수 있습니다.

 

비거주 속성 (Non-resident Attribute): 

속성의 데이터 크기가 커서 MFT 레코드 안에 다 담을 수 없을 경우, 실제 데이터는 MFT 외부의 다른 클러스터들에 저장되고, MFT 레코드 내에는 이 외부 클러스터들의 위치 정보(데이터 런, Data Run)만 기록됩니다. 

대부분의 사용자 파일 데이터는 비거주 속성으로 저장됩니다.

주요 표준 속성 소개 :

  • \$STANDARD_INFORMATION (0x10):
    파일의 시간 정보(생성, 수정, 접근, MFT 변경 시간 – 흔히 MAC 타임이라고 불림), 소유자 ID, 보안 설정 등의 기본적인 정보를 담습니다.
  • \$FILE_NAME (0x30):
    파일의 이름(긴 파일 이름, 짧은 8.3 형식 이름), 부모 디렉터리의 MFT 레코드 번호, 그리고 파일의 시간 정보(MAC 타임) 등을 담습니다.
    \$STANDARD_INFORMATION의 시간 정보와 중복될 수 있지만, 포렌식 분석 시 두 정보를 비교하여 파일 변경 이력을 추적하는 데 중요한 단서가 됩니다.
  • \$DATA (0x80):
    파일의 실제 내용을 담고 있는 속성입니다. 파일 크기에 따라 거주 또는 비거주 형태로 저장될 수 있습니다.
    하나의 파일이 여러 개의 \$DATA 속성을 가질 수도 있는데, 이를 ADS(Alternate Data Streams)라고 합니다.
  • \$INDEX_ROOT (0x90), \$INDEX_ALLOCATION (0xA0), \$BITMAP (0xB0) (주로 디렉터리 파일):
    디렉터리는 그 안에 포함된 파일이나 하위 디렉터리들의 목록을 가지고 있어야 합니다.
    이 정보는 B-트리라는 효율적인 자료구조를 사용하여 이 속성들에 저장됩니다.


5. NTFS에서의 파일 생성과 삭제 

파일 생성 시:

시스템은 MFT에서 사용 가능한 빈 레코드를 찾아 할당합니다.
새로운 파일에 대한 정보(\$STANDARD_INFORMATION, \$FILE_NAME 등)와 데이터(\$DATA)가 해당 MFT 레코드의 속성으로 기록됩니다.
데이터를 저장하기 위해 할당된 클러스터들은 \$Bitmap 파일에 "사용 중"으로 표시됩니다.
해당 파일이 속한 부모 디렉터리의 인덱스 정보(파일 목록)도 업데이트됩니다.

파일 삭제 시:

사용자가 파일을 삭제하면, 해당 파일의 MFT 레코드 내의 특정 플래그(예: "in use" 플래그)가 "사용 안 함"으로 변경됩니다.
\$Bitmap 파일에서 해당 파일이 사용하던 클러스터들이 "사용 가능함"으로 표시됩니다.
부모 디렉터리의 인덱스에서도 해당 파일 엔트리가 제거되거나 "삭제됨"으로 표시됩니다.


포렌식적 의미
FAT와 마찬가지로, NTFS에서도 파일을 삭제한다고 해서 MFT 레코드의 내용이나 데이터 영역의 실제 파일 데이터가 즉시 물리적으로 지워지는 것은 아닙니다! 

 

MFT 레코드는 "사용 안 함"으로 표시될 뿐 그 내용(이전 파일 정보)은 한동안 남아있을 수 있고, 데이터 클러스터도 다른 데이터로 덮어쓰이기 전까지는 원래 내용을 유지합니다. 

 

이것이 바로 포렌식 도구를 사용하여 삭제된 파일을 복구할 수 있는 핵심 원리입니다. 

 

또한, \$LogFile이나 \$UsnJrnl (Update Sequence Number Journal)과 같은 저널링 파일에도 파일 생성, 삭제, 수정에 대한 흔적이 남아 있을 수 있어 중요한 분석 대상이 됩니다.


ADS (Alternate Data Streams)
NTFS는 하나의 파일 이름 뒤에 숨겨진 또 다른 데이터 스트림을 가질 수 있는 ADS 기능을 제공합니다. 

악성코드가 자신을 숨기거나 데이터를 은닉하는 데 사용될 수 있어 포렌식 분석 시 주의 깊게 살펴보아야 할 부분입니다.


6. 마치며: NTFS 분석, 더 깊은 디지털 증거의 세계로


지금까지 윈도우의 핵심 파일시스템인 NTFS에 대해 살펴보았습니다. 

FAT 파일시스템보다 구조가 복잡하고 다양한 기능을 제공하는 만큼, 분석해야 할 정보도 훨씬 풍부합니다. 

MFT 레코드의 상세한 내용, 다양한 메타데이터 파일들의 기록, 시간 정보의 정교한 분석, ADS의 존재 유무, 그리고 저널링 파일(\$LogFile, \$UsnJrnl)이나 볼륨 섀도 복사본(Volume Shadow Copy)과 같은 고급 기능들은 디지털 포렌식 전문가에게 수많은 단서를 제공합니다.

NTFS 파일시스템을 제대로 이해하는 것은 윈도우 시스템에서 발생하는 거의 모든 디지털 사건을 분석하는 데 있어 가장 기본적이면서도 핵심적인 능력이라고 할 수 있습니다.

다음 시간에는 또 다른 흥미로운 디지털 포렌식 주제로 여러분을 찾아뵙겠습니다.

반응형