8.파일시스템과 파일 복구

Similar documents
Microsoft PowerPoint - [#4-2] File System Forensic Analysis.pptx

8.파일시스템과 파일 복구

Outline 1. FAT12/16/32 ü Introduction ü Internals ü Directory Structure ü Example

Microsoft PowerPoint - [#4-1] NTFS.pptx

제목을 입력하세요

슬라이드 1

Slide 1

Microsoft PowerPoint - 알고리즘_1주차_2차시.pptx

GNU/Linux 1, GNU/Linux MS-DOS LOADLIN DOS-MBR LILO DOS-MBR LILO... 6

PowerPoint Presentation

슬라이드 1

Microsoft PowerPoint - [#3-2] FAT File System - exFAT.pptx

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

휠세미나3 ver0.4

3. FAT32 파일시스템의구조 1) 마스터부트레코드 (MBR) 하드디스크의첫번째섹터를 MBR 이라고하며, 512 바이트의크기입니다. MBR 에서는해당디스크의파티션에대한정보를담고있으며, 아래 < 그림1 > 과같은구조를갖습니다. < 그림1. 마스터부트레코드구조 > MBR

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

PowerPoint Presentation

05Àå

Tablespace On-Offline 테이블스페이스 온라인/오프라인

알아 둘 사항 아이오드 제조사는 본 기기에 하드디스크를 포함하여 출고하지 않습니다. 따라서 하드디스크에 문제가 발생할 경우, 구매처 또는 해당 하드디스크 서비 스센터에 문의 하시기 바랍니다. 정해진 용도 외의 사용으로 발생한 문제에 대해서, 당사는 어떠한 책임도 지지

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

SRC PLUS 제어기 MANUAL

디지털포렌식학회 논문양식

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

디지털포렌식학회 논문양식

Dropbox Forensics

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

1 법적 고지 사항 SK hynix Inc.는 사전 통보 없이 제품, 정보 및 사양을 변경할 권리를 보유합니다. 본 문서의 제품 및 사양은 참조용입니다. 본 문서의 모든 정보는 어떠한 형태의 보증 없이 있는 그대로 제공됩니다. 본 문서와 여기 포함된 모든 정보는 SK

BMP 파일 처리

-. Data Field 의, 개수, data 등으로구성되며, 각 에따라구성이달라집니다. -. Data 모든 의 data는 2byte로구성됩니다. Data Type는 Integer, Float형에따라다르게처리됩니다. ( 부호가없는 data 0~65535 까지부호가있는

Freecom Mobile Drive XXS 사용자에게! Freecom Mobile Drive XXS 외장형 하드 드라이브를 선택해 주셔서 감사합니다. 최 적의 사용과 성능을 위해 본 제품을 사용하기 전에 본 설명서를 주의 깊게 읽을 것 을 권합니다. Freecom T

슬라이드 1

PowerPoint Presentation

CD-RW_Advanced.PDF

7장. 교착상태(deadlock)

시스템 사용자 계정 관리

디지털영상처리3

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

Secure Programming Lecture1 : Introduction

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

PowerPoint 프레젠테이션

Introduction to Computer Science

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

adfasdfasfdasfasfadf

<30372E20B1E8B5B5C7F6B4D42E687770>

다음 사항을 꼭 확인하세요! 도움말 안내 - 본 도움말에는 iodd2511 조작방법 및 활용법이 적혀 있습니다. - 본 제품 사용 전에 안전을 위한 주의사항 을 반드시 숙지하십시오. - 문제가 발생하면 문제해결 을 참조하십시오. 중요한 Data 는 항상 백업 하십시오.


MODBUS SERVO DRIVER( FDA7000 Series ) STANDARD PROTOCOL (Ver 1.00) 1

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

PowerPoint 프레젠테이션

0. 들어가기 전

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

10 J1_ _RR_안재형_수정중.hwp

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

Microsoft PowerPoint - o8.pptx

Microsoft Word - HD-35 메뉴얼_0429_.doc

PowerPoint Template

Microsoft PowerPoint - chap06-2pointer.ppt

Scene7 Media Portal 사용

Microsoft PowerPoint - 알고리즘_2주차_1차시.pptx

Linux Server 리눅스왕초보실무를익혀라! 리눅스서버 20 fedora 김영훈ㆍ정거룡지음

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

작성자 : saint Overview BackTrack 는 LILO 를부트로더로사용한다. BactTrack 을기본환경설정그대로설치하면부팅할수없는경우가있는데, 이것은실린더크기가 1024 보다큰하드디스크에설치하면 LILO 가 OS 를정상적으로읽어올수없기때문이다. 요즘나오는

슬라이드 1

Microsoft Word doc

Microsoft PowerPoint - ch07.ppt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >


<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

Flute-GR_BV199_DOS.indb

항목

C# Programming Guide - Types

!K_InDesginCS_NFH

ActFax 4.31 Local Privilege Escalation Exploit

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

solution map_....

Nero <Application> 설명서

Microsoft PowerPoint - 리눅스부팅과정.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint Presentation

Remote UI Guide

Table of Contents 1. 분석 유포경로 악성파일분석 드롭퍼 A 분석 드롭퍼 B 분석 페이지 2 / 17

목 차

DocsPin_Korean.pages

MySQL-Ch10

저작권 안내 이 자료는 시나공 카페 회원을 대상으로 하는 자료로서 개인적인 용도로만 사용할 수 있습니다. 허락 없이 복제하거나 다른 매체에 옮겨 실을 수 없으며, 상업적 용도로 사용할 수 없습니다.

SMB_ICMP_UDP(huichang).PDF

PowerPoint 프레젠테이션

The Pocket Guide to TCP/IP Sockets: C Version

강의 개요

Microsoft Word - eClipse_사용자가이드_

Mango220 Android How to compile and Transfer image to Target

슬라이드 1

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

MySQL-.. 1

Transcription:

SeoulTech 2012-2 nd 컴퓨터보안 박종혁교수 Tel: 970-6702 Email: jhpark1@snut.ac.kr

학습목표 디지털포렌식에서기본단위는파일의추출과분석을통해이루어지므로, 파일의저장및관리를책임지는파일시스템의이해는필수적이다. 먼저파일시스템의이해와구조를파악하고, 윈도우시스템에서가장널리쓰이는 FAT, NTFS 파일시스템에대해학습한다. 학습내용 파일시스템의이해 파일시스템분석 FAT 파일시스템 NTFS 파일시스템

1. 파일시스템의이해 1. 파일시스템의종류 2. 파일시스템의구조 3. 주소지정방식 4. 클러스터 5. 슬랙공간 2. 파티션과 MBR 1. 파티션 2. MBR 3. 확장파티션 3. FAT 파일시스템 1. FAT 파일시스템소개 2. 예약영역 3. FAT 영역 4. 데이터영역 5. 파일의할당, 삭제로인한변화요소 6. The function of FAT 4. NTFS 1. NTFS 소개 2. NTFS 구조 3. VBR(Volume Boot Record) 4. MFT(Master File Table) 5. 데이터영역 6. 파일의할당, 삭제로인한변화요소 5. 디지털포렌식관점에서의파일시스템분석 6. 파일복구 1. 파일시스템상의파일복구 2. 파일카빙

파일시스템이란? 디지털데이터를효과적으로관리하기위해파일을체계적으로기록하는방식 사용자에게파일과디렉터리를계층구조로데이터를저장하도록하는메커니즘 파일이어디에저장되어있는지조직화하고, 사용자의데이터를구조적으로정의 파일시스템이필요한이유? 저장매체의용량이증가함에따라저장되는파일의수도급격히증가 원하는파일을읽고쓰는기본적인기능부터데이터를검색, 저장, 관리하기위한규약이필요

저장매체운영체제파일시스템 Windows FAT(FAT12,FAT16,FAT32,exFAT), NTFS Linux Ext2, Ext3, Ext4 Unix-like UFS 디스크장치 OS2 HPFS Mac OS HFS, HFS+ Solaris ZFS HP-UX ODS-5, VxFS 광학장치 ISO 9660, UDF

파일시스템의구조 파일시스템의기본적인동작은운영체제가각파일을사용하기위해저장되어있는위치로접근하여해당데이터를읽도록함 또한데이터의위치를파악하기위하여사용자가저장된파일의목록을확인할수있도록지원함 파일시스템의추상화구조 사용자가생성한파일의내용은데이터영역에기록 메타영역에는파일관리를위한파일의이름, 위치, 크기, 시간정보등이기록 파일시스템은이러한메타정보를유지관리함으로써파일을효과적으로관리

Hard disk Sector 데이터기록의가장기본단위 총 571 bytes 에서섹터의위치를구분하기위한고유번호저장 (59 bytes) 실제데이터저장으로사용되는영역은 512 bytes (Sector size)

Addressing ( 주소지정방식 ) CHS (Cylinder, Head, Sector) 방식 디스크의물리적인구조에기반한방식 초기 ATA 표준과 BIOS의지원비트의차이로인해최대 504MB까지만지정가능 이후 BIOS 비트확장으로 8.1GB 까지지원이가능하게되었지만대용량디스크는지원하지못함 ATA-6 부터표준에서제외, LBA 방식이새롭게대두

Addressing ( 주소지정방식 ) LBA (Logical Block Addressing) 방식 디스크의 0 번실린더, 0 번헤드, 1 번섹터를첫번째 (0 번 ) 블록으로지정 디스크의마지막섹터까지순차적으로주소를지정 물리적인구조에대한정보불필요 ( 섹터의번호만으로접근가능 ) 선형적인섹터번호가실제디스크의물리적구조로변환되어야하지만 ROM BIOS 에의해자동적으로수행됨 초기에는 28bit 로처리하여약 127GB 가최대용량이었음 현재는 48bit 어드레스방식을사용하고있음

Cluster ( 클러스터 ) 클러스터 = 여러개의섹터 ( 하드디스크의물리적최소단위 ) 를묶은단위 섹터단위로입출력처리하면시간이오래걸리므로여러개의섹터를묶어한번에처리 클러스터크기를 4,096바이트 (4KB) 로지정했을때, 100바이트의데이터를저장하는경우로클러스터의크기만큼할당됨 3996바이트가낭비되지만그럼에도불구하고디스크입출력횟수를줄이기위해클러스터단위를사용 4MB(4,096KB) 파일저장할때 4KB크기의클러스터사용 = 1,024번입출력수행 4MB(4,096KB = 4,194,304B) 파일저장할때 512B크기의클러스터사용 = 8,192번입출력수행

Cluster ( 클러스터 ) 윈도우시스템에서디스크포맷할때클러스터크기지정 FAT32 에서의클러스터크기 NTFS 에서의클러스터크기 볼륨크기 클러스터크기 볼륨크기 클러스터크기 32MB - 8GB 4KB 512MB 이하 512Byte 8GB - 16GB 8KB 513MB - 1GB 1KB 16GB - 32GB 16KB 1GB - 2GB 2KB 32GB 32KB 2GB 이상 4KB

Slack Space 물리적인구조와논리적인구조의차이로발생하는낭비공간 물리적으로파일에할당된공간이지만논리적으로사용할수없는낭비공간 디지털포렌식관점에서 - 정보은닉가능성, 파일복구와삭제된파일의파편조사 RAM Slack (Sector Slack) File Slack (Drive Slack) 이전에사용한데이터가존재, 흔적조사에활용 File System Slack Volume Slack

Slack Space (RAM Slack & File Slack) RAM Slack (Sector Slack) 램에저장되어있는데이터가디스크에저장될때 512 바이트씩기록되는특성때문에발생하는공간으로섹터슬랙 (Sector Slack) 이라고도함 지정되는파일크기가 512 바이트의배수가아닐경우발생 여분바이트 0x00 값으로기록 램슬랙을이용하면파일의끝을알수있기때문에삭제된파일복구시유용하게사용

Slack Space (RAM Slack & File Slack) File Slack (Drive Slack) 클러스터의사용으로인해낭비되는공간중램슬랙을제외한부분으로드라이브슬랙 (Drive Slack) 이라고도함 파일슬랙을이용하면특정파일이해당저장매체에존재하였는지규명가능 존재여부를알아야할파일을클러스터단위로나눈후, 각클러스터의마지막부분과파일슬랙중일치하는부분이있는지확인 최하단의디스크입출력은섹터단위로진행되므로 0x00으로기록되는램슬랙과다르게이전의데이터가그대로남아있음 (I/O는섹터단위로진행 )

Slack Space (File System Slack & Volume Slack) File System Slack 파일시스템할당크기와볼륨크기간의차이로인해발생되는공간 1,026KB 볼륨에 4KB 클러스터사용하는파일시스템구성하면마지막 2KB이파일시스템슬랙이됨 cluster cluster cluster cluster cluster cluster cluster File System Slack Volume Slack 전체볼륨크기와할당된파티션크기의차이로인해발생되는공간 Partition 1 Partition 2 Partition 3 Volume Slack

파티션 (Partition) 저장매체의저장공간을논리적으로분할한것 시스템은부팅과정에서파티션의크기, 위치, 설치된운영체제등을파악하여그에맞게구동해야함 그러한정보담고있는부분이 Boot Record(BR) 영역, windows는파티션의첫번째섹터에위치 C:\ [Windows XP] 단일파티션 C:\ [Windows XP] 다중파티션 D:\ [Windows7]

MBR (Master Boot Record) 분할된파티션에서각파티션의 BR 영역을관리하는영역 MBR 은저장매체의첫번째섹터 (LBA 0) 에위치하는 512 바이트크기의영역 446 바이트의부트코드 (Boot Code) 영역, 64 바이트의파티션테이블 (Partition Table) 영역, 2 바이트의시그니처 (Signature) 영역 BR C:\ [Windows XP] 단일파티션에서의 Boot Record MBR BR C:\ [Windows XP] BR D:\ [Windows7] 단 wnd 파티션에서의 Boot Record

부트코드영역 컴퓨터가부팅될때수행되는코드로, 파티션테이블에서부팅가능한파티션을찾아해당파티션의부트섹터 (Boot Sector) 를호출하는역할을수행 MBR 데이터구조 범위 (Byte Range) 10진수 16진수 설명 0-445 0x0000-0x01BD Boot code 446-461 0x01BE - 0x01CD Partition table entry #1 462-477 0x01CE - 0x01DD Partition table entry #2 478-493 0x01DE - 0x01ED Partition table entry #3 494-509 0x01EE - 0x01FD Partition table entry #4 510-511 0x01FE - 0x01FF Signature (0x55AA)

파티션테이블영역 16 바이트씩총 4개의파티션정보가저장 첫번째값인부트플래그 (Bootable Flag) 는해당파티션이부팅가능한파티션인지를나타내며, 부팅가능한파티션일경우해당부트플래그의값이 0x80 MBR의부트코드는파티션테이블을검색하여부트플래그값이 0x80 값을갖는파티션의부트섹터위치로점프하는역할을수행 포렌식조사시, 보이는파티션영역및디스크전영역을조사, 필요에따라 MBR영역직접해석 MBR영역과실제파일시스템이시작하는영역사이에악의적코드삽입하여운영체제시작전에동작하도 록구성된악성코드존재 파티션테이블데이터구조 범위 (Byte Range) 설명 10진수 16진수 0-0 0x0000-0x0000 Bootable flag 1-3 0x0001-0x0003 CHS 주소방식의시작위치 4-4 0x0004-0x0004 Partition 유형 5-7 0x0005-0x0007 CHS 주소방식의끝위치 8-11 0x0008-0x000B LBA 주소방식의시작위치 12-15 0x000C - 0x000F 총섹터개수

확장파티션 (Extended Partition) MBR영역에서파티션정보를표현하는공간은 64바이트로총 4개까지만파티션을분할할수밖에없는한계를극복하기위해나온개념 마지막 4번째파티션테이블이가리키는위치가또다른 MBR 영역을가리켜추가로 4개의파티션을담을수있도록하는구조

FAT (File Allocation Table) History MS-DOS 파일시스템에서파일의 위치정보를기록한테이블을지칭 FAT12 1980 년대초 (QDOS) 플로피디스크용으로처음개발 FAT 뒤의숫자는파일시스템에서관리하는클러스터의개수를의미 FAT 형식 FAT12 4,084 FAT16 65,524 FAT32 67,092,481 최대표현가능한클러스터 FAT12 의경우 12 비트를사용하여클러스터 위치를표현 : 2 12 = 4,096 개의클러스터를표현, 하지만미 리예약된 12 개의클러스터가존재하기때 문에최대 4,084 개의클러스터를표현 FAT16 VFAT FAT32 1980 년대말하드디스크를지원하기위해개발 1995 년 FAT 의성능향상, 긴파일이름이가능해짐 1996 년 VFAT 을확장, 고용량하드디스크지원

FAT 파일시스템의구조 예약영역 / FAT 영역 / 데이터영역

FAT (File Allocation Table) Layout Boot Code Partition Table 2 3 4 BIOS 1 M B R B R C:[NTFS] 500MB B R D:[FAT32] 500MB Reserved Area FAT Area #1 FAT #2 FAT Data Area

Structure Reserved Area Reserved Area FAT Area #1 FAT #2 FAT Data Area 0 1 2 3 4 5 6 7 8 9 10 11 12 31 FAT32 예약영역중 6개의섹터만사용, 나머지는만약을대비해예약해둔것예약영역의크기는가변적이지만 0, 1, 2, 6, 7, 8번섹터는미리정해져있음 0, 6 : Volume Boot Sector (0번은부트섹터로사용, 만약을대비해 6번에백업 ) 1, 7 : File System Information(FSINFO) Structure (7번에백업, FSINFO구조체는운영체제에게비할당클러스터의첫위치와전체비할당클러스터의수를알려줌으로써저장할데이터를빠르게할당할수있도록도와줌 ) 2, 8 : Additional bootstrap code ( 부트섹터의부트코드영역이부족할경우추가적으로사용할수있는영역, 일반적으로비어있음 )

Structure First Sector(Volume Boot Sector) of Reserved Area Reserved Area FAT Area #1 FAT #2 FAT Data Area FAT 12/16 Boot Code (3 bytes) BIOS parameter block ( 3 ~ 61 bytes) Boot code and error messages (62 ~ 509 bytes) Signature (510 ~ 511 bytes) 첫번째섹터는부트코드를포함하고있는부트섹터로사용, FAT12/14 은예약영역 = 부트섹터 FAT 32 Boot Code (3 bytes) BIOS parameter block ( 3 ~ 89 bytes) Boot code and error messages (89 ~ 509 bytes) Signature (510 ~ 511 bytes)

첫번째섹터는부트코드를포함하고있는부트섹터 (Boot Sector) 로사용 FAT12/16 은예약영역이곧부트섹터 부트섹터에는제일먼저 BPB(BIOS Parameter Block) 을지나부트코드로점프하기위한 명령어가위치 부트코드는파일시스템의여러설정정보를나타내는 BPB 를참조하여시스템부팅 부팅과정이실패하면미리설정된오류메시지를출력 FAT 파일시스템부트섹터구조 FAT 형식 십진수 범위 (Byte Range) 십육진수 설명 FAT12/16 FAT32 0-2 0x0000-0x0002 Jump command to boot code FAT12/16 3-61 0x0003-0x003D FAT32 3-89 0x0003-0x0059 FAT12/16 62-509 0x003E - 0x01FD FAT32 90-509 0x005A - 0x01FD BIOS parameter block(bpb) Boot code and error message FAT12/16 FAT32 510-511 0x01FE - 0x01FF Signature (0x55AA)

Structure FAT Area Reserved Area FAT Area #1 FAT #2 FAT Data Area 저장된파일의클러스터할당관계를표현 - FAT 12/16, FAT 32 FAT (File Allocation Table) Area - #1 FAT, #2 FAT(Backup) FAT16 은 16 비트, FAT32 는 32 비트를사용해데이터영역의시작클러스터부터마지막 클러스터까지할당상태를표시

Structure FAT Area Cluster 2 Reserved Area FAT Area #1 FAT #2 FAT Data Area FAT32 의 FAT 영역의첫번째섹터내용 각 4바이트는 FAT Entry 라고불림 FAT Entry 0,1번은저장매체종류와파티션상태를표현하기위해예약됨 FAT Entry 2번부터데이터영역의클러 스터와대응 0x0000 데이터영역의시작클러스터번호는 2 번 0x0010 이므로해당클러스터의상태가 4 바이트 로표현 0x0020 0x0030 0x0040 0x0050 FAT #1 FAT #2 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 Media Type Partition Status Cluster 2 Cluster 3 Cluster 4 Cluster 5 Cluster 6 Cluster 7 Cluster 8 Cluster 9 Cluster 10 Cluster 11 Cluster 12 Cluster 13 Cluster 14 Cluster 15 Cluster 16 Cluster 17 Cluster 18 Cluster 19 Cluster 20 Cluster 21 Cluster 22 Cluster 23 FAT32 에서 FAT 영역의구조

Structure FAT Area (Entry Type) 비할당상태일경우, 0x00의값을가진다. 따라서운영체제는새로운파일및디렉터리를저장하고자할경우 FAT 영역에서 FAT Entry 값이 0x00인클러스터를찾아할당한다. 할당상태일경우, FAT Entry의값은그클러스터를점유하고있는파일의다음데이터가있는클러스터를가리킨다. 파일의마지막데이터가있는클러스터이면마지막을나타내는특정값을사용한다. FAT12는 0xFF8보다큰값을사용하고 FAT16은 0xFFF8보다큰값을사용한다. 그리고 FAT32는 0x0FFF FFF8보다큰값을사용한다. 만약파일이하나의클러스터만사용한다면이값을사용하게된다. 만약배드섹터가포함된클러스터가발견될경우 FAT12 에서는 0xFF7, FAT16 은 0xFFF7, FAT32 는 0x0FFF FFF7 값을사용해표시하게된다. 표시된클러스터는 이후에사용되지않는다.

Structure FAT Data Area Cluster 2 Reserved Area FAT Area #1 FAT #2 FAT Data Area Root Directory Sub Directory 최상위루트디렉터리가가장중요 - FAT12/16 : FAT Entry 2 번, FAT32 : 어느곳에나 ( 기본적으로는 FAT Entry 2 번 ) 데이터 = 디렉터리 + 파일 모든파일과디렉터리는하위디렉터리및파일의이름, 확장자, 시간정보, 크기등을표현하기위해 Directory Entry 로표현됨

Structure FAT Data Area Reserved Area FAT Area #1 FAT #2 FAT Data Area Root Directory Sub Directory 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 0x10 Created Date Last Accessed Date Name Extension Attr Reserved Starting Cluster Hi Last Written Time Last Written Date Directory Entry 구조 Starting Cluster Low File Size Create Time

Structure FAT Data Area (Directory Entry Name) 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 0x10 Created Date Last Accessed Date Name Extension Attr Reserved Starting Cluster Hi Last Written Time Last Written Date Starting Cluster Low File Size Create Time 첫번째바이트가 0xE5 값을가진다면해당엔트리는삭제되었음을의미 첫번째바이트값만변경되고나머지값은초기화하지않기때문에파일의정보및내용을복구할수있음첫번째바이트가 0x00의값을가진다면해당엔트리는사용되지않는엔트리 이후에엔트리가존재하지않는다는것을의미하므로더이상검색할필요가없음 파일이름또는디렉토리이름의문자제한 영어대문자 : A ~ Z ( 소문자는대문자로변환 ) 숫자 : 0 ~ 9 특수문자 : $ % ` - _ @ ~! ( ) { } ^ # &

Structure FAT Data Area (Directory Entry Attribute) 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 0x00 0x10 Created Date Last Accessed Date Name Extension Attr Reserved Starting Cluster Hi Last Written Time Last Written Date Starting Cluster Low File Size Create Time Attribute 설명 0000 0001 Read only 0000 0010 Hidden file 0000 0100 System file 0000 1000 Volume label 0000 1111 Long file name (LFN) 0001 0000 Directory 0010 0000 Archive Directory Entry 의속성

Introduction New Technology File System FAT 의한계점을개선한파일시스템 Windows NT 이후부터사용 버전 1.0 Windows NT 3.1 1.1 Windows NT 3.5 1.2 Windows NT 3.51 3.0 Windows 2000 3.1 5.1 Windows XP 5.2 Windows 2003 6.0 Windows Vista, 2008, 7 운영체제

Features 특징 USN 저널 (Update Sequence Number Journal) ADS (Alternate Data Stream) Sparse 파일 설명 파일의모든변경내용을기록하는로그시스템오류발생으로재부팅될경우잘못된처리작업을롤백 (Rollback) 파일당하나이상의데이터스트림을저장할수있도록지원파일이름, 소유자, 시간정보등을스트림통해표현, 데이터도하나의데이터스트림으로표현추가된 ADS 는정보은닉용도로사용될수있음 파일데이터가대부분 0 일경우실제데이터는기록하지않고정보만기록 파일압축 EFS (Encrypting File System) VSS (Volume Shadow Copy Service) Quotas LZ77 의변형된알고리즘을사용하여파일데이터압축 파일을암호화하는기능으로빠른암, 복호화를위해 FEK(File Encryption Key) 를통한대칭키방식의암호화수행 윈도우 2003 부터지원, 새롭게덮여쓰인파일, 디렉터리에대해백업본을유지하여 USN 저널과함께좀더안전한복구를도움 사용자별디스크사용량제한 유니코드지원다국어지원 ( 파일, 디렉터리, 볼륨이름모두유니코드로저장 ) 대용량지원이론상 Exa Byte(2 64 ), 실제로는약 16 TB (2 44 ) 동적배드클러스터재할당 배드섹터발생클러스터의데이터를자동으로새로운클러스터로복사, 배드섹터발생클러스터는플래그통해더이상사용되지않도록함

NTFS 구조 Volume Boot Record Master File Table Data Area NTFS 는파일, 디렉터리및메타정보까지파일형태로관리 VBR 영역 : 부트섹터, 추가적인부트코드가저장되는부분 MFT 영역 : 파일과디렉토리를관리하기위한 MFT Entry 의집합체 각파일은위치, 시간정보, 크기, 파일이름등을 MFT Entry라는특별한구조로저장 크기가가변적, 해당 MFT가모두사용되면동적으롤클러스터를추가로할당해 MFT영역의크기를증가시키므로파일시스템의여러부분에조각나분포될수있음 MFT(Master File Table) 은 NTFS 상의모든 MFT Entry들의배열 MFT Entry 0 ~ 15번은파일시스템생성시함께생성되어특별한용도로사용 DATA 영역 : 파일의실제내용이저장되는공간, 내용만저장됨

VBR (Volume Boot Record) NTFS 로포멧된드라이브의가장앞부분에위치, 부트섹터와추가적인부트코드저장 클러스터크기에따른 VBR 크기 클러스터크기 (Byte) VBR 크기 (Sector) 512 1 1K 2 2K 4 4K 8 VBR 의첫섹터에는부트코드를포함한부트섹터가위치 부트섹터는 FAT 의부트섹터와유사한구조로 BPB 를포함 NTFS 부트섹터구조 십진수 범위 (Byte Range) 십육진수 설명 0-2 0x0000-0x0002 Jump command to boot code 3-10 0x0003-0x000A OEM ID 11-83 0x000B - 0x0053 BIOS Parameter Block 84-509 0x0054-0x01FD Boot code and error message 510-511 0x01FE - 0x01FF Signature

MFT Entry NTFS 구조 Volume Boot Record Master File Table Data Area MFT Entry MFT Entry Header Fixup Array MFT Entry 구조 Attributes End Marker Unused Space MFT Entry : 파일의메타정보 ( 위치, 시간정보, 크기, 파일이름등 ) 들을저장 (NTFS 는모두파일 형태로관리 ) Attributes : 각메타정보표현 ( 시간, 이름, 내용등 ) 메타정보의크기에따라각파일은하나이상의 MFT Entry를가짐 0 ~ 15번은파일시스템을생성할때함께생성되어 NTFS의다양한특성을지원사용자에의해파일이생성될때마다새로운 MFT Entry가할당되어해당파일의정보를유지및관리

Master File Table VBR MFT Entry 0 MFT Entry 1 MFT Entry 2 Meta Data File : : MFT Entry 15 MFT Entry 16 : : Data Area MFT는파일시스템의여러영역에조각나서존재가능하므로, $MFT파일이 MFT 전체정보를유지관리하는역할수행각파일들분석위해전체 MFT 정보를획득이선행되어야함 Entry 번호 Entry 이름설명 0 $MFT NTFS 상의모든파일들의 MFT Entry 정보가짐 1 $MFTMirr $MFT 파일의일부백업본 2 $LogFile 메타데이터의트랜잭션저널정보 3 $Volume 볼륨의레이블, 식별자, 버전등의정보 4 $AttrDef 속성의식별자, 이름, 크기등의정보 5. 볼륨의루트디렉터리 6 $Bitmap 볼륨의클러스터할당정보 7 $Boot 볼륨이부팅가능할경우부트섹터정보 8 $BadClus 배드섹터를가지는클러스터정보 9 $Secure 파일의보안, 접근제어와관련된정보 10 $Upcase 모든유니코드문자의대문자 11 $Extend 12 15 예약영역 예약된 MFT Entry $ObjID, $Quota, $Reparse points, $UsnJrnl 등의추가적인파일의정보를기록하기위해사용 16 - 포맷후생성되는파일의정보를위해사용 - $ObjId 파일고유의 ID 정보 ( Windows 2000 - ) - $Quota 사용량정보 ( Windows 2000 - ) - $Reparse Reparse Point 에대한정보 ( Windows 2000 - ) - $UsnJrnl 파일, 디렉터리의변경정보 ( Windows 2000 - )

MFT Attributes MFT Entry MFT Entry Header Fixup Array Attr Header Attr Content Attr Header Attr Content Attr Header Attr Content End Marker Unused Space 각파일의메타정보 ( 시간정보, 이름, 내용등 ) 는속성이라는구조를통해관리 각속성은속성헤더와속성내용을가짐 파일의특성에따라다양한속성을가짐

MFT 속성리스트 Attr Type Num Attr Name Description 16 $STANDARD_INFORMATION 파일의생성. 접근. 수정시간, 소유자등의일반적인정보 32 $ATTRIBUTE_LIST 추가적인속성들의리스트 48 $FILE_NAME 파일이름 ( 유니코드 ), 파일의생성. 접근. 수정시간 64 $VOLUME_VERSION 볼륨정보 (Windows NT 1.2 버전에만존재 ) 64 $OBJECT_ID 16바이트로이루어진파일, 디렉터리의고유값, 3.0 이상에서만존재 80 $SECURITY_DESCRIPTOR 파일의접근제어와보안속성 96 $VOLUME_NAME 볼륨이름 112 $VOLUME_INFORMATION 파일시스템의버전과다양한플래그 128 $DATA 파일내용 144 $INDEX_ROOT 인덱스트리의루트노드 160 $INDEX_ALLOCATION 인덱스트리의루트와연결된노드 176 $BITMAP $MFT와인덱스의할당정보관리 192 $SYMBOLIC_LINK 심볼릭링크정보 (Windows 2000+) 192 $REPARSE_POINT 심볼릭링크에서사용하는 reparse point 정보 (Windows 2000+) 208 $EA_INFORMATION OS/2 응용프로그램과호환성을위해사용 (HPFS) 224 $EA OS/2 응용프로그램과호환성을위해사용 (HPFS) 256 $LOGGED_UTILITY_STREAM 암호화된속성의정보와키값 (Windows 2000+)

MFT Attributes MFT Entry MFT Entry Header Fixup Array Attr Header Attr Content Attr Header Attr Content Attr Header Attr Content End Marker Unused Space $STANDARD_INFOGMATION Type ID : 16 $FILE_NAME Type ID : 48 $DATA Type ID : 128 기본적인파일은위와같이 3 개의속성을가짐 $STANDARD_INFORMATION : 파일의생성. 접근. 수정시간, 소유자등의정보 $FILE_NAME : 파일이름 ( 유니코드 ), 파일의생성. 접근. 수정시간 $DATA : 파일내용 해당속성이 Resident, Non-resident 이냐에따라속성헤더항목의데이터구조다름

$STANDARD_ONFORMATION 데이터구조 $FILE_NAME 데이터구조 십진수 범위 (Byte Range) 십육진수 설명 십진수 범위 (Byte Range) 십육진수 설명 ~ ~ Attribute Header 0-7 0x0000-0x0007 Creation time 8-15 0x0008-0x000F File altered time 16-23 0x0010-0x0017 MFT altered time 24-31 0x0018-0x001F File accessed time 32-35 0x0020-0x0023 Flags * 36-39 0x0024-0x0027 Maximum number of versions 40-43 0x0028-0x002B Version number 44-47 0x002C - 0x002F Class ID 48-51 0x0030-0x0033 Owner ID (version 3.0+) 52-55 0x0034-0x0037 Security ID (version 3.0+) 56-63 0x0038-0x003F Quota Charged (version 3.0+) 64-71 0x0040-0x0047 Update Sequence Number(USN) (version 3.0+) ~ ~ Attribute Header 0-7 0x0000-0x0007 File reference of parent directory 8-15 0x0008-0x000F File creation time 16-23 0x0010-0x0017 File modification time 24-31 0x0018-0x001F MFT modification time 32-39 0x0020-0x0027 File access time 40-47 0x0028-0x002F Allocated size of file 48-55 0x0030-0x0037 Real size of file 56-59 0x0038-0x003B Flags 60-63 0x003C - 0x003F Reparse value 64-64 0x0040-0x0040 Length of name 65-65 0x0041-0x0041 Namespace 66-0x0042 - Name *flags : 0x0002 은닉 0x4000 암호화

파일시스템상의삭제파일복구 (Deleted Files Analysis) 삭제한파일은다른파일보다우선분석 Directory Entry 나 MFT Entry 가덮여쓰이지않았다면복구가능 삭제된파일판별 FAT : NTFS : Root Directory 부터삭제된 Directory Entry 검색 (value : 0xE5, offset : 0x00) $MFT 내의 MFT Entry bitmap 에서 0x00 값을가지는 MFT Entry 조사

비할당클러스터분석 (Unallocated Clusters Analysis) 비할당클러스터 : 메타정보를통해접근할수없는클러스터 대용량의하드디스크사용으로많은양의공간이비할당영역일가능성 비할당된클러스터는이전데이터가남아있을가능성 포맷하기이전의데이터 포맷한후할당되었다가삭제된데이터 비할당클러스터판별 FAT : NTFS : FAT 영역에서 0x00 값을갖는클러스터 MFT Entry 6 번의 $Bitmap 파일로부터할당되지않은클러스터를조사클러스터비트맵에서 0x00 값을갖는클러스터

슬랙공간분석 (Slack Space Analysis) Cluster 1 Cluster 2 Sector 1 Sector 1 Sector 2 Sector 2 Sector 3 Sector 3 Sector 4 Sector 4 File Slack : 이전에할당되었던데이터가남아있을가능성 File System Slack, Volume Slack : 마찬가지 의도적으로데이터를은닉할가능성

시간정보분석 (Timestamp Analysis) 사건이발생한시점을중심으로데이터분석 시간의흐름파악이중요 시간의역전및의도적인조작이발생했는지파악 시간정보위치 FAT : NTFS : 해당파일, 디렉터리의 Directory Entry (create time, last written time, created date, last accessed date, last written date) 이름 Created Time Created Date Accessed Date Written Time 해당파일의속성 Written Date ($STANDARD_INFORMATION, $FILE_NAME) 설명파일이생성된시간파일이생성된날짜마지막으로파일내용에접근한날짜마지막으로파일내용을수정한시간마지막으로파일내용을수정한날짜 이름 설명 Creation Time Modified Time MFT Modified Time Accessed Time 파일이생성된시간마지막으로파일내용이수정된시간 MFT 내용이마지막으로수정된시간마지막으로파일내용에접근한시간

Signature Analysis 파일시그니처와확장자가일치하는지검사 확장자변경을통해의도적으로파일을은폐할가능성 확장자위치 FAT : NTFS : 해당파일의 Directory Entry 해당파일의 $FILE_NAME 속성

부트코드분석 MBR 부트코드 : 파티션테이블읽어부팅가능한파티션의부트섹터호출역할 부트섹터의부트코드 : 파일시스템의 BPB 활용하여부트로더호출역할 분석방법 MBR : 부트코드해석하여부팅가능한파티션의시작위치로점프하는지확인 부트섹터 : 부트코드를해석하여정상적으로부트로더를로드하는지확인

미사용영역분석 미래를위해예약해둔영역, 불필요하게생성된영역 기본적으로참조하는영역이아니므로쉽게파악어려움 파일시스템별미사용영역 FAT : MBR 과예약영역사이 / 예약영역에서사용하지않는섹터 (0,1,2,6,7,8 번제외 ) / FSINFO 구조체섹터 ( 예약영역의 1, 7 번섹터 ) 에서사용되지않는영역 NTFS : VBR 에서부트섹터를제외한나머지섹터 / 미래를위해예약해둔 MFT Entry 12 ~ 15 번영역

은닉파일분석 파일시스템에서숨긴속성을가진파일을분류해분석하는방안필요 파일시스템별숨긴속성확인방법 FAT : 파일의 Directory Entry 항목중오프셋 11 의 Attribute 가 0x02 값인것조사 NTFS : 파일의 MFT Entry 에서 $STANDARD_INFORMATION 속성의오프셋 32 ~ 35 Flags 가 0x0002 인것조사

암호파일분석 NTFS 는 EFS 에의해파일시스템수준에서암호화기능제공 NTFS 에서암호화속성을확인하는방법 파일의 MFT Entry 에서 $STANDARD_INFORMATION 속성의오프셋 32 ~ 35 Flags 가 0x4000 인것조사

ADS 파일분석 NTFS 는하나의파일이두개이상의데이터속성을가질수있는 ADS 를지원 운영체제통해확인할수없으므로데이터은닉목적으로이용될가능성존재 NTFS 에서 ADS 파일을확인하는방법전체 MFT Entry 를대상으로 $DATA 속성을두개이상가지는 MFT Entry 를조사

로그정보분석 사건발생시점의파일시스템변경사항들을조합하여용의자의행위를파악 NTFS 파일시스템의변경사항기록되는파일조사 MFT Entry 2 번인 $LogFile 과 MFT Entry 11 번인 $Extend 파일에포함된 $Extend\$UsnJrnl 파일조사

$Boot 파일분석 NTFS 의 MFT Entry 7 번인 $Boot 파일의 $DATA 속성에서부트섹터의위치정보, 부트코드가저장됨 부팅용도로사용되지않는 NTFS 에서의 $DATA 속성에데이터은닉가능성

$BadClus 파일분석 NTFS 의 MFT Entry 8 번인 $BadClus 파일은배드섹터가발생한클러스터관리 정상적인클러스터를 $BadClus 에등록한후해당영역에데이터를은닉가능성

파일시스템정보를얻을수없는경우의복구 파일시스템에서얻을수있는정보없이 파일자체정보 기반복구 즉, 파일의고유한특성이있는파일만복구가능 연속적으로존재하는파일에대한복구는대부분가능, 조각난경우는어려움 추출된파일이올바른파일이라는보장이없음 많은시간이소요됨

파일이연속적이지않고조각난경우 조각난파일이생성되는이유 파일을저장할충분한연속공간이없을경우 기존파일에데이터가추가될때, 파일의후반부영역에할당되지않은영역의크기가충분하지않은경우 파일포맷의특성을이용한여러복구방안이연구중 Pattern Recognition, 통계분석등

파일카빙기법 : 저장매체의비할당영역으로부터파일을복구하는기법 연속적인카빙기법 파일내용이저장매체의연속된공간에저장된경우수행 비연속적인카빙기법 파일의내용이저장매체의여러부분에조각나저장된경우수행

시그니처기반카빙 파일포맷별로존재하는고유한시그니처를이용하는방법 헤더와푸터시그니처가모두존재하는파일의경우두시그니처사이의데이터가파일의 내용

파일의 Header 와 Footer 정보 일부파일은파일의시작과끝을알수있는고유한 Header 와 Footer 를가짐 PDF, GIF. PNG, JPG, ALZ, ZIP, RAR, MPG

램슬랙카빙 푸터시그니처이후에램슬랙이존재 시그니처기반카빙기법에서푸터시그니처와함께확인하여많은오탐줄일수있음

파일구조체카빙 푸터시그니처가존재하지않거나파일포맷내부에여러개의시그니처가존재하는경우 효과적인방법으로파일의구조를분석하여카빙하는기법 파일크기획득방법 파일구조검증방법

파일의 Header 와 File size 정보 일부파일은파일의시작과크기를알수있는정보를포함하고있음 DOC, ODT, ODS, BMP, AVI, ASF, WAV

데이터표현위한고유한계층구조를검증하여카빙하는방법 문서파일과같이빈번한수정이이루어지는경우사용 파일구조검증방법을적용할수있는파일포멧 파일포맷 헤더 (Hex) 시그니처 푸터 (Hex) ZIP 50 4B 03 04 50 4B 05 06 ALZ 41 4C 5A 01 43 4C 5A 02 RAR 52 61 72 21 1A 07 3D 7B 00 40 07 00 Compound D0 CF 11 E0 A1 B1 1A E1 -