본문 바로가기

[+] Forensic

File System (3)

이번 글에서는 파일시스템 참조 모델 중 하나인 내용 참조 모델에 대해서 알아 볼 것이다.

내용 참조 모델은 데이터를 저장 할 수 있는 파일과 디렉토리를 할당하는 저장 공간이 있다.

보통 해당 참조 모델의 데이터 할당 공간은 같은 크기의 그룹들로 구성되며, 각 파일시스템들은 이러한 그룹들을 클러스터 또는 블록이라고 지칭한다.

해당 참조 모델의 분석은 지워진 데이터를 복구하고, 로우 레벨(low level)의 검색을 수행하는 것으로 이루어진다.

이제부터 분석을 위한 클러스터 처리 방법을 하나씩 알아보도록 하겠다.

[논리적 파일시스템 주소]
파일시스템들은 논리적 볼륨 주소를 사용한다. 또 클러스터를 구성하기 위해 연속적인 섹터들을 그룹화 해야 하기 때문에 논리적 파일시스템 주소를 할당한다. 대부분의 파일시스템들은 볼륨의 모든 섹터에 논리적 파일시스템 주소를 부여한다.

 * 참고 : FAT 파일시스템은 논리적 파일시스템 주소를 할당하지 못함 

파일시스템은 논리적 볼륨 주소의 두 섹터당 1개의 클러스터를 할당하며, 논리적 볼륨 주소 네 번째 섹터까지는 주소를 할당하지 않는다.

[그림 1 - 논리적 볼륨 주소와 논리적 파일시스템 주소의 관계]

위 이미지에서 14번 섹터(열 다섯 번째 섹터)부터는 볼륨 슬랙 공간이다.


[클러스터 할당 정책]
클러스터는 두가지 상태가 있는데, 하나는 할당 된 상태이고 또 하나는 할당 되지 않은 상태이다.
기본적인 할당 정책으로는 새로운 파일을 생성하거나 이미 존재하는 파일에 내용을 추가할 때 운영체제는 비 할당 클러스터를 찾고 해당 파일에 비 할당 클러스터를 할당하는 정책이 있다.
대부분의 운영체제들은 연속적인 클러스터를 할당하지만 항상 그렇지만은 않고, 또 운영체제마다 클러스터 할당 정책이 다를 수 있다.
할당 정책에는 다음과 같은 것들이 있다.

 - 첫 번째 적용 할당 정책 : 파일시스템 첫 클러스터부터 검색하여 할당 가능한 클러스터를 찾는 정책, 이 정책
                                  을 사용하면 하나의 클러스터를 할당 후 다시 클러스터를 할당하려고 할 때 파일
                                  시스템의 첫 번째 클러스터부터 다시 검색하여 할당 가능한 클러스터를 찾게 된다.
 - 다음 적용 할당 정책 : 최근에 할당 되었던 클러스터 다음부터 검색을 시작하여 할당 가능한 클러스터를 찾는
                              정책이다
 - 자동 맞춤 할당 정책 : 파일 데이터 크기에 맞는 연속적인 클러스터를 검색하는 정책, 하나의 파일이 몇 개의
                              클러스터를 필요로 하는지 안다면 좋은 정책이지만, 파일의 크기가 증가할 때나 새로운
                              클러스터를 어딘가에 할당할 때에는 단편화가 생길 수 있다.


각 운영체제는 위와 같은 정책을 파일시스템을 위해 선택 할 수 있다. 일부 파일시스템은 어떤 정책을 사용할지 지정되지만, 강제적인 것은 아니기 때문에 조사 시 해당 파일시스템의 구현 방식을 테스트 해봐야 한다. 


[손상된 클러스터]
많은 파일시스템에는 손상된 클러스터를 표시 할 수 있는 기능이 있다. 이 표시를 운영체제가 확인하여 해당 클러스터는 할당 하지 않도록 하였는데, 최근에는 하드디스크들이 자동으로 불량 섹터를 탐지하여 남은 공간으로 해당 섹터를 교체하기 때문에 별도로 표시하는 기능이 필요 없어졌다. 이러한 기능을 무시하고 파일시스템에서 데이터를 숨기는 일은 쉬운일이 아니다. 많은 무결성 도구들이 파일시스템 손상을 보고 하지만 실제로 손상되었는지에 대한 증명은 할 수 없다. 이러한 점을 이용하여 악의적인 사용자나 프로그램들은 자신이 숨기고자 하는 클러스터를 직접 손상된 클러스터 목록에 추가하여 데이터를 숨긴다. 만약 무결성 도구의 결과만을 전적으로 믿는다면 이는 악의적인 행위로 인해 손상된 클러스터로 둔갑한 클러스터의 중요 데이터를 놓치는 셈이 된다. 


이제부터는 분석 기술들에 대하여 알아보도록 하겠다.

[클러스터 보기]
해당 기술은 특정 파일에 클러스터가 할당 되었거나, 특별한 의미가 있는 증거의 주소를 알려고 할 때 사용하는 기술이다.
많은 FAT32 파일시스템에서 섹터 3은 사용하지 않아 0이 되어야 하는데, 만약 0이 아니라 다른 값이 있다면 악의적인 사용자나 프로그램이 데이터를 숨겼을 가능성이 있으므로 섹터 3의 내용을 확인하여야 한다.
기술의 방법은 간단하다. 논리적 파일시스템 주소로 접근하여 섹터의 길이를 계산 한 후 자신이 읽고자 하는 섹터의 번호를 곱하면 읽고자 하는 섹터의 오프셋이 계산된다. 그 후 도구로 해당 섹터의 내용을 읽어들이면 된다.
예를 들어 클러스터의 길이가 10byte인 파일시스템의 열 번째 섹터(9번)를 읽고자 한다면 10 * 9 = 90 이라는 오프셋이 나오게 된다.

[그림 2 - 클러스터 계산]


[논리적 파일시스템 수준에서의 검색]
이 기술은 증거의 위치를 찾는 기술이다. 해당 기술은 특정 문구나 값을 각 클러스터에서 검색한다. 이 기술은 물리적인 섹터 순서를 이용하며, RAID나 디스크 스패닝과 같은 파일시스템에서는 정확하지 않은 결과를 보여줄 수도 있다. 


[클러스터 할당 순서]
위에서 알아봤듯이 클러스터 할당 정책에는 몇 가지가 있었다. 만약 두 개 이상의 클러스터를 할당하는 순서가 중요하다면, 할당 정책을 결정하는 운영체제를 조사 해 볼 필요가 있는데 이것은 운영체제에서 사용하는 정책을 직접 확인해야 하므로 어렵고, 수사관은 클러스터 상태에 따라 발생 할 수 있는 시나리오들을 조사할 필요가 있다. 해당 기술은 증거로서 클러스트를 인식 하고 발생한 사건을 재구성하는데에 사용 된다.


[일관성 검사]
이 기술은 모든 참조 모델에 중요한 분석 기술이다. 이 기술은 파일시스템이 의심스러운 상태인지 파악하게 도와주는 기술이며, 내용 참조 모델의 일관성 검사는 메타데이터 참조 모델의 데이터를 사용하고 모든 할당된 클러스터가 정확하게 하나의 메타데이터 참조 모델 엔트리를 갖는지 검증한다. 만약 하나의 클러스터가 엔트리를 한 개도 가지고 있지 않거나 두 개 이상의 엔트리를 가지고 있다면 사용자가 클러스터 할당 상태를 직접 설정한 것을 의미한다.
클러스터가 한 개도 메타데이터 엔트리를 가지고 있지 않은 것은 고아 클러스터라고 지칭한다.
일관성 검사의 또 다른 방법으로는 클러스터를 조사하는 방법이다. 많은 수집 도구들은 손상된 클러스터를 0으로 채우는데 만약 손상된 클러스터 목록 중 0이 아닌 다른 값을 가지고 있는 클러스터가 있다면 해당 클러스터는 사용자가 직접 손상된 클러스터 목록에 추가한 클러스터로 볼 수 있어 해당 클러스터를 조사해 봐야 한다.


위 분석 방법들을 어렵게 하는 "영구 삭제 기술" 이라는 것이 있다. 이 기술은 파일에 할당된 클러스터나 모든 비 할당 클러스터에 0이나 난수 데이터를 덮어 씌우는 기술이다.

만약 이 기술이 찾고자 하는 파일의 클러스터에 사용되었다면 파일을 찾기란 불가능하다. 하지만 조사관은 해당 파일의 임시 파일본이라도 찾으려고 노력해야 한다.





 

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

File System (5)  (0) 2012.01.28
File System (4)  (0) 2012.01.27
File System (2)  (0) 2012.01.26
File System (1)  (0) 2012.01.26