본문 바로가기

파일시스템 포렌식

File System - NTFS (13) 이번 글부터는 지금까지 알아본 NTFS 시스템의 갖가지 개념들을 기초로 하여 NTFS 내에서 사용되는 데이터 구조체들을 분석하여 볼 것이다. 데이터 구조체를 분석하기에 앞서 한가지 참고적으로 알아둬야 할 개념이 있다. Fixup 이라는 개념인데, 이 개념은 아래와 같다. [Fixup] Fixup이라는 것은 NTFS에서 신뢰성을 향상 시키기 위하여 사용하는 저장 기술로, 데이터가 저장된 섹터의 손상여부를 판단하기 위한 기술이다. 해당 기술의 원리는 일반적인 섹터의 마지막 2바이트를 특정 시그니처로 교체 해 두고, 원래의 2바이트 값은 Fixup 배열에 저장하여 교체 해 둔 시그니처가 다른 값으로 교체되지 않았다면 섹터가 손상되지 않은 것으로 보고 배열에 있는 원래의 값을 다시 섹터 마지막 2바이트에 넣는다.. 더보기
File System - NTFS (12) 지금까지 NTFS에 대한 개념과 파일시스템 참조 모델을 기준으로 여러가지를 알아 보았는데 이 개념들과 정보들을 혼합해서 이해하려고 할때에는 조금 무리가 있다. 그래서 이 글에서는 지금까지 공부한 지식으로 NTFS에서 파일이 어떻게 할당되고 삭제 되는지에 대하여 이야기 해 볼것이다. 일단 파일 생성부터 살펴보자. [할당] 현재 설명할 NTFS의 기본 레이아웃은 파일이 할당 될 dir1 디렉토리가 이미 존재하며, 클러스터가 2048byte 크기이며, 할당할 파일(File.txt)의 크기는 4000byte이다. 1. 먼저 파일시스템이 첫 번째 섹터를 읽고 부트 섹터의 클러스터 크기, MFT 시작 주소, MFT 엔트리들의 크기를 정한다. 그 후 MFT 첫 번째 엔트리($MFT)를 참조하고 $MFT 파일의 $DA.. 더보기
File System - NTFS (11) 이번 글에서는 마지막 참조 모델인 응용 프로그램 참조 모델에 해당하는 NTFS 데이터를 알아 볼 것이다. 다른 파일시스템들과는 다르게 NTFS는 많은 응용프로그램 수준의 기능을 지원한다. 여기서 알아볼 기능들은 디스크 할당, 저널링, 변경 저널링 기능이다. 이러한 기능들은 파일시스템에서 필수적으로 필요한 기능들은 아니지만, 사용자의 편의성등을 위해 제공되는 기능들이다. 지금부터 하나씩 알아보도록 하자. [디스크 할당] 이 기능은 사용자 별로 사용 할 수 있는 공간을 할당 하는 기능으로, 할당 정보의 일부는 파일시스템 메타데이터 파일로 저장되는데, NTFS 3.0 버전을 전후로 3.0 이전 버전에서는 MFT 열 번째 엔트리인 \$Quota에 저장되었고 이후 버전에서는 \$Extend 디렉토리에 존재하였다... 더보기
File System - NTFS (10) 이번 글에서는 NTFS에서 파일이름 참조모델에 해당하는 데이터들을 알아 볼 것이다. 파일이름 참조모델은 파일이름과 파일내용을 연결하여 주는 데이터를 포함하고 있는 모델이다. NTFS에서는 앞에서 언급한 인덱스를 이용하여 디렉토리 내용을 구성한다. 인덱스 엔트리는 노드 값을 포함하며, $INDEX_ROOT, $INDEX_ALLOCATION 속성에 저장된다. $INDEX_ROOT 속성에 저장된 값은 항상 트리구조에서 루트 노드 값에 해당하며, $INDEX_ALLOCATION 속성에 저장 된 인덱스 엔트리들은 트리구조에서 리프노드에 해당한다. 또 $BITMAP 속성은 인덱스 레코드들의 할당 상태를 관리하는데 사용된다. * 참고 : 인덱스 레코드는 $INDEX_ALLOCATION속성에서 인덱스 엔트리를 포함하는.. 더보기
File System - NTFS (9) 이번에는 NTFS 에서 메타데이터 참조 모델에 해당 하는 것들을 알아보자. 메타데이터란, 파일이나 디렉토리를 설명하는 데이터를 포함하는 것이다. 메타데이터 참조 모델을 분석함으로써 파일이나 디렉토리의 상세 정보를 얻을 수 있다. [$STANDARD_INFORMATION] 해당 속성은 모든 파일과 디렉토리에 존재하는 속성으로, 포함하는 데이터로는 타임스탬프 세트 및 소유권, 보안, 할당 정책이 있다. 해당 속성 타입 ID는 16이며 윈도우 별로 고정된 크기를 갖는다. * 참고 : Windows 2000(72byte), Windows NT(48byte) 해당 속성이 가지고 있는 타임스탬프는 총 4개의 시간 값을 가지고 있는데 그 종류는 아래와 같다. - 생성 시간 : 파일이 생성된 시간 - 수정 시간 : $.. 더보기