how ntfs works br

20
How to NTFS Works? brief Blog: ebong2.org

Upload: -

Post on 21-Feb-2017

46 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: How ntfs works br

How to NTFS Works? brief

Blog: ebong2.org

Page 2: How ntfs works br

NTFS Architecture

Page 3: How ntfs works br

MBR – Master Boot Record

• GPT와 MBR이 존재

• 디스크의 가장 첫번째 섹터(512KB)에 위치한 영역.

• 부팅 과정 중 Power on Self-Test를 거친 후 호출 됨.

• 최대 2TB의 디스크까지 커버 가능

• 파티션 테이블에 최대 4개의 주 파티션 혹은3개의 주 파티션과 1개의 확장 파티션으로 구성 가능.

• 마지막 2바이트는 무조건 0XAA55 라는 서명이 차지.

Page 4: How ntfs works br

MBR – Partition Table

Page 5: How ntfs works br

MBR – Partition Table

오프셋 필드길이 설명

0x00 1 Byte 파티션 상태(0x80 = system partition, 0x00 = do not use for booting)

0x01 3 Byte Starting CHS address(VBR)

0x04 1 Byte Partiton type(NTFS = 0x07)

0x05 3 Byte Ending CHS address

0x08 4 Byte Starting LBA address(VBR)

0x0C 4 Byte Total Sectors

Page 6: How ntfs works br

MBR – Master Boot Record

Page 7: How ntfs works br

Organization of an NTFS Volume

Page 8: How ntfs works br

NTFS Volume

• Sector(512Byte) – 디스크에 ‘데이터’를 저장하는 가장 작은 단위. 클러스터를 이룸.

• Cluster(4KB) – 디스크에 ‘파일’을 저장하는 가장 작은 단위 (2GB 이상의 디스크는 4KB)

• LCN(logical cluster Numbers) – 파티션의 처음 클러스터부터 순서대로 메겨지는 번호

• VCN(Virtual Cluster Numbers – 파일을 이루는 첫번째 클러스터부터 순서대로 부여된 번호

• MFT(Master File Table) – 파일의 속성같이 파일에 관한 정보를 담은 레코드.

Page 9: How ntfs works br

VBR – NTFS boot Sector

Page 10: How ntfs works br

VBR – NTFS boot Sector

• 부트코드 OEM ID(“NTFS”), BPB(Bios Parameter Block)가 존재.

• MFT(Master File Table) – 파일의 속성같이 파일에 관한 정보를 담은 레코드.

• BPB에는 MFT의 LCN, sector의 크기, cluster의 크기, 총 섹터의 수 등파티션에 대한 정보가 존재.

• 클러스터 사이즈에 따라 크기가 정해짐(4KB의 경우 VBR = 8 sector)

• 첫 섹터 외 나머지 섹터는 부트로더(NTLDR)의 빠른 로딩을 위해위치 등의 추가 정보가 위치하며, $FILE_NAME Attribute를트리 구조로 인덱싱하여 빠르게 NTLDR의 위치를 찾을 수 있다.

Page 11: How ntfs works br

MFT – Master File Table

Page 12: How ntfs works br

MFT – Master File Table

• 파일 레코드로 이루어진 배열로, 각각의 파일 레코드는 1KB로 고정되어 있음. 각 파일과 폴더 하나에 레코드가 대응.

• MFT안에 파일을 저장할때 사용하는 구조, 해당 블록의 사용 상태를 나타내는 비트맵 등NTFS metadata를 저장하고 있음.

• MFT 자신도 $MFT 파일로 MFT entry안에 존재.

• $LogFile에는 NTFS structure에 영향을 끼치는 모든 명령을 저장.

• $Bitmap은 각 클러스터의 사용여부를 나타내고 있음.

• $boot의 경우 부팅 가능한 볼륨일 경우 부트스트랩 코드가 저장됨. 아닐 경우 에러메시지 출력.

• MFT만 사용하는 목적의 ‘MFT zone’ 을 디스크 일정 비율로 할당. 용량이 부족할 시 무시하고 사용.

Page 13: How ntfs works br

NTFS File Record Attributes

Page 14: How ntfs works br

NTFS File Record Attributes

Page 15: How ntfs works br

NTFS File Record Attributes

Page 16: How ntfs works br

NTFS File Record Attributes

• NTFS 관점에서 파일은 file attribute의 집합체.

• $STANDARD_INFORMATION – 파일의 최근 생성, 접근, 수정시간 등 일반적인 정보

• $OBJECT_ID – 파일과 디렉터리의 128bit unique-id• $DATA – 파일 내용

• $INDEX_ROOT – 루트 노트 정보

• $INDEX_ALLOCATION – 하위 노드 정보

• $DATA의 크기가 각 엔트리의 크기인 1KB를 넘을 시 각 속성의 기본 속성인 Non-Resident 속성의 플래그가• 1이 되고, Cluster run을 만들어 클러스터의 시작 오프셋, 길이를 기록.

다른 엔트리에 데이터를 저장하게 됨.

Page 17: How ntfs works br

MFT – Master File Table

Page 18: How ntfs works br

MFT – Master File Table

LCN to VCN MAPPING

Page 19: How ntfs works br

MFT – Master File Table

Page 20: How ntfs works br

출처

• 파일시스템 4_3 NTFS 속성 - http://blog.naver.com/bitnang/70184584840

• How NTFS Works: Local File Systems –• https://technet.microsoft.com/en-us/library/cc781134(v=ws.10).aspx

• MBR (Master Boot Record) | FORENSIC-PROOF - http://forensic-proof.com/archives/435

• MBR 이야기 - MBR 과 EBR 의 파티션 테이블 엔트리 정보의 해석• :: 캐플 블로그 - http://cappleblog.co.kr/590

• Difference FileID(File Reference Number) and object id in mft –• http://www.osronline.com/showThread.cfm?link=1400

• Windows Internals 6th – Mark E. Russinovich and David A.Solomon with Alex lonescu