디지털포렌식_FS과 OS

·2023년 5월 12일
post-thumbnail

📋 2과목. 파일 시스템과 운영체제

💻 제 1편. 파일 시스템

🤍 CH1. 파일의 기본개념

파일 시스템

  • 시스템의 오류 교정, 중요 데이터의 백업 및 복원. 데이터의 보안 및 암호화 등의 부가 기능이 있다.

메타 데이터

  • 사용자가 입력한 데이터를 설명하거나 관리하기 위한 데이터로 응용프로그램에서 자동적으로 생성된다.

파일 시스템 확장자 별 hex :
https://en.wikipedia.org/wiki/List_of_file_signatures

🤍 CH2. 파일의 기반요소들

I/O 버퍼링

  • 한 번에 다량의 하드 시스크 데이터를 읽어 디스크 사용 효율을 높임
  • 하드 디스크와 CPU 간 속도 차로 인한 성능 저하를 감소시킴
  • 응용 프로그램의 Read()와 같은 파일 읽기 시스템 수행 속도가 빨라짐

🤍 CH3. 파일 시스템의 구조

디스크 Free-Space 관리 방법

  • 연결 리스트 (Linked-list) : 모든 자유 블록을 연결하여 관리

슬랙 공간

물리적 구조와 논리적 구조의 차이로 발생하는 낭비공간

1. RAM slack : 섹터 슬랙이라고도 한다. 데이터가 디스크에 512 바이트씩 기록되는 특성으로 인해 발생하는 공간.

  • 클러스터의 사용으로 인하여 => ram slack, file slack, file system slack

2. File slack : 드라이브 슬랙이라고도 함. 클러스터의 사용으로 인해 낭비되는 공간 중 램 슬랙을 제외한 나머지 부분을 나타냄
3. Filesystem slack
4. Volume slack : 전체 볼륨의 크기와 할당된 파티션 크기의 차이로 인해 발생. 클러스터의 사용이 직접적인 생성요인이 아님.

free-space 관리법

  • 연결 리스트이 경우, 빈 블록이 n개가 필요한 경우 n번 디스크를 읽어야 함.
  • counting : 프로그램들이 많은 경우 연속된 여러 블록을 할당하고 반환
  • grouping : 여러 개의 가용블록 주소를 찾는데 용이

윈도우 FAT 파일 시스템

MBR(master boot record) : OS를 로드하기 위해 필요한 부팅 정보 저장

  • OS가 어디, 어떻게 위치되어 있는 지 식별. 주기억장치에 적재될 수 있도록 하기 위한 정보. 파티션된 기억장치의 첫 번째 섹터인 512 바이트의 시동 섹터
  • 메모리에 적재될 OS가 저장되어 있는 파티션의 부트 섹터 레코드를 읽을 수 있는 프로그램 포함. 부트 섹터 레코드는 OS의 나머지 부분을 메모리에 적재시키는 프로그램을 담고 있음
  • 처음 440 바이트는 부트 코드 영역, 부트 코드의 주 역할은 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 부트섹터를 호출해주는 역할
  • microsoft의 MBR은 부트 코드 영역과 파티션 테이블 영역으로 구분된다.

BR(Boot Record) : 각 파티션의 첫 번째 섹터에 위치하여, 해당 파티션에 OS가 설치되어 있으면 OS 부팅 역할을 한다. 단일 파티션을 사용하는 경우 BR는 MBR의 위치에 있다.

디스크 주소 저장 방식

1. CHS (Cylinder, Head, Sector의 약어)
: 디스크의 물리적 구조에 기반한 주소 지정 방식. 초기 ATAT 표준과 BIOS의 지원 비트 차이로 인해 최대 504mb 까지 지정 가능

2. LBA 방식
: 디시크 0번 실린더 0번 헤드 , 1번 섹터의 0번 블록으로 지정하는 방식

GPT(GUID Partition Table)

  • 안드로이드 저장장치 대부분에서 사용
  • GPT 헤더의 시그니처는 'EFI PART'
  • 파티션 엔트리에서 해당 파티션의 시작 블록 주소는 8 바이트
  • 각 엔트리는 GUID 값을 가짐

🤍 CH4. 파일 시스템 유형

NTFS

파일이 삭제된 경우

  • 파일에 대한 MFT Entry의 in-use flag를 0으로 변경
  • 해당 MFT Entry에 대한 $Bitmap 속성을 0으로 변경
  • $Bitmap 파일에서 삭제된 파일에 할당된 Cluster를 unallocated로 변경

NTFS 특징

  • 저장하는 데이터 암호화 기능과 Journaling 기능을 포함
  • 시스템 고장과 디스크 손상 복구 능력이 있어 손상 발생 시 디스크 볼륨을 재구성하여 일관성이 있는 상태로 복구 가능
  • 보안 적용 대상은 로컬서버의 NTFS 볼륨 드라이버, 폴더, 파일이다.
  • 보안의 상속은 하위폴더 및 파일에 상속되도록 기본 설정되어있으며, 허용보다는 거부목록 우선
  • 사용자 권한은 공유 보안과 같이 Everyone 그룹에 대해 모든 권한을 허용함
  • 파일과 폴더에 개별적 보안 설정이 가능해 강력한 보안정책 설정 가능
  • FAT 파일 시스템 대체를 위한 것으로, 사용자마다 서로 다른 보안 설정이 가능함
  • 다중 데이터 스트림 지원
  • 파일 시스템 수준에서의 압축을 지원
  • 파일, 디렉토리 표현을 위해 MFT 엔트리 자료구조 제공

NTFS 메타 파일

$FILE_NAME
: MFT Entry에 기록되는 attribute. 파일명, 파일 플레그(Archive, Hidden), MAC Time 등이 기록된다.
$STANDARD_INFORMATION
: 파일의 생성, 접근, 수정 시간, 소유자 등의 일반적 정보, MAC Time
$SECURITY_DESCRIPTOR
: 파일의 접근제어와 보안 속성
$INDEX_ROOT
: 인덱스 트리의 루트 노트
$BITMAP
: $MFT와 인덱스, 볼륨 클러스터의 할당 정보 관리

$MFTMirr
: MFT 파일의 백업본 저장
$MFT
: 파일 디스크 저장 위치
$LogFile
: 트랜잭션 저널 기록
$Objld
: 파일의 고유 ID 저장. 16바이트 크기를 가진 고유값의 저장

NTFS 레코드 형식

  • 파일 레코드 헤더에는 파일 ID, 레코드 저장 위치, 레코드의 실제 길이, 할당 크기, 파일의 시작위치, 다음번 속성 ID, 플래그 등을 저장
  • 파일명 속성은 파일이 속한 디렉터리 위치, 파일 변경 횟수, 파일 할당 크기, 파일 실제 크기, 파일명 길이, 파일명 공간, 16비트*255자 유니코드 기반 파일명 등이 있음
  • 데이터의 속성은 파일의 데이터와 데이터를 찾는 인덱스에 대한 속성, 비상주 속성에 대한 설명, 속성 이름, 압축 단위 크기, 속성 할당 크기, 속성의 실제 크기, 데이터 시작 위치, 첫 데이터 스트림의 크기 등이 있다.

sparse

데이터가 모두 0인 파일 저장 시 실제 디스크를 할당하지 않고 크기만 저장하는 기능

convert

FAT 16 / 32 파일 시스템을 NTFS로 변환시키는 것이 가능하지만, 다시 되돌리는 것은 불가능하다.

Flash 메모리를 통한 파일 시스템 구현

  • 작은 크기의 데이터를 읽을 때 매우 적합
  • 가격 상의 이유로 NAND 타입의 플래쉬 메모리 사용
  • 긴 재사용을 위해 garbage 수집이 필요함
  • 전용 파일 시스템 => YAFFS2

NAND Flash 메모리

  • SSD, SD Card, eMMC, USB 메모리 카드에 사용됨
  • 읽기, 쓰기, 동작 외 지우기 동작의 필요
  • 지우기 횟수의 제한으로 초과 시 해당 부분에는 데이터 기록 불가
  • FAT 파일 시스템과 NTFS 파일 시스템에서 파일 삭제 시 실제 파일 데이터는 삭제하지 않고, 파일 메타데이터의 특정 플래그만 변경된다.
  • 파일 카빙은 파일 시스템의 미할당 클러스터에서 삭제된 파일의 시그니처인 header 또는 footer 등의 정보를 사용하여 파일을 복구하는 기법이다.
  • 파일 카빙은 램 슬랙, 파일 슬랙 등에 대해서도 수행 가능하다.

TRIM

  • OS에서 파일 삭제 시 FTL( Flash Translation Layer ) 에서 즉시 또는 일정 시간 후 삭제한 파일에 속한 섹터의 물리적 페이지 대응정보를 삭제
  • OS가 TRIM을 적절한 시점에 호출 시 SSD 성능이 좋아짐
  • 사용하지 않은 페이지를 모아 블록단위로 지우는 garbage collection과 밀접한 관계가 있음

FTL

  • 파일 시스템의 논리적 섹터에 대한 플래시 메모리의 물리적 주소 변환
  • Wear Leveling
  • Garbage Collection을 포함한 블록 관리
    => Sector Translation, Block Management, Low Level Driver의 구조를 가짐

FAT 파일 시스템의 구조

  • PBR : 파티션 부트 레코드의 약자로서 파티션 정보를 저장하고 있는 핵심적 부분
  • FAT 1/2 : 클러스터들을 관리하는 테이블이 모여 있는 공간으로 FAT2는 FAT1의 백업 역할을 함
  • Root Directory : 파일 시스템의 최상위 디렉터리. 디렉터리에 대한 Metadata 저장
  • LFN Directory Entry
    : 최대 255자까지 저장 가능하며, 기존의 short file name과 호환된다. 기존 SFN보다 특수문자의 허용 범위가 넓다.

FAT32

  • FAT32의 DATA 영역에서 Root Directory의 위치는 고정되어 있지 않다. FAT32는 일정 이상 크기의 디스크에 한해서는 적용이 어렵다.
  • FAT 파일시스템구조에서 일반적으로 FAT16은 1 Sector, FAT32에서는 32개의 sector가 예약된 영역에 속함
  • 파일 삭제 시, 삭제되는 파일의 디렉터리 엔트리의 첫번째 바이트가 0xE5로 바뀌며, File Allocation Table에서 삭제하는 파일에 할당된 클러스터의 정보가 모두 0으로 바뀜. 삭제되는 파일의 롱파일네임 엔트리의 첫 번째 바이트가 0xE5로 바뀐다.

  • 단편화 시 파일이 손상된 상태로 복구됨
  • DOS 때부터 사용된 FAT은 디스크 블록 할당 시 연결 리스트 형태를 취함
  • directory entry에는 파일의 이름, 확장자, 생성, 수정, 접근 시간 등이 저장됨

exFAT

FAT 12/16/32 계열의 차세대 파일 시스템. FAT 32의 장점을 유지하며 파일크기와 디렉터리 제약의 문제를 해결함

Cluster Heap
실제 파일 데이터가 존재하는 영역

Cluster run

  • 많은 데이터가 연속적으로 저장되는 경우에 효율적 표현 가능
  • 각 run은 시작 클러스터 번호와 클러스터 개수로 표현됨
  • Sparse 속성의 경우 run에 시작 클러스터의 번호는 표시하지 않고 크기만 표현

ext4

  • 기존 Ext3의 공간 할당 방법 개선을 위해 구현
  • 슈퍼블록과 디스크립터 사본 저장
  • extent를 사용한 디스크 공간 관리의 시작
  • 일관성과 속도 향상을 위해 선할당 preallocation 기법과 단편화 방지를 위한 지연할당 delayed allocation 기법을 도입

슈퍼블록 복구 방법
다른 블록그룹에 백업되어 있는 슈퍼블록을 찾거나, 저널 파일에 존재하는 슈퍼블록을 찾음

ordered mode journal

슈퍼블록, inode, 블록비트맵 기록

extend

  • 파일 할당 블록정보 리스트
  • 시작블록의 위치와 연속된 블록 개수로 표현됨
  • inode에서는 최대 4개의 extent만 포함 가능

ext3

  • Journaling 기능

VFS

  • 서로 다른 파일 시스템에 대해 표준 인터페이스를 통해 입출력 가능케하는 추상화 계층
  • 사용자 프로세스는 마운트 된 실제 파일시스템에 대한 정보를 가질 필요x
  • VFS의 주요 공통 오브젝트는 superblock, inode, dentry, file이 있다.
  • 네트워크 파일 시스템도 마운트 가능하다.

UFS

  • Unix 및 Unix 계열 OS에서 널리 사용되는 파일 시스템
  • 시스템 상 각 파일은 특정 사용자에게 소유되며, 원칙적으로 해당 사용자만이 해당 파일에 대한 조작 수행이 가능함
  • 부트 블록, 슈퍼 블록, 실린더 그룹의 파일 시스템 구조를 가짐
  • 특권이 있는 사용자는 예외적으로 파일시스템의 모든 파일에 대한 권한을 가짐
  • 일반 사용자는 슈퍼 유저와 같은 특수 권한을 통해 해당 파일에 접근 가능케함.
    => 구조 : 부트 블록, 슈퍼 블록, 실린더 그룹

HFS+

  • apple의 Mac OS, iOS에서 사용하는 파일 시스템
  • 파일과 폴더 이름을 UTF-16으로 표현, 저널링 지원
  • 볼륨 헤더의 복사본이 볼륨의 마지막 1024 바이트 앞쪽에 존재
  • Catalog File은 B-Tree로 구성되며, 파일 및 디렉토리의 구조를 정보로 표혐

JFS

IBM AIX os 파일 시스템의 종류

Super Block

유닉스 계열 파일 시스템 구조에서 디스크 파일시스템의 식별을 위한 Magic Number 등 전체 디스크에 대한 정보가 저장되어 있음

Linux OS 파일 시스템의 종류

  • EXT2
    EXT(Extended File System)은 하위 호환성을 가지며, 시간 소인 정밀도 및 범위를 향상시키고 블록 할당을 지연시킨다. 또한 파일 레벨로 사전 할당과 멀티 블록 할당을 지원한다.
  • XFS
  • UPS

inode 구조체

  • 파일이 저장된 디스크 블록 위치를 나타내기 위해 15개의 포인터 사용
  • 디스크 블록 위치를 가리키는 포인터 정보는 직접 지정과 간접 지정 방식이 있음
  • 작은 크기의 파일에 부여된 inode의 경우 간접 지정 포인터 값은 null
  • 유닉스에서 파일 또는 디렉터리 파일 생성 시 속성을 등록하는데, 파일의 속성을 나타내는 정보를 저장하고 있는 것

🤍 CH5. 파일보호기법

  • 접근행렬의 사용
    파일 보호 기법 구현을 위해 사용
    ex) 권한 리스트, 전역 테이블, 락-키 기법

접근 리스트에서 각 객체에 대해 만들어지는 리스트는 "영역, 권한 집합" 순서쌍으로 구성되며, 디폴트 값이 없는 경우 접근이 거부됨

profile
화이트해커 엘입니다😉

0개의 댓글