Windows $MFT and NTFS Metadata Extractor Tool (ntfswalk)
소개
Windows $MFT and NTFS Metadata Extractor Tool은 CLI 기반이며 Windows, Mac, Linux에서 사용 가능하다. NTFS으로 포맷 된 vmdk파일, dd이미지파일, 로컬 드라이브를 입력하여 자동으로 NTFS 메타데이터파일의 경로를 찾거나 직접적으로 NTFS 메타데이터파일의 경로를 지정하여 내용을 파싱한다. 이 정보를 이용해 NTFS 파티션을 분석해 지정한 확장자를 가진 파일을 복사하거나, 파일의 헤더 부분, 숨겨진 부분, 볼륨 정보, 디스크 정보 등을 CSV 파일 포맷으로 추출할 수 있다.
사용법
이 도구의 기본적인 사용 아키텍처는 [그림 1]와 같다.
Command 창을 관리자 권한으로 실행하여 [표 1]와 같이 해당 작업에 적절한 문법으로 원하는 도구를 사용할 수 있다. Command 옵션은 [표 2] ~ [표 6]과 같다.
명령어 샘플 | 기능 |
---|---|
ntfswalk –partition [드라이브] -filter_ext [확장자이름] -action_copy_files [파일이 저장될 위치] -out [추출 결과 파일 이름] |
모든 해당 확장자를 가진 파일 복사 |
ntfswalk –partition [드라이브] -action_include_header -out [추출 결과 파일 이름] |
파일 헤더에 관한 정보 추출 |
ntfswalk -drivenum 0 | MBR 의 파티션 엔트리 출력 |
ntfswalk -drivenum 0 -offset 0x100000 –filter_name [메타데이터 파일이름] -action_copy_file [파일이 저장될 위치] |
메타데이터 추출 |
ntfswalk –image [파티션 파일] > [결과 파일] |
이미지 분석 |
옵션 | 추가사항 | 설명 |
---|---|---|
-drivenum | 마운트 된 디스크 -drivenum <#> -offset <volume offset> | |
-vmdk | .. | NTFS로 포맷된 VMWare파일 입력 -vmdk <disk name> |
-image | dd 이미지 입력 -image <filename> -offset <volume offset> | |
-mft | 수집한 $MFT 경로를 입력 | |
-partition | 로컬 또는 마운팅 된 드라이브 입력 -partition <drive letter> |
옵션 | 추가사항 | 설명 |
---|---|---|
-filter_ext | 지정한 확장자만 추출 | |
-filter_name | 지정한 이름만 추출 | |
-filter_deleted_files | $MFT에서 삭제된 파일만 추출 | |
-filter_fullname | .. | 경로와 파일이름으로 추출 |
-filter_inode | .. | 지정한 아이노드로 추출 |
-filter_deleted_files_all | $MFT 뿐만 아니라 비할당역역에서 삭제된 파일 추출 | |
-filter_unalloc_clusters | $MFT 없이 미할당영역 분석 | |
-filter_all_clusters | $MFT 뿐만 아니라 비할당 클러스터도 분석 | |
-filter_sig | .. | 시그니처를 통해 분석 mz = exes, dlls, and driver files hive = registry hives evt = event logs sqlite = SQLite v3 |
-filter_dir | .. | -filter_dir_inode |
-filter_dir_inode | .. | 디렉터리의 아이노드로 추출 |
-filter_start_time | 시작 시간으로 추출 | |
-filter_stop_time | 종료 시간으로 추출 |
옵션 | 추가사항 | 설명 |
---|---|---|
-action_copy_files | .. | 파일 추출 -action_copy_files <디렉터리\파일> [-raw] [-skip_sparse_clusters] -raw : 파일과 관계된 모든 클러스터복사 -skip_sparse_cluster : 클러스터 관계 없이 복사 |
-action_include_header | .. | 추출 시 파일의 헤더 정보를 포함한다. |
-action_include_clusterinfo | .. | 추출 시 클러스터 정보를 함께 출력한다. |
옵션 | 추가사항 | 설명 |
---|---|---|
-csv | csv형식 | |
-csvl2t | log타임라인 형식 | |
-bodyfile | 슬러시킷에서 소개한 'body-file' version3 형식에 맞추어 결과 출력 | |
-hashfile | 해시값 출력(MD5, SHA1 지정) |
옵션 | 추가사항 | 설명 |
---|---|---|
-out | 요약 정보를 출력 -out <results file> | |
-hide_dos_fntimes | 출력 시 DOS8.3파일이름의 파일타임을 숨김 | |
-hostname | 결과에 호스트 이름을 포함시킴 -hostname <name to use> | |
-script | 옵션이 담긴 파일을 이용 | |
-base10 | 사이즈, 주소를 헥사 시간이 아닌 10진수 형태로 출력 | |
-use_orig_ext | 모든 복사한 파일에 bin 확장자 사용 | |
-mftstart | .. | I-node 범위로 필터링 -mftstart <inode> [-mftrange <number of inodes>] |
-no_whitespace | .. | 공백 없이 csv 퍼알포맷으로 출력 -csv 필수 |
-quiet | .. | 프로그램 진행 상태를 출력 안 함 |
-dateformat | .. | 날짜 출력 형식 변경 (default : -dateformat "mm/dd/yyyy") |
-timeformat | .. | 시간 출력 형식 변경 (default : -timeformat "hh:mm:ss.xxx") |
도구 기능
Windows $MFT and NTFS Metadata Extractor Tool은 NTFS Log파일 중 메타데이터 파일을 파싱하여 미할당영역을 포함한 전 범위에서 사용자가 원하는 파일 복사, 헤더 정보 추출, 클러스터 정보 추출 등을 한글 깨짐 없이 CSV, bodyfile, 해시파일 형식으로 결과를 출력해준다. 날짜, 시간 출력 형식을 원하는 형태로 출력할 수 있고 시간 정보의 경우 결과 출력 후 한국 시간에 맞추기 위해 +9 시간을 해주어야 한다.
제한 사항
기능은 많지만 사용하려면 명령어의 옵션을 자세히 알아야 한다. 또한 한국시간에 맞추어 +9시간을 해주어야 한다.
수사 활용 방안
Windows $MFT and NTFS Metadata Extractor Tool은 로컬, 마운팅 된 드라이브, Vmdk 이미지, dd이미지를 Windows, Mac, Linux와 같은 다양한 환경에서 메타데이터 파일을 이용해 원하는 파일 복사, 헤더 정보 및 클러스터 정보를 추출할 수 있다. 따라서 필터링을 다양하게 작성할 수 있으므로 복사하고 싶은 파일이나 정보를 얻고 싶은 파일이 있을 때 필터링을 이용해 쉽게 해당 작업을 할 수 있다.