当桌面文件突然"穿越"到过去的时间点,这背后往往隐藏着攻击者精心设计的痕迹掩盖行为。本文将带你深入NTFS文件系统的核心——$MFT,通过WinHex和Mft2Csv工具链的实战操作,揭示如何从时间戳矛盾中发现Timestomp攻击的铁证。
NTFS文件系统中,每个文件在$MFT(主文件表)里都有两条关键时间记录:
$STANDARD_INFORMATION属性中$FILE_NAME属性中这两组时间戳的差异往往能揭示异常。由于Windows系统设计特性:
取证要点:当发现SI_CTime与FN_CTime存在明显差异(特别是SI时间早于FN时间),极可能是Timestomp攻击的痕迹。
需要以下专业工具组合:
| 工具名称 | 用途 | 获取方式 |
|---|---|---|
| WinHex | 二进制查看器,初步分析$MFT结构 | 商业软件 |
| Mft2Csv | 将$MFT解析为结构化CSV | GitHub开源 |
| Excel/Python | 数据分析与筛选 | - |
在取证场景中获取$MFT的两种方式:
物理提取:
bash复制# 使用FTK Imager等工具提取
ftkimager --source C: --destination /evidence --image-type raw --e01 C_MFT.raw
逻辑提取:
powershell复制# 管理员权限执行
cp \\.\C:\$MFT C:\evidence\MFT_copy
注意:直接复制$MFT需要绕过系统保护,建议使用专业取证工具避免污染证据。
使用WinHex打开$MFT文件,观察关键特征:

运行Mft2Csv工具生成结构化数据:
powershell复制.\Mft2Csv.exe -f .\evidence\MFT_copy -o .\output\mft_analysis.csv
关键参数说明:
-f:指定$MFT文件路径-o:输出CSV文件路径-c:可选,指定时间格式(如-c "yyyy-MM-dd HH:mm:ss")在Excel中打开CSV文件,按以下步骤筛选:
路径筛选:
excel复制=FILTER(A2:Z1000, ISNUMBER(SEARCH("Desktop", Z2:Z1000)))
时间对比公式:
excel复制=IF(ABS(N(O2)-N(S2))>1, "异常", "正常")
(假设O列为SI_CTime,S列为FN_CTime)
典型异常特征:
以示例中的Mod-File.txt为例:
| 属性类型 | 创建时间 | 修改时间 | 访问时间 |
|---|---|---|---|
| SI记录 | 2019-01-01 01:01:01 | 2019-01-01 01:01:01 | 2019-01-01 01:01:01 |
| FN记录 | 2020-01-19 11:51:19 | 2020-01-19 11:51:25 | 2020-01-19 11:51:25 |
异常点分析:
通过以下系统日志交叉验证:
已知会留下痕迹的Timestomp工具:
| 工具名称 | 特征痕迹 |
|---|---|
| Metasploit's timestomp | SI时间设置为2000-01-01 00:00:00 |
| SetMace | 常在SI时间留下毫秒级零值 |
| NirSoft FileDate Changer | 在注册表留下软件使用记录 |
使用Python实现快速检测:
python复制import pandas as pd
from datetime import datetime
def detect_timestomp(csv_path):
df = pd.read_csv(csv_path)
anomalies = []
for _, row in df.iterrows():
si_ctime = datetime.strptime(row['SI_CTime'], '%Y-%m-%d %H:%M:%S')
fn_ctime = datetime.strptime(row['FN_CTime'], '%Y-%m-%d %H:%M:%S')
# 检测明显的时间差
if abs((si_ctime - fn_ctime).days) > 30:
anomalies.append({
'filename': row['FN_FileName'],
'si_ctime': row['SI_CTime'],
'fn_ctime': row['FN_CTime'],
'time_diff': str(si_ctime - fn_ctime)
})
return pd.DataFrame(anomalies)
results = detect_timestomp('mft_analysis.csv')
results.to_csv('timestomp_suspects.csv', index=False)
撰写专业报告时应包含:
证据链记录:
时间线重建:
mermaid复制timeline
title 文件时间线对比
section FN记录
2020-01-19 11:51:19 : 文件创建
2020-01-19 11:51:25 : 最后修改
section SI记录
2019-01-01 01:01:01 : 所有时间戳
攻击者画像线索:
在一次企业应急响应案例中,我们通过分析财务部门共享文件夹的$MFT,发现攻击者在窃取Excel文件后,将SI时间全部设置为2015年(该文件夹创建之前),却忽略了FN时间显示的真实访问发生在数据泄露事件期间。这种时间矛盾成为指证内部人员作案的关键证据。