ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

NTFS MFT 删除文件恢复:取证标准、工具链与 MITRE ATTCK 映射实战指南(Anthropic-Cybersecurity-Skills)

NTFS MFT 删除文件恢复:取证标准、工具链与 MITRE ATTCK 映射实战指南(Anthropic-Cybersecurity-Skills) NTFS MFT 删除文件恢复取证标准、工具链与 MITRE ATTCK 映射实战指南Anthropic-Cybersecurity-Skills【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills本文是 Anthropic-Cybersecurity-Skills 仓库中analyzing-mft-for-deleted-file-recovery技能的标准与参考文档skills/analyzing-mft-for-deleted-file-recovery/references/standards.md的深度展开。围绕该文档列出的取证标准、核心工具链、MITRE ATTCK 技术映射与 NTFS 底层规范四大支柱结合技能包内 SKILL.md、api-reference.md、workflows.md 及配套 Python 脚本完整给出从标准合规、$MFT 解析、删除文件恢复、时间线重建到反取证检测timestomping的端到端实操方案。读者读完可掌握如何依据 NIST SP 800-86 与 ISO/IEC 27037 规范开展 MFT 取证如何用 MFTECmd / analyzeMFT 提取删除文件证据并理解 T1070.004、T1070.006、T1485、T1561 四类攻击技术在 MFT 层面的取证判定逻辑。一、为什么 $MFT 是删除文件取证的第一现场NTFS 主文件表Master File Table$MFT是 NTFS 卷上每一个文件与目录的中央元数据仓库。每个文件至少对应一条 1024 字节的 MFT 记录记录内承载$STANDARD_INFORMATION时间戳、权限、$FILE_NAME文件名、父目录引用、时间戳与$DATA文件内容或簇运行列表等属性。关键取证原理在于当文件被删除时其 MFT 记录的 InUse 标志位被清除标记为 inactive但记录内的元数据并不会立刻被抹除而是会一直保留到该条目被新文件重新分配reallocated。这一持久性使 $MFT 分析成为恢复已删除文件证据、重建文件系统时间线、检测 timestomping 等反取证活动的主要技术手段。该技能在仓库中归属于digital-forensics子域映射了 NIST CSF 的RS.AN-03分析、DE.AE-02异常与事件分析与RS.MA-01遏制并声明mitre_attack覆盖T1070.004、T1070.006、T1005见 SKILL.md与 standards 文档中的映射表互相印证。二、取证标准基线让 MFT 分析具备合规性standards.md 明确了开展 MFT 删除文件恢复时必须对齐的三套标准标准定位与对本技能的要求NIST SP 800-86Guide to Integrating Forensic Techniques into Incident Response将取证技术集成到事件响应流程的指南。要求 MFT 分析作为事件响应中的系统分析环节与内存取证、日志关联形成证据链ISO/IEC 27037数字证据的识别、收集、获取与保全指南强调取证镜像的完整性保全。意味着 $MFT 必须从写保护的取证镜像E01、raw/dd、VMDK、VHDX中提取而非直接读取在线磁盘SWGDE Best Practices for Computer Forensics科学工作组最佳实践要求记录工具版本、哈希校验如报告模板中的 MFT SHA-256 字段与可复现的分析流程在实操落地层面模板文件 即为标准要求的证据记录载体包含案件编号、检验员、日期、证据来源、MFT SHA-256 哈希等案件信息字段以及总记录数/活跃记录/删除记录/timestomped 记录等统计指标——这正是 NIST SP 800-86 中文档化取证过程与 ISO/IEC 27037 中证据可追溯性的直接体现。三、核心工具链四个主力的分工与调用方式standards 文档列出的关键技术参考可分为解析工具与文档资料两类本技能实际落地时围绕以下工具展开3.1 MFTECmdEric Zimmerman——主解析工具MFTECmd.exe是解析$MFT、$JUSN 日志、$LogFile、$Boot的主力工具也是整个技能工作流的核心入口# 从取证镜像中提取 $MFT可用 KAPE 或 FTK Imager随后解析 MFTECmd.exe -f C:\Evidence\$MFT --csv C:\Output --csvf mft_full.csv其 CSV 输出列InUse、ParentPath、FileSize、Created0x10、Created0x30等是后续 Python 分析脚本的直接数据源详见第四节。3.2 analyzeMFTPython——跨平台补充适用于 Linux/macOS 环境或需要嵌入自定义流水线的场景analyzeMFT.py -f $MFT -o mft.csv3.3 ntfstool 与 NTFS 官方文档ntfstool 用于 NTFS 解析、MFT、BitLocker 与删除文件恢复的纵深场景微软官方 NTFS 文档则用于核对文件系统内部结构与 MFT 布局。此外API 参考中提供了另一条提取路径使用icat /dev/sda1 0 $MFTSleuth Kit从磁盘直接导出 MFT见 api-reference.md。3.4 辅助工具FTK Imager / Arsenal Image Mounter挂载镜像、提取 $MFTTimeline Explorer / Excel对 CSV 做交互式筛选RBCmd解析$Recycle.Bin用于交叉关联LogFileParser解析$LogFile事务记录Python 3.8运行技能包内置分析脚本。四、NTFS 底层规范MFT 记录结构与关键条目4.1 MFT 记录头Record Header每条 MFT 记录以签名FILE0x46494C45开头头部字段布局如下源自 SKILL.md 与 api-reference.mdOffsetSizeField0x004SignatureFILE0x042Update sequence 偏移0x062Update sequence 大小0x088$LogFile 序列号LSN0x102序列号Sequence number0x122硬链接计数0x142首个属性偏移0x162Flags0x01 InUse0x02 Directory0x184记录已用大小Used size0x1C4记录分配大小Allocated size默认 10240x208基础文件记录引用0x282下一属性 ID4.2 关键 MFT 属性类型Type IDName说明0x10$STANDARD_INFORMATION四组时间戳创建/修改/MFT 修改/访问、标志、属主 ID、安全 ID0x20$ATTRIBUTE_LIST跨记录扩展的属性列表0x30$FILE_NAME文件名、父目录 MFT 引用、时间戳命名空间 0POSIX1Win322DOS0x40$OBJECT_ID文件唯一 GUID0x50$SECURITY_DESCRIPTORACL 权限0x60$VOLUME_NAME卷标签仅卷元数据文件0x80$DATA文件内容小于约 700 字节时驻留 resident否则为簇运行列表0x90$INDEX_ROOT目录 B-tree 索引根0xA0$INDEX_ALLOCATION大目录的 B-tree 索引条目0xB0$BITMAP索引或 MFT 的分配位图4.3 内置元数据条目编号standards 文档明确列出了 NTFS 卷上固定编号的系统元数据文件取证时可用于校验 MFT 完整性、定位卷级元数据MFT Entry文件作用0$MFT自引用MFT 自身的记录1$MFTMirr前 4 条记录的镜像2$LogFile事务日志5根目录卷根目录6$Bitmap簇分配位图8$BadClus坏簇列表11$Extend扩展元数据这些条目编号在脚本实现中有直接体现agent.py中MFT_ENTRY_SIZE 1024、FILETIME_EPOCH datetime(1601, 1, 1)等常量即是对 1024 字节记录与 FILETIME 时间基准的代码化见 agent.py。五、删除文件恢复的四种核心技术技术 1MFT 记录分析MFTECmd CSV 筛选MFTECmd.exe -f C:\Evidence\$MFT --csv C:\Output --csvf mft_full.csv在 Timeline Explorer 中按InUse False筛选删除记录重点观察InUse False删除或已被重分配的记录ParentPath删除前的原始路径FileSize原始大小可能仍可恢复$SI/$FN两组时间戳持久保留可用于时间线重建。技术 2USN 日志$UsnJrnl:$J分析USN 日志记录卷上所有文件变更事件创建、删除、重命名、数据修改MFTECmd.exe -f C:\Evidence\$J --csv C:\Output --csvf usn_journal.csv删除证据相关的关键 Reason CodeUSN_REASON_FILE_DELETE 0x00000200USN_REASON_CLOSE 0x80000000USN_REASON_RENAME_OLD_NAME 0x00001000USN_REASON_RENAME_NEW_NAME 0x00002000技术 3$LogFile 事务分析即使 USN 日志已被轮换覆盖$LogFile 中的 NTFS 事务记录仍可能揭示文件操作LogFileParser.exe -l C:\Evidence\$LogFile -o C:\Output重点关注指示删除的 REDO / UNDO 操作DeallocateFileRecordSegment、DeleteAttribute、UpdateResidentValue清除 InUse 标志。技术 4MFT Slack Space 分析MFT 记录的已用区与 1024 字节分配区之间的空隙可能残留前序文件记录的片段。技能包提供了可直接运行的 Python 实现SKILL.mdimport struct def parse_mft_slack(mft_path: str, output_path: str): Extract and analyze MFT slack space for deleted file remnants. 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 # Verify FILE signature if record[:4] ! bFILE: record_num 1 continue # Get used size from offset 0x18 used_size struct.unpack(I, record[0x18:0x1C])[0] if used_size record_size: slack record[used_size:] # Check if slack contains readable strings or attribute headers 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六、源码级佐证内置脚本如何自动化删除文件恢复standards 文档列出的工具与规范在技能包的两个 Python 脚本中被工程化落地可作为理解 MFT 内部结构的参考实现。6.1 agent.py二进制级 MFT 解析器agent.py 是一个不依赖第三方库的 $MFT 二进制解析器逐条验证FILE签名parse_mft_entry中signature ! bFILE即跳过并按头部偏移解析flags0x16 处用0x01判定 in_use、0x02判定目录、seq_number0x10、first_attr_offset0x14随后遍历属性链表attr_type 0x10时按属性内容偏移读取 $STANDARD_INFORMATION 的四组 FILETIME偏移 0/8/16/24通过filetime_to_dt转换FILETIME_EPOCH timedelta(microsecondsft // 10)attr_type 0x30时读取 $FILE_NAME父目录引用低 48 位、文件名长度、命名空间并按 UTF-16LE 解码文件名。它同时内置了可疑删除文件研判逻辑analyze_deleted_files会对删除记录中.exe/.dll/.ps1/.bat/.cmd/.vbs/.js/.hta/.scr等高危扩展名标记为 high 严重度模拟取证分析师的初步研判。python3 agent.py --mft-file /evidence/\$MFT --output mft_report.json6.2 process.pyMFTECmd CSV 后处理分析器process.py 面向 MFTECmd 生成的 CSVparse_csv按InUse false收集删除记录detect_timestomping对比Created0x10$SI与Created0x30$FN当$SI Created $FN Created时判定为 timestomping 可疑并计算秒级 deltaanalyze_deleted_by_extension按扩展名对删除文件分类最终输出 JSON 报告python3 process.py mft_csv_path output_dir七、时间线重建与反取证检测timestomping7.1 三源合并时间线workflows 文档给出了标准重建流程workflows.md解析 $MFT 全部时间戳$SI 与 $FN 两组解析 $JUSN 日志获取变更记录解析 $LogFile 获取事务记录合并为统一时间线识别创建、修改、删除序列标记 timestomping 指示$SI Created $FN Created。7.2 与支撑性痕迹交叉关联$Recycle.Bin 关联RBCmd.exe -d C:\Evidence\$Recycle.Bin --csv ...$I 文件含原始路径与删除时间戳可将 $R 文件的 MFT 条目号回溯到原始 MFT 记录卷影副本关联vssadmin list shadows列出卷影挂载后逐一提取各时间点的 $MFT 对比追踪文件随时间的变更轨迹。7.3 timestomping 判定示例$SI 与 $FN 的创建时间差值异常即为典型 timestomping 证据MFT EntryFilename$SI Created$FN CreatedDeltaVerdict148923exfil_tool.exe2023-06-15 10:00:002024-01-15 14:34:02-214 天TIMESTOMPED149200mimikatz.exe2022-01-01 00:00:002024-01-16 02:30:15-745 天TIMESTOMPED八、MITRE ATTCK 映射四类技术如何在 MFT 层面取证standards 文档将本技能映射到四条 ATTCK 技术这也决定了何时使用 MFT 取证的判断标准本技能 frontmatter 同时声明了T1005即数据本地收集技术 ID技术名称MFT 取证意义T1070.004Indicator Removal: File Deletion文件删除攻击者删除工具与日志后$MFT 中InUseFalse的记录仍保留文件名、路径、大小与时间戳是重建被删除痕迹的核心证据T1070.006Indicator Removal: Timestomping时间戳篡改攻击者通过修改 $SI 时间戳隐藏行为但 $FN 时间戳往往未被同步修改两者差值即可暴露篡改对应脚本detect_timestomping逻辑T1485Data Destruction数据破坏大规模删除或覆写数据会在 MFT 中留下批量InUseFalse记录与簇重分配痕迹可用于破坏行为的范围量化T1561Disk Wipe磁盘擦除MFT 记录被批量清零、签名缺失或大量重分配是磁盘擦除行为的直接指纹从源码结构可以推断agent.py 将删除的可疑可执行文件/脚本自动标记为 high 严重度正是对 T1070.004 场景的工程化适配process.py 的 timestomping 判定则是 T1070.006 的可执行检测规则。全仓库层面这些技术覆盖可在 mappings/README.md 的 ATTCK Navigator 图层attack-navigator-layer.json中查看蓝色渐变着色深度。九、完整工作流与实战输出示例9.1 三条可复用工作流工作流 1基础删除文件发现提取 $MFT → MFTECmd 解析为 CSV → 筛选 InUseFalse → 分析 ParentPath/FileName/FileSize → 与 USN 日志交叉关联获取删除时间戳 → 输出带原始路径与时间戳的取证结论工作流 2MFT Slack Space 恢复提取原始 $MFT → 逐条解析 1024 字节记录 → 对比 used_size 与 allocated_size(1024) → 提取已用区与分配区之间的 slack 字节 → 搜索属性头(0x10/0x30/0x80) → 重建部分文件元数据工作流 3时间线重建解析 $MFT 全部时间戳($SI/$FN) → 解析 $J → 解析 $LogFile → 合并统一时间线 → 识别创建/修改/删除序列 → 标记 timestomping 指示($SI Created $FN Created)9.2 输出示例以 SKILL.md 中的示例为参照一次典型分析会产出如下报告骨架MFTECmd v1.2.2 - MFT Parser Input: C:\Evidence\$MFT (Size: 384 MB) Total MFT Entries: 395,264 --- Deleted File Recovery Summary --- Total Entries: 395,264 Active Files: 245,832 Deleted Files: 149,432 Recoverable: 87,234 (resident data or clusters not reallocated) Partially Recoverable: 31,456 (some clusters overwritten) Unrecoverable: 30,742 (all clusters reallocated) --- Recently Deleted Files (Incident Window) --- MFT Entry | Filename | Path | Size | Deleted (UTC) | Recoverable 148923 | exfil_tool.exe | C:\ProgramData\Updates\ | 1,258,496| 2024-01-17 02:45:12| YES 149200 | mimikatz.exe | C:\Windows\Temp\ | 1,250,816| 2024-01-18 01:15:22| YES说明以上数值为 SKILL.md 中演示用示例数据用于展示输出结构实际分析结果因案件而异。十、取证价值总结与报告模板综合 standards 文档与技能包MFT 删除文件恢复的取证价值集中在五个维度删除文件元数据恢复原始文件名、路径、大小与时间戳时间线重建文件创建、修改、访问、删除事件序列Timestomping 检测对比 $SI 与 $FN 时间戳差异数据雕刻指引MFT 簇运行列表指向磁盘上的文件内容位置反取证检测识别被清零或篡改的 MFT 记录对应 T1485 / T1561 场景。最终取证结论建议套用仓库提供的 报告模板完整记录案件信息含 MFT SHA-256、统计指标、重点删除文件清单与 timestomping 指示表从而同时满足 NIST SP 800-86、ISO/IEC 27037 与 SWGDE 对证据记录和可复现性的要求。延伸阅读技能主文档 SKILL.mdAPI 参考记录布局与工具命令工作流定义 workflows.md解析脚本 agent.py 与 后处理脚本 process.py仓库级 ATTCK 覆盖统计【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表