본문 바로가기

[+] Forensic

File System - FAT (9) 이번 글 에서는 예약영역 다음 섹터부터 시작하는 FAT 영역에 대해서 알아 볼 것이다. FAT 영역은 FAT 파일시스템에서 중요한 역할을 담당하고 있는데, 그 역할은 다음과 같다. - 클러스터 할당 상태 파악 - 어떠한 파일이나 디렉토리에 할당 된 클러스터의 다음 클러스터 주소 파악 FAT은 보통 FAT 파일시스템에서 두 개가 존재하며, 정확한 번호는 부트 섹터에서 할당한다. 첫 번째 FAT은 예약 영역 섹터 다음부터 시작하며, 부트섹터에서 전체크기를 할당 한다. 두 번째 FAT은 만약 존재한다면 첫 번째 FAT 마지막 섹터 다음부터 시작하며, 구성은 같은 크기의 엔트리들로 구성된다. * 참고 : 엔트리에 Header와 Footer는 존재하지 않는다. 각 엔트리 크기는 FAT 종류마다 다른데, 해당 종류.. 더보기
File System - FAT (8) 이번 글 부터는 FAT 파일시스템의 각 데이터 구조체들을 자세히 살펴 보도록 하겠다. 현재 글에서는 부트 섹터와 FAT 32 파일시스템에만 존재하는 FSINFO 구조체를 알아 볼 것이다. 일단 부트 섹터는 파일시스템 첫 섹터에 존재하며 FAT 파일시스템의 종류에 따라 조금씩 다르다. 하지만 첫 36byte는 동일하다. 일단 부트 섹터의 36byte부터 살펴보자. [그림 1 - 부트섹터 처음 36byte] 위 이미지만 봐서는 정확히 설명이 안되는 부분이 있기 때문에 아래에 설명이 필요한 부분을 따로 설명 해 두었다. - 부트 코드 점프 명령어 : 해당 부분은 부팅 파일시스템이 아니면 설정되지 않아도 되는 부분이다. - 섹터당 바이트 수 : 이 부분은 주로 512, 1024, 2048, 4096 바이트로 할.. 더보기
File System - FAT (7) 이번 글에서는 파일 복구와 FAT 파일시스템의 종류를 결정하는 방법, 일관성 검사에 대해서 알아보도록 하겠다. [파일 복구] 파일 삭제 과정을 보면 FAT 엔트리가 0이 되고 디렉토리 엔트리가 비 할당 상태로 바뀌면서 디렉토리 엔트리의 첫 바이트가 "0xE5" 로 설정된다. 파일을 복구하기 위해서는 파일의 시작 위치(시작 클러스터)와 크기를 알아야 한다. 하지만 시작 클러스터만 알 수 있을 뿐 나머지 연계되는 클러스터는 정확하게 알지 못한다. 파일시스템의 파일의 클러스터들 배치는 아래와 같은 경우들이 있다. - 연속적인 클러스터 할당의 경우 [그림 1 - 연속 할당 클러스터] 위 경우 파일 복구는 정말 쉽다. 시작 클러스터인 45를 시작으로 파일의 크기만큼인 48까지만 복구해주면 된다. - 할당 클러스터.. 더보기
File System - FAT (6) 이번 글에서는 FAT 파일시스템에서 파일 생성, 삭제가 어떻게 이루어지는지에 대해서 이야기 할 것이다. 생성, 삭제 수행들은 여러 참조 모델들의 데이터를 이용하여 이루어 지는데 그 과정은 아래와 같다. [파일생성 과정] 디렉토리(dir)는 생성되어 있으며 클러스터의 크기는 4096byte이고 파일 크기는 5000byte라고 가정한 과정이다. 1. 볼륨 섹터 0에서 부트 섹터를 참조하고, FAT 구조체와 데이터영역, 루트 디렉토리의 위치를 파악한다. [그림 1 - 1번 과정] 2. 디렉토리를 찾기 위해 루트 디렉토리에서 각 디렉토리 엔트리를 해석하고, 찾을려고 하는 디렉토리의 이름과 디렉토리 속성을 이용하여 찾으려고 하는 디렉토리의 엔트리를 찾는다. [그림 2 - 2번 과정] * 참고 : 루트 디렉토리에는.. 더보기
File System - FAT (5) 이번 글은 FAT 파일시스템의 마지막 참조 모델인 파일 이름 참조 모델에 대해서 알아 볼 것이다. (FAT 파일시스템은 응용 프로그램 참조 모델이 존재하지 않음) 파일 이름 참조 모델은 파일 이름 데이터를 가지고 있는 참조 모델로 메타데이터 참조 모델을 분석 할 때에도 언급 했듯이 메타데이터 참조 모델에 파일 이름 데이터가 포함되어 있다. 이제 파일 참조 모델이 파일명을 어떻게 다루는지 알아보자. [파일 이름 참조 모델의 파일 이름 관리] 파일 참조 모델은 파일명의 길이가 8 보다 크거나, 이름에 특별한 문자가 있으면 디렉토리에 LFN(Long File Name) 타입을 추가한다. LFN 타입을 가지고 있는 디렉토리(파일)은 SFN(Short File Name) 이라는 디렉토리 엔트리를 또 갖게 된다. .. 더보기