ntfsdump, ntfsfind を用いたイメージファイルからのアーティファクト抽出
概要
保全した NTFS イメージファイルから、ファイル, ディレクトリ, 代替データストリーム(下記、アーティファクト)を抽出する手順を示します。
本ソフトウェアは dd(raw), e01, vmdk などの形式に対応しています。
クイックスタート
下記はdd(raw)形式のイメージファイル ntfs.raw
から
$MFT
を抽出する際のコマンドです。
第一引数の 検索クエリ は Unix/Linux 形式のパスで指定してください。
この手順は Windows の場合も共通です。
Linux
$ ./ntfsdump '/$MFT' ./ntfs.raw
Windows
> ntfsdump.exe "/$MFT" .\ntfs.raw
詳細な操作手順
下記に詳細な操作手順を示します。
また、例示については基本的に Linux 版を記載していますが、
Windows で使用する場合はリポジトリの README を参考に読み替えてください。
検索と抽出
アーティファクトの検索と抽出を同時に行う場合, ntfsfind と組み合わせて使用します。
下記は Windows イベントログ (.evtx 形式) を検索して保存する例です。
個別に検索と抽出を実行する場合
検索には正規表現が使用可能です。
検索結果は1つのアーティファクトにつき1行で標準出力されます。
$ ./ntfsfind '.*\.evtx' ./ntfs.raw
Windows/System32/winevt/Logs/Hoge.evtx
Windows/System32/winevt/Logs/Fuga.evtx
Windows/System32/winevt/Logs/Piyo.evtx
$ ./ntfsdump '/Windows/System32/winevt/Logs/Hoge.evtx' ./ntfs.raw
パイプラインで検索結果を渡す場合
パイプラインで ntfsfind の検索結果を直接渡すことも可能です。
$ ./ntfsfind '.*\.evtx' ./ntfs.raw | ./ntfsdump ./ntfs.raw
予め抽出する項目が決まっている場合、ファイルから渡してもよいでしょう。
$ cat ./artifacts.lst | ./ntfsdump ./ntfs.raw
インストール方法
バイナリを用いた実行 (推奨)
Windows, Linux(Ubuntu) 用のバイナリを GitHub の Releases で公開しています。
遷移先のページからバイナリをダウンロードして実行してください。
PyPI からのインストール (推奨)
Python3.11 以上をサポートしています。
インストールする際は下記のコマンドを実行してください。
$ pip install ntfsdump ntfsfind
ソースコードからインストール
GitHub から直接ソースコードを入手して実行します。
依存関係の管理に poetry を使用しているため、インストールの際はそちらをご利用ください。
# Download source code from GitHub
$ git pull https://github.com/sumeshi/ntfsdump
$ cd ntfsdump
# Install dependencies
$ pip install poetry
$ poetry install
# Run command using poetry
$ poetry run ntfsdump -h
既存ソフトウェアとの差異
Autopsy や FTK Imager などのソフトウェアを使用すると、ファイルツリーを見ながらGUIで抽出が可能です。
また、CUIツールでは多機能な SleuthKit などが有名です。
それらのソフトウェアと比較すると ntfsdump, ntfsfind の機能は限定されているように見えますが、
2つのツールの目的は統合的なフォレンジックツールではなく、バイナリ1つで役目をこなせるミニマルなツールです。
調査の自動化や, ちょっとした確認のためにこれらのツールが役にたてば嬉しいです。
コントリビューション
ntfsdump, ntfsfind は開発中のツールです。
もしあなたがこのプロダクトに興味があるなら、GitHub で issues, pull requests を送ってくれれば嬉しいです。
Discussion