
NTFS向けフォレンジックツール (parser, mft, bitlocker, 削除ファイル)
NTFSTool は、NTFS ボリュームに特化したフォレンジックツールです。 パーティション情報(MBR、パーティションテーブル、VBR)の読み取りに加え、マスターファイルテーブル、BitLocker 暗号化ボリューム、EFS 暗号化ファイル、USN ジャーナルなどの情報も取得できます。
最新のバイナリは AppVeyor から、または GitHub の最新 アーティファクト を確認してダウンロードしてください。
機能の例については、以下の 例 を参照してください!
deepwiki による別のドキュメントはこちらにあります:https://deepwiki.com/thewhiteninja/ntfstool/
NTFSTool は、マスターブートレコード、ボリュームブートレコード、パーティションテーブル、$MFT ファイルレコードの完全な構造を表示します。 また、任意のファイル($MFT や SAM も含む)のダンプや、USN ジャーナル、LogFile(代替データストリーム ADS のストリームを含む)の解析・分析も可能です。$MFT は、Zone.Identifier 解析付きで CSV または JSON としてダンプでき、ダウンロードされたファイルを迅速に特定できます。 削除取り消しコマンドは、「使用中でない」とマークされたファイルレコードを検索し、ファイル(または既に上書きされている場合はその一部)を復元できます。 イメージファイル、ライブディスク、または VeraCrypt や TrueCrypt のような仮想ディスクからの入力に対応していますが、OSFMount のようなツールを使用してディスクイメージをマウントすることもできます。 スパースファイルや圧縮ファイル(lznt1、xpress)もサポートされています。
BitLocker で暗号化されたパーティションの場合、FVE レコードの表示、パスワードとキー(bek、パスワード、回復キー)の確認、VMK と FVEK の抽出が可能です。 ブルートフォース機能はありません。GPU ベースのクラッキングの方が優れているためです(Bitcracker および Hashcat 参照)。ただし、これらのツール用のハッシュを取得することはできます。
マスターキー、秘密鍵、証明書を一覧表示し、必要な入力(SID、パスワード)を使用して表示・復号化できます。 秘密鍵付きの証明書は、バックアップコマンドを使用してエクスポートできます。
別のマシンにバックアップを再インポートすると、暗号化されたファイルを再び読み取ることができます。
または、efs.decrypt コマンドを使用して、バックアップしたキーを使用してファイルを復号化することもできます。
詳細は Mimikatz Wiki を参照してください。
USN ジャーナルレコードは、カスタムルールを使用して分析できます。これにより、疑わしいプログラムやアクションを検出したり、ジャーナルの概要(削除されたファイルの割合、作成されたファイルなど)を把握したりできます。
デフォルトルール:Rules/default.json``` { "id": "lsass-dump", "description": "Dumped LSASS.exe process.", "severity": "high", "rule": { "filename": "lsass(\.(dmp|dump))?" } }
実行例はこちら: [usn.analyze](#usn-analyze)
### Shell
限定的なシェルがあり、少数のコマンド(exit, cd, ls, cat, pwd, cp, quit, rec)が利用可能です。
`rec` コマンドはMFTレコードの詳細を表示します。
## ヘルプと例
ヘルプコマンドは、各コマンドの説明と例を表示します。
オプションは10進数、または "0x" プレフィックス付きの16進数(例: inode)で入力できます。
ntfstool help [command]
| コマンド | 説明 |
| --- | --- |
| [info](#info) | すべてのディスクとボリュームの情報を表示 |
| [mbr](#mbr) | ディスクのMBR構造、コード、パーティションを表示 |
| [gpt](#gpt) | ディスクのGPT構造、コード、パーティションを表示 |
| [vbr](#vbr) | 指定されたボリュームのVBR構造とコードを表示(ntfs, fat32, fat1x, bitlocker対応) |
| [extract](#extract) | ボリュームからファイルを抽出 |
| [image](#image) | ディスクまたはボリュームのイメージファイルを作成 |
| [mft.dump](#mft-dump) | $MFTファイルを指定された形式(csv, json, raw)でダンプ |
| [mft.record](#mft-record) | 指定されたMFT inodeのFILEレコード詳細を表示。ほぼすべての属性タイプに対応 |
| [mft.btree](#mft-btree) | inodeのVCNコンテンツとBtreeインデックスを表示 |
| [bitlocker.info](#bitlocker-info) | すべてのVMKの情報とハッシュ($bitlocker$)を表示。パスワードまたは回復キーをテスト |
| [bitlocker.decrypt](#bitlocker-decrypt) | パスワード、回復キー、またはbekを使用してボリュームをファイルに復号 |
| [bitlocker.fve](#bitlocker-fve) | 指定されたFVEブロックの情報を表示 |
| [efs.backup](#efs-backup) | EFSキーをPKCS12(pfx)形式でエクスポート |
| [efs.decrypt](#efs-decrypt) | PKCS12(pfx)形式のキーを使用してEFS暗号化ファイルを復号 |
| [efs.certificate](#efs-certificate) | システム証明書を一覧表示、表示、エクスポート(SystemCertificates/My/Certificates) |
| [efs.key](#efs-key) | 秘密鍵を一覧表示、表示、復号、エクスポート(Crypto/RSA) |
| [efs.masterkey](#efs-masterkey) | マスターキーを一覧表示、表示、復号(Protect) |
| [reparse](#reparse) | \$Extend\$Reparse からの再解析ポイントを解析して表示 |
| [logfile.dump](#logfile-dump) | $LogFileファイルを指定された形式(csv, json, raw)でダンプ |
| [usn.analyze](#usn-analyze) | 指定されたルールで$UsnJrnlファイルを分析。出力: csv または json |
| [usn.dump](#usn-dump) | $UsnJrnlファイルを指定された形式(csv, json, raw)でダンプ |
| [shadow](#shadow) | 選択したディスクとボリュームからボリュームシャドウスナップショットを一覧表示 |
| [streams](#streams) | 代替データストリームを表示 |
| [undelete](#undelete) | ボリューム上の削除されたファイルを検索して抽出 |
| [shell](#shell-1) | 制限付きUnix風シェルを起動 |
| [smart](#smart) | S.M.A.R.T.データを表示 |
## 制限事項
- 一部サポートされていないケースあり。WIP。
- ドキュメントなし: :no_mouth:。
お気軽にIssueを開くか、新機能をリクエストしてください。
## ビルド
- [Visual Studio 2022](https://visualstudio.microsoft.com/fr/vs/) をインストール
- 必要なサードパーティライブラリのためにvcpkgをインストール(こちらを参照: [vcpkg#getting-started](https://github.com/microsoft/vcpkg#getting-started))
```
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
```
- VisualStudio環境に統合:
```
vcpkg integrate install
```
ビルド時に、VisualStudioが `vcpkg.json` ファイルを検出し、必要なパッケージを自動的にインストールします。
サードパーティライブラリ:
- [openssl](https://www.openssl.org/): OpenSSLは、Transport Layer Security (TLS) および Secure Sockets Layer (SSL) プロトコル向けの堅牢で商用グレード、フル機能のツールキットを提供するオープンソースプロジェクトです。
- [nlohmann-json](https://github.com/nlohmann/json): JSON for Modern C++
- [distorm](https://github.com/gdabah/distorm): x86/AMD64向けの強力な逆アセンブラライブラリ
- [cppcoro](https://github.com/lewissbaker/cppcoro): coroutines TS向けのC++コルーチン抽象化ライブラリ
- [re2](https://github.com/google/re2): RE2は、バックトラッキング正規表現エンジンに代わる高速で安全、スレッドフレンドリーなライブラリです。
## 例
### Info
<table>
<tr><td>info</td></tr>
<tr><td>
+-------------------------------------------------------------------------------------+
| Id | Model | Type | Partition | Size |
+-------------------------------------------------------------------------------------+
| 0 | Samsung SSD 850 EVO 500GB | Fixed SSD | GPT | 500107862016 (465.76 GiBs) |
| 1 | ST2000DM001-1ER164 | Fixed HDD | GPT | 2000398934016 (1.82 TiB) |
| 2 | 15EADS External | Fixed HDD | MBR | 1500301910016 (1.36 TiB) |
| 3 | osfdisk | Fixed HDD | MBR | 536870912 (512.00 MiBs) |
+-------------------------------------------------------------------------------------+
</td></tr>
<tr><td>info disk=3</td></tr>
<tr><td>
Model : osfdisk
Version : 1
Serial :
Media Type : Fixed HDD
Size : 536870912 (512.00 MiBs)
Geometry : 512 bytes * 63 sectors * 255 tracks * 65 cylinders
Volume : MBR