
analyzeMFT.py는 NTFS 파일시스템의 MFT 파일을 완전히 파싱하고 결과를 여러 형식으로 최대한 정확하게 표시하도록 설계되었습니다.
상태: Windows, macOS, Linux에서 Python 3.8-3.12를 대상으로 한 모든 테스트가 통과했습니다.
# Install
pip install analyzeMFT
# Basic usage
python analyzeMFT.py -f MFT_FILE -o output.csv --csv
# Generate test MFT for testing
python -c "from src.analyzeMFT.test_generator import create_test_mft; create_test_mft('test.mft', 100)"
# Analyze with multiple outputs
python analyzeMFT.py -f test.mft -o output.json --json --hash
AnalyzeMFT는 NTFS 마스터 파일 테이블(MFT)을 구문 분석하고 분석하도록 설계된 Python 기반 도구입니다.
원시 바이너리 MFT 데이터를 디지털 포렌식, 침해 대응, 파일 시스템 분석에 적합한 구조화된 사람이 읽을 수 있는 출력으로 변환합니다. 이 도구는 다양한 출력 형식을 지원하고 상세한 메타데이터 추출을 제공하여 조사자가 NTFS 볼륨의 파일 타임스탬프, 속성 및 구조적 속성을 검토할 수 있게 합니다.
AnalyzeMFT의 주요 목적은 MFT 레코드를 디코딩하여 파일 시스템 활동을 재구성하는 포렌식 분석가를 지원하는 것입니다. 각 레코드에는 파일 이름, 생성 및 수정 시간, 파일 크기, 디렉터리 관계와 같은 중요한 정보가 포함되어 있습니다. 이 도구는 활성 항목과 삭제된 항목을 모두 처리하여 포괄적인 타임라인 분석과 아티팩트 복구를 가능하게 합니다. 손상되거나 불완전한 MFT 항목을 관리하기 위한 강력한 오류 처리를 포함하여 손상된 파일 시스템에서도 안정적인 처리를 보장합니다.
일반적인 포렌식 워크플로우와 통합할 수 있도록 여러 출력 형식이 지원됩니다. 사용자는 검토 및 보고를 위해 결과를 CSV, JSON, XML 또는 Excel 파일로 내보낼 수 있습니다. 타임라인 분석을 위해 mactime 및 기타 도구와 호환되는 body 파일 형식을 사용할 수 있습니다. SQLite 내보내기는 쿼리 및 장기 보관을 위한 관계형 데이터베이스 구조를 생성합니다. TSK 타임라인 및 log2timeline CSV 형식은 기존 포렌식 플랫폼에 직접 수집할 수 있게 합니다.
대용량 MFT 파일을 효율적으로 처리하기 위해 성능 최적화가 내장되어 있습니다. 메모리 사용량을 관리하기 위해 처리는 구성 가능한 청크 단위로 수행되며, 이는 수백 메가바이트 크기의 MFT를 분석할 때 특히 중요합니다. 해시 계산 중에는 멀티프로세싱을 사용하여 처리 시간을 줄입니다. 사용자는 시스템 리소스에 따라 작업자 프로세스 수와 청크 크기를 조정할 수 있습니다. 진행 표시기는 장시간 실행되는 작업 중에 실시간 피드백을 제공합니다.
이 도구는 다양한 운영 요구에 맞는 구성 가능한 분석 프로필을 지원합니다. 기본 프로필은 일반적인 사용을 위한 균형 잡힌 처리를 제공합니다. 빠른 프로필은 신속한 트리아지를 위해 처리 오버헤드를 최소화합니다. 포렌식 프로필은 모든 타임스탬프 변형과 확장 속성을 포함한 최대 데이터 추출을 활성화합니다. 성능 프로필은 대규모 데이터셋에서 속도와 리소스 효율성을 우선시하도록 내부 설정을 조정합니다.
데이터 런을 포함하는 파일 레코드 속성에 대해 해시 계산이 제공됩니다. 상주 및 비상주 데이터에 대해 MD5, SHA256, SHA512 및 CRC32 해시를 생성할 수 있습니다. 이 기능은 파일 식별 및 무결성 검증을 지원합니다. 해싱은 기본적으로 병렬로 실행되며 프로세스 수를 구성할 수 있습니다. 제한된 환경에서 실행하는 경우 사용자는 멀티프로세싱을 비활성화할 수 있습니다.
구성은 명령줄 옵션 또는 JSON/YAML 형식의 외부 파일을 통해 관리됩니다. 구성 파일은 출력 설정, 분석 프로필, 해시 옵션 및 필터링 기준을 정의할 수 있습니다. 샘플 구성 파일은 --create-config 옵션을 사용하여 생성할 수 있습니다. --list-profiles 옵션은 사용 가능한 모든 내장 프로필과 해당 설명을 표시합니다.
입력은 -f 옵션 다음에 MFT 파일 경로를 지정하여 설정합니다. 출력 형식은 파일 확장자 또는 명시적 내보내기 플래그에 따라 결정됩니다. -o 옵션은 출력 대상을 설정합니다. SQLite로 내보낼 때는 --sqlite 플래그를 사용해야 합니다. CSV 출력의 경우 출력 파일이 .csv로 끝나면 추가 플래그가 필요하지 않습니다.
개발 및 교육 목적을 위한 테스트 MFT 생성기가 포함되어 있습니다. --generate-test-mft 옵션을 사용하면 지정된 수의 레코드로 합성 MFT 파일을 생성할 수 있습니다. 이 기능은 도구 기능 검증, 파서 테스트 또는 데모 데이터 생성에 유용합니다.
명령줄 옵션에는 출력 증가를 위한 -v 및 디버그 수준 로깅을 위한 -d의 상세도 제어가 포함됩니다. 이는 처리 중 문제를 진단하는 데 도움이 됩니다. 내보내기 옵션은 파일 확장자에 의존하지 않고 형식을 선택할 수 있게 합니다. 성능 튜닝 옵션에는 레코드 배치 크기를 위한 --chunk-size와 해싱 스레드 수를 설정하는 --hash-processes가 포함됩니다.
이 도구에는 구조화된 도움말 시스템이 포함되어 있습니다. --help와 함께 스크립트를 실행하면 사용 가능한 모든 옵션과 해당 설명이 표시됩니다. 사용법 요약은 필수 및 선택 인수를 보여줍니다. 내보내기, 성능, 구성 및 디버깅 설정을 포함한 각 옵션 범주에 대한 자세한 설명이 제공됩니다.
버전 3.1.1은 코드 품질과 테스트 커버리지에 대한 중요한 개선 사항을 포함합니다. 테스트 스위트는 이제 모든 주요 구성 요소를 다루는 224개의 포괄적인 테스트를 포함합니다. GitHub Actions CI/CD 파이프라인은 Linux, Windows 및 macOS에서 Python 3.8-3.12 전반에 걸쳐 코드 품질을 보장합니다. Bandit을 사용한 보안 스캔과 Safety를 사용한 종속성 검사가 빌드 프로세스에 통합되어 있습니다. Codecov를 통한 코드 커버리지 보고는 테스트 효과를 추적합니다.
계획된 내보내기 형식에는 위협 인텔리전스 공유를 위한 STIX/TAXII와 중앙 집중식 로그 분석을 위한 Elasticsearch 및 Splunk 통합이 포함됩니다. Neo4j로의 그래프 데이터베이스 내보내기는 파일 시스템 관계의 시각화를 가능하게 합니다. 사용자는 도구 내에서 직접 날짜 범위, 파일 유형 및 크기별로 출력을 필터링할 수 있게 됩니다. 레코드를 단계별로 검토할 수 있는 대화형 모드가 도입될 수 있습니다.
프로젝트에 대한 기여는 GitHub 풀 리퀘스트를 통해 접수됩니다. 개발자는 Python 3.8 이상과의 호환성을 보장해야 합니다. 모든 새 코드에는 타입 힌트와 포괄적인 단위 테스트가 포함되어야 합니다. 테스트 스위트는 pytest를 사용하여 실행되며 커버리지는 80% 이상을 유지해야 합니다. 코드는 PEP 8 지침을 따르고 크로스 플랫폼과 호환되어야 합니다. 새로운 기능이나 변경 사항에 대해서는 문서를 업데이트해야 합니다.
이 도구는 합법적인 포렌식 및 보안 분석 목적으로 있는 그대로 제공됩니다. 사용자는 파일 시스템이나 MFT 데이터를 분석하기 전에 적절한 권한을 보유하고 있는지 확인할 책임이 있습니다. 저자는 이 소프트웨어의 오용에 대해 어떠한 책임도 지지 않습니다.