목록포렌식/파일시스템 (파일시스템 포렌식분석) (43)
Piki's Play

- 이번장에서는 UFS1, UFS2 파일시스템을 구성하는 데이터 구조체를 설명한다. 데이터 구조체 레이아웃과 해당 구조체들이 파일시스템 이미지에서 어디에 위치하는지 예를들어 설명하겠다. - 이전 장에서 언급한것 처럼 UFS 데이터 구조체는 다른 형식으로 값들을 저장하기 위해 여러 필드들을 포함하고있다. 예를들어 블록크기를 저장하기 위해 조각 개수와 바이트 개수 둘다 저장한다. 이렇게 다른 형식들을 제공하는 것은 운영체제가 매번 다른 값들을 계산하는 번거로움을 피하기 위해서이다. 어떤 운영체제는 오직 바이트 기반으로 블록크기를 결정하고, 다른 것들은 조각 크기로 블록크기를 결정할 수 있다. 이 장에서는 여러 형식들 중 하나만 확인하겠지만, 그 형식이 모든 도구나 운영체제들에서 적용될지는 장담할 수 없다. ..

16.5 파일 이름 범주 - 파일이름 범주는 inode와 다른 메타데이터에 사람이 읽기 가능한 이름들을 할당하는 데이터이다. 이 절에서는 UFS가 데이터를 어디에 저장하는지, 그리고 어떻게 분석하는지 설명하도록 하겠다. ▶ 개요 - UFS1과 UFS2는 ExtX와 동일한 파일이름 데이터 구조체를 사용한다. 디렉토리 엔트리 데이터 구조체는 파일의 이름, inode 주소, 그리고 유형 값을 저장한다. 구조체의 길이는 최대 파일의 길이가 255개 문자인 이름 길이를 참조한다. 이름은 ASCII로 저장되고, Ext이름은 null로 끝나지 않았지만 UFS에서는 null로 끝난다. - 디렉토리 엔트리 구조체들은 디렉토리에 할당된 블록에 위치한다. 디렉토리들을 일반 파일과 다르게 타입이 모드필드에 디렉토리로 설정이 ..

16.3 내용 범주 -> 내용범주는 파일과 디렉토리를 포함한다. 이 절은 UFS 파일과 디렉토리 내용을 어디에 저장하는지와 그것을 어떻게 분석하는지 설명하겠다. ▶ 개요 - UFS는 파일과 디렉토리를 저장하기 위해 조각과 블록을 이용한다. 조각(fragment)은 연속적인 섹터의 그룹이고, 블록(block)은 연속적인 조각의 그룹이다. 모든 조각들은 주소가 있고, 0으로 시작한다. 또한 블록주소는 조각의 첫 주소로 지정된다. 첫 블록과 조각은 파일시스템의 첫 번째 섹터이다. 블록의 최소크기는 4096바이트이고 블록의 조각 개수는 8개가 최대이다. ※ 아래 그림은 블록과 조각의 관계를 보여준다. -> 조각 64와 71일 포함하는 블록 64는 파일에 할당되었고, 조각 74와 75는 다른 파일에 할당되었다. ..

-> UFS(Unix File System)는 다양한 종류가 있으며 FreeBSD, HP-UX, NetBSD, OpenBSD, 애플 OS X, Sun 솔라리스 같은 유닉스 시스템에서 사용하는 파일시스템이다. 많은 운영체제들이 자신들에게 맞게 지속적으로 데이터 구조체들을 수정했지만, 내부구조의 개념은 거의 동일하다. 현재 이 파일시스템은 UFS1과 UFS2 두 종류가 있고, UFS2는 대용량 디스크와 더 큰 시간스탬프를 지원한다. 하지만 이 책에서는 두 파일시스템을 UFS라는 용어로 통일해서 사용하겠다. 수사관들은 유닉스 서버를 조사할 때 UFS 파일 시스템을 분석할 수 있다. Ext2와 Ext3는 UFS를 기반으로 발전했으며, 그 이유에 대해서는 앞장에서 상세히 설명했다. 이 장은 "Ext2와 Ext3 ..

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의 리눅스 코드는 이것을 지원하지 않는다. 따라서 따로 명세가 없고, 이 책에서는 조각 크기가 블록 크기와 같다는 것으로 추측하고 있다. - 모..