)
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),僅供參考