목록포렌식/파일시스템 (파일시스템 포렌식분석) (43)
Piki's Play
- 많은 리눅스 운영체제 배포판은 기본 파일시스템으로 Ext2와 Ext3 파일시스템을 사용한다. Ext3는 기존의 Ext2에서 저널링 기능을 더했지만, 거의 모든 Ext2 구성은 그대로 남아있다. ExtX는 UFS(UNIX File System)를 기초로해서 만들었고, UFS의 쓸모없는 기능들을 제거하여 이해하고 분석하기 쉬워졌다. 다른 운영체제와 달리 리눅스는 많은 파일시스템을 지원하고, 각 배포판은 기본으로 사용할 파일시스템을 선택할 수 있다. - Ext3 파일시스템이 리눅스 기본 파일 시스템이지만, ExtX와 전혀 다른 구조를 가진 Reiser와 같은 파일시스템들을 사용하기도 한다. 이번 장에서는 ExtX가 어떻게 동작하는지 살펴보고 15장에서 데이터 구조체에 대해 다루도록 하겠다. 14.1 소개 ..
▶ $Quota 파일 - $INDEX_ROOT와 $INDEX_ALLOCATION 속성을 사용한다. $O 인덱스는 한 SID와 소유자 SID를 연결시키고, $Q 인덱스는 할당정보에 자산의 ID를 연결시킨다. $O 인덱스를 위한 인덱스 엔트리는 아래에서 주어지는 필드들을 갖는다. -> 이 인덱스 엔트리의 플래그 값들은 파일 이름에서 보았던 것과 동일하다. 목록에 마지막 엔트리일때 설정된다. 만약 자식이 존재하면 그 바이트는 자식의 VCN을 위해 사용된다. 다음 예에서 $O 인덱스에 있는 첫 엔트리를 볼 수 있다. -> 바이트 0~1은 소유자 ID가 엔트리 시작으로부터 오프셋 28에 위치한다는 것을 보여주고, 바이트 2~3은 소유자 ID의 길이를 의미하고 해당 값은 4바이트이다. 바이트 8~9는 인덱스 엔트리..
13.4 파일시스템 메타데이터 파일 - 앞에서 파일과 인덱스의 다양한 속성을 살펴보았고, 지금부터는 파일시스템 메타데이터 파일들에 대해 설명하겠다. 이들 대부분은 일반 파일 속성을 사용하지만 그 중 몇개는 자신만의 속성을 갖는다. 이 속성들에 대해서는 다음 절에 설명한다. ▶ $MFT 파일 - 속성 $MFT 파일은 MFT엔트리 0에 위치하고 파일 시스템 모든 파일에서 중요하기 때문에 이번 장 시작에서부터 언급을 하였다. - $MFT의 고유한 한 속성은 MFT엔트리 할당상태를 관리하는 $BITMAP 속성이다. 그 속성들은 바이트들로 구성되고 한 비트가 1로 설정될 때 그 엔트리는 할당된 것이고, 그 반대로 비트가 0이면 엔트리는 할당되지 않은 것이다. icat 도구에 속성타입 176을 지정해서 $BITMA..
13.3 인덱스 속성과 데이터 구조 - 이전 절에서는 모든 파일에 적용한 속성과 개념을 다루었다. 이번 절에서는 데이터 구조체 및 인덱스와 관련있는 속성들에 대해 상세히 살펴본다. 인덱스의 기본 개념은 정리된 트리에 데이터 구조체가 있다는 것이다. 그 트리는 한개 이상의 노드를 갖고, 각 노드는 한개 이상의 인덱스 엔트리를 갖는다. 트리는 루트 $INDEX_ROOT 속성에 위치하고, 다른 노드는 $INDEX_ALLOCATION 속성에 있는 인덱스 레코드에 위치한다. $BITMAP 속성은 인덱스 레코드들이 할당상태를 관리하기 위해 사용된다. 속성을 먼저 설명하고, 그 이후에 데이터 구조체를 설명한다. ▶ $INDEX_ROOT 속성 - $INDEX_ROOT는 거주속성이고, 144타입 식별자를 갖는다. 이것은..
-> 이전 절에서는 MFT엔트리와 속성 헤더를 처리하는 방법을 간단히 설명하였다. 이 절에서는 각각 다른 속성 내용 타입을 어떻게 처리하는지 설명해보자 ▶ $STANDARD_INFORMATION 속성 - 타입 식별자 16인 $STANDARD_INFORMATION 속성은 항상 거주속성이고, 파일이나 디렉토리의 기본 메타데이터를 포함한다. 모든 파일과 디렉토리에 존재하고 가장 낮은 타입 식별자를 갖기 때문에 일반적으로 첫번재 속성이다. - 4개의 시간값들은 1601년 1월 1일 UTC부터 100나노 단위로 저장이된다. 같은 시간 필드들이 $FILE_NAME 속성에도 있지만 윈도우가 파일 속성에서 보여주는 시간값은 $STANDARD_INFORMATION 정보이고, 업데이트 되는 정보도 마찬가지이다. ※ 아래의..
- 이 장은 NTFS 3번째 장으로서 데이터 구조체에 대해 설명한다. 앞에서는 NTFS의 기본 개념과 어떻게 분석해야 하는지 설명했다. - 먼저 기본 요소들의 데이터 구조체와 특정 속성들과 인덱스 타입들을 자세히 분석하고, 마지막으로 메타데이터 파일들을 다룬다. - NTFS에 대한 공식 명세는 없다. 13.1 기본 개념 - 이 절에서는 NTFS의 기본 데이터 구조체의 개념을 기술한다. 첫 번째 하위 절에서는 데이터 구조체의 신뢰성을 제공하는 구조체의 설계특징을 분석하고, 다음은 MFT엔트리와 속성 헤더의 데이터 구조체에 대해 설명한다. ▶ Fixup 값 - NTFS에는 신뢰성을 향상 시키기위해 사용하는 저장기술이 있다. NTFS는 한 섹터가 넘는 길이를 갖는 데이터 구조체와 fixup 결합한다. fixu..
12.5 응용프로그램 범주 - NTFS는 많은 응용프로그램 수준의 기능을 지원하는 유일한 파일시스템이다. 이 기능들은 파일시스템에서 꼭 필요하지는 않지만 응용프로그램이나 운영체제들이 효율적으로 운영되기 위해서 필요하다. 이 절에서는 디스크 할당, 로깅, 변경 저널링에 대해 기술하겠다. 그 데이터 구조체들은 13장에서 설명한다. 이 절에서는 기능의 응용프로그램 수준의 필수 데이터만을 언급하도록 하겠다. ▶ 디스크 할당 - NTFS는 디스크 공간 할당을 지원한다. 관리자는 각 사용자별로 사용할 수 있는 공간을 제한하는 할당을 설정할 수 있다. 할당 정보 일부는 파일시스템 데이터로 저장되고 다른 데이터는 레지스트리 같은 응용프로그램 수준의 파일들에 저장된다. NTFS 3.0 이전 버전에서는 MFT엔트리 9에 ..
12.4 파일이름 범주 - 파일이름 범주는 파일이름과 내용을 연결하는데 사용되는 데이터를 포함한다. 이제까지 NFTS의 저장밥법과 어떤 메타데이터가 저장되는지 알아보았다. 이 절에서는 파일 이름이 어떻게 연결되어 있는지 자세히 알아보자. NTFS는 인덱스를 사용해 디렉토리를 구성한다. 트리는 한개 이상의 노드를 포함하고 노드는 $INDEX_ROOT와 $INDEX_ALLOCATION 속성에 저장이 된다. $INDEX_ROOT 속성은 항상 트리의 루트이고 $INDEX_ALLOCATION은 다른 노드들을 저장하는데 사요오디는 인덱스 레코드들을 포함한다. $BITMAP 속성은 레코드들의 할당상태를 표현한다. 트리의 각 노드들은 인덱스 엔트리들의 목록을 포함한다. ▶ 디렉토리 인덱스 - NTFS 디렉토리는 헤더,..