NTFSTool 是一个专注于 NTFS 卷的取证工具。 它支持读取分区信息(MBR、分区表、VBR),还支持主文件表、Bitlocker 加密卷、EFS 加密文件、USN 日志等信息。
在 AppVeyor 上下载最新二进制文件,或查看最近的 GitHub 制品。
以下是一些功能 示例!
由 deepwiki 制作的替代文档可在以下地址获取:https://deepwiki.com/thewhiteninja/ntfstool/
NTFSTool 显示主引导记录、卷引导记录、分区表和 $MFT 文件记录的完整结构。 还可以转储任何文件(甚至 $MFT 或 SAM),或解析和分析 USN 日志、LogFile,包括来自备用数据流 (ADS) 的流。 $MFT 可以转储为 csv 或 json 格式,并解析 Zone.Identifier 以快速识别已下载的文件。 undelete 命令将搜索标记为"未使用"的文件记录,并允许您检索文件(如果文件已被重写,则检索部分文件)。 它支持从镜像文件、活动磁盘或虚拟磁盘(如 VeraCrypt 和 TrueCrypt)输入,您也可以使用 OSFMount 等工具挂载磁盘镜像。 还支持稀疏文件和压缩文件(lznt1, xpress)。
对于 Bitlocker 分区,它可以显示 FVE 记录,检查密码和密钥(bek、password、恢复密钥),提取 VMK 和 FVEK。 没有暴力破解功能,因为基于 GPU 的破解更好(参见 Bitcracker 和 Hashcat),但您可以获取这些工具的哈希值。
主密钥、私钥和证书可以使用所需的输入(SID、密码)列出、显示和解密。 可以使用 backup 命令导出带私钥的证书。
将备份重新导入另一台机器,即可再次读取您的加密文件!
或者,您可以使用 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
提供一个有限的Shell,包含少量命令(exit, cd, ls, cat, pwd, cp, quit, rec)。
`rec` 命令显示 MFT 记录详情。
## 帮助与示例
Help 命令显示每个命令的描述和示例。
选项可以输入为十进制或带 "0x" 前缀的十六进制数(例如: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) | 以指定格式(csv, json, raw)转储 $MFT 文件。 |
| [mft.record](#mft-record) | 显示指定 MFT inode 的 FILE 记录详情。支持几乎所有属性类型。 |
| [mft.btree](#mft-btree) | 显示 inode 的 VCN 内容和 B树索引。 |
| [bitlocker.info](#bitlocker-info) | 显示所有 VMK 的信息和哈希值($bitlocker$)。测试密码或恢复密钥。 |
| [bitlocker.decrypt](#bitlocker-decrypt) | 使用密码、恢复密钥或 bek 将加密卷解密到文件。 |
| [bitlocker.fve](#bitlocker-fve) | 显示指定 FVE 块的信息。 |
| [efs.backup](#efs-backup) | 以 PKCS12(pfx)格式导出 EFS 密钥。 |
| [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) | 以指定格式(csv, json, raw)转储 $LogFile 文件。 |
| [usn.analyze](#usn-analyze) | 使用指定规则分析 $UsnJrnl 文件。输出:csv 或 json。 |
| [usn.dump](#usn-dump) | 以指定格式(csv, json, raw)转储 $UsnJrnl 文件。 |
| [shadow](#shadow) | 从选定磁盘和卷中列出卷影快照。 |
| [streams](#streams) | 显示备用数据流。 |
| [undelete](#undelete) | 搜索并提取卷中已删除的文件。 |
| [shell](#shell-1) | 启动一个受限的类 Unix Shell。 |
| [smart](#smart) | 显示 S.M.A.R.T. 数据。 |
## 限制
- 某些情况尚未支持。继续开发中。
- 没有文档 :no_mouth:。
欢迎提出问题或请求新功能!
## 构建
- 安装 [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
```
- 将其集成到您的 Visual Studio 环境中:
```
vcpkg integrate install
```
在构建时,Visual Studio 会自动检测 `vcpkg.json` 文件并安装所需的包。
第三方库:
- [openssl](https://www.openssl.org/):OpenSSL 是一个开源项目,提供健壮、商业级且功能齐全的传输层安全(TLS)和安全套接层(SSL)协议工具包。
- [nlohmann-json](https://github.com/nlohmann/json):现代 C++ 的 JSON 库。
- [distorm](https://github.com/gdabah/distorm):强大的 x86/AMD64 反汇编库。
- [cppcoro](https://github.com/lewissbaker/cppcoro):用于协程 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
+--------------------------------------------------------------------------------------------------+
| Id | Boot | Label | Mounted | Filesystem | Offset | Size |
+--------------------------------------------------------------------------------------------------+
| 1 | No | NTFSDRIVE | F:\ | Bitlocker | 0000000000000200 | 000000001ffffe00 (512.00 MiBs) |
+--------------------------------------------------------------------------------------------------+
</td></tr>
<tr><td>info disk=3 volume=1</td></tr>
<tr><td>
Serial Number : 0000aa60-00002eae
Filesystem : Bitlocker
Bootable : False
Type : Fixed
Label : NTFSDRIVE
Offset : 512 (512.00 bytes)
Size : 536870400 (512.00 MiBs)
Free : 519442432 (495.38 MiBs)
Mounted : True (F:\)
Bitlocker : True (Unlocked)
</td></tr>
</table>
### MBR
<table>
<tr><td>mbr disk=2</td></tr>
<tr><td>