Friday, January 4, 2019

MFT의 구조 이해

2019-01-04 

MFT

Meta Data File

$MFT       --> 0번 MFT Entry : MFT 에 대한 정보를 담고 있는 파일이다.
$MFTMirr  --> 1번 MFT Entry : MFT Mirror 에 대한 정보를 담고 있는 파일이다
$LogFile    --> 2번 MFT Entry
$Volume   --> 3번 MFT Entry : 볼륨에 대한 정보
$AttrDef    --> 4번 MFT Entry
.(Root Directory)   --> 5번 MFT Entry : 루트 디렉토리에 대한 정보
$Bitmap   --> 6번 MFT Entry : 클러스터의 사용현황을 빠르게 파악할 수 있다.
$Boot      --> 7번 MFT Entry : 부트 레코드에 대한 정보
$BadClus  --> 8번 MFT Entry : 문제가 발생한 클러스터 정보를 기록해 둔다.
$Secure    --> 9번 MFT Entry : 파일의 보안 및 권한에 대한 정보
$Upcase   --> 10번 MFT Entry : 유니코드 대문자가 기록되어 있다.
$Extend    --> 11번 MFT Entry
$ObjId     --> 정해진 번호 없음
$Quota    --> 정해진 번호 없음
$Reparse --> 정해진 번호 없음
$UsnJrnl  --> 정해진 번호 없음

$$ 새로 생성되는 일반 파일이나 디렉토리는 MFT Entry는 24번부터 사용한다. 



MFT의 시작


  • 0번 MFT Entry 시작 = $MFT파일(meta data)의 MFT의 ENTRY
  • MFT * 8(Cluster) = 6291456


  • 디렉토리 안의 목록 확인


    • $INDEX_ROOT 를 확인
    • $INDEX_ALLOCATION 확인




[시간속성]



[ 파일이름 : x30 == > $MFT,   크기: 00000068 = 6줄반 ]



[ 속성타입ID : x80,   크기 : 00000048 = 4줄반정도 ]



 [ 파일속성 : 3/1 1칸의 크기, 3칸의 크기 ]



 [ Attribute Type ID : xB0 ]


[ 2E : "." 루트디렉토리의 파일이름은 "." ] 
루트디렉토리는 x50 => 10을 넘어감 ==>6291466



 [ 38: 3줄반뒤에 속성타입 ]




 [ Root Directory는 x90, xA0, xB0으로 이루어져있음 ]




$ INDEX_ROOT         --> Attribute Type ID : 0x90


$ INDEX_ALLOCATION      --> Attribute Type ID : 0xA0



$ BITMAP            --> Attribute Type ID : 0xB0


 $INDEX_ROOT



[ 00: Resident / 속성의 헤더 , 20: 컨텐츠까지의 길이 ]




$INDEX_ROOT 구조

  • Index Root Header

    • Index Root Header 항목들
      • Attribute Type ID in Index
      • Collation Rule
        • 0x00 -> Binary
        • 0x01 -> File Name
        • 0x02 -> Unicode String
        • 0x10 -> Unsigned Long
        • 0x11 -> SID
        • 0x12 -> Security Hash
        • 0x13 -> Multiple Unsigned Long
      • Index Record Size (바이트 수)
      • Index Record Size (Cluster 개수)


 [ Example ]



INDEX_NODE 구조


  • Index Node Header

    • Index Node Header 항목들


      • Offset to First Index Entry
      • Total Size of Index Entries
      • Allocated Size of Index Entries
      • Flags


  [ Example ]


  • Index Entry

  • Index Entry 항목들


    • File Reference Address for Filename
    • Length of Index Entry
    • Length of $FILE_NAME
    • Flags
      • 0x01 -> 자식 노드 있음
      • 0x02 -> 마지막 노드임(End of Node)
    • $FILE_NAME
    • VCN of child node in $INDEX_ALLOCATION







 $INDEX_ALLOCATION

 [ 01: Non-Resident (Header의 길이는 4줄) ]



 [INDEX와 FILE내용]




No comments:

Post a Comment

List

MobSF

MobSF는 오픈소스 모바일 앱 자동 보안 진단 프레임워크로 자동 분석 시스템 구축할 때 사용한다. 정정 및 동적 분석이 가능하며, Android, iOS, Windows에 대해 침투 테스트, 멀웨어 분석 및 보안 평가를 할 수 있다. 참고자료 필...