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 -