Piki's Play
Chapter 6. 서버 기반 파티션 - BSD 파티션 본문
이번에는 '서버' 볼륨의 파티션 구조를 살펴보도록 하자!
FreeBSD, OpenBSD, NetBSD, 선 솔라리스, GPT 파티션에 대해 알아보자.
6.1 BSD 파티션 (이 절은 '도스파티션'에 대한 이해가 필요하다)
-> 포렌식에서 FreeBSD, OpenBSD, NetBSD와 같은 BSD 유닉스서버 조사는 흔히 있는 일이다. 이 파티션의 구조체를 상세하게 기술해본다.
리눅스 시스템이 더 많이 존재하지만 BSD는 '도스기반 파티션'이다.
- BSD 시스템들은 IA32 기반이므로 마이크로소프트 제품들과 같은 디스크에 존재할 수 있도록 설계되었다.
BSD는 시작전에 접근 파티션을 선택할 수 있다.
FreeBSD -> 도스, BSD파티션 시스템 선택 가능
OpenBSD, NetBSD -> BSD파티션만 선택가능
▶ 전체 개요
-> BSD 파티션은 도스파티션보다 간단하고, 애플파티션보다 제한적이다.
같은 디스크에서 BSD, 윈도우를 둘 다 운영하기 위해서는 BSD 파티션이 도스 파티션 내에 있어야 한다.
또한 도스파티션 테이블은 FreeBSD, OpenBSD, NetBSD를 나타내는 타입(Oxa5, Oxa6, Oxa9)를 가진다.
그리고 BSD 파티션은 도스파티션의 '주 도스 파티션'이 될 수 있다.
※ 핵심 데이터 구조체는 디스크 레이블(disk label)이고 이는 BSD 파티션 두 번째 섹터에 존재하고 최소 크기가 276바이트이다. (디스크 레이블 - 2번째 섹터, 첫번째 섹터는 부트코드)
- FreeBSD, OpenBSD, NetBSD 들은 동일한 구조체를 사용하지만 구현이 조금씩 다르다.
디스크레이블 구조체들은 하드웨어 명세를 포함하고, 8 또는 16개의 BSD파티션 테이블을 포함한다.
- 애플 파티션과 달리 파티션테이블은 고정된 크기(16바이트)를 가지고 있고, 도스 파티션과 다르게 한개의 파티션테이블만 가진다.
- 엔트리항목은 다음과 같다.
- 시작섹터주소는 디스크 시작에서 상대적이다. (디스크 기준으로 한다는 말)
타입은 UFS, FAT, 비할당, 스왑공간 같이 BSD 파티션에 있는 파일시스템 타입을 가진다.
(FAT, 비할당, 스왑공간은 UFS 파일시스템을 포함할 때만 사용한다.)
- 구조체를 읽어서 전체 파티션 구조를 먼저 파악하고, 운영체제가 두개이상인 시스템에서 사용자가 어떤 파티션에 주로 접근하는지 알아야 한다.
▷ FreeBSD 개요
-> 얘는 하나의 디스크에서 도스, BSD 둘다 선택해서 사용이 가능하다. 그래서 '도스파티션'을 나타내기 위해 '슬라이스'라는 용어를 쓰도록 한다. (BSD는 '파티션'이라는 용어를 가져가자)
- 디스크레이블은 FreeBSD 도스파티션 안에 있고 BSD 파티션을 설명한다. 그림으로 보자.
그림을 좀 설명하자면, 하나의 도스파일시스템(큰 볼륨)을 두개의 파티션으로 분할해두었다. 그중 앞은 NTFS 도스파티션, 뒤는 FreeBSD도스파티션이다. 그래서 슬라이스1, 슬라이스2로 표현한 것을 알 수 있다. 이제 FreeBSD 도스파티션을 3개의 BSD 파티션으로 분할한 모습이다. 디스크레이블은 FreeBSD도스파티션 안에 있는것을 볼 수 있다.
이름짓는것도 규칙이 있는데 슬라이스는 /dev/ad0s1 (슬라이스1) 이런식으로 붙여주고
BSD 파티션은 /dev/ad0s2a (슬라이스2의 a) 형식으로 적어준다. 그리고 각각 알파벳마다 배정된 역할은 그림에 적어두었다.
-> FreeBSD 파티션은 사용자가 도스, BSD 선택가능하기 때문에 모두 분석하자!
▶ OpenBSD, NetBSD 개요
-> OpenBSD, NetBSD 은 BSD디스크 레이블 구조체 엔트리만 접근이 가능하다. 그러다보니까 디스크레이블은 모든 파티션을 설명할 수 있어야 한다. 그림을 보면 이해가 좀 쉽다.
-> OpenBSD에 커널을 적재하고 도스파티션을 무시한다.
도스파티션은 단순히 OpenBSD의 시작지점을 알려주기 위해 사용된다. 그래서 조사할때 디스크레이블 위주로 조사하자.
▷ 부트코드
-> BSD 도스파티션의 첫 섹터에 존재한다. (두번째 섹터는 디스크레이블)
MBR은 부팅가능한 BSD 타입의 파티션을 찾고 BSD 부트코드를 실행한다.
▶ 데이터 구조체
-> FreeBSD, OpenBSD의 이미지를 조사해보고 실행결과를 확인해 보자.
▷ 디스크 레이블 데이터 구조체
1. BSD 디스크 레이블 데이터 구조체 내용
(이후 404바이트까지 16바이트씩 BSD 파티션을 할당하고 404이후는 사용하지 않는다)
2. 16바이트의 BSD 디스크 레이블 엔트리의 데이터 구조
3. BSD 파티션 타입 값
(FreeBSD와 OpenBSD 파일시스템은 위 타입에서 4.2 BSD FFS이다. NTFS파티션은 'in use, but unknown'으로 보인다)
※ FreeBSD와 OpenBSD가 존재하는 디스크 예를 보자
(1GB FAT, 3GB OpenBSD 그리고 6GB FreeBSD 파티션으로 구성되어 있다.)
▷ OpenBSD 예제 이미지
OpenBSD 디스크 레이블을 추출해서 분석해보자 파티션은 2,056,320에서 시작한 것을 위에서 볼 수 있고 디스크 레이블은 2번째 섹터에 존재한다.
-> 바이트 0~3, 132~135 에서 Ox82564557 이라는 시그니처를 볼 수 있다. 두번째 시그니처 값 이후 바이트 138~139에는 파티션 테이블 엔트리 개수인 16(Ox0010)이 있다.
파티션 테이블은 바이트 148에서 시작하고, 바이트 403에서 16개의 16바이트 데이터 구조체가 끝난다. 엔트리 11에서 16은 할당되어 있지 않고 이는 0으로 저장되어있다. 404이후는 사용하지 않는다.
※ 다음은 16개의 파티션 테이블 엔트리를 해석한 결과이다.
-> 앞에서 보인 그림을 잘 생각해보자. 첫 파티션은 부트코드가 들어있는 루트 파티션(a)이다.
두 번째는 스왑공간(b)이고 세 번째는 전체 디스크(c)를 나타낸다.
네 번째 이상에서는 일반 BSD 파티션이다.
위에 서술한 BSD 파티션의 특징을 기반으로 예제에서 첫 번째는 도스파티션 시작섹터에서 시작하고, 두번째 파티션 타입은 1이고 이는 스왑영역이다. 세 번째는 전체 디스크크기를 가진다. (그래서 0부터 끝까지 표시)
파티션 4, 5, 7, 8 은 타입 7을 표시하고 이는 4.2BSD FFS 타입이며, 파티션 9는 63시작 섹터이고 타입 8이므로 이는 FAT 파일시스템이다. 이 디스크레이블에서 앞에 있는 FAT파일시스템까지 표시하는 것으로 OpenBSD임을 다시한번 확인할 수 있다.
파티션 10은 '잘 알려지지 않은 타입' 값을 가지고 이는 앞에서 봤던 디스크 전체예제에서의 FreeBSD파티션을 나타낸다. 파티션 9를 'i'로 레이블했기때문에 사용자는 /dev/wd0i로 FAT파일시스템을 접근 할 수 있다.
※ 다음은 OpenBSD 시스템이 접근할 수 있는 파일시스템을 보여준다.
▷ FreeBSD 예제 이미지
-> 이번에는 FreeBSD 예제 이미지를 확인해보자. 파티션은 8,209,215에서 시작하고 디스크레이블은 두번재 섹터에 있다.
-> 바이트 138-139에서 파티션 수 8을 찾을 수 있다. 8개의 파티션 테이블 엔트리는 바이트 148-275에 존재한다.
※ 다음은 항목을 분석한 결과이다.
OpenBSD에서 분석한 것 처럼 스스로 분석해보자!!(귀찮아서 그런거아님..)
- The Sleuth Kit(TSK) mmls 도구는 디스크 레이블 내용을 보여준다.
-> FAT는 할당공간으로 나오고 OpenBSD는 데이터레이블이 존재하기 때문에 'Unallocated'로 표시된다.
▶ 분석 고려사항
1. 타입 - 디스크레이블 구조체에는 타입이 존재하는데 이는 BSD 파티션을 위해서는 필수가 아니다. 하지만 마이크로소프트 윈도우에서는 드라이브 문자를 얻을 수 있는지 판단하기 위해 필요하다.
2. 디스크레이블의 크기는 대부분 404바이트이고 8개 엔트리를 가지는 레이블은 276바이트이다.
총 512바이트로 구성된 섹터에서 남는 공간이 생길 수 밖에 없는데 이곳에 데이터를 숨길 수 있다. 따라서 시그니처를 통해 엔트리 크기를 알아내고 공간까지 분석하자
3. FreeBSD는 도스와 BSD 파티션을 분석해야 한다.
OpenBSD는 BSD 파티션만 볼 수 있기 대문에 도스파티션 테이블과 BSD 디스크 레이블 비교가 필요하다.
겹치는 공간이나 빈 공간도 확인해야 한다.
p.s 시간이 없어서 중요한 부분처리는 다음에 해야겠다!! 범위는 짧은데 사진이랑 글이 너무나도 많았던 파트
'포렌식 > 파일시스템 (파일시스템 포렌식분석)' 카테고리의 다른 글
서버 기반 파티션 - GPT 파티션 (0) | 2020.02.06 |
---|---|
서버 기반 파티션 - 썬 솔라리스 슬라이스 (0) | 2020.02.05 |
PC기반 파티션 - 이동식 매체 (0) | 2020.02.01 |
PC기반 파티션 - 애플파티션 (0) | 2020.01.31 |
Chapter 5. PC 기반 파티션 - 도스파티션 (0) | 2020.01.30 |