Piki's Play
파일 시스템 분석 - 메타데이터 범주 본문
8.4 메타데이터 범주
- 메타데이터 범주는 '데이터의 데이터' 즉, 데이터를 부가설명해주는 데이터가 존재하는 곳이다. 일반 도구들은 메타데이터와 파일명 분석을 구분하지 않고 두 범주를 통합해서 분석한다. (여기서는 데이터의 출처와 데이터 복구가 왜 불가능한지 설명을 하기 위해서 두 범주를 나누었다.)
- 많은 메타데이터 구조체는 고정테이블이나 동적 테이블에 저장되고 각 엔트리는 주소를 갖는다. 파일이 지워지면 그 메타데이터 엔트리는 '비할당'상태로 바뀌고 일부 운영체제는 엔트리 값을 영구 삭제한다.
- 특정 파일의 세부사항을 확인하거나, 특정 요구사항에 부합하는 파일을 찾기위해 메타데이터 범주에서 분석을 수행한다. 그래서 이 범주는 다른 범주에 비해 부가 데이터를 갖는 경향이 있다.
▶ 전반적인 정보
-> 메타데이터 범주에 기본 개념을 알아보자 또한 다음에 대해 알아보도록 한다.
'주소지정방법', '슬랙공간', '지워진 파일 복구', '압축파일', '암호화 파일'
▷ 논리적 파일주소(Logical file address)
- 앞에서 논리적 파일시스템 주소를 어떻게 갖는지 살펴보았고 데이터 유닛도 살펴보았다. 이번에는 조금 더 확장시켜서 파일이 가지는 데이터유닛 즉, '논리적 파일주소'를 알아보자
▷ 슬랙공간
- 앞에서 설명한 '볼륨슬랙(Volume Slack)' 공간은 볼륨주소가 파일시스템의 주소보다 클때 발생하는 공간이라고 설명했다. 여기서 말하는 슬랙공간은 파일크기와 그 파일이 할당한 데이터 유닛 사이의 갭을 나타낸다.
예를들어 파일의 크기가 100바이트이면서 2048바이트의 데이터 유닛에 할당되었다고 하자. 그러면 파일크기인 100바이트를 제외하면 1948바이트의 슬랙공간이 생긴다.
※ 컴퓨터에서 슬랙공간은 두가지의 영역을 나타낸다.
-> 하드디스크는 블록기반이고, 섹터크기가 512바이트이기 때문에 두 영역을 구분한다.
1. 파일의 끝과, 파일이 끝나는 섹터의 끝 사이
2. 파일내용을 포함하지 않은 섹터 (바이트를 영구삭제하지 않아서 남아있는 이전 파일 데이터 또는 메모리 데이터)
(글만보면 이해가 안될 수 있는데 밑에 그림도 그렸다!)
- 슬랙공간에 첫 영역(위에서 1번)은 운영체제가 보통 0으로 섹터를 채운다. 이는 상자에 물건을 두고 남은 공간에 흰색 포장지로 채우는 것과 비슷하다. 대부분 운영체제는 이렇게 한다. 하지만 과거에는 메모리를 데이터로 채우는 RAM[]을 사용했다. 하지만 이로인해 패스워드나 데이터가 노출되는 일들이 있었다.
- 두 번째 영역은 (위에서 2번) 비사용 섹터로서 이전에 삭제된 파일의 데이터가 남아있을 수 있다.
※ 2048 바이트의 클러스터를 가지고 512바이트의 섹터인 NTFS 파일시스템을 생각해보자.
(NTFS에서는 데이터유닛을 클러스터로 부른다. 또한 2048 클러스터이고 512바이트가 섹터이므로 한 데이터유닛은 4개의 섹터를 가진다는 것을 알 수 있다.)
-> 여기서 영역1과 영역2를 모두 확인할 수 있다.
섹터2의 슬랙공간은 운영체제가 선택한 데이터를 채우고 섹터3,4는 운영체제가 0으로 영구삭제 했거나 아니면 이전에 지워진 파일의 데이터를 유지하고 있을 수도 있다.
★ 용어 '파일 슬랙 공간'은 위와같이 파일에 할당된 데이터 유닛의 슬랙공간이기 때문에 비할당된 데이터를 추출하면 '파일슬랙공간'이라고 부르지 않는다. 즉, 할당된 파일에서 생성된 슬랙공간만 파일 슬랙 공간이라 부른다.
▷ 메타데이터 기반 파일 복구
- 지워진 파일을 복구하기 위해 두가지 분석 방법이 있다.
'메타데이터 분석', '응용프로그램 분석'
여기서는 '메타데이터 분석'만 살펴본다.
- 메타데이터 기반 복구는 지워진 파일의 메타데이터가 존재할 때 작업 할 수 있다. 이 메타데이터마저도 지워지면 '응용프로그램' 분석을 실행해야 한다.
- 지워진 파일에서 메타데이터 구조체를 찾아내면 복구는 매우 쉽다. 그냥 '비할당' 데이터유닛일 뿐 그곳을 읽어버리면 영구삭제가 아닌이상 데이터가 남아있기 때문이다.
-> 메타데이터 복구 분석시 메타데이터 구조체와 데이터 유닛들이 동기화가 맞지 않을 수도 있다.
예를들어 메타데이터 엔트리 67에서 가리키던 9009, 10003 데이터 유닛에 새로운 데이터들이 들어오고 이는 메타데이터 엔트리 70에서 지정했다고 하자 그러면 B처럼 비할당되어있는 엔트리 67을 복구해서 엔트리가 가리키던 데이터 유닛 9009와 10003을 찾아가보면 엔트리70의 데이터가 반환된다. 이렇게 메타데이터를 잘 분석하더라도 이미 덮어쓰여져있는 재할당은 탐지하기 어렵다.
다른 예)
-> 그래서 검증을 위해 파일을 먼저 복구하고 그 내용을 봐야하는데 이미 새로운 파일이 그 위를 일부 덮어쓴다면 손상으로 인해 복구한 파일을 열지 못한다.
▷ 압축 및 스파스(Sparse) 파일
- 일부 파일시스템은 데이터를 압축된 형식으로 저장해서 좀더 적은 데이터 유닛들이 디스크를 채우도록 한다. 압축은 파일들을 위해 최소한 3개의 수준을 가지고 있다.
- 가장 높은 수준은 한 파일형식의 내부 데이터를 압축했을 때이다. 예를들어 JPEG파일은 이미지 정보를 저장하는 데이터를 압축하는 파일형식이다. 파일 헤더는 압축하지 않는다.
- 다음 수준은 외부프로그램이 그 전체파일을 압축해서 새로운 파일을 생성하는 것이다. 이러한 압축파일은 사용전에 압축을 풀어야 한다.
- 가장 낮은 압축 수준은 파일시스템이 데이터를 압축하는 것이다. 이 경우 이 파일을 쓰는 픙용프로그램은 압축여보를 알지 못한다. (이미 낮은 수준에서 압축을 시켜버렸기 때문에) 파일시스템에서는 2가지의 압축기술을 사용한다.
1. 파일에서 사용하는 압축기술을 데이터 유닛에 사용하는 것
2. 데이터 유닛 중 0으로 채워져있는 것들은 디스크에 저장하지 않는 것
-> 0으로 채운 데이터 유닛을 건너뛴 파일들을 스파스(Sparse) 파일이라 부른다.
▷ 암호화 파일
-> 허가되지 않은 사용자가 파일에 접근하는 것을 막기 위해 내용을 암호화해서 저장한다.
응용프로그램이 파일 생성시 암호를 적용할 수 있고, 다른 응용프로그램은 파일을 읽어 암호파일을 생성할 수 있고, 운영체제가 파일을 생성할 때 암호를 적용할 수 있다.
- 운영체제는 파일을 디스크에 쓰기전에 암호화하고 데이터유닛에 암호문을 저장한다. 파일 내용이 아닌 접근시간 같은 부가 데이터들은 암호화 할 수 없다.
- 파일 내용을 암호화 할 수 있는 다른 방법은 전체 볼륨을 암호화 하는 것이다. 이 경우 파일 내용뿐아니라 파일 시스템 전체 데이터를 암호화한다. (But, 운영체제를 포함하는 볼륨은 전체 암호화가 되지 않는다.)
- 암호화 데이터는 암호화 키나 패스워드를 알지 못하면 파일들에 접근할 수 없기 때문에 분석하기 어렵다. 패스워드 크렉을 해야 하는데 이는 쉽지않고, 특정 파일과 디렉토리만 압축되어 있다면 압축된 데이터 복사본들을 임시파일이나 비할당 공간에서 찾을 수 있다.
▶ 분석 기술
-> 이제 메타데이터 범주 데이터의 분석 방법을 알아보자!
'파일 내용보기', '데이터 검색', '지워진 파일 위치 찾기'
▷ 메타데이터 검색
-> 메타데이터를 분석하면 특정 메타데이터 구조체에서 가리키는 파일명을 발견할 수 있다. 또한 데이터 유닛주소도 알 수 있긴 하다.
어떤 파일의 세부 정보들을 확인할 때 메타데이터를 가공해서 보자.
- TSK istat 도구는 메타데이터의 데이터 구조체 값들을 보여준다.
▷ 논리적 파일보기
- 해당 파일의 메타데이터를 찾으면 그 파일에 할당된 데이터 유닛을 읽어서 파일 내용을 확인 할 수 있다.
- 이 과정은 메타데이터와 내용범주에서 수행된다. 파일이 할당된 데이터 유닛을 찾기 위해 메타데이터 검색을 이용하고 내용을 보기 위해 내용보기 기술을 사용한다.
- 위와 같은 방법으로 메타데이터 정보를 이용해 파일 내용을 알 수 있다. 파일이 항상 데이터 유닛을 다 채우지 못하기 때문에 '슬랙공간'이 생기는 것을 주의해야 한다.
- TSK istat 도구는 메타데이터 구조체에 할당된 데이터 유닛의 내용을 보여준다. -s 플래그는 슬랙공간을 보여주고 -r 플래그는 지워진 파일 복구를 시도한다.
▷ 논리적 파일 찾기
- 이전에는 데이터 유닛(위치)을 가지고 파일의 내용을 알아냈다. 이번에는 특정 키워드를 가지는 파일을 찾는다고 가정하자. ('abcd'라는 키워드를 이용하자)
-> 앞에서 배운 논리적 파일시스템 검색은 데이터 유닛이 연속적으로 있지 않으면 검색이 어려웠다. 하지만 메타데이터를 이용하면 엔트리 2,3,4,6을 한 세트로 검색하게 되고 이는 MD5나 SHA-1 암호화 해시로 파일을 검색하는데 이용될 수 있다.
★ 오직 할당된 데이터만 논리적 파일 주소를 갖는다. 그래서 비할당 데이터들은 따로 볼륨검색을 해야한다. 예를들어 그림에서 엔트리 0, 1, 7, 9, 10, 11은 따로 모아서 검색을 실시해야 한다.
- 또한 사용하는 분석도구가 '슬랙공간'도 검색하는지 파악해야 한다. 이는 DFTF테스트 이미지를 통해 확인할 수 있다.
▷ 비할당 메타데이터 분석
- 지워진 내용을 다시 찾으려면 단지 목록으로 보이는 지워진 파일명만 보아서는 안된다. 증거가 비할당 메타데이터에 있을 수 있고 더 이상 이름을 가지지 않아 파일명을 확인하기 힘들 수도 있다.
- TSK ils 도구는 비할당 데이터 구조체 목록을 보여준다.
▷ 메타데이터 속성 검색 및 정렬
- 메타데이터 값들로 파일을 검색하는 일은 자주 있다. 특정시간을 기준으로 찾는 경우 부가적인 정보를 이용할 수 있는데 이때 메타데이터를 이용한다.
- 시간은 변경되기 쉽지만 사건의 실마리를 제공하기도 한다. 예를들어 공격자가 12:00에 공격도구를 설치했다는 가정을 해보자. 그러면 12:00~공격시점 까지의 생성된 모든 파일을 찾는다고 가정했을 때 그 시간안에 공격도구를 찾으면 가설을 검증할 수 있다. 찾지못하면 가설이 잘못되었거나 시간이 부정확했을 수도 있다.
- 임시데이터는 컴퓨터에 대해 어느정도 알고 있을 때 사용할 수 있다. 어떤 파일들이 최근에 접근 되었고 생성이 되었는지를 보여준다.
- 일부 도구들은 파일활동에 대한 타임라인을 작성해 준다. 이 타임라인에는 여러 항목들이 존재한다. 타임라인의 첫 항목은 가장 오래된 임시데이터 파일이며 마지막 엔트리는 가장 최신의 임시데이터 파일이다. 사건의 증거를 타임라인을 통해 분석이 가능하다.
- TSK mactime 도구는 파일들의 타임라인을 만드는데 유용하다.
ex) C:\windows 디렉토이릐 mactime 결과는 다음과 같다.
첫 번째 열 : 시간 스탬프
두 번째 열 : 파일크기
세 번째 열 : 내용수정시간(m-time), 내용접근시간(a-time), 메타데이터 변경시간(c-time)
(실제 정보는 훨씬 많다.)
- 파일시간과 로그항목들의 관계파악 이전에 파일 시스템이 어떻게 타임 스탬프를 저장하는지 알아야한다.
일부 타임스탬프들은 UTC로 저장이 되어있는데 이것은 컴퓨터에 저장된 시간이 어느 지역의 시간지역 오프셋(Time Zone Offset)인지 알아야 한다.
ex) 보스턴에서 PM 2:00에 접근했다면 운영체제는 UTC PM 7:00로 저장한다. (5시간의 차이가 있음)
따라서 수사관은 파일을 분석할 때 이 UTC를 실제 시간으로 변경할 필요가 있다. 이것도 파일 시스템마다 다르기 때문에 잘 봐야 한다.
- 수사관은 용의자가 접근한 파일들의 검색을 원할 수 있다. 용의자가 관리자 권한을 얻지 못하고 운영체제가 시스템을 제어할 때 용의자가 생성한 파일들을 검색할 수 있다. 도한 특정 사용자를 찾을 때 소유권 ID를 사용할 수 있다. 이전에 논리적 파일 시스템 검색을 했고, 데이터 유닛 중에 관심있는 데이터 유닛을 발견했다면 이 데이터 유닛주소를 가지고 메타데이터 엔트리를 검색 할 수 있다. 이렇게 하면 같은 파일의 데이터 유닛들의 주소를 알 수 있다.
-> 데이터 유닛 34에서 증거를 발견하면 데이터 유닛 34를 통해 메타데이터 구조체에서 엔트리 107을 찾을 수 있고 그로인해 데이터 유닛 30, 33, 34가 하나의 파일을 할당하던 데이터 유닛임을 알 수 있다. 파일이 지워졌을 때 운영체제가 주소값을 영구삭제 하지 않았다면 이와 같은 과정으로 비할당 메타데이터 구조체를 식별할 수 있다.
- 도구로는 TSK ifind가 있다.
▷ 데이터 구조체 할당 순서
- 두 엔트리의 할당 시간 차이를 아는 것은 운영체제마다 할당 전략이 다르기 때문에 매우 어렵다.
▷ 무결성 검사
- 파일시스템 이미지의 정확한 정보를 방해하는 내부 오류를 알 수 있다. 다음 정보는 무결성 여부를 판단하는 필수 데이터 이다.
'데이터 유닛 주소', '크기', '각 메타데이터 엔트리의 할당 상태'
- 특별한 파일 타입들의 엔트리의 경우 그것들에 할당된 데이터 유닛이 있는지 검증할 필요가 있다. 예를들어 프로세스들이 통신을 하기 위해 사용하는 '소켓' 파일은 데이터 유닛들을 할당하지 않는다.
- 또 다른 무결성 검사는 파일 이름 범주 데이터를 이용하는 것이고 할당된 모든 디렉토리 엔트리들이 그것을 가리키는 할당된 이름이 있는지 검증하는 것이다.
- 또 다른 검사는 날짜같은 부가데이터를 이용하는 거지만 이는 정확한 검사가 아닐 수도 있다.
▷ 영구 삭제 기술 (메타데이터에서)
- '영구 삭제'를 하면 '시간', '크기', '데이터 유닛주소'들에 0이나 난수를 채워 넣음으로서 영구삭제가 가능하다. 수사관은 2개의 유효한 엔트리 사시에서 0으로 되어있거나 유효하지 않은 엔트리를 찾음으로써 영구삭제 여부를 알 수 있다.
- 영구삭제 도구는 엔트리에 원래 파일과는 관련이 없지만 유효한 값으로 채운다. 그러므로써 알아채기 더 어렵게 만든다. 더 극단적인 메타데이터 영구삭제 기술은 남은 엔트리들을 이동시켜서 알지 못하게 하나 이 방법은 시간이 너무 오래걸린다.
p.s
- TSK istat 도구는 메타데이터의 데이터 구조체 값들을 보여준다.
- TSK istat 도구는 메타데이터 구조체에 할당된 데이터 유닛의 내용을 보여준다. -s 플래그는 슬랙공간을 보여주고 -r 플래그는 지워진 파일 복구를 시도한다.
- TSK ils 도구는 비할당 데이터 구조체 목록을 보여준다.
- TSK mactime 도구는 파일들의 타임라인을 만드는데 유용하다.
- TSK ifind 도구는 특정 데이터 유닛과 세트인 데이터유닛을 메타데이터 엔트리에서 찾아준다.
'포렌식 > 파일시스템 (파일시스템 포렌식분석)' 카테고리의 다른 글
Chapter 9. FAT 개념과 분석 (0) | 2020.02.17 |
---|---|
파일 시스템 분석 - 파일이름 범주 (0) | 2020.02.15 |
(Part 3) Chapter 8. 파일시스템 분석 - 기초, 파일시스템, 내용 (0) | 2020.02.12 |
다중 디스크 봄륨 - 디스크 스패닝 (0) | 2020.02.10 |
Chapter 7. 다중 디스크 볼륨 - RAID (0) | 2020.02.08 |