首页/安全/取证与溯源速查/fls 生成 bodyfile
溯源思路与流程68 条

fls 生成 bodyfile

fls 递归列出镜像中的文件系统条目,-m 参数输出 bodyfile 兼容格式,接 mactime 即可得到文件系统时间线。

取证与溯源速查安全更新于 2026-10-13

fls 与 bodyfile 的关系

fls 是 Sleuth Kit 里的文件系统目录列表工具,能遍历镜像中的目录项并输出文件名、inode 号与时间戳;加上 -m 参数后输出 bodyfile 兼容格式,交给 mactime 就能渲染成可读的文件系统时间线。它适合回答「某个目录下有哪些文件、各自是什么时候出现的」,是超级时间线之外最轻量的一条文件级线索来源。

基本信息

适用平台Linux/macOS 分析机(Sleuth Kit 套件)
关键参数-r 递归、-m 挂载点前缀、-z 时区、-o 分区偏移(单位扇区)
偏移换算分区起始扇区 × 512 字节 = 字节偏移,用 mmls 查看起始扇区
产物bodyfile.txt(中间格式)与 mactime 渲染出的 CSV
权限要求只读打开镜像即可,不需要 root

典型使用场景

  • 从整盘快速筛出某目录下新增的可疑文件(Web 目录、/tmp、启动项)
  • 补充日志缺口:日志被清理时,文件系统元数据仍可能留存
  • 确认文件落地时间,与登录日志做先后关系判断
  • 批量排查多个镜像里的同名文件或扩展名异常文件
  • 为 mactime 或第三方时间线工具准备标准输入

生成与渲染

生成与渲染
# 先确认分区起始扇区,-o 用的是扇区数不是字节
mmls /evidence/disk.dd
# 递归列出并输出 bodyfile 格式,挂载点前缀写 /,时区用 UTC
fls -o 2048 -r -m "/" -z UTC /evidence/disk.dd > bodyfile.txt
wc -l bodyfile.txt          # 行数即目录项数量
# 只列已被删除但仍可恢复的条目(-d),用于排查清理痕迹
fls -o 2048 -r -d -m "/" -z UTC /evidence/disk.dd | head -50
# 渲染时间线,-d 输出按日期分组的可读形式
mactime -b bodyfile.txt -z UTC -d > timeline.csv

bodyfile 逐列读法

列含义判读要点
MD5|name|inode|mode哈希占位、路径、inode、权限位fls 不计算哈希,该字段常为 0;权限位可看出是否可执行
uid/gid/size属主、属组、文件大小uid 0 与系统账号外的属主值得单独列出
atime/mtime/ctime/crtime访问、修改、元数据变更、创建时间四个时间全为 0 常是文件系统不支持或条目为删除项
(mactime 输出)Type该行对应哪类时间(macb)同一文件会出现多行,按类型分别读
-o 偏移写错会解析到分区表或空白区域,输出看起来「文件很少」。遇到结果异常先回头核对 mmls 的分区起始扇区,再重跑。
镜像为 E01 等封装格式时,先用 ewfmount 挂载出原始镜像再对 raw 文件操作;直接对封装文件用 fls 会失败。规则集与不同版本 Sleuth Kit 的参数支持略有差异,以 man 手册为准。

易错点

  • -o 单位是扇区而非字节,写错偏移会得到空列表或分区表内容,白跑一轮还可能下错结论
  • 把 ctime 当作创建时间:Unix 系 ctime 是 inode 变更时间,创建时间需看 crtime 且并非所有文件系统都支持
  • bodyfile 里 MD5 字段为 0 就以为文件无哈希,实际是 fls 未计算,需要另行用 md5sum 或 icat 提取
  • 只看未删除条目而忽略已删除项,清理痕迹的证据正好藏在后者里

数据来源与参考

  • Sleuth Kit man 手册(fls / mactime)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌