정보보안공부
디지털 포렌식_NTFS_MFT 속성 분석 본문
@@ MFT 속성 분석
-> MFT Entry 구조에서 빨간부분은 MFT Entry에 각 속성들이고, 각 속성들은 속성해더와 속성내용 또는 속성해더와 Cluster Runs구조체 형태가 있다.
[ 속성의 헤더 ] : 2가지 형태가 존재한다.
-> Resident Attribute 헤더& Non-Resident Attribute 헤더
*** Resident Attribute 헤더
*** Non-Resident Attribute 헤더
-> Offset Runlist 값은 Attr Type ID 맨 앞에서부터 Runlist 값만큼 Bytes단위로 이동하면 그위치가 Cluster Run 구조체가 있는 위치이다.
-> Starting VCN of runlist와 Ending VCN of Runlist 를 이용해 몇개의 클러스터를 사용하는지 확인할 수 있다.
-> Starting VCN of runlist가 0 이고 Ending VCN of Runlist가 3이라면 4개의 클러스터를 사용한다고 파악한다.
=> Non-Reg Flag 자리가 0이면 Resident Attribute 구조, Non-Reg Flag 자리가 1이면 Non-Resident Attribute 구조이다.
## Cluster Runs 구조체
-> Length 값과 Offset 값은 클러스터 단위이다.
-> 헤더부분에서 0011 0010 은 32이므로 2가 Run Length , 3이 Run Offset 부분이된다.
-> Offset값을 구하면 클러스터 단위이므로 x 8을 통해 섹터단위로 변경 -> Offset 값에 x 8을 하고 BR의 위치를 더해줘야한다.[ 속성의 종류 ] : 여러가지 존재
-> Type Number 값은 10진수로 표현되어진 형태이므로 WinHex또는 16진수 값으로 볼때는 16진수를 10진수로 변환 후 확인한다.
[ 속성의 종류 ] : $STANDARD_INFORMATION
** Flag 값
0x0001 : Read-Only ( 읽기 전용 )
0x0002 : Hidden ( 숨김 )
0x0004 : System File
0x0020 : Archive ( 일반 파일 )
0x0040 : Device ( 장치 파일 )
0x0000 : Directory
[ 속성의 종류 ] : $FILE_NAME
-> Offset값이 8~39는 $STANDARD_INFORMATION의 0~31과 중복된다.
** 이름형식
0x01 : WIN32 ( Null, /, \, :, <, >, ?를 제외한 모든 문자 사용가능 )
0x02 : DOS ( 대문자만 사용, 대부분의 특수문자 사용불가, 파일명 최대8글자, 확장자 최대3글자 )
0x03 : WIN32 & DOS (공통사용형식)
[ 속성의 종류 ] : $DATA
-> 특별한 구조없이 파일의 내용을 담고있다.
-> 약 700Byte가 넘어가면 Non-Resident로 변경된다.
-> 하나의 Entry에 $DATA 구조가 추가로 포함 가능 - 이때 반드시 $DATA 속성에 이름이 있어야 한다.
## File Reference Address
-> MFT Entry Address : 모든 MFT Entry는 48bit의 고유 주소를 가지고 있음
-> File Reference Address : MFT Entry Header에 있는 Sequence Value와 조합하여 사용된다.
=> 만약 리틀엔디언으로 보여지는 File Reference Address 값이 05 00 00 00 00 00 03 00 이라면
=> 05 00 00 00 00 00 은 MFT Entry Address로 5
=> 03 00 은 MFT Entry Header에 있는 Sequence Value값으로 3을 의미한다.
[ 속성의 종류 ] : $BITMAP
-> 할당 정보를 관리하기 위한 비트맵 정보
-> $MFT와 $INDEX 엔트리 등에서 사용됨
-> 특정한 구조없이 해당 구조를 비트로 1대1 매칭
[ 속성의 내용 ] : $INDEX_ROOT
## 인덱스 구조
-> INDEX_ROOT Header앞에 위치하여 인덱스 이름을 알려준다.
## B-Tree 구조
- NTFS는 인덱스를 관리하는 방법으로 B-Tree를 사용한다.
## $INDEX_ROOT Header 구조
Type of attribute in Index : 인덱스 엔트리가 담고있는 속성 식별 값
Collation Sorting Rule : 인덱스 엔트리가 담고있는 형식 ( 00 01 00 00 이면 오름차순을 의미 )
Size of each Index Record in Bytes : $INDEX_ALLOCATION 속성이 가지는 인덱스 레코드의 바이트 크기
Size of each Index Record in Cluster : $INDEX_ALLOCATION 속성이 가지는 인덱스 레코드의 클러스터 크기
## INDEX Node Header 구조
Offset to Start of Index Entry List : 인덱스 엔트리 목록 시작 위치
Offset to End of Used Portion of Index Entry List : 인덱스 엔트리의 실제 크기
Offset to End of Allocated Index Entry List Buffer : 인덱스 엔트리의 할당 크기
Flags : 0x00은 인덱스 노드의 자식노드가 없음, 0x01은 인덱스 노드의 자식 노드가 있음
## INDEX Entry 구조
File Reference Address for filename : 해당 파일 및 디렉터리의 파일 참조 주소
Length of this entry : 해당 인덱스 엔트리의 총 크기
Length of content : 해당 인덱스 엔트리가 담고 있는 $FILE_NAME 속성의 크기
Flags : 0x01은 자식노드가 존재한다는 의미, 0x02는 노드의 마지막 엔트리를 의미
## $INDEX_Allocation 구조
'디지털 포렌식' 카테고리의 다른 글
디지털 포렌식_NTFS_MFT 0번 분석 (0) | 2019.01.09 |
---|---|
디지털 포렌식_NTFS_MFT 분석_기본개념정리 (0) | 2019.01.09 |
디지털 포렌식_NTFS_BR분석, MFT 헤더 분석 (0) | 2019.01.09 |