본문 바로가기

[+] Forensic

File System - UFS (3)

이번 글에서는 UFS의 내용 참조 모델과 관련된 데이터들을 알아 볼 것이다.

데이터들이라고 표현하였지만, 사실 블록(조각) 하나만 존재한다.

[블록]
UFS에서는 파일의 내용이나 디렉토리 내용을 저장 할 때 블록에 내용을 저장한다. 그 블록은 조각이라는 단위로 더 세분화가 되고 실제적으로는 그 조각에 내용들이 저장되는 것이다.

 * 참고 : 블록들은 조각의 연속적인 그룹이라고 생각하면 된다.

모든 조각에는 주소가 있고 블록에도 주소가 있다. 연속적인 조각들의 첫 번째 조각 주소가 블록 주소로 지정된다.

 * 참고 : 조각의 주소는 0부터 시작한다.

UFS의 블록 최소 크기는 4096byte이고 블록 별 조각의 최대 크기는 8byte이다.
블록이 또 다른 작은 단위인 조각으로 나뉘는 이유는 블록의 단편화를 줄이기 위해서이다.
Ext 파일시스템의 경우 블록을 기준으로 내용을 저장하는데 파일의 내용이 블록보다 조금 크거나 할 경우 다른 블록들을 사용하여 그 내용을 저장하게 된다. 
이 때 조금 남은 파일의 내용을 저장하는 블록은 사용하지 않는 공간이 많이 발생하여 단편화가 발생하고 만다.
UFS는 이러한 현상을 줄이기 위해 조각을 기준으로 파일 내용을 저장하며, 또 같은 블록의 조각들이라고 하여 같은 파일의 내용만 저장해야 하는 것도 아니다.
블록과 조각의 할당상태는 블록 비트맵과 조각 비트맵에 의해서 관리 되는데, 이 두 비트맵의 내용은 거의 비슷해야 한다.

 * 참고 : UFS의 비트맵 일반 다른 파일시스템 비트맵과의 설정 방식이 다르다. 1일 경우 비 할당 상태이고, 0일 경우 할당 상태를 의미한다.

[그림 1 - 블록, 조각 할당 관계] 


[분석시 주의 사항]
블록과 조각을 분석하기 위해서는 일단 블록이 위치한 실린더 그룹부터 파악을 해야 한다. 그 후 실린더 그룹에 존재하는 그룹기술자를 통해 비트맵을 확인하고 분석하여 할당 상태를 파악해야 한다. 이러한 과정을 거치면 비 할당 상태의 블록(조각)을 판별 할 수 있고, 이를 통해 비 할당 영역의 데이터를 추출 할 수 있다.
UFS는 삭제 파일의 복구가 쉬울수도 있고 어려울 수도 있다. 쉽게 보이는 점은 데이터가 한곳에 집중되어 있기 때문이고 어렵게 보이는 점은 파일내용의 마지막 부분이 다른 블록(실린더 그룹)에 저장되어 있을 수도 있기 때문이다.
더군다나 UFS를 사용하는 운영체제마다 할당 정책등이 다 다르기 때문에 분석하는데 어려움이 많이 따른다. 





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

File System - UFS (5)  (0) 2012.03.03
File System - UFS (4)  (0) 2012.03.02
File System - UFS (2)  (0) 2012.03.01
File System - UFS (1)  (0) 2012.03.01