본문 바로가기

[+] Forensic

File System - UFS (4)

이번 글에서는 UFS의 메타데이터 참조 모델에 해당하는 데이터들을 알아 볼 것이다.

[inode]
Ext 파일시스템과 마찬가지로 UFS에서도 inode는 동일한 개념을 가지며 파일과 디렉토리를 설명하는 메타데이터를 저장한다. inode는 inode 테이블이라는 곳에 위치하고 있으며 inode 테이블은 실린더 그룹에 위치하고 그 위치는 슈퍼블록이 정의하여 준다. UFS1과 UFS2의 inode 초기화 시점은 약간 다른데, UFS1 의 경우 파일시스템이 생성 될 때 모든 inode가 초기화되고 UFS2의 경우 inode가 할당 될 때 초기화가 이루어진다.

 * 참고 : UFS2에서 파일이나 디렉토리 할당을 위한 블록이 존재하지 않는다면(여유 블록이 없다면) inode 테이블의 여유 공간을 사용하기도 한다.

UFS의 inode는 Ext 파일시스템의 inode와 마찬가지로 하나의 inode가 파일이나 디렉토리에 할당 될 수 있고 블록주소, 파일크기 등의 정보를 갖는다. 또 직접 블록 포인터 12개, 단일/이중/삼중 간접 포인터도 가진다.

 * 참고 : UFS1에서는 포인터가 32bit 이며, UFS2는 64bit 이다.

UFS의 inode는 sparse 파일들도 지원한다. sparse에 대한것은 앞 글에서도 여러번 언급하여 따로 언급하지는 않겠다.
UFS inode는 허가권, 접근권한 파일유형등의 값도 포함한다. 또 타임스탬프 값도 가지는데 수정, 접근, 변경시간 값만 가지고 삭제 시간값은 가지지 않는다. 하지만 UFS2에서는 이 3개의 시간값에 생성 시간 값을 추가하여 총 4개의 시간값을 가진다. 시간 값은 1970년 1월 1일 GMT를 기준으로 현재까지 흐른 초를 나타낸다.

 * 참고 : 시간값이 UFS1에서는 32bit 이며, UFS2는 64bit이다.

UFS의 inode 주소는 0부터 시작하며 0과 1은 예약 되어 있는 inode 이다.

 * 참고 : Ext 파일시스템의 inode는 1부터 시작한다.

inode의 할당 상태는 inode 비트맵에 의해 관리되는데, 1은 할당 상태를 의미하며, 0은 비 할당 상태를 의미한다.  


[확장 속성]
확장 속성들은 파일이나 디렉토리에 대한 설명 데이터를 저장하기 위한 추가적인 공간으로 UFS2 에서만 존재한다.
확장 속성에는 2개의 이름이 존재하는데, 하나는 사용자 이름공간이고 또 하나는 시스템 이름공간이다.
사용자 이름공간의 이름을 가진 확장 속성은 파일의 내용을 읽을 수 있는 사용자가 접근 가능하며, 시스템 이름공간의 이름을 가진 확장 속성은 권한이 있는 사용자들이 접근 가능한 공간이다.


[분석시 주의 사항]
파일 복구 시 삭제된 파일들은 할당 받았던 inode에서 블록 포인터, 크기 등이 제거되지만 간접 블록 포인터는 남아 있기 때문에 해당 포인터를 확인하여 파일 내용을 찾아 파일을 재구성 하면 된다. Ext 파일시스템에는 삭제 시간이 있지만 UFS 에서는 삭제 시간을 수정 시간과 변경 시간이 대신하여 준다. 하지만 이 값들은 touch 명령어로 수정이 가능하기 때문에 전적으로 신뢰하여서는 안된다. 또 UTC 시간대로 저장되기 때문에 분석 대상 컴퓨터의 지역 표준 시간대로 변경하여 줘야 한다.
UFS2의 확장 속성들은 히든 데이터가 있기에 충분한 공간이다. 크기는 두 블록이어서 작다고 생각이 들지만 어떠한 것이라도 증거가 될 수 있기 때문에 한번쯤은 조사 할 필요가 있다. 또 UFS2의 inode 테이블에 히든 데이터가 있을 수도 있다. 운영체제는 inode 테이블에 사용하지 않는 공간이 필요하기 전까지는 초기화를 하지 않기 때문에 데이터가 오래도록 그 영역에 숨겨져 있을 수도 있다.



'[+] Forensic' 카테고리의 다른 글

File System - UFS (6)  (0) 2012.03.03
File System - UFS (5)  (0) 2012.03.03
File System - UFS (3)  (0) 2012.03.02
File System - UFS (2)  (0) 2012.03.01