분류 전체보기 331

[File System] NTFS (14) - $FILE_NANE

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 NTFS에서 $FILE_NAME 속성 데이터에 대해 알아보겠습니다. 모두 화이팅하세요!!! $FILE_NAME 속성 모든 파일과 디렉토리에는 MFT 엔트리 안에 최소한 한 개 이상의 $FILE_NAME 속성이 존재합니다. ID : 48번 입니다. 파일 이름의 길이에 따라 그 크기는 가변적 (기본적인 길이는 66바이트)입니다. UTF-16으로 파일 이름을 저장합니다. 일반적인 경우 $STANDARD_INFORMATION 속성 바로 다음에 위치합니다. 다만, 파일이나 디렉토리가 여러 개의 MFT Entry를 사용하는 경우라면 $STANDARC_INFORMATION, $ATTRIBUTE_LIST 다음에 오기도 합니다. $FILE_NAME 속성은 MFT Entry 에..

[File System] NTFS (13) - $STANDARD_INFORMATION

안녕하세요. 도깬리 포렌식스입니다. 오늘은 NTFS에서 $STANDARD_INFORMATION 속성 데이터에 대해 알아보겠습니다. 모두 화이팅 하세요!!! $STANDARD_INFORMATION 속성 모든 파일, 디렉토리에 존재합니다. 다만 Non-base MFT Entry인 경우에는 이 속성이 존재하지 않을 수 있습니다. 파일생성 날짜/시간, 파일 소유자, 보안, 할당 정책에 관한 정보가 저장됩니다. ID : 16 입니다. 윈도우 XP의 경우 72바이트의 고정된 크기를 갖습니다. 날짜/시간 정보 (예제이미지 : NTFS_1GB) UTC(Universal Time Coordinated) 형식으로 저장됩니다. 1961년 1월 1일을 기준으로 1/100초 단위로 계산되어 64비트로 저장됩니다. 날짜/시간 정..

[File System] NTFS (12) - 파일시스템 레이아웃과 할당 알고리즘

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 파일시스템 레이아웃과 할당 알고리즘에 대해 알아 보겠습니다. 파일시스템 레이아웃 윈도우는 처음에는 MFT를 작게 만들었다가, 더 많은 엔트리가 추가되면서 점차 확장시켜 나갑니다. 따라서 단편화될 가능성이 높습니다. 단편화 현상을 막기 위해 볼륨의 약 12.5% 정도를 MFT가 쓸 수 있도록 미리 예약되어 있습니다. 윈도우 XP의 경우 파일시스템의 1/3 지점에 $LogFile, $AttrDef, $MFT, $Secure 파일이 저장되고, 다른 메타데이터 파일은 1/2 지점에 저장되었습니다. $Boot 파일은 파일시스템의 첫번째 클러스터에 위치합니다. 파일시스템에서 메타데이터 파일 사이의 모든 공간은 사용자 파일과 디렉토리가 할당되는 공간입니다. 할당 알고리즘 ..

[File System] NTFS (11) - $BadClus 파일

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 NTFS에서 $BadClus 파일에 대해 알아 봅니다. 모두 화이팅 하세요!!! $BadClus 파일 MFT Entry 8번 입니다. 볼륨에 배드 클러스터가 생길 때마다 NTFS는 해당 클러스터를 $BadClus 파일의 Cluster Run에 추가하고, 해당 클러스터는 접근을 하지 않게 됩니다. 불량 클러스터 관리 방법(비교개념) FAT FAT Entry의 상태값(예 : 0x?FFFFFF7)으로 표시합니다. NTFS $BadClus 파일의 클러스터 런에 해당 클러스터를 추가합니다. 2개의 $DATA 속성이 존재합니다. $Data라는 이름의 $DATA속성 크기가 0인 거주형 속성입니다. $Bad라는 이름의 $DATA속성 비거주형 속성으로 일정한 크기를 갖고 있지..

[File System] NTFS (10) - 클러스터와 $Bitmap

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 NTFS에서 '클러스터'와 '$Bitmap'에 대해 알아보겠습니다. 모두 화이팅하세요!!! 클러스터 ‘거주형’ 속성은 MFT 엔트리에 내용을 저장합니다. ‘비거주형’ 속성은 클러스터에 내용을 저장합니다. NTFS 파일시스템의 첫 번째 섹터는 클러스터 0번 입니다. 섹터주소 변환 방법 : FAT보다 훨씬 간단합니다. SECTOR = CLUSTER * sectors_per_cluster $Boot는 항상 첫 번째 클러스터에만 할당합니다. $Bitmap 파일 MFT 엔트리 6번입니다. $DATA 속성에서 파일시스템 내 각 클러스터의 할당여부를 1개의 비트로 표현합니다 즉, 할당되어 있다면 해당 Bit가 1로 설정, 반대의 경우 0으로 설정됩니다. 비교 개념 $MFT..

[File System] NTFS (09) - $Volume과 $AttrDef

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 NTFS의 $Volume 파일과 $AttrDef 파일에 대해 알아 보겠습니다. 모두 화이팅 하세요!!! $Volume 파일 MFT 엔트리 3번 입니다. 볼륨 레이블과 NFTS의 버전 정보를 갖습니다. $VOLUME_NAME 볼륨의 이름을 유니코드로 저장하고 있습니다. $VOLUME_INFORMATION NTFS 버전과 오류 상태를 저장하고 있습니다. $DATA 속성에는 아무런 데이터가 없습니다. (크기가 0) $AttrDef 파일 MFT 엔트리 4번 입니다. 볼륨에서 사용되는 모든 속성에 대한 정보(각각의 속성에 대한 Type ID, 이름 등)가 기록되어 있습니다. $AttrDef Entry에서 Flag(Offset 140 ~ 143)에는 해당 속성의 저장 형..

[File System] NTFS (08) - $MFTMirr와 $Boot

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 NTFS에서 $MFTMirr과 $Boot에 대해 알아보겠습니다. 모두 화이팅 하세요!!! $MFTMirr 파일 MFT Entry는 중요한 데이터이기 때문에 복사본(파일시스템의 중간 지점)을 둡니다. MFT Entry 1번 입니다. 비거주 속성입니다. $DATA 속성에 4개의 MFT Entry (0번 ~ 3번 Entry, $MFT, $MFTMirr, $LogFile, $Volume)에 대한 복사본을 갖고 있습니다. MFT Entry의 내용만 백업하여 두기 때문에 MFT Entry의 내용만 복구 가능합니다. $Boot 파일 MFT 엔트리 7번 입니다. 비거주 속성입니다. $DATA 속성은 부트섹터의 고정된 위치(0번 섹터)를 가리킵니다. MS는 일반적으로 $Boo..

[File System] NTFS (07) - $MFT

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 NTFS에서 $MFT에 대해 알아 보겠습니다. 모두 화이팅 하세요!!! $MFT 파일 모든 파일과 디렉토리에 관한 엔트리를 갖고 있습니다. 일반 파일을 찾기 위해서는 $MFT를 해석해야 합니다. MFT의 시작 주소는 부트섹터에 기록됩니다. 엔트리 0번 MFT의 전체 레이아웃을 보여줍니다.. 즉, $MFT 자신에 대한 정보를 보여 주는 셈입니다. $DATA 속성에 자신이 사용하는 클러스터에 대한 정보를 갖고 있습니다. $BITMAP 속성에 MFT 엔트리의 할당 상태를 기록합니다. $MFT 파일은 작게 시작하여, 파일 및 디렉토리가 늘어나면서 점점 더 커집니다. MFT Zone MFT는 매우 중요한 데이터이기 때문에 클러스터 여기저기에 산재(조각)해 있으면 안됩니..

[File System] NTFS (06) - 인덱스

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 NTFS의 Index에 대해 알아 보겠습니다. 모두 화이팅 하세요!!! 인덱스 인덱스는 정렬된 순서대로 저장된 속성(예:$FILE_NAME)의 모음 입니다. 인덱스 데이터 구조를 사용하는 가장 대표적인 것은 바로 ‘디렉토리’ 입니다. 인덱스를 사용하면 원하는 자료를 빠르게 검색할 수 있습니다. B-Trees NTFS는 Binary_Tree구조를 약간 변형시켜 B-Tree라는 이름을 사용합니다. 아래의 예에서, 전수조사를 하는 경우 모두 5번을 비교하여야 하지만, 트리 구조를 이용하면 3번의 비교만으로 원하는 값을 찾을 수 있게 됩니다. 이것은 검색 속도를 빠르게 합니다. NFTS에서의 B-Tree 구조에서는 각 노드당 2개 이상의 자식을 둡니다. NTFS에서는..

[File System] NTFS (05) - Sparse 속성과 압축 속성

안녕하세요. 도깬리 포렌식스 입니다. 오늘은 NTFS의 Sparse 속성과 압축 속성에 대해 알아 보겠습니다. 모두 화이팅하세요 !!! Sparse 속성 비거주형 $DATA 속성에만 적용됩니다. 외부 클러스터에 데이터를 저장할려고 할 때, 어떤 클러스터에 저장할 데이터가 모두 ‘0’인 경우, 해당 클러스터가 ‘0’으로 채워져 있다는 사실만을 기록하고, 실제로는 저장장치에 클러스터를 할당하지 않습니다. 즉 Cluster runs에 ‘크기’만 있고, ‘시작 위치’는 없습니다. 압축 속성 비거주형 $DATA 속성에만 적용됩니다. 파일시스템 수준에서 일어나는 압축입니다. 즉, 사용자나 응용프로그램은 해당 파일이 압축되었는지 알 수 없으며, 파일에 읽기/쓰기 작업이 이루어지는 경우, NTFS는 스스로 압축을 해제..