본문 바로가기
Security/Digital Forensic

[Digital Forensic] 파일시스템

by 단월໒꒱ 2022. 5. 16.

 파일시스템 기초

 

  컴퓨터에 데이터를 기록하기 위해서는 미리 하드디스크에 데이터를 읽고 쓰고 찾기 위한 준비를 해두어야 하는데, 

그 준비의 규칙을 정리해 놓고, 파일에 이름을 붙이고 저장이나 검색을 위해 파일을 어디에 위치시킬 것인지를 나타내는 체계를 파일시스템이라고 한다.

 

 

파일시스템

 

  파일시스템이란, 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체제를 가리키는 말이다.

  

  간단히 이야기하자면, 사용자의 요청에 따라 보조기억장치에 파일의 내용을 저장하고, 저장된 파일의 내용을 다시 사용할 수 있도록 사용자와 보조기억장치의 인터페이스 기능을 하는 것을 가리킨다.

 

  특징

    - 계층적 디렉터리 구조를 가진다.

    - 디스크 파티션 별로 하나씩 둘 수 있다.

 

  역할

    - 파일 관리 : 파일 저장, 참조, 공유

    - 보조 저장소 관리 : 저장 공간 할당

    - 파일 무결성 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미

    - 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공

 

  개발 목적

    - HDD와 메인 메모리의 속도 차 줄이기

    - 파일 관리 용이

    - HDD의 막대한 용량을 효율적으로 이용

 

  운영체제 별 파일 시스템

    - Windows : FAT12, FAT16, FAT32, exFAT, NTFS

    - Linux : ext2, ext3, ext4

    - Max OS : HFS, HFS+

    - Google : GFS

 

 

 

파일시스템 구조

 

  파일시스템은 암호화, 압축 등 다양한 기능을 제공하지만 본래의 기능은 원하는 파일을 빠르게 읽고, 쓰고, 삭제하는 등 기본적인 기능을 원활하게 수행하기 위한 목적이다. 따라서 이러한 기능을 볼 때, 파일시스템은 다음과 같은 추상화된 구조를 가진다.

 

  일반적으로 메타 영역 + 데이터 영역으로 구성되어 있다.

 

 

 

 

  메타 영역 : 데이터 영역에 기록된 파일의 이름, 위치, 크기, 시간 정보, 삭제 유무 등 파일의 정보가 저장되어 있다.

  데이터 영역 : 파일의 데이터가 저장되어 있다.

 

  데이터 영역에 기록된 모든 파일은 메타 영역에 의해 해당 정보를 얻을 수 있으므로, 직접 파일 데이터가 필요한 경우가 아니라면 메타 영역만의 접근으로 해당 파일 정보를 찾을 수 있다.

 

 

 

→ BR (Boot Record)

  시스템은 부팅과정에서 파티션의 크기, 위치, 설치된 운영체제 등을 파악하여야 하는데, 이러한 정보를 담고 있는 영역이 BR 영역이다. 윈도우 운영체제에서는 파티셔의 첫번째 섹터에 위치하고 있다.

 

 

 

 

  BR은 시스템 부팅 시 필요한 파티션의 크기, 위치, OS 등의 정보가 저장된 영역으로, 부팅 과정에서 운영체제의 커널 파일을 불러와 구동시킨다.

  파티션을 나누지 않는 단일 파티션의 경우 1개의 BR 영역이 첫번째 섹터에 위치하지만, 분할된 파티션의 경우에는 각 파티션의 BR 영역을 관리할 필요가 있다.

 

 

 

MBR (Master Boot Record)

  각 BR 영역을 찾아갈 수 있는 위치가 저장된 영역이다.

 

  기본적으로 446바이트의 부트 코드 영역, 64바이트의 파티션 테이블 영역, 2바이트의 시그니처로 구성되어 있다.

    - 부트 코드 영역 : 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 부트 섹터를 호출하는 코드가 위치하는 영역

 

 

 

 확장 파티션

  MBR 영역에서 파티션 정보를 표현하는 공간은 64byte로, 총 4개까지만 분할이 가능하다.

  이 때문에 확장 파티션을 사용하는데, 확장 파티션을 가르키는 파티션 정보는 파티션 유형을 나타내는 1바이트의 값이 0x05나 0x0f로 설정된다. 즉, 4번째 파티션 테이블 정보의 파티션 유형 값이 0x05나 0x0F이면 확장 파티션을 사용하고 있음을 알 수 있으며, 해당 정보를 따라가면 또 다른 파티션 테이블 정보를 얻을 수 있는 MBR 영역을 확인할 수 있다.

 

 

 

 GPT (Guild Partition Table)

  디스크에 대한 정보를 담는 영역이다.

 

 

 

 

 파일시스템 종류

 

 

FAT (File Allocation Table)

 

  FAT는 파일을 할당한 정보를 테이블로 표현한 것으로, 전 세계적으로 가장 많이 사용되는 파일시스템이다.

 

  매우 단순한 구조를 갖고 있으며, 최근에는 대용량 저장을 위해 FAT12, FAT16, FAT32 등이 만들어졌다.

  뒤의 숫자는 최대 표현 가능한 클러스터의 수를 비트 수로 나타낸 것이다.

     ex. FAT12는 최대 2^12개의 클러스터를 표현할 수 있다.

          (예약된 클러스터 12개를 제외하고 2^12 - 12개의 클러스터를 표현할 수 있다.)

 

  FAT의 범용성은 휴대용 장치들과 PC와의 호환성을 높여주는 결과를 가져왔으며, 이동식 저장장치들은 FAT을 설치하기만 하면 별도의 설치과정 없이 End User들의 PC에서 간편하게 읽어들일 수 있도록 만들어 졌다.

  파일시스템에서 사용되는 부가 기능은 적고 제약사항들이 많지만, 그만큼 가볍고 심플하다.

 

  FAT 파일시스템 중에서 FAT32를 살펴보자.

 

FAT32

 

FAT32 파일시스템은 크게 예약 영역, FAT 영역, 데이터 영역으로 구분되어 있다.

 

 

 

→ 예약영역

예약 영역은 부트 섹터, FSINFO 등의 내용을 표현하거나 사용되지 않는 부분이다.

 

 

 

 

  1. BR (Boot Record)

     - 파티션의 첫번째 섹터이자 예약 영역의 첫번째 섹터

     - BR은 섹터 1개를 갖고 있다. (512btye)

     - 윈도우를 부팅시키기 위한 기계어 코드와 FAT 파일 시스템의 여러 설정 값이 저장되어 있다.

 

  2. FSINFO (File System Information)

     - 파일시스템의 정보가 저장되어 있다.

 

  3. Boot Strap

     - 부팅에 사용되는 파티션일 경우 수행하는 부분이다.

     - 부팅시 동작해야할 명령 코드가 들어있는 영역

 

  4. Reserved Sector

     - 예약된 섹터 공간

 

  5. Boot Record Backup

     - BR의 정보를 백업하는 영역

 

  6. FSINFO Backup

     - FSINFO의 정보를 백업하는 영역

 

→ FAT 영역

FAT 영역은 데이터 영역을 효과적으로 관리하기 위해 사용되는 부분이다.

 

 

 

 

  1. FAT 1

     - 파일이나 디렉터리의 할당 유무가 기록되는 부분

     - 클러스터 단위로 기록되며, 1개의 클러스터에 대한 사용 유무를 기록하기 위해 4byte의 공간이 필요하다.

 

  2. FAT 2

     - FAT 1 영역의 백업 영역

     - FAT 1의 구조와 동일

 

→ 데이터 영역

  실제 파티션 안에 만들어지는 데이터인 파일이나 디렉터리가 저장되어 있는 영역

  계층 구조로 할당 받으며 Directory Entry 형식으로 기록된다.

 

 

 

HPFS (High Performance File System)

 

  HPFS는 OS/2 1.2부터 사용된 파일시스템이며, NTFS가 나오기까지 많은 영향을 끼쳤다.

 

  대용량 디스크에 적합한 구조를 갖고 있으며, 효율적인 캐싱과 FAT에 비해 파일 손실과 단편화가 적고, 서버 시스템에 사용할 수 있도록 여러가지 보안 기능 등에 대한 요구를 충족시켜 줄 수 있다.

 

  대용량 저장 장치를 타겟으로 했기 때문에, 200MB 미만의 저장장치에서는 성능저하를 가져올 수 있으며, 섹터 크기가 512Byte로 고정되었기 때문에 기본 데이터 I/O 단위를 변경할 수 없다.

 

 

 

NTFS (New Techonology File System)

 

  NTFS는 FAT의 한계점을 개선한 파일시스템으로, 현재 윈도우에서 흔히 사용되고 있다.

 

  대용량 저장장치를 겨냥해서 제작되었으며, 높은 안정성과 부가기능을 지원하고, FAT와 HPFS에 있던 여러 제약 사항들을 크게 개선한 것이다.

 

  NTFS는 파일, 디렉터리 및 메타 정보를 파일 형태로 관리한다.

 

 

 

 

VBR 영역

  부트 섹터와 추가적인 부트 코드가 저장되는 부분

 

 MFT 영역

  초기에는 1024btye의 크기로,  각 파일은 위치, 시간 정보, 크기, 파일 이름 등을 MFT Entry라는 특별한 구조로 저장된다. 이 MFT Entry에는 파일의 이름, MAC 타임(Modified, Accessed, Created), 파일의 실제 위치 등에 대한 정보가 들어있다.

 

  크기가 가변적으로, 해당 MFT가 모두 사용되면 동적으로 클러스터를 추가로 할당하여 MFT 영역의 크기를 늘리므로 파일시스템의 여러 부분에 조각나 분포될 수 있다. (파일 및 디렉터리는 MFT 부분에 하나 또는 그 이상의 MFT Entry가 할당되는데, 데이터가 많아져서 MFT 영역을 초과하게 되면 데이터 영열을 사용하여 MFT 영역을 늘린다.)

 

  MFT는 NTFS 상의 모든 MFT Entry들의 배열이다.

 

 데이터 영역

  파일의 실제 내용이 저장되는 공간으로 내용만 저장된다.

 

특징

  1. USN 저널

     - 파일의 모든 변경 내용을 기록하는 로그

  2. ADS

     - 파일 당 하나 이상의 데이터 스트림을 저장할 수 있도록 지원

  3. Sparse 파일

     - 파일 데이터가 대부분 0일 경우 실제 데이터는 기록하지 않고 정보만 기록

  4. 파일 압축

     - LZ77의 변형된 알고리즘을 사용하여 파일 데이터 압축

  5. EFS

     - 파일을 암호화하는 기능으로 FEK를 통한 대칭키 방식의 암호화 수행

  6. VSS

     - 디렉터리에 대해 백업본을 유지하여 USN 저널과 함께 더 안전한 복구를 수행

  7. Quotaas

     - 사용자 별 디스크 제한

  8. 유니코드 지원

     - 다국어 지원

  9. 대용량 지원

     - 16TB

 

 

 

UFS (Unix File System)

 

  UFS는 유닉스의 대표적인 파일시스템으로, 빠른 속도와 높은 안정성을 목표로 만들어졌다.

 

  저장장치를 그룹화하여 관련된 데이터끼리는 최대한 가까운 위치에 자리할 수 있는 구조로 되어 있어, 디스크 헤드의 이동이 비교적 적고, 중요한 데이터는 이런 그룹에 걸쳐 많은 백업을 저장하므로 만일의 사태에 대해 신뢰성을 높이고 있다.

 

 

 

Ext (Extended File System)

 

  Ext는 리눅스에서 사용되는 파일시스템이다.

 

  Ext, Ext2, Ext3, Ext4가 있으며, 숫자가 높아질수록 더 나중에 나온 것이다.

  현재는 Ext3이 보편적으로 많이 사용되고 있다.

 

  Ext

     - 리눅스 초기에 사용되던 파일시스템

     - 호환성이 없다.

 

  Ext2

     - Ext3 전에 가장 많이 사용되었던 파일시스템

     - 호환성이 좋으며 안정성과 속도가 좋다

     - 리눅스 파일시스템의 대부분의 기능을 제공한다.

 

  Ext3

     - 현재 가장 많이 사용되고 있는 파일시스템

     - Ext2를 기반으로 개발되었다.

     - Journaling 기능을 지원한다.

           (Journaling : 로그를 만들어서 시스템이 비정상적으로 종료되었을 경우, 파일시스템을 복구하는 기능)

 

  Ext4

     - Ext3 파일시스템을 확장한 파일시스템

     - 파일 접근 속도를 향상시키고, 단편화를 줄이도록 설계되었다.

 

 

 

HFS (Hierarchical File System)

 

  HFS는 애플이 mac OS를 구동하는 컴퓨터 시스템에 사용할 목적으로 개발한 파일시스템이다.

 

 

 

APFS (Apple File System)

 

  APFS는 애플에서 mac OS, iOS, watchOS, tvOS 등에서 범용으로 사용하고자 만든 파일시스템이다.

 

 

 

 

출처

https://daesiker.tistory.com/36

https://jmoon.co.kr/84?category=676229 

 

 

'Security > Digital Forensic' 카테고리의 다른 글

[Digital Forensic] 이미징 도구 사용 실습  (0) 2022.05.23
[Digital Forensic] 이미징 툴  (0) 2022.05.16
[Hack the Packet 2012] L4  (0) 2022.05.10
[Hack the Packet 2012] L2  (0) 2022.05.10
[Hack the Packet 2012] L1  (0) 2022.05.10

댓글