analyzing-mft-for-deleted-file-recovery

通过检查 MFT 记录条目、$LogFile、$UsnJrnl 和 MFT 松弛空间,使用 MFTECmd、analyzeMFT 和 X-Ways Forensics 分析 NTFS 主文件表($MFT)以恢复已删除文件的元数据和内容。

9 stars

Best use case

analyzing-mft-for-deleted-file-recovery is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

通过检查 MFT 记录条目、$LogFile、$UsnJrnl 和 MFT 松弛空间,使用 MFTECmd、analyzeMFT 和 X-Ways Forensics 分析 NTFS 主文件表($MFT)以恢复已删除文件的元数据和内容。

Teams using analyzing-mft-for-deleted-file-recovery should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/analyzing-mft-for-deleted-file-recovery/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/analyzing-mft-for-deleted-file-recovery/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/analyzing-mft-for-deleted-file-recovery/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How analyzing-mft-for-deleted-file-recovery Compares

Feature / Agentanalyzing-mft-for-deleted-file-recoveryStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

通过检查 MFT 记录条目、$LogFile、$UsnJrnl 和 MFT 松弛空间,使用 MFTECmd、analyzeMFT 和 X-Ways Forensics 分析 NTFS 主文件表($MFT)以恢复已删除文件的元数据和内容。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 分析 MFT 用于已删除文件恢复

## 概述

NTFS 主文件表($MFT)是 NTFS 卷上每个文件和目录的中央元数据存储库。每个文件至少由一条 1024 字节的 MFT 记录表示,其中包含 $STANDARD_INFORMATION(时间戳、权限)、$FILE_NAME(名称、父目录、时间戳)和 $DATA(文件内容或簇运行指针)等属性。文件被删除时,其 MFT 记录被标记为非活动状态(InUse 标志清除),但元数据保留到被新文件的条目覆盖为止。这种持久性使 MFT 分析成为恢复已删除文件证据、重建文件系统时间线以及检测反取证活动(如时间戳篡改)的主要技术。

## 前置条件

- 取证磁盘镜像(E01、raw/dd、VMDK 或 VHDX 格式)
- MFTECmd(Eric Zimmerman 工具)或 analyzeMFT(基于 Python)
- FTK Imager、Arsenal Image Mounter 或类似工具用于挂载镜像
- Timeline Explorer 或 Excel 用于 CSV 分析
- Python 3.8+ 用于自定义分析脚本
- 了解 NTFS 文件系统内部结构

## MFT 结构和记录布局

### MFT 记录头部

每条 MFT 记录以签名"FILE"(0x46494C45)开头,包含:

| 偏移量 | 大小 | 字段 |
|--------|------|------|
| 0x00 | 4 字节 | 签名("FILE") |
| 0x04 | 2 字节 | 更新序列偏移量 |
| 0x06 | 2 字节 | 更新序列大小 |
| 0x08 | 8 字节 | $LogFile 序列号 |
| 0x10 | 2 字节 | 序列号 |
| 0x12 | 2 字节 | 硬链接计数 |
| 0x14 | 2 字节 | 第一个属性偏移量 |
| 0x16 | 2 字节 | 标志(0x01 = 使用中,0x02 = 目录) |
| 0x18 | 4 字节 | MFT 记录已用大小 |
| 0x1C | 4 字节 | MFT 记录已分配大小 |
| 0x20 | 8 字节 | 基础文件记录引用 |
| 0x28 | 2 字节 | 下一个属性 ID |

### 关键 MFT 属性

| 类型 ID | 名称 | 描述 |
|---------|------|------|
| 0x10 | $STANDARD_INFORMATION | 时间戳、标志、所有者 ID、安全 ID |
| 0x30 | $FILE_NAME | 文件名、父目录 MFT 引用、时间戳 |
| 0x40 | $OBJECT_ID | 文件的唯一 GUID |
| 0x50 | $SECURITY_DESCRIPTOR | ACL 权限 |
| 0x60 | $VOLUME_NAME | 卷标(仅卷元数据文件) |
| 0x80 | $DATA | 文件内容(小于 700 字节时为驻留型)或簇运行列表 |
| 0x90 | $INDEX_ROOT | 目录的 B 树索引根 |
| 0xA0 | $INDEX_ALLOCATION | 大型目录的 B 树索引条目 |
| 0xB0 | $BITMAP | 索引或 MFT 的分配位图 |

## 已删除文件恢复技术

### 技术 1:使用 MFTECmd 进行 MFT 记录分析

```powershell
# 使用 KAPE 或 FTK Imager 从取证镜像提取 $MFT
# 使用 MFTECmd 解析 $MFT
MFTECmd.exe -f "C:\Evidence\$MFT" --csv C:\Output --csvf mft_full.csv

# 在 Timeline Explorer 中过滤已删除文件(InUse = FALSE)
# 查找 InUse 列为 False 的条目
```

**在 CSV 输出中识别已删除文件:**
- `InUse` = False 表示已删除或已重新分配的记录
- `ParentPath` 显示删除前的原始文件位置
- `FileSize` 显示原始大小(可能仍可恢复)
- `$STANDARD_INFORMATION` 和 `$FILE_NAME` 属性中的时间戳持续存在

### 技术 2:USN 日志($UsnJrnl:$J)分析

USN 日志记录 NTFS 卷上文件的所有更改,包括创建、删除、重命名和数据修改事件。

```powershell
# 使用 MFTECmd 解析 USN 日志
MFTECmd.exe -f "C:\Evidence\$J" --csv C:\Output --csvf usn_journal.csv

# 删除证据的关键 USN 原因代码:
# USN_REASON_FILE_DELETE     = 0x00000200
# USN_REASON_CLOSE           = 0x80000000
# USN_REASON_RENAME_OLD_NAME = 0x00001000
# USN_REASON_RENAME_NEW_NAME = 0x00002000
```

### 技术 3:$LogFile 事务分析

$LogFile 存储 NTFS 事务记录,即使 USN 日志已循环,也能揭示文件操作。

```powershell
# 使用 LogFileParser 解析 $LogFile
LogFileParser.exe -l "C:\Evidence\$LogFile" -o C:\Output

# 查找表示文件删除的 REDO 和 UNDO 操作:
# - DeallocateFileRecordSegment(释放文件记录段)
# - DeleteAttribute(删除属性)
# - UpdateResidentValue(清除 InUse 标志)
```

### 技术 4:MFT 松弛空间分析

MFT 松弛空间存在于 MFT 记录已用部分末尾和已分配 1024 字节末尾之间。该区域可能包含之前文件记录的残留数据。

```python
import struct

def parse_mft_slack(mft_path: str, output_path: str):
    """提取并分析 MFT 松弛空间中已删除文件的残留数据。"""
    with open(mft_path, "rb") as f:
        record_size = 1024
        record_num = 0
        slack_findings = []

        while True:
            record = f.read(record_size)
            if len(record) < record_size:
                break

            # 验证 FILE 签名
            if record[:4] != b"FILE":
                record_num += 1
                continue

            # 从偏移量 0x18 获取已用大小
            used_size = struct.unpack("<I", record[0x18:0x1C])[0]

            if used_size < record_size:
                slack = record[used_size:]
                # 检查松弛空间是否包含可读字符串或属性头部
                if any(c > 0x20 and c < 0x7F for c in slack[:50]):
                    slack_findings.append({
                        "record": record_num,
                        "used_size": used_size,
                        "slack_size": record_size - used_size,
                        "slack_preview": slack[:100].hex()
                    })

            record_num += 1

    return slack_findings
```

## 与支持性痕迹的关联

### 与 $Recycle.Bin 交叉引用

```powershell
# 使用 RBCmd 解析回收站
RBCmd.exe -d "C:\Evidence\$Recycle.Bin" --csv C:\Output --csvf recycle_bin.csv

# 关联: $I 文件包含原始路径和删除时间戳
# 将 $R 文件中的 MFT 条目号匹配回原始 MFT 记录
```

### 与卷影副本交叉引用

```powershell
# 列出卷影副本
vssadmin list shadows

# 挂载卷影副本并从每个副本提取 $MFT
# 比较不同卷影副本中的 MFT 记录以追踪文件随时间的变化
```

## 取证价值

- **已删除文件元数据恢复**:原始文件名、路径、大小和时间戳
- **时间线重建**:文件创建、修改、访问和删除事件
- **时间戳篡改检测**:比较 $SI 和 $FN 时间戳
- **数据雕刻引导**:MFT 簇运行指向磁盘上的文件内容
- **反取证检测**:识别被擦除或被篡改的 MFT 记录

## 参考资料

- NTFS MFT 高级取证分析: https://www.deaddisk.com/posts/ntfs-mft-advanced-forensic-analysis-guide/
- MFT 松弛空间的取证价值: https://www.sygnia.co/blog/the-forensic-value-of-mft-slack-space/
- MFTECmd 文档: https://ericzimmerman.github.io/
- SANS FOR500: Windows 取证分析

Related Skills

recovering-deleted-files-with-photorec

9
from killvxk/cybersecurity-skills-zh

使用 PhotoRec 基于文件签名的数据雕刻(File Carving)引擎,从磁盘镜像和存储介质中恢复已删除文件,无论文件系统是否损坏。

performing-file-carving-with-foremost

9
from killvxk/cybersecurity-skills-zh

使用 Foremost 的文件头/文件尾签名雕刻技术,从磁盘镜像和未分配空间中恢复文件,无论文件系统状态如何均可提取证据。

implementing-file-integrity-monitoring-with-aide

9
from killvxk/cybersecurity-skills-zh

配置 AIDE(高级入侵检测环境)进行文件完整性监控,包括基线创建、定期完整性检查、变更检测和告警

detecting-fileless-malware-techniques

9
from killvxk/cybersecurity-skills-zh

检测和分析完全在内存中运行的无文件恶意软件,这类恶意软件利用 PowerShell、 WMI、.NET 反射、注册表存储载荷和离地攻击二进制文件(LOLBins), 不在磁盘上写入传统可执行文件。适用于无文件威胁检测、内存恶意软件调查、 LOLBin 滥用分析或 WMI 持久化检查等请求。

detecting-fileless-attacks-on-endpoints

9
from killvxk/cybersecurity-skills-zh

检测完全在内存(RAM)中执行、不向磁盘写入持久文件的无文件恶意软件和内存攻击, 规避传统杀毒软件。适用于为 PowerShell 攻击、反射式 DLL 注入、WMI 持久化和注册表驻留恶意软件 构建检测规则的场景。

deploying-ransomware-canary-files

9
from killvxk/cybersecurity-skills-zh

使用 Python watchdog 库在关键目录中部署并监控勒索软件诱饵文件(Canary File),实现实时文件系统事件检测。 将策略性命名的诱饵文件(模拟高价值目标,如财务记录、凭据、数据库导出)放置在勒索软件通常优先枚举的 目录中,监控对诱饵文件的任何读取、修改、重命名或删除操作,并在检测到交互时通过 Email、Slack Webhook 或 Syslog 触发即时告警,在完整加密开始前提供早期预警。

building-threat-actor-profile-from-osint

9
from killvxk/cybersecurity-skills-zh

使用开源情报(OSINT)技术构建全面的威胁行为者档案,记录对手的动机、能力、基础设施和 TTP,用于主动防御。

analyzing-windows-shellbag-artifacts

9
from killvxk/cybersecurity-skills-zh

分析 Windows ShellBag 注册表取证痕迹,使用 SBECmd 和 ShellBags Explorer 重建文件夹浏览活动,检测对可移动介质和网络共享的访问,并在删除后仍能确认用户与目录的交互行为。

analyzing-windows-registry-for-artifacts

9
from killvxk/cybersecurity-skills-zh

提取并分析 Windows 注册表配置单元,以发现用户活动、已安装软件、自启动条目及系统入侵证据。

analyzing-windows-prefetch-with-python

9
from killvxk/cybersecurity-skills-zh

使用 windowsprefetch Python 库解析 Windows Prefetch 文件,重建应用程序执行历史,检测重命名或伪装的二进制文件,并识别可疑的程序执行模式。

analyzing-windows-lnk-files-for-artifacts

9
from killvxk/cybersecurity-skills-zh

解析 Windows LNK 快捷方式文件,提取目标路径、时间戳、卷信息和机器标识符,用于取证时间线重建。

analyzing-windows-event-logs-in-splunk

9
from killvxk/cybersecurity-skills-zh

在 Splunk 中分析 Windows Security、System 和 Sysmon 事件日志,使用映射到 MITRE ATT&CK 技术的 SPL 查询检测身份验证攻击、权限提升(Privilege Escalation)、持久化(Persistence)机制和横向移动 (Lateral Movement)。适用于 SOC 分析师调查基于 Windows 的威胁、构建检测查询,或对 Windows 终端和域控制器执行取证时间线分析。