본문 바로가기
윈도우 포렌식

윈도우 MFT 분석 analyzeMFT 도구 사용

by kimnampill 2022. 10. 26.
728x90
반응형

Windows OS는 NTFS 파일 시스템을 사용한다.

NTFS 파일 시스템은 MFT(Master File Table)에 파일의 메타 데이터를 저장한다.

파일 메타 데이터에는 파일의 생성, 수정, 접근 시각 등의 포렌식 관점으로 중요한 정보들이 들어있다.

$MFT는 이런 MFT 엔트리들의 집합이다. 그렇다면 $MFT 파일이 어딨고 어떤 정보가 들어있는지 확인해보자.

MFT는 시스템 드라이브(일반적으로 C 드라이브) 바로 아래에 존재한다.

$가 붙은 파일들은 시스템 관련 파일로써 일반적인 방법으로는 볼 수도 없다.

해당 파일을 찾았으니 이제 내용을 볼까?

microsoft-windows...어쩌구 저쩌구하는 문자열이 보이지만 나머지 값들이 무얼 뜻하는지 알아보기 힘들다.

하나하나 메타데이터 길이별로 해석해가면서 볼 수 있겠지만 사실상 어렵다.

다행히 MFT 엔트리는 각각 1024바이트의 일정한 크기의 블록으로 정해져있고, 그 일정함 덕분에 자동화 파싱 로직이 쉬워졌다. 그 때문에 자동화된 파싱 툴이 여럿 개발되어 있다.

그 중에서 가장 쓰기 편한 CLI방식의 툴인 analyzeMFT라는 툴을 소개하고자 한다.

다운로드

- analyzeMFT 수정판 (by koha)

https://kkoha.tistory.com/entry/analyzeMFT-204

원본 프로그램을 사용하면 한글파일명을 가진 대상을 파싱할때 깨짐 현상이 일어난다.

원인은 파싱할때의 인코딩 문제로 보이는 데, 이를 koha라는 분이 python 코드를 수정하여 한글 인코딩 문제를 수정하여 exe버전으로 올려놨다. 필자 역시 해당 버전을 사용하고 있다.

사용법

analyzeMFT [옵션] 으로 실행하는 방식이다.

우선 -h 옵션을 주면 위와 같이 각 옵션들에 대한 설명이 나온다.

다양한 기능이 있지만 실질적으로 사용하는 옵션은 아래와 같은 단 한줄이다.

analyzeMFT.exe -f [MFT파일명] -o [추출결과csv파일명] -lp
ex) analyzeMFT.exe -f $MFT -o C_MFT.csv -lp

-f : 원본 $MFT 파일을 지정하면 된다.

C:\$MFT는 현재 시스템이 사용중인 파일이기 때문에 지정할 수 없기 때문에,

forecopy나 FTKImager 등을 이용하여 추출한 파일을 지정하도록 하자.

-o : 파싱 결과를 담을 csv파일 명을 지정하면된다.

-l : 결과에 로컬 시스템의 시간대를 사용한다.

이 옵션을 사용하지 않으면 각 시간 값마다 한국시간으로 바꿔줘야하는 귀찮음이 있다.

-p : 파싱 진행상황을 화면에 출력해준다.

p 옵션으로 진행상황을 볼 수 있다

okdoki 메시지가 나오면 파싱 완료

추출한 csv 파일은 엑셀을 이용하여 필터링, 정렬을 하면 분석이 편하다.

1) 첫 행 고정

MFT 파일은 스크롤이 굉장히 긴 데, 아래로 내리다보면 해당 열이 어떤 내용을 말하는 지 까먹는 경우가 존재한다.

틀 고정을 이용하여 첫 행 고정을 해두면 해당 경우가 발생하지 않는다.

2) 셀 서식 변경

Std / FN 의 시간 값을 서식에 맞게 세팅해주어야 한다.

셀 서식을 눌러 사용자 지정 서식을 아래와 같이 지정해준다.

연도(4)-월(2)-일(2) 시간(2):분(2):초(2)

시간이 보기 쉽게 서식 지정되었다

3) 필터링

기간 필터링을 통해서 원하는 기간만 화면에 표시하도록하여 분석에 용이하도록 한다.

컨트롤+쉬프트+L 키를 누르면 필터버튼이 생긴다

2019년에 생성된 파일에 대해서만 확인하는 예시

유의사항

1. 한글깨짐을 피하기 위해 적용한 인코딩 cp949가 오히려 충돌을 일으켜 파싱 오류가 나는 경우 종종있음.

2. $MFT가 2GB가 넘는 경우 파싱이 대부분 안됨. (메모리 버퍼 문제로 보임)

3. 옵션 -e 사용 시, 날짜별로 필터링해서 볼 수가 없음. 각각 따옴표로 묶여 문자열이 된다.

반응형

댓글