목록포렌식 (54)
Piki's Play
14.6 응용프로그램 범주 - Ext3는 오직 한가지 응용프로그램 수준의 기능 즉, 파일스시템 저널만을 갖는다. Ext2에는 저널기능이 없고, 할당같은 다른 응용프로그램 범주기능이 일반 사용자 파일에 구현되어있다. ▶ 파일시스템 저널링 - 8장에서 설명했던 파일시스템 저널을 Ext3는 포함한다. 파일시스템 저널은 파일시스템이 손상되었을때 재빨리 복구할 수 있도록 파일시스템에 업데이트를 기록한다. ▷ 개요 - 파일시스템 저널은 보통 inode8을 사용한다. Ext3 저널은 슈퍼블록에서 위치가 지정되기 때문에 어디든 위치할 수 있긴하다. 저널은 호환시스템 기능으로 저널 사용시 슈퍼블록에 해당 값을 설정한다. 슈퍼블록은 또한 저널 장치를 위해 비호환 기능도 존재한다. 비호환 기능이 설정될 때 파일시스템은 외부..
14.5 파일 이름 범주 - 데이터 파일 이름 범주는 각 파일과 디렉토리 이름을 저장하는 데이터 구조체를 포함한다. 이 절에서는 그 데이터가 어디에 저장이되고, 그것들을 어떻게 분석하는지를 설명한다. ▶ 개요 - ExtX에는 파일이나 디렉토리의 이름을 저장하는 다양한 방법이 있는데, 여기서는 3가지 방법을 설명하겠다. 먼저 이름 할당에 사용하는 디렉토리 엔트리에 대해 알아보고 하드링크, 소프트 링크, 해시트리를 설명한다. ▷ 디렉토리 엔트리 - ExtX 디렉토리는 inode에서 특별한 타입 값이 있는 것을 제외하고는 정규 파일과 같다. 디렉토리들은 디렉토리 엔트리 데이터 구조체들의 목록을 포함할 블록들을 할당한다. 디렉토리 엔트리는 파일 이름과 파일의 메타데이터를 어디에서 찾을 수 있는지를 설명하는 간단..
-> 메타데이터 범주는 파일이나 디렉토리를 설명하는 데이터를 포함한다. 이 절은 데이터가 어디에 저장되어 있는지, 그리고 그것들을 어떻게 분석하는지에 대해 설명한다. ▶ 개요 - ExtX 에서 파일의 주 메타데이터는 inode 데이터 구조체에 저장된다. 추가적인 메타데이터는 확장된 속성들에 저장될 수 있다. ▷ inode - 모든 ExtX inode 들의 크기는 동일하고, 슈퍼블록에 정의되어있다. 한개의 inode는 모든 파일들과 디렉토리에 할당되고, 각 inode에는 1로 시작하는 주소가 있다. 슈퍼블록에서 크기가 주어지는 inode 집합은 각 블록 그룹에 할당된다. 각 그룹의 inode들은 테이블에 저장되고 그 위치는 그룹 기술자에서 주어진다. 그 그룹은 다음과 같은 계산으로 결정될 수 있다. gro..
- 내용범주는 파일과 디렉토리의 내용을 포함한다. 이 절에서는 ExtX 내용 범주와 해당 범주의 분석방법에 대해 알아본다. ▶ 개요 - ExtX는 데이터 유닛으로 '블록'을 사용하고 한 블록은 연속적인 섹터의 그룹이다. 이 절은 블록크기와 주소, 그리고 그것들의 할당 상태를 어떻게 결정하는지를 설명한다. ▷ 블록 - 한 ExtX 블록은 1024, 2048, 4096 바이트이고, 그 크기는 슈퍼블록에서 주어진다. - ExtX의 기초가된 UFS는 조각(fragment)로 한 블록을 나누었다. 조각크기를 문서화해서 알려주는 슈퍼블록 필드가 존재함에도 불구하고, ExtX의 리눅스 코드는 이것을 지원하지 않는다. 따라서 따로 명세가 없고, 이 책에서는 조각 크기가 블록 크기와 같다는 것으로 추측하고 있다. - 모..
- 많은 리눅스 운영체제 배포판은 기본 파일시스템으로 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타입 식별자를 갖는다. 이것은..