본문 바로가기

파일시스템 포렌식

파이썬으로 파일시스템 깊이 있게 분석하기 -2- - 파이썬으로 파일시스템 깊이 있게 분석하기 -1-(http://maj3sty.tistory.com/1115) 이전 글에서는 이미지(Raw 포맷)에 접근하여 볼륨 정보 등을 얻어내는 작업을 해보았다. 이번에는 실제 파이썬 스크립트가 실행되는 로컬 환경 볼륨에 접근하는 방법을 살펴보자. 이미지 파일은 파일이기 때문에 파일 오픈 핸들을 pytsk3 모듈에 입력해 주면 됐지만 로컬 환경은 장치 핸들을 pytsk3 모듈에 입력을 해주어야 한다. 장치와 파일의 차이는 크지만, 코드는 이전 코드와 많이 다르지 않다. 아래 코드는 글쓴이의 가상환경에서 작성한 파이썬 스크립트와 실행 결과이다. 이번에는 NTFS 파일시스템 2개 존재하는 것을 확인할 수 있다. 로컬 환경과 이미지 파일은 접근하는 대상만 다를 뿐 다루는 .. 더보기
파이썬으로 파일시스템 깊이 있게 분석하기 -1- 디지털 포렌식에서는 기본으로 다뤄야 할 부분이 파일시스템이다. 휘발성 데이터 뿐만 아니라 비휘발성 데이터까지 모두 파일시스템에 저장되기 때문에 실제 업무에서나 챌린지 문제 풀이에서나 파일시스템 분석은 중요하다고 볼 수 있다. 그래서, 시간이 되는대로 파이썬으로 파일시스템을 다뤄보는 글을 쓸 예정이다. 언어는 사람들이 쉽게 가장 많이 쓰는 파이썬(파이썬 언어 자체의 설명은 생략한다.)으로 하여 파일시스템 이미지 포맷인 E01과 Raw 포맷을 대상으로 여러가지 분석을 할 수 있는 코드를 작성해보고 해당 소스코드는 제공할 생각이다. 일단 먼저, 파이썬 모듈이 필요하다. 우리가 주로 사용할 모듈은 파일시스템을 분석해 주는 'pytsk' 모듈이다. 각 모듈에 대한 설명은 다음과 같다. - pytsk : pytsk.. 더보기
File System - HFS+ (5) 이번 글에서는 Attributes File 영역과 Startup File 영역에 대해서 알아 볼 것이다. [Attributes File] 해당 영역은 카탈로그 파일의 속성 정보를 담고 있는 영역으로 b-tree 구조에서 노드의 크기 등을 정의하고 있는 영역이다. 해당 영역은 세 가지의 레코드 타입을 가지는데 이 레코드 타입들에 따라 길이가 달라지는 가변길이특징을 지니고 있다. 또 특이한 점은 해당 영역이 없어도 된다는 점이다. 아래는 해당 영역의 레코드 타입들이다. [그림 1 - 레코드 타입 목록] - 노드 속성 : b-tree 노드들에 해당하는 속성 레코드 타입이다. [그림 2 - 노드 속성 구조] - extents 기반의 속성 : fork 구조체로 정의되며 extents overflow file 영역.. 더보기
File System - HFS+ (4) 이번 글에서는 HFS+ 에서 제일 핵심적인 Catalog File 영역에 대해서 알아 볼 것이다. [Catalog File] 해당 영역은 파일의 주요 메타데이터들을 저장하고 있는 영역으로 b-tree 구조이다. 각 노드는 최소 4KB의 크기를 가지고 있으며 Mac OS X에서 파일이나 디렉토리에는 Catalog ID가 할당 되는데 각 ID 숫자 별 의미는 다음과 같다. [그림 1 - CatalogID 목록] 앞서 말했듯이 카탈로그 파일 영역은 b-tree 구조라고 하였다. 그렇기에 모든 노드와 인덱스들은 키를 가지고 있으며 또 노드들의 레코드들은 네 가지 종류로 나뉘어져 있다. [그림 2 - CatalogKey 오프셋 구조] 다음은 카탈로그 노드들의 레코드 종류이다. [그림 3 - 레코드 종류] 각 레코.. 더보기
File System - HFS+ (3) 계속해서 HFS+의 각 영역에 대해서 알아보자. [Allocation File] 해당 영역은 현재 블록이 할당 되어 있는지 판단하게 도와주는 비트맵 영역이다. 해당 영역에서 비트가 설정되어 있다면 비트에 해당하는 블록은 할당 되어 있는 것을 뜻하며, 비트가 설정되어 있지 않다면 할당 가능한 상태의 블록을 뜻한다. [Extents Overflow] 해당 영역은 하나의 B-tree가 데이터를 모두 저장하지 못하면 남은 데이터들을 저장하는 영역이다. 해당 영역의 오프셋 구조는 다음과 같다. [그림 1 - Extents Overflow 영역 오프셋 구조] - fork 타입 : fork의 타입을 정의하는 필드로 00으로 설정되어 있으면 data fork 타입이며, FF로 설정되어 있으면 resource fork .. 더보기