본문 바로가기

[+] Forensic

File System - Partition (4)

이번에는 솔라리스에서 사용하는 파티션에 대해서 알아 볼 것이다.

솔라리스 운영체제는 대용량 서버와 데스크탑 용으로 나누어져 있기는 하지만 대부분 대용량 서버에서 많이 사용하는 운영체제이다.

그렇기 때문에 침해사고 조사시 솔라리스 운영체제를 많이 볼 수 있어 파티션에 대한 이해가 필요하다.

솔라시스의 모든 버전들은 BSD 디스크 레이블과 비슷한 구조를 사용한다.

솔라리스는 Spac 솔라리스와 i386 솔라리스로 나뉘며, 이 두 종류의 파티션 데이터 구조 역시 다르다.

솔라리스에서는 각 파티션을 지칭하는 용어로 '슬라이스' 를 사용한다.

솔라리스 설치 시 디스크에 디스크 레이블을 솔라리스가 생성하게 된다. 정확히 설치되는 위치는 하드웨어 플랫폼에 따라 다르며, 생성되는 디스크 레이블에는 파티션 최대 개수 정보가 들어 있다.

* 참고 : Spac 시스템의 경우 최대 개수가 8개이고, i386 시스템의 경우 16개 이다.

디스크 레이블은 각 파티션을 다음과 같은 항목들을 통해 설명한다.

 - 파티션 시작 위치
 - 파티션의 크기
 - 플래그 세트
 - 플래그 세트의 크기
 - 파티션 타입


플래그의 경우 파티션이 읽기 전용인지 스왑 공간 처럼 마운트가 불가능한지 판단하게 해주는 항목이다.

파티션 타입 항목은 다른 시스템 파티션과 다르게 파티션의 파일시스템 타입을 설명하는 항목이 아닌 파티션 마운트 지점을 설명하는 항목이다.

솔라리스 파티션의 경우 이름 할당 방법이 다른 시스템 파티션들과는 조금 다르다. 아래와 같은 규칙을 적용하여 이름을 할당한다.

[그림 1 - 솔라리스 시스템 별 파티션 이름 할당 규칙]


이제부터 Spac 시스템과 i386 시스템의 구조를 알아보도록 하자.

[Spac 시스템]
Spac 시스템의 디스크 레이블 구조체는 디스크 첫번째 섹터에 생성된다. 두번째 섹터부터 열여섯번째 섹터까지는 부트코드가 위치하는 부트블록이다. 부트블록 바로 다음 섹터부터는 파일시스템 등을 저장하는 파티션 영역이다.

 * 참고 : 솔라리스는 UFS 파일시스템을 사용 한다.

아래는 기본적인 Spac 시스템의 디스크 레이아웃이다.

[그림 2 - Spac 시스템 디스크 레이아웃]

Spac 디스크 레이블은 파티션의 모든 정보를 직접적으로 담고 있지는 않으며 두개의 구조체에 파티션 정보를 나누어 저장한다. Spac VTOC(Volume Table Of Contents)라는 구조체와 파티션 디스크 맵이라는 구조체로 나뉘어 저장된다.
먼저 디스크 레이블의 항목들부터 살펴 보면 아래와 같다.

[그림 3 - 디스크 레이블]

이 중 파티션 정보를 저장하는 VTOC 구조체와 디스크 맵 구조체에 대해서 알아보자.

먼저 VTOC 구조체 구조이다.

[그림 4 - VTOC 구조체]

뭔가 많아 보이지만, 결국 담고 있는 정보는 파티션의 개수, 파티션 타입과 플래그, 부트정보, 시그니처, 파티션 타임스탬프 이다.

파티션 타입에는 아래와 같은 유형들이 있다.

[그림 5 - 파티션 타입]

또 파티션 플래그 값에는 두가지 값이 있는데 값과 설명은 아래와 같다.

 - 1 : 파티션이 마운트 되지 않음을 뜻 함
 - 128 : 읽기전용 파티션을 뜻 함 


이번에는 디스크 맵 구조체 구조이다.

 - 0~3 : 시작 실린더
 - 4~7 : 크기


위와 같이 디스크 맵 구조체는 간단한 구조이다. 하지만 위 구조로 봐서는 시작 위치를 정확히 알 수 없기 때문에 섹터로 변환하는 작업이 필요하다.
실린더 주소는 디스크 내의 각 플래터 주소 트랙들의 집합이다. 
실린더를 섹터로 변환하는 공식은 다음과 같다.

 - 트랙당 섹터 수 * 헤드 수 * 실린더  = 실린더당 섹터 수

트랙당 섹터 수(438~439)와 헤드 수(436~437)은 VTOC 구조체와 디스크 맵을 포함하고 있는 디스크 레이블에서 확인 할 수 있다. 

 * 참고 : Spac 시스템은 빅 엔디안(Big endian) 방식을 사용한다. 

이번에는 i386 시스템에 대해서 알아보자.

[i386 시스템]
해당 시스템을 디스크에 설치 할 때에는 하나 이상의 도스 파티션이 생성되어야 한다.
일반적으로는 도스 파티션 타입의 부트 파티션 한 개와, 파일시스템을 사용하는 도스 파티션 타입의 파티션이 생성되어야 한다. 부트 파티션은 당연히 시스템 시작에 필요한 부트 코드를 포함하고 있어야 한다.
해당 시스템의 디스크 레이블은 도스파티션 타입의 파일시스템의 두번째 섹터에 위치하며, 디스크 레이블이 위치한 파티션의 i386 파티션들을 설명한다.

 * 참고 : 반드시 i386 파티션은 도스 파티션 시작 이후에 시작해야 한다.
 

i386 시스템의 디스크 레이블은 512바이트 크기이며, 모든 파티션의 정보가 Spac 시스템과 달리 디스크 레이블 한곳에 모여있고 CHS 주소를 사용하여 정보를 저장한다.

[그림 6 - i386 시스템 기본 디스크 구조]

디스크 레이블 구조체의 구조는 다음과 같다.

[그림 7 - i386 디스크 레이블 구조]

 * 참고 : 볼륨레이블(328~455) 까지를 VTOC라고 부른다.

위를 참고하여 보면 디스크 레이블에는 16개의 파티션 엔트리가 있는데 파티션 엔트리의 구조는 아래와 같다.

 

[그림 8 - 파티션 엔트리 구조]

i386 시스템에서의 파티션 타입과 플래그의 값들은 Spac 시스템과 동일하다.

i386 시스템의 파티션을 확인하기 위해서는 디스크 레이블의 VTOC 부분을 참고해야 하며 해당 파티션의 레이아웃은 파티션 엔트리를 참고하면 된다. 

 * 참고 : 시작섹터는 도스 기반 파티션에서 상대적인 위치에 있다.
 * 참고 : i386 시스템은 리틀 엔디안(little endian) 방식을 사용 한다. 


[분석 시 고려 사항]
여느 시스템들과 마찬가지로 비할당 영역의 숨김 데이터를 주의해야 한다. 







 

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

File System - Partition (6)  (0) 2012.01.24
File System - Partition (5)  (0) 2012.01.22
File System - Partition (3)  (0) 2012.01.19
File System - Partition (2)  (0) 2012.01.18