본문 바로가기

[+] Forensic

File System - Ext (13)

계속해서 Ext 파일시스템의 데이터 구조체들을 알아보자.

[해시 트리]
Ext 파일시스템에서 디렉토리의 엔트리들을 정렬하기 위해 사용하는 알고리즘으로, 각 노드는 디렉토리의 각 블록이다.
노드에는 노드 기술자라는 데이터 구조체가 있는데 노드 기술자는 다음 계층의 블록을 알려주는 역할을 한다.
노드 기술자는 헤더와 엔트리로 나누어 지는데 헤더는 디렉토리 엔트리 다음에 위치한다.

[그림 1 - 노드 기술자 헤더 오프셋]

노드 기술자 엔트리는 노드의 최소 해시 값과 노드의 디렉토리 블록을 저장하고 있다. 

 [그림 2 - 노드 기술자 엔트리 오프셋]

첫 번째 노드 기술자 엔트리의 경우 최소 해시 값이 0이어야만 해서 해시 값이 설정되지 않는다. 이러한 이유로 첫 번째 노드 기술자 엔트리의 구조는 [그림 2]와 조금 다른데 그 형태는 아래와 같다.

[그림 3 - 첫 번째 노드 기술자 엔트리 오프셋]


[저널]
저널링은 파일시스템이 손상되었을 때 복구를 하기 위하여 평상시에 메타데이터 업데이트 사항을 기록 해 두는 기술을 말한다. Ext3 파일시스템에는 저널을 위한 4개의 블록이 존재한다. 저널 슈퍼블록, 기술자 블록, 적용 블록, 취소 블록이 4가지 블록에 해당한다. 이 4개의 블록의 데이터 구조체는 모두 동일한 헤더를 가진다.

 * 참고 : 저널 블록은 다른 일반 블록들과 다르게 빅엔디안 순서로 기록 된다.

[그림 4 - 저널 블록들의 표준 헤더 오프셋]

 - 블록 타입 : 블록 타입은 4개의 블록들을 구분하는데 사용되는 것으로 설정되는 값들의 목록은 아래와 같다.

[그림 5 - 블록 타입 목록]

블록타입이 기술자 블록값을 가지면 해당 저널 블록은 아래와 같은 구조를 가지게 된다.

[그림 6 - 기술자 블록 오프셋]

엔트리 플래그는 아래와 같은 값을 가질 수 있다.

[그림 7 - 기술자 블록의 엔트리 플래그 목록]

기술자 블록의 20~35 오프셋 필드인 UUID는 SAME_UUID 플래그가 설정되지 않으면 존재하지 않는 필드이다.

엔트리 플래그의 UUID 또한 마찬가지이다.

 * 참고 : 엔트리 플래그의 트랜잭션 블록 삭제 플래그는 현재 사용되지 않고 있다.

슈퍼 블록 버전 1과 2는 구조가 조금 다르기 때문에 값 또한 다른 것이다. 버전 1과 2는 아래와 같은 공통 구조체를 가진다.

 [그림 8 - 슈퍼 블록 버전 1과 2의 공통 오프셋]

버전 1이라면 [그림 6]의 36byte만 사용하지만, 버전 2일 경우 추가적인 오프셋 구조를 가진다. 그 구조는 아래와 같다.

[그림 9 - 버전 2일 경우의 사용하는 추가적인 오프셋 구조]

취소 블록은 표준헤더를 기본적으로 가지고 있고, 독자적인 정보로는 취소된 파일시스템 블록들의 목록을 가지고 있다.

취소 블록의 구조는 아래와 같다.

 [그림 10 - 취소 블록의 오프셋 구조]

 * 참고 : 현재로서 유일하게 사용 가능한 기능은 취소 기능이다. 취소 기능은 비 호환성 기능이고 슈퍼 블록에 비 호환성 기능 필드에 0x00000001 값이 설정되어야만 한다. 


이렇게 해서 Ext 파일시스템 분석이 모두 끝이 났다. 

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

File System - UFS (2)  (0) 2012.03.01
File System - UFS (1)  (0) 2012.03.01
File System - Ext (12)  (0) 2012.02.27
File System - Ext (11)  (0) 2012.02.27